• Abiword页面布局


    Abiword页面布局

       

      

    • 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会将空格一直输出到超过每个行最大行宽的位置

  • 相关阅读:
    剑指office--------重建二叉树
    剑指office--------二进制中1的个数
    剑指office--------最小的K个数 (待补充)
    剑指office--------二维数组的查找
    剑指office--------替换空格
    Redis集群
    一致性hash算法
    Zab协议(转)
    Redis线程模型
    Http Cookie和session
  • 原文地址:https://www.cnblogs.com/songtzu/p/3539787.html
Copyright © 2020-2023  润新知