博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Abiword页面布局
阅读量:4654 次
发布时间:2019-06-09

本文共 1488 字,大约阅读时间需要 4 分钟。

   

  

  • AP_Win32FrameImpl::_DocumentWndProc 文档窗口过程函数

 在WM_SIZE消息中设置FV_View对象的整体尺寸,跟窗体的:设备单位 转换成:布局单位。m_iWindowWidth = 19695,m_iWindowHeight= 8520

设备单位和布局单位的比例是:1:15。

    在设置尺寸是会根据文档窗体的实际尺寸利用下面的公式转换:

    m_iWindowWidth = 实际窗体尺寸*1440*100/96*100

         1440 是:#define UT_LAYOUT_RESOLUTION    1440,是版面设计的分辨率,在ut_units.cpp的单位转换函数中用到。

         100 是固定的值;

         96 是:利用GetDeviceCaps函数得到 LOGPIXELSX:沿屏幕宽度每逻辑英寸的像素数;

         100是:视图的显示比例

在WM_PAINT中绘制FV_View,FV_View::_draw

         #define fl_PAGEVIEW_PAGE_SEP m_pG->tlu(20)  // must be <= MARGIN_Y 页面之间的边距

         #define fl_PAGEVIEW_MARGIN_X m_pG->tlu(100) //左外边距 1500

         #define fl_PAGEVIEW_MARGIN_Y m_pG->tlu(25)   //上外边距 375

         右外边距(6290) = m_iWindowWidth - fp_Page.Width

  • 对于fp_Page类利用fp_PageSize类设置页面的尺寸。默认是A4纸(210,297),转换后的尺寸是(11905,16837)

    对每个Page调用fp_Page::draw绘制各个页。在fp_Page::_reformatColumns函数中计算每页的列宽。每个页得左右内边距是:1440 ,上下内边距是:1440,

    列宽是:9025

页边距在fl_DocSectionLayout::_lookupProperties函数中设置。默认边距是:2.54cm。

1 Inch = 2.54 Centimeters ,1 cm = 0.4 in

    fp_Line::setContainer设置每一行的宽等属性

 

  •  fp_Line,fp_Line::recalcHeight函数计算每一行的高度

iNewHeight = static_cast<UT_sint32>(iNewHeight * dLineSpace +50);// wfw edit 0.5 改为 50

dLineSpace 段落设置的中的行距,系统默认是单倍行距,现在改为1.5倍行距

 

  • fp_TextRun::_draw

UT_sint32 yTopOfRun = pDA->yoff - getAscent() + (getDescent()/2);// wfw edit,加上 getDescent()/2

  •  fb_LineBreaker类

 fb_LineBreaker encapsulates knowledge of how to break runs across lines.  

 It also breaks them between words, to help with later justification.

其中针对行尾是空格的情况做了改动,原来的程序存在bug会将空格一直输出到超过每个行最大行宽的位置

转载于:https://www.cnblogs.com/songtzu/p/3539787.html

你可能感兴趣的文章
20172324 2017-2018-2 《程序设计与数据结构》第八周学习总结
查看>>
esp8266烧写机智云固件方法
查看>>
Dao层设计
查看>>
css各种姿势的水平居中
查看>>
MYSQL 测试常用语句使用技巧
查看>>
基础细节知识
查看>>
树状数组求区间最大值
查看>>
从面试官角度来告诉大家,哪些人能面试成功
查看>>
以我的亲身经历为例,告诉大家写简历和面试的技巧(面向高级开发和架构师)...
查看>>
一个简单的PHP网站结构
查看>>
Redis 学习之简介及安装
查看>>
jsp简单的学习
查看>>
[LeetCode][JavaScript]Number of 1 Bits
查看>>
[LeetCode][JavaScript]Plus One
查看>>
JQ选择器
查看>>
快速排序算法
查看>>
9.Redis 有序集合(sorted set)
查看>>
ios高阶教程 块对象(block)的利用
查看>>
tomcat项目的部署
查看>>
SQLServer2012通过链接服务器执行SQLServer2000的存储过程的问题
查看>>