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

本文共 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

你可能感兴趣的文章
国内最火5款Java微服务开源项目
查看>>
[国嵌攻略][038][时钟初始化]
查看>>
C#格式化字符串
查看>>
剑指offer——二叉搜索树的后序遍历序列
查看>>
2016集训测试赛(二十四)Problem C: 棋盘控制
查看>>
稳定土厂拌设备控制系统-基本介绍(图)
查看>>
测试计划
查看>>
JAVA中properties基本用法
查看>>
大道至简第四章读后感
查看>>
对象的动态特性
查看>>
析构函数 p157
查看>>
奇异值分解SVD应用——LSI
查看>>
<虚树+树型DP> SDOI2011消耗战
查看>>
python打包exe
查看>>
添加删除程序里面没有添加IIS服务的选项
查看>>
Adobe Edge Animate --点击元件内部元素使元件其他元素发生改变
查看>>
当编程作为一种习惯
查看>>
docker pull理解误区
查看>>
关于标签分类
查看>>
关于性能测试几个名词概念的说明
查看>>