Merge to XFA: Remove unused reflow code.
authorLei Zhang <thestig@chromium.org>
Sat, 13 Jun 2015 07:44:09 +0000 (00:44 -0700)
committerLei Zhang <thestig@chromium.org>
Sat, 13 Jun 2015 07:44:09 +0000 (00:44 -0700)
R=tsepez@chromium.org

Review URL: https://codereview.chromium.org/1181803002.

(cherry picked from commit f25db681003f0247e97bfef22be56a8aa02b7595)

Review URL: https://codereview.chromium.org/1182993002.

12 files changed:
core/include/reflow/fpdf_layout.h [deleted file]
core/include/reflow/reflowengine.h [deleted file]
core/src/reflow/autoreflow.cpp [deleted file]
core/src/reflow/autoreflow.h [deleted file]
core/src/reflow/layoutprocessor_reflow.cpp [deleted file]
core/src/reflow/layoutprovider_taggedpdf.cpp [deleted file]
core/src/reflow/layoutprovider_taggedpdf.h [deleted file]
core/src/reflow/reflowedpage.cpp [deleted file]
core/src/reflow/reflowedpage.h [deleted file]
core/src/reflow/reflowedtextpage.cpp [deleted file]
core/src/reflow/reflowedtextpage.h [deleted file]
core/src/reflow/reflowengine.cpp [deleted file]

diff --git a/core/include/reflow/fpdf_layout.h b/core/include/reflow/fpdf_layout.h
deleted file mode 100644 (file)
index 2fff275..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_INCLUDE_REFLOW_FPDF_LAYOUT_H_
-#define CORE_INCLUDE_REFLOW_FPDF_LAYOUT_H_
-
-class IPDF_LayoutElement;
-class IPDF_LayoutProcessor;
-class IPDF_LayoutProvider;
-typedef enum {
-    LayoutUnknown,
-    LayoutArifact,
-    LayoutDocument,
-    LayoutPart,
-    LayoutArt,
-    LayoutSect,
-    LayoutDiv,
-    LayoutBlockQuote,
-    LayoutCaption,
-    LayoutTOC,
-    LayoutTOCI,
-    LayoutIndex,
-    LayoutNonStruct,
-    LayoutPrivate,
-    LayoutParagraph,
-    LayoutHeading,
-    LayoutHeading1,
-    LayoutHeading2,
-    LayoutHeading3,
-    LayoutHeading4,
-    LayoutHeading5,
-    LayoutHeading6,
-    LayoutList,
-    LayoutListItem,
-    LayoutListLabel,
-    LayoutListBody,
-    LayoutTable,
-    LayoutTableRow,
-    LayoutTableHeaderCell,
-    LayoutTableDataCell,
-    LayoutTableHeaderGroup,
-    LayoutTableBodyGroup,
-    LayoutTableFootGroup,
-    LayoutSpan,
-    LayoutQuote,
-    LayoutNote,
-    LayoutReference,
-    LayoutBibEntry,
-    LayoutCode,
-    LayoutLink,
-    LayoutAnnot,
-    LayoutRuby,
-    LayoutRubyBase,
-    LayoutRubyAnnot,
-    LayoutRubyPunc,
-    LayoutWarichu,
-    LayoutWarichuText,
-    LayoutWarichuPunc,
-    LayoutFigure,
-    LayoutFormula,
-    LayoutForm,
-} LayoutType;
-typedef enum {
-    LayoutArtifactType,
-    LayoutArtifactAttached,
-    LayoutArtifactSubType,
-    LayoutPlacement,
-    LayoutWritingMode,
-    LayoutBackgroundColor,
-    LayoutBorderColor,
-    LayoutBorderStyle,
-    LayoutBorderThickness,
-    LayoutPadding,
-    LayoutColor,
-    LayoutSpaceBefore,
-    LayoutSpaceAfter,
-    LayoutStartIndent,
-    LayoutEndIndent,
-    LayoutTextIndent,
-    LayoutTextAlign,
-    LayoutBBox,
-    LayoutWidth,
-    LayoutHeight,
-    LayoutBlockAlign,
-    LayoutInlineAlign,
-    LayoutTBorderStyle,
-    LayoutTPadding,
-    LayoutBaselineShift,
-    LayoutLineHeight,
-    LayoutTextDecorationColor,
-    LayoutTextDecorationThickness,
-    LayoutTextDecorationType,
-    LayoutRubyAlign,
-    LayoutRubyPosition,
-    LayoutGlyphOrientationVertical,
-    LayoutColumnCount,
-    LayoutColumnGap,
-    LayoutColumnWidths,
-    LayoutListNumbering,
-    LayoutFieldRole,
-    LayoutFieldChecked,
-    LayoutFieldDesc,
-    LayoutRowSpan,
-    LayoutColSpan,
-    LayoutTableHeaders,
-    LayoutTableHeaderScope,
-    LayoutTableSummary,
-} LayoutAttr;
-typedef enum {
-    LayoutInvalid = 0,
-    LayoutBlock,
-    LayoutInline,
-    LayoutBefore,
-    LayoutAfter,
-    LayoutStart,
-    LayoutEnd,
-    LayoutLrTb,
-    LayoutRlTb,
-    LayoutTbRl,
-    LayoutNone,
-    LayoutHidden,
-    LayoutDotted,
-    LayoutDashed,
-    LayoutSolid,
-    LayoutDouble,
-    LayoutGroove,
-    LayoutRidge,
-    LayoutInset,
-    LayoutOutset,
-    LayoutNormal,
-    LayoutAuto,
-    LayoutCenter,
-    LayoutJustify,
-    LayoutMiddle,
-    LayoutUnderline,
-    LayoutOverline,
-    LayoutLineThrough,
-    LayoutDistribute,
-    LayoutMinus90Degree,
-    LayoutZeroDegree,
-    Layout90Degree,
-    Layout180Degree,
-    Layout270Degree,
-    LayoutDisc,
-    LayoutCircle,
-    LayoutSquare,
-    LayoutDecimal,
-    LayoutUpperRoman,
-    LayoutLowerRoman,
-    LayoutUpperAlpha,
-    LayoutLowerAlpha,
-    LayoutRB,
-    LayoutCB,
-    LayoutPB,
-    LayoutTV,
-    LayoutOn,
-    LayoutOff,
-    LayoutNeutral,
-    LayoutRow,
-    LayoutColumn,
-    LayoutBoth,
-    LayoutLeft,
-    LayoutTop,
-    LayoutBottom,
-    LayoutRight,
-    LayoutPagination,
-    LayoutLayout,
-    LayoutPage,
-    LayoutBackground,
-    LayoutHeader,
-    LayoutFooter,
-    LayoutWatermark,
-} LayoutEnum;
-class IPDF_LayoutElement
-{
-public:
-
-    virtual ~IPDF_LayoutElement() {};
-
-
-    virtual LayoutType GetType() = 0;
-
-    virtual int                CountAttrValues(LayoutAttr attr_type) = 0;
-
-
-    virtual LayoutEnum GetEnumAttr(LayoutAttr attr_type, int index = 0) = 0;
-
-    virtual FX_FLOAT   GetNumberAttr(LayoutAttr attr_type, int index = 0) = 0;
-
-    virtual FX_COLORREF        GetColorAttr(LayoutAttr attr_type, int index = 0) = 0;
-
-
-    virtual int                CountChildren() = 0;
-
-
-    virtual IPDF_LayoutElement* GetChild(int index) = 0;
-
-
-    virtual IPDF_LayoutElement* GetParent() = 0;
-
-
-    virtual int                CountObjects() = 0;
-
-    virtual CPDF_PageObject*   GetObject(int index) = 0;
-};
-typedef enum {
-    LayoutReady,
-    LayoutFinished,
-    LayoutToBeContinued,
-    LayoutError
-} LayoutStatus;
-#define RF_PARSER_IMAGE                0x1
-#define RF_PARSER_DEBUGINFO    0x2
-#define RF_PARSER_PAGEMODE     0x4
-#define RF_PARSER_READERORDER  0x8
-class IPDF_LayoutProcessor
-{
-public:
-
-    virtual ~IPDF_LayoutProcessor() {};
-
-    static IPDF_LayoutProcessor* Create_LayoutProcessor_Reflow(FX_FLOAT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, void* pReflowedPage, int flags, FX_FLOAT lineSpace = 0);
-
-    static IPDF_LayoutProcessor* Create_LayoutProcessor_2HTML(const FX_CHAR* fileName);
-
-    virtual LayoutStatus       StartProcess(IPDF_LayoutElement* pElement, IFX_Pause* pPause, const CFX_AffineMatrix* pPDFMatrix = NULL) = 0;
-
-    virtual LayoutStatus       Continue() = 0;
-    virtual int                                GetPosition() = 0;
-};
-#define LP_Lang_Unknow                 0x0
-#define LP_Lang_English                        0x1
-#define LP_Lang_French                 0x2
-#define LP_Lang_Italian                        0x4
-#define LP_Lang_German                 0x8
-#define LP_Lang_Spanish                        0x10
-#define LP_Lang_Polish                 0x20
-#define LP_Lang_Russian                        0x40
-#define LP_Lang_ChinesePRC             0x80
-#define LP_Lang_ChineseTaiwan  0x100
-#define LP_Lang_Japanese               0x200
-#define LP_Lang_Korean                 0x400
-#define LP_Lang_Portuguese             0x800
-#define LP_Lang_Turkish                        0x1000
-#define LP_Lang_Dutch                  0x2000
-typedef struct _LayoutProviderStyle {
-    _LayoutProviderStyle()
-    {
-        m_Language = LP_Lang_Unknow;
-        m_bIgnoreInvisibleText = TRUE;
-    }
-    int32_t    m_Language;
-    FX_BOOL            m_bIgnoreInvisibleText;
-} LAYOUTPROVIDER_STYLE;
-class IPDF_LayoutProvider
-{
-public:
-
-    virtual ~IPDF_LayoutProvider() {};
-
-    static IPDF_LayoutProvider* Create_LayoutProvider_TaggedPDF(CPDF_PageObjects* pPageObjs);
-
-    static IPDF_LayoutProvider* Create_LayoutProvider_AutoReflow(CPDF_PageObjects* pPageObjs, FX_BOOL bReadOrder);
-
-    virtual void                       SetLayoutProviderStyle(LAYOUTPROVIDER_STYLE Style) = 0;
-
-
-
-
-    virtual LayoutStatus       StartLoad(IFX_Pause* pPause = NULL) = 0;
-
-    virtual LayoutStatus       Continue() = 0;
-    virtual int                                GetPosition() = 0;
-
-
-    virtual IPDF_LayoutElement* GetRoot() = 0;
-};
-#endif  // CORE_INCLUDE_REFLOW_FPDF_LAYOUT_H_
diff --git a/core/include/reflow/reflowengine.h b/core/include/reflow/reflowengine.h
deleted file mode 100644 (file)
index 30c7174..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_INCLUDE_REFLOW_REFLOWENGINE_H_
-#define CORE_INCLUDE_REFLOW_REFLOWENGINE_H_
-
-#include "../fpdfapi/fpdf_pageobj.h"
-#include "../fpdfapi/fpdf_render.h"
-#include "../fpdfdoc/fpdf_tagged.h"
-#include "../fpdftext/fpdf_text.h"
-#include "fpdf_layout.h"
-
-class IPDF_ReflowedPage
-{
-public:
-    static IPDF_ReflowedPage* Create();
-
-    virtual ~IPDF_ReflowedPage() {}
-    virtual CFX_PrivateData*   GetPrivateDataCtrl() = 0;
-
-
-    virtual void               GetDisplayMatrix(CFX_AffineMatrix& matrix, int32_t xPos, int32_t yPos, int32_t xSize, int32_t ySize, int32_t iRotate, const CFX_AffineMatrix* pPageMatrix) = 0;
-    virtual FX_FLOAT   GetPageHeight() = 0;
-    virtual FX_FLOAT   GetPageWidth() = 0;
-    virtual void               FocusGetData(const CFX_AffineMatrix matrix, int32_t x, int32_t y, CFX_ByteString& str) = 0;
-    virtual FX_BOOL            FocusGetPosition(const CFX_AffineMatrix matrix, CFX_ByteString str, int32_t& x, int32_t& y) = 0;
-};
-typedef struct _RF_ParseStyle {
-    _RF_ParseStyle()
-    {
-        m_LineSpace = 0;
-    };
-    FX_FLOAT m_LineSpace;
-} RF_ParseStyle;
-class IPDF_ProgressiveReflowPageParser
-{
-public:
-    static IPDF_ProgressiveReflowPageParser* Create();
-    static FX_BOOL     IsTaggedPage(CPDF_PageObjects*pPage);
-
-    virtual ~IPDF_ProgressiveReflowPageParser() {}
-    typedef enum { Ready, ToBeContinued, Done, Failed } ParseStatus;
-
-    virtual ParseStatus                GetStatus() = 0;
-    virtual void                       SetParserStyle(RF_ParseStyle style) = 0;
-    virtual void                       Start(IPDF_ReflowedPage* pReflowPage, CPDF_Page* pPage, FX_FLOAT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, IFX_Pause* pPause, int flags) = 0;
-    virtual void                       Continue(IFX_Pause* pPause) = 0;
-
-    virtual int                                GetPosition() = 0;
-
-
-    virtual void                       Clear() = 0;
-};
-class IPDF_ProgressiveReflowPageRender
-{
-public:
-    static IPDF_ProgressiveReflowPageRender* Create();
-
-    virtual ~IPDF_ProgressiveReflowPageRender() {}
-    typedef enum { Ready, ToBeContinued, Waiting, Done, Failed } RenderStatus;
-
-    virtual RenderStatus       GetStatus() = 0;
-
-
-    virtual void               Start(IPDF_ReflowedPage* pReflowPage, CFX_RenderDevice* pDevice, const CFX_AffineMatrix* pMatrix, IFX_Pause* pPause, int DitherBits ) = 0;
-    virtual void               Continue(IFX_Pause* pPause) = 0;
-    virtual int                        GetPosition() = 0;
-
-
-    virtual void                               Clear() = 0;
-};
-IPDF_ReflowedPage* Create_ReflowPage();
-IPDF_ProgressiveReflowPageParser* Create_ReflowPageParser();
-IPDF_ProgressiveReflowPageRender* Create_ReflowPageRender();
-
-#endif  // CORE_INCLUDE_REFLOW_REFLOWENGINE_H_
diff --git a/core/src/reflow/autoreflow.cpp b/core/src/reflow/autoreflow.cpp
deleted file mode 100644 (file)
index 77d60c4..0000000
+++ /dev/null
@@ -1,781 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "autoreflow.h"
-#define approachto(a,b,c) (FXSYS_fabs((float)((a)-(b)))>(c) ? 0 : 1)
-int FPDF_ProcessInterObj(const CPDF_PageObject* pPrevObj, const CPDF_PageObject* pObj)
-{
-    CFX_AffineMatrix matrix;
-    FX_RECT PreRect = pPrevObj->GetBBox(&matrix);
-    FX_RECT rect = pObj->GetBBox(&matrix);
-    int flag = 0;
-    if(PreRect.top > rect.bottom) {
-        flag = 0;
-    } else if(rect.top > PreRect.bottom) {
-        flag = 1;
-    } else if(PreRect.right < rect.left) {
-        flag = 0;
-    } else if(PreRect.left > rect.right) {
-        flag = 1;
-    } else if(pObj->m_Type != PDFPAGE_TEXT) {
-        flag = 1;
-    } else if(pPrevObj->m_Type != PDFPAGE_TEXT) {
-        flag = 0;
-    } else {
-        if((PreRect.top < rect.top && PreRect.bottom > rect.bottom) ||
-                (PreRect.top > rect.top && PreRect.bottom < rect.bottom)) {
-            if(PreRect.left > rect.left) {
-                flag = 1;
-            } else {
-                flag = 0;
-            }
-        } else {
-            CPDF_TextObject* pPrevTextObj = (CPDF_TextObject* )pPrevObj;
-            CPDF_TextObject* pTextObj = (CPDF_TextObject* )pObj;
-            CPDF_TextObjectItem item, prevItem;
-            pPrevTextObj->GetItemInfo(0, &prevItem);
-            pTextObj->GetItemInfo(0, &item);
-            CFX_AffineMatrix TextMatrix;
-            pTextObj->GetTextMatrix(&TextMatrix);
-            FX_FLOAT originX, originY, prevOriginX, preOriginY;
-            TextMatrix.Transform(item.m_OriginX, item.m_OriginY, originX, originY);
-            pPrevTextObj->GetTextMatrix(&TextMatrix);
-            TextMatrix.Transform(prevItem.m_OriginX, prevItem.m_OriginY, prevOriginX, preOriginY);
-            if(preOriginY > originY) {
-                flag = 0;
-            } else {
-                flag = 1;
-            }
-        }
-    }
-    return flag;
-}
-void CPDF_AutoReflowLayoutProvider::Conver2AppreceOrder(const CPDF_PageObjects* pStreamOrderObjs, CPDF_PageObjects* pAppraceOrderObjs)
-{
-    FX_POSITION pos = pStreamOrderObjs->GetFirstObjectPosition();
-    CFX_AffineMatrix matrix;
-    while(pos) {
-        CPDF_PageObject* pObj = pStreamOrderObjs->GetNextObject(pos);
-        CFX_AffineMatrix matrix;
-        if(pObj->m_Type != PDFPAGE_TEXT) {
-            continue;
-        }
-        FX_POSITION pos1 = pAppraceOrderObjs->GetLastObjectPosition();
-        while(pos1) {
-            CPDF_PageObject* pTempObj = pAppraceOrderObjs->GetPrevObject(pos1);
-            if(FPDF_ProcessInterObj(pObj, pTempObj) == 1) {
-                if(!pos1) {
-                    pos1 = pAppraceOrderObjs->GetFirstObjectPosition();
-                } else {
-                    pAppraceOrderObjs->GetNextObject(pos1);
-                }
-                break;
-            }
-        }
-        pAppraceOrderObjs->InsertObject(pos1, pObj);
-    }
-    pos = pStreamOrderObjs->GetFirstObjectPosition();
-    while(pos) {
-        CPDF_PageObject* pObj = pStreamOrderObjs->GetNextObject(pos);
-        if(pObj->m_Type != PDFPAGE_IMAGE) {
-            continue;
-        }
-        FX_POSITION pos1 = pAppraceOrderObjs->GetLastObjectPosition();
-        while(pos1) {
-            CPDF_PageObject* pTempObj = pAppraceOrderObjs->GetPrevObject(pos1);
-            if(FPDF_ProcessInterObj(pObj, pTempObj) == 1) {
-                if(!pos1) {
-                    pos1 = pAppraceOrderObjs->GetFirstObjectPosition();
-                } else {
-                    pAppraceOrderObjs->GetNextObject(pos1);
-                }
-                break;
-            }
-        }
-        pAppraceOrderObjs->InsertObject(pos1, pObj);
-    }
-}
-IPDF_LayoutProvider* IPDF_LayoutProvider::Create_LayoutProvider_AutoReflow(CPDF_PageObjects* pPage, FX_BOOL bReadOrder)
-{
-    return FX_NEW CPDF_AutoReflowLayoutProvider(pPage, bReadOrder);
-}
-CPDF_AutoReflowElement::CPDF_AutoReflowElement(LayoutType layoutType , CPDF_AutoReflowElement* pParent)
-{
-    m_ElmType = layoutType;
-    m_pParentElm = pParent;
-    if(pParent) {
-        pParent->m_ChildArray.Add(this);
-    }
-    m_SpaceBefore = 0;
-}
-CPDF_AutoReflowElement::~CPDF_AutoReflowElement()
-{
-    m_ChildArray.RemoveAll();
-    m_ObjArray.RemoveAll();
-}
-int    CPDF_AutoReflowElement::CountAttrValues(LayoutAttr attr_type)
-{
-    return 1;
-}
-LayoutEnum CPDF_AutoReflowElement::GetEnumAttr(LayoutAttr attr_type, int index )
-{
-    return LayoutInvalid;
-}
-FX_FLOAT       CPDF_AutoReflowElement::GetNumberAttr(LayoutAttr attr_type, int index )
-{
-    switch (attr_type) {
-        case LayoutSpaceBefore:
-            return m_SpaceBefore;
-        default:
-            return 0;
-    }
-}
-FX_COLORREF    CPDF_AutoReflowElement::GetColorAttr(LayoutAttr attr_type, int index )
-{
-    return 0;
-}
-#define WritingMode_UNKNOW     0
-#define WritingMode_LRTB       1
-#define WritingMode_RLTB       2
-#define WritingMode_TBRL       3
-CPDF_AutoReflowLayoutProvider::CPDF_AutoReflowLayoutProvider(CPDF_PageObjects* pPage, FX_BOOL bReadOrder)
-{
-    m_pPDFPage = (CPDF_Page*)pPage;
-    FX_FLOAT width = m_pPDFPage->GetPageWidth();
-    FX_FLOAT height = m_pPDFPage->GetPageHeight();
-    m_pPDFPage->GetDisplayMatrix(m_PDFDisplayMatrix, 0, 0, (int)(m_pPDFPage->GetPageWidth()), (int)(m_pPDFPage->GetPageHeight()), 0);
-    m_bReadOrder = bReadOrder;
-    m_Status = LayoutReady;
-    m_pRoot = NULL;
-    m_pCurrElm = NULL;
-    m_pPreObj = NULL;
-    m_Step = 0;
-    m_WritingMode = WritingMode_UNKNOW;
-}
-CPDF_AutoReflowLayoutProvider::~CPDF_AutoReflowLayoutProvider()
-{
-    m_pPDFPage = NULL;
-    ReleaseElm(m_pRoot);
-}
-void CPDF_AutoReflowLayoutProvider::ReleaseElm(CPDF_AutoReflowElement*& pElm, FX_BOOL bReleaseChildren)
-{
-    if(bReleaseChildren) {
-        int count = pElm->CountChildren();
-        for(int i = 0; i < count; i++) {
-            CPDF_AutoReflowElement* pChild = (CPDF_AutoReflowElement*)pElm->GetChild(i);
-            ReleaseElm(pChild);
-        }
-    }
-    delete pElm;
-    pElm = NULL;
-}
-void CPDF_AutoReflowLayoutProvider::AddObjectArray(CPDF_AutoReflowElement* pElm, CFX_PtrList& ObjList)
-{
-    if(!pElm) {
-        return;
-    }
-    FX_POSITION pos = ObjList.GetHeadPosition();
-    while (pos) {
-        pElm->m_ObjArray.Add((CPDF_PageObject*)ObjList.GetNext(pos));
-    }
-}
-void CPDF_AutoReflowLayoutProvider::GenerateStructTree()
-{
-    if (m_Step < AUTOREFLOW_STEP_GENERATELINE) {
-        GenerateLine(m_cellArray);
-        if(m_cellArray.GetSize() == 0) {
-            m_Status = LayoutError;
-            return;
-        }
-        if(m_pPause && m_pPause->NeedToPauseNow()) {
-            m_Step = AUTOREFLOW_STEP_GENERATELINE;
-            m_Status = LayoutToBeContinued;
-            return;
-        }
-    }
-    if (m_Step < AUTOREFLOW_STEP_GENERATEParagraph) {
-        GenerateParagraph(m_cellArray);
-        if(m_pPause && m_pPause->NeedToPauseNow()) {
-            m_Step = AUTOREFLOW_STEP_GENERATEParagraph;
-            m_Status = LayoutToBeContinued;
-            return;
-        }
-    }
-    if (m_Step < AUTOREFLOW_STEP_CREATEELEMENT) {
-        CreateElement();
-        if(m_pPause && m_pPause->NeedToPauseNow()) {
-            m_Step = AUTOREFLOW_STEP_CREATEELEMENT;
-            m_Status = LayoutToBeContinued;
-            return;
-        }
-    }
-    if (m_Step < AUTOREFLOW_STEP_REMOVEDATA) {
-        int count = m_cellArray.GetSize();
-        for(int i = 0; i < count; i++) {
-            CRF_CELL* pCell = (CRF_CELL*)m_cellArray.GetAt(i);
-            if(pCell) {
-                pCell->m_ObjList.RemoveAll();
-                delete pCell;
-            }
-        }
-        m_cellArray.RemoveAll();
-        if(m_pPause && m_pPause->NeedToPauseNow()) {
-            m_Step = AUTOREFLOW_STEP_REMOVEDATA;
-            m_Status = LayoutToBeContinued;
-            return;
-        }
-    }
-    m_Step = AUTOREFLOW_STEP_REMOVEDATA;
-    m_Status = LayoutFinished;
-    return;
-}
-void CPDF_AutoReflowLayoutProvider::CreateElement()
-{
-    int count = m_cellArray.GetSize();
-    CRF_CELL* plastCell = NULL;
-    CRF_CELL* pCell = NULL;
-    CRF_CELL* pNextCell = NULL;
-    CPDF_AutoReflowElement* pParent = m_pRoot;
-    CPDF_AutoReflowElement* pCurrElm = NULL;
-    int i;
-    for(i = 0; i < count; i++) {
-        pCell = (CRF_CELL*)m_cellArray.GetAt(i);
-        if(!pCell) {
-            continue;
-        }
-        if(i < count - 1) {
-            pNextCell = (CRF_CELL*)m_cellArray.GetAt(i + 1);
-        } else {
-            pNextCell = NULL;
-        }
-        pCurrElm = NULL;
-        pCurrElm = FX_NEW CPDF_AutoReflowElement(LayoutParagraph, pParent);
-        if(pCurrElm->GetType() == LayoutParagraph && plastCell) {
-            int SpaceBefore = 0;
-            if(pCell->m_CellWritingMode != plastCell->m_CellWritingMode ) {
-                SpaceBefore = 20;
-            } else if(pCell->m_CellWritingMode == WritingMode_LRTB) {
-                SpaceBefore = plastCell->m_BBox.bottom - pCell->m_BBox.top;
-            } else if(pCell->m_CellWritingMode == WritingMode_TBRL) {
-                SpaceBefore = plastCell->m_BBox.left - pCell->m_BBox.right;
-            }
-            if(SpaceBefore > 0) {
-                pCurrElm->m_SpaceBefore = SpaceBefore > 50 ? 50.0f : SpaceBefore;
-            }
-        }
-        AddObjectArray(pCurrElm, pCell->m_ObjList);
-        plastCell = pCell;
-    }
-}
-void CPDF_AutoReflowLayoutProvider::GenerateParagraph(CFX_PtrArray& cellArray)
-{
-    int count = cellArray.GetSize();
-    if(count <= 1) {
-        return;
-    }
-    CRF_CELL* plastCell = (CRF_CELL*)cellArray.GetAt(0);
-    if(plastCell->m_BBox.Height() > plastCell->m_BBox.Width()) {
-        m_WritingMode = WritingMode_TBRL;
-    } else {
-        m_WritingMode = WritingMode_LRTB;
-    }
-    FX_BOOL bEnforce = FALSE;
-    int i = 0;
-    for(i = 1; i < count; i++) {
-        CRF_CELL* pCell = (CRF_CELL*)cellArray.GetAt(i);
-        if(!pCell) {
-            continue;
-        }
-        int c = pCell->m_ObjList.GetCount();
-        FX_BOOL bMerge = FALSE;
-        FX_POSITION pos1 = plastCell->m_ObjList.GetTailPosition();
-        CPDF_PageObject* pLastObj = (CPDF_PageObject*)plastCell->m_ObjList.GetPrev(pos1);
-        pos1 = pCell->m_ObjList.GetHeadPosition();
-        CPDF_PageObject* pCurObj = (CPDF_PageObject*)pCell->m_ObjList.GetNext(pos1);
-        int WritingMode = GetRectEnd(pCell->m_BBox);
-        if(pCell->m_CellWritingMode == WritingMode_UNKNOW) {
-            if(pCell->m_BBox.Height() > pCell->m_BBox.Width()) {
-                pCell->m_CellWritingMode = WritingMode_TBRL;
-            } else {
-                pCell->m_CellWritingMode = WritingMode_LRTB;
-            }
-        }
-        WritingMode = pCell->m_CellWritingMode;
-        if(WritingMode == WritingMode_LRTB && (m_Style.m_Language & LP_Lang_ChinesePRC || m_Style.m_Language & LP_Lang_ChineseTaiwan
-                                               || m_Style.m_Language & LP_Lang_Japanese || m_Style.m_Language & LP_Lang_Korean)) {
-            if(pCurObj->m_Type == PDFPAGE_TEXT) {
-                CPDF_TextObject* pText;
-                pText = (CPDF_TextObject*)pCurObj;
-                if(pText->CountItems()) {
-                    CPDF_TextObjectItem item;
-                    pText->GetItemInfo(0, &item);
-                    CFX_WideString str = pText->GetFont()->UnicodeFromCharCode(item.m_CharCode);
-                    FX_WCHAR unicode = str.GetAt(0);
-                    if(unicode == 32) {
-                        plastCell = pCell;
-                        bMerge = FALSE;
-                        bEnforce = FALSE;
-                        continue;
-                    }
-                }
-            }
-        }
-        if(m_WritingMode == WritingMode) {
-            if(bEnforce) {
-                bMerge = FALSE;
-                bEnforce = FALSE;
-                if(pCurObj->m_Type == PDFPAGE_TEXT) {
-                    CPDF_TextObject* pText;
-                    pText = (CPDF_TextObject*)pCurObj;
-                    if(pText->CountItems()) {
-                        CPDF_TextObjectItem item;
-                        pText->GetItemInfo(0, &item);
-                        CFX_WideString str = pText->GetFont()->UnicodeFromCharCode(item.m_CharCode);
-                        FX_WCHAR unicode = str.GetAt(0);
-                        if(unicode > 96 && unicode < 123) {
-                            bMerge = TRUE;
-                        }
-                    }
-                } else {
-                    CPDF_ImageObject* pImage = (CPDF_ImageObject*)pCurObj;
-                    FX_RECT imageBBox = pImage->GetBBox(&m_PDFDisplayMatrix);
-                    if(GetRectEnd(plastCell->m_BBox) - GetRectEnd(pCell->m_BBox) < GetRectWidth(imageBBox)) {
-                        bMerge = TRUE;
-                    }
-                }
-            } else {
-                if(!approachto(GetRectStart(pCell->m_BBox), GetRectStart(plastCell->m_BBox), GetRectHeight(pCell->m_BBox) / 4)) {
-                    if(approachto(GetRectStart(plastCell->m_BBox), GetRectStart(pCell->m_BBox), GetRectHeight(pCell->m_BBox) * 2.3) &&
-                            GetRectStart(plastCell->m_BBox) - GetRectStart(pCell->m_BBox) > 0) {
-                        if(pCurObj->m_Type == PDFPAGE_TEXT || pLastObj->m_Type == PDFPAGE_TEXT) {
-                            CPDF_TextObject* pText;
-                            if(pCurObj->m_Type == PDFPAGE_TEXT) {
-                                pText = (CPDF_TextObject*)pCurObj;
-                            } else {
-                                pText = (CPDF_TextObject*)pLastObj;
-                            }
-                            CPDF_TextObjectItem item;
-                            pText->GetItemInfo(0, &item);
-                            CFX_WideString str = pText->GetFont()->UnicodeFromCharCode(item.m_CharCode);
-                            FX_WCHAR unicode = str.GetAt(0);
-                            if(unicode > 255) {
-                                bMerge = TRUE;
-                            }
-                        }
-                    }
-                } else if(!approachto(GetRectEnd(pCell->m_BBox), GetRectEnd(plastCell->m_BBox), GetRectHeight(pCell->m_BBox) * 3)) {
-                    FX_RECT rect = pLastObj->GetBBox(&m_PDFDisplayMatrix);
-                    if(approachto(GetRectStart(pCell->m_BBox), GetRectStart(plastCell->m_BBox), GetRectHeight(pCell->m_BBox) / 4)) {
-                        if(GetRectEnd(rect) - GetRectEnd(pCell->m_BBox) > 0) {
-                            bMerge = TRUE;
-                            bEnforce = TRUE;
-                        } else if(GetRectEnd(rect) - GetRectEnd(pCell->m_BBox) <= 0 &&
-                                  GetRectEnd(rect) - GetRectEnd(pCell->m_BBox) > GetRectHeight(pCell->m_BBox) * -3) {
-                            if(pCurObj->m_Type == PDFPAGE_TEXT) {
-                                CPDF_TextObject* pText = (CPDF_TextObject*)pCurObj;
-                                CPDF_TextObjectItem item;
-                                pText->GetItemInfo(0, &item);
-                                CFX_WideString str = pText->GetFont()->UnicodeFromCharCode(item.m_CharCode);
-                                FX_WCHAR unicode = str.GetAt(0);
-                                if(unicode > 96 && unicode < 123) {
-                                    bMerge = TRUE;
-                                }
-                            }
-                        }
-                    }
-                } else {
-                    bMerge = TRUE;
-                }
-            }
-        } else {
-            m_WritingMode = WritingMode;
-            bEnforce = FALSE;
-        }
-        if(bMerge) {
-            if(GetRectEnd(plastCell->m_BBox) - GetRectEnd(pCell->m_BBox) > 30) {
-                bEnforce = TRUE;
-            }
-            FX_POSITION pos = pCell->m_ObjList.GetHeadPosition();
-            while(pos) {
-                plastCell->m_ObjList.AddTail(pCell->m_ObjList.GetNext(pos));
-            }
-            plastCell->m_BBox.Union(pCell->m_BBox);
-            pCell->m_ObjList.RemoveAll();
-            delete pCell;
-            cellArray.RemoveAt(i);
-            i--;
-            count--;
-        } else {
-            plastCell = pCell;
-        }
-    }
-}
-void CPDF_AutoReflowLayoutProvider::ProcessObj(CFX_PtrArray& cellArray, CPDF_PageObject* pObj, CFX_AffineMatrix matrix)
-{
-}
-int32_t CPDF_AutoReflowLayoutProvider::LogicPreObj(CPDF_PageObject* pObj)
-{
-    CPDF_PageObject* pPreObj = m_pPreObj;
-    m_pPreObj = pObj;
-    if(!pPreObj) {
-        return 0;
-    }
-    if(pPreObj->m_Type != pObj->m_Type) {
-        return 0;
-    }
-    CFX_FloatRect rcCurObj(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, pObj->m_Top);
-    CFX_FloatRect rcPreObj(pPreObj->m_Left, pPreObj->m_Bottom, pPreObj->m_Right, pPreObj->m_Top);
-    if(pObj->m_Type == PDFPAGE_IMAGE) {
-        if(rcPreObj.Contains(rcCurObj)) {
-            return 2;
-        }
-        if(rcCurObj.Contains(rcPreObj)) {
-            return 2;
-        }
-        return 0;
-    }
-    if(pObj->m_Type == PDFPAGE_TEXT) {
-        if(!((rcPreObj.bottom > rcCurObj.top) || (rcPreObj.top < rcCurObj.bottom))) {
-            FX_FLOAT height = FX_MIN(rcPreObj.Height(), rcCurObj.Height());
-            if((rcCurObj.left - rcPreObj.right) > height / 3) {
-                return 3;
-            }
-        }
-        if(FXSYS_fabs(rcPreObj.Width() - rcCurObj.Width()) >= 2 || FXSYS_fabs(rcPreObj.Height() - rcCurObj.Height()) >= 2 ) {
-            return 0;
-        }
-        CPDF_TextObject* pPreTextObj = (CPDF_TextObject*)pPreObj;
-        CPDF_TextObject* pCurTextObj = (CPDF_TextObject*)pObj;
-        int nPreCount = pPreTextObj->CountItems();
-        int nCurCount = pCurTextObj->CountItems();
-        if (nPreCount != nCurCount) {
-            return 0;
-        }
-        FX_BOOL bSame = TRUE;
-        for (int i = 0; i < nPreCount; i++) {
-            CPDF_TextObjectItem itemPer, itemCur;
-            pPreTextObj->GetItemInfo(i, &itemPer);
-            pCurTextObj->GetItemInfo(i, &itemCur);
-            if (itemCur.m_CharCode != itemPer.m_CharCode) {
-                return 0;
-            }
-            if (itemCur.m_OriginX != itemPer.m_OriginX) {
-                bSame = FALSE;
-            }
-            if (itemCur.m_OriginY != itemPer.m_OriginY) {
-                bSame = FALSE;
-            }
-        }
-        if(rcPreObj.left == rcCurObj.left && rcPreObj.top == rcCurObj.top) {
-            return 1;
-        }
-        if(FXSYS_fabs(rcPreObj.left - rcCurObj.left) < rcPreObj.Width() / 3
-                && FXSYS_fabs(rcPreObj.top - rcCurObj.top) < rcPreObj.Height() / 3) {
-            return 2;
-        }
-    }
-    return 0;
-}
-void CPDF_AutoReflowLayoutProvider::GenerateLine(CFX_PtrArray& cellArray)
-{
-    CRF_CELL* pCell = NULL;
-    CFX_AffineMatrix matrix;
-    FX_POSITION pos = m_pPDFPage->GetFirstObjectPosition();
-    if(!pos) {
-        return;
-    }
-    FX_FLOAT PDFWidth = m_pPDFPage->GetPageWidth();
-    FX_FLOAT PDFHeight = m_pPDFPage->GetPageHeight();
-    m_pPDFPage->GetDisplayMatrix(m_PDFDisplayMatrix, 0, 0, (int)PDFWidth, (int)PDFHeight, 0);
-    CPDF_PageObject* pPerObj = NULL;
-    int a = 0;
-    CFX_FloatRect pageBBox = m_pPDFPage->m_BBox;
-    FX_FLOAT PrevX = 0 , PrevY = 0, PosX, PosY;
-    while(pos) {
-        CPDF_PageObject* pObj = m_pPDFPage->GetNextObject(pos);
-        if(!pObj || pObj->m_Type == PDFPAGE_PATH) {
-            continue;
-        }
-        int logic = LogicPreObj(pObj);
-        if(logic == 2) {
-            if(pCell) {
-                pCell->m_ObjList.SetAt(pCell->m_ObjList.GetTailPosition(), pObj);
-            }
-            continue;
-        }
-        if (pObj->m_Type == PDFPAGE_TEXT) {
-            CPDF_TextObject* pTextObj = (CPDF_TextObject*)pObj;
-            int textmode = pTextObj->m_TextState.GetObject()->m_TextMode;
-            if(m_Style.m_bIgnoreInvisibleText && pTextObj->m_TextState.GetObject()->m_TextMode == 3) {
-                continue;
-            }
-            PosX = pTextObj->GetPosX();
-            PosY = pTextObj->GetPosY();
-            m_PDFDisplayMatrix.Transform(PosX, PosY);
-        } else {
-            PosX = 0;
-            PosY = 0;
-        }
-        FX_BOOL bNewLine = TRUE;
-        FX_RECT ObjBBox = pObj->GetBBox(&m_PDFDisplayMatrix);
-        if(ObjBBox.left > PDFWidth || ObjBBox.right < 0 ||
-                ObjBBox.bottom < 0 || ObjBBox.top > PDFHeight) {
-            continue;
-        }
-        if(ObjBBox.IsEmpty()) {
-            continue;
-        }
-        a++;
-        if(!pCell) {
-            bNewLine = TRUE;
-            m_WritingMode = GetWritingMode(NULL, pObj);
-        } else {
-            int WritingMode = GetWritingMode(pPerObj, pObj);
-            if(m_WritingMode == WritingMode || m_WritingMode == WritingMode_UNKNOW || WritingMode == WritingMode_UNKNOW) {
-                if(WritingMode != WritingMode_UNKNOW) {
-                    m_WritingMode = WritingMode;
-                }
-                if(m_WritingMode == WritingMode_TBRL) {
-                    if(!(GetRectBottom(ObjBBox) > GetRectTop(pCell->m_BBox) ||
-                            GetRectTop(ObjBBox) < GetRectBottom(pCell->m_BBox))) {
-                        bNewLine = FALSE;
-                    }
-                } else {
-                    if(!(GetRectBottom(ObjBBox) < GetRectTop(pCell->m_BBox) ||
-                            GetRectTop(ObjBBox) > GetRectBottom(pCell->m_BBox))) {
-                        bNewLine = FALSE;
-                    }
-                    if (pObj->m_Type == PDFPAGE_TEXT) {
-                        if(FXSYS_fabs(PrevY - PosY) < 1 ) {
-                            bNewLine = FALSE;
-                        }
-                    }
-                }
-            } else {
-                m_WritingMode = WritingMode;
-            }
-        }
-        pPerObj = pObj;
-        if(bNewLine) {
-            int c = pCell ? pCell->m_ObjList.GetCount() : 0;
-            pCell = FX_NEW CRF_CELL;
-            pCell->m_CellWritingMode = m_WritingMode;
-            pCell->m_BBox = ObjBBox;
-            if(pObj->m_Type == PDFPAGE_TEXT) {
-                FX_FLOAT x = ((CPDF_TextObject*)pObj)->GetPosX(), y = ((CPDF_TextObject*)pObj)->GetPosY();
-                m_PDFDisplayMatrix.Transform(x, y);
-                if(x < ObjBBox.left) {
-                    pCell->m_BBox.left = (int)x;
-                }
-            }
-            pCell->m_ObjList.AddTail(pObj);
-            cellArray.Add(pCell);
-        } else {
-            pCell->m_ObjList.AddTail(pObj);
-            pCell->m_BBox.Union(ObjBBox);
-        }
-        PrevX = PosX;
-        PrevY = PosY;
-    }
-}
-FX_FLOAT CPDF_AutoReflowLayoutProvider::GetLayoutOrderHeight(CPDF_PageObject* pCurObj)
-{
-    CFX_FloatRect rcCurObj(pCurObj->m_Left, pCurObj->m_Bottom, pCurObj->m_Right, pCurObj->m_Top);
-    if (m_WritingMode == WritingMode_TBRL) {
-        return rcCurObj.Width();
-    }
-    return rcCurObj.Height();
-}
-FX_FLOAT CPDF_AutoReflowLayoutProvider::GetLayoutOrderWidth(CPDF_PageObject* pCurObj)
-{
-    CFX_FloatRect rcCurObj(pCurObj->m_Left, pCurObj->m_Bottom, pCurObj->m_Right, pCurObj->m_Top);
-    if (m_WritingMode == WritingMode_TBRL) {
-        return rcCurObj.Height();
-    }
-    return rcCurObj.Width();
-}
-int CPDF_AutoReflowLayoutProvider:: GetRectWidth(FX_RECT rect)
-{
-    if(m_WritingMode == WritingMode_TBRL) {
-        return rect.Height();
-    }
-    return rect.Width();
-}
-int CPDF_AutoReflowLayoutProvider:: GetRectHeight(FX_RECT rect)
-{
-    if(m_WritingMode == WritingMode_TBRL) {
-        return rect.Width();
-    }
-    return rect.Height();
-}
-int CPDF_AutoReflowLayoutProvider:: GetRectStart(FX_RECT rect)
-{
-    if(m_WritingMode == WritingMode_TBRL) {
-        return rect.top;
-    }
-    return rect.left;
-}
-int CPDF_AutoReflowLayoutProvider:: GetRectEnd(FX_RECT rect)
-{
-    if(m_WritingMode == WritingMode_TBRL) {
-        return rect.bottom;
-    }
-    return rect.right;
-}
-int CPDF_AutoReflowLayoutProvider:: GetRectTop(FX_RECT rect)
-{
-    if(m_WritingMode == WritingMode_TBRL) {
-        return rect.right;
-    }
-    return rect.top;
-}
-int CPDF_AutoReflowLayoutProvider:: GetRectBottom(FX_RECT rect)
-{
-    if(m_WritingMode == WritingMode_TBRL) {
-        return rect.left;
-    }
-    return rect.bottom;
-}
-int CPDF_AutoReflowLayoutProvider::GetWritingMode(CPDF_PageObject* pPreObj, CPDF_PageObject* pCurObj)
-{
-    CFX_FloatRect rcCurObj(pCurObj->m_Left, pCurObj->m_Bottom, pCurObj->m_Right, pCurObj->m_Top);
-    if(pCurObj->m_Type == PDFPAGE_TEXT) {
-        CPDF_TextObject* ptextObj = (CPDF_TextObject* )pCurObj;
-        int count = ptextObj->CountItems();
-        if(count > 1) {
-            CPDF_TextObjectItem Item1, Item2;
-            ptextObj->GetItemInfo(0, &Item1);
-            ptextObj->GetItemInfo(count - 1, &Item2);
-            if(Item2.m_CharCode == -1 && count > 2) {
-                ptextObj->GetItemInfo(2, &Item2);
-            }
-            CFX_AffineMatrix textMatrix;
-            ptextObj->GetTextMatrix(&textMatrix);
-            textMatrix.Transform(Item1.m_OriginX, Item1.m_OriginY);
-            textMatrix.Transform(Item2.m_OriginX, Item2.m_OriginY);
-            FX_FLOAT dx = FXSYS_fabs(Item1.m_OriginX - Item2.m_OriginX);
-            FX_FLOAT dy = FXSYS_fabs(Item1.m_OriginY - Item2.m_OriginY);
-            return dx >= dy ? WritingMode_LRTB : WritingMode_TBRL;
-        } else {
-            if(m_WritingMode != WritingMode_UNKNOW) {
-                return m_WritingMode;
-            }
-        }
-    }
-    if(pPreObj) {
-        FX_FLOAT threshold = rcCurObj.Width() / 4;
-        if(m_WritingMode == WritingMode_LRTB) {
-            if(FXSYS_fabs(pPreObj->m_Bottom - pCurObj->m_Bottom) < threshold * 2
-                    && FXSYS_fabs(pPreObj->m_Top - pCurObj->m_Top) < threshold * 2) {
-                return m_WritingMode;
-            }
-            FX_FLOAT mid = (pCurObj->m_Bottom + pCurObj->m_Top) / 2;
-            if(mid > pPreObj->m_Bottom && mid < pPreObj->m_Top && pCurObj->m_Right > pPreObj->m_Right) {
-                return m_WritingMode;
-            }
-        } else if(m_WritingMode == WritingMode_TBRL) {
-            if(FXSYS_fabs(pPreObj->m_Left - pCurObj->m_Left) < threshold * 2
-                    && FXSYS_fabs(pPreObj->m_Right - pCurObj->m_Right) < threshold * 2) {
-                return m_WritingMode;
-            }
-            FX_FLOAT mid = (pCurObj->m_Right + pCurObj->m_Left) / 2;
-            if(mid > pPreObj->m_Left && mid < pPreObj->m_Right && pCurObj->m_Bottom < pPreObj->m_Bottom) {
-                return m_WritingMode;
-            }
-        }
-        if(FXSYS_fabs(pPreObj->m_Left - pCurObj->m_Left) < threshold &&
-                FXSYS_fabs(pPreObj->m_Bottom - pCurObj->m_Bottom) > threshold * 2) {
-            return WritingMode_TBRL;
-        }
-        if(FXSYS_fabs(pPreObj->m_Left - pCurObj->m_Left) > threshold &&
-                FXSYS_fabs(pPreObj->m_Bottom - pCurObj->m_Bottom) < threshold * 2) {
-            return WritingMode_LRTB;
-        }
-        int count = 0;
-        if(pPreObj->m_Type == PDFPAGE_TEXT) {
-            CPDF_TextObject* ptextObj = (CPDF_TextObject* )pCurObj;
-            count = ptextObj->CountItems();
-        }
-        if(pPreObj->m_Type != PDFPAGE_TEXT || count == 1) {
-            if(pCurObj->m_Left > pPreObj->m_Right) {
-                FX_FLOAT mid = (pCurObj->m_Top + pCurObj->m_Bottom) / 2;
-                if(mid < pPreObj->m_Top && mid > pPreObj->m_Bottom) {
-                    return WritingMode_LRTB;
-                }
-            }
-            if(pCurObj->m_Top < pPreObj->m_Bottom) {
-                FX_FLOAT mid = (pCurObj->m_Left + pCurObj->m_Right) / 2;
-                if(mid < pPreObj->m_Right && mid > pPreObj->m_Left) {
-                    return WritingMode_TBRL;
-                }
-            }
-        }
-    }
-    return WritingMode_UNKNOW;
-}
-LayoutStatus CPDF_AutoReflowLayoutProvider::StartLoad(IFX_Pause* pPause)
-{
-    m_pPause = pPause;
-    m_pRoot = FX_NEW CPDF_AutoReflowElement(LayoutDocument);
-    if(!m_pRoot) {
-        return LayoutError;
-    }
-    m_Step = 0;
-    return Continue();
-}
-LayoutStatus CPDF_AutoReflowLayoutProvider::Continue()
-{
-    GenerateStructTree();
-    return m_Status;
-}
-int    CPDF_AutoReflowLayoutProvider::GetPosition()
-{
-    if(m_Step == 0) {
-        return 0;
-    } else {
-        return m_Step * 100 / AUTOREFLOW_STEP_REMOVEDATA;
-    }
-}
-FX_FLOAT CPDF_AutoReflowLayoutProvider::GetObjMinCell(CPDF_PageObject* pObj)
-{
-    if(!pObj) {
-        return 0;
-    }
-    if(pObj->m_Type != PDFPAGE_TEXT) {
-        CFX_AffineMatrix matrix;
-        FX_RECT rect = pObj->GetBBox(&matrix);
-        return (FX_FLOAT)(rect.Width());
-    }
-    CPDF_TextObject* pTextObj = (CPDF_TextObject* )pObj;
-    int count = pTextObj->CountItems();
-    for(int i = 0; i < count; i++) {
-        CPDF_TextObjectItem Item;
-        pTextObj->GetItemInfo(i, &Item);
-        if(Item.m_CharCode == -1) {
-            continue;
-        }
-        if((Item.m_CharCode > 47 && Item.m_CharCode < 58) || (Item.m_CharCode > 64 && Item.m_CharCode < 91)
-                || (Item.m_CharCode > 96 && Item.m_CharCode < 123)) {
-            continue;
-        }
-        if(Item.m_CharCode > 127 || (Item.m_CharCode > 32 && Item.m_CharCode < 35) || Item.m_CharCode == 37 ||
-                (Item.m_CharCode > 38 && Item.m_CharCode < 42) || Item.m_CharCode == 44 || Item.m_CharCode == 46 ||
-                Item.m_CharCode == 58 || Item.m_CharCode == 59 || Item.m_CharCode == 63 || Item.m_CharCode == 93) {
-            if(i == count - 1) {
-                CFX_AffineMatrix matrix;
-                FX_RECT rect = pObj->GetBBox(&matrix);
-                return (FX_FLOAT)(rect.Width());
-            } else {
-                pTextObj->GetItemInfo(i + 1, &Item);
-                return Item.m_OriginX;
-            }
-        }
-        return Item.m_OriginX;
-    }
-    CFX_AffineMatrix matrix;
-    FX_RECT rect = pObj->GetBBox(&matrix);
-    return (FX_FLOAT)(rect.Width());
-}
diff --git a/core/src/reflow/autoreflow.h b/core/src/reflow/autoreflow.h
deleted file mode 100644 (file)
index 20babd7..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_SRC_REFLOW_AUTOREFLOW_H_
-#define CORE_SRC_REFLOW_AUTOREFLOW_H_
-
-#include "../../include/reflow/reflowengine.h"
-#include "reflowedpage.h"
-
-class CPDF_AutoReflowElement;
-class CPDF_AutoReflowLayoutProvider;
-typedef CFX_ArrayTemplate<CPDF_AutoReflowElement*> CAR_ElmPtrArray;
-typedef CFX_ArrayTemplate<CPDF_PageObject*> CAR_ObjPtrArray;
-class CRF_CELL 
-{
-public:
-    CRF_CELL() { };
-    ~CRF_CELL() { };
-    CFX_PtrList                m_ObjList;
-    int                        m_CellWritingMode;
-    FX_RECT            m_BBox;
-};
-class CPDF_AutoReflowElement : public IPDF_LayoutElement
-{
-public:
-    CPDF_AutoReflowElement(LayoutType layoutType = LayoutUnknown , CPDF_AutoReflowElement* pParent = NULL) ;
-    ~CPDF_AutoReflowElement();
-    LayoutType GetType()
-    {
-        return m_ElmType;
-    }
-    void       GetRect(CFX_FloatRect& rcRect) {};
-
-    int  CountAttrValues(LayoutAttr attr_type);
-    LayoutEnum  GetEnumAttr(LayoutAttr attr_type, int index);
-    FX_FLOAT GetNumberAttr(LayoutAttr attr_type, int index);
-    FX_COLORREF GetColorAttr(LayoutAttr attr_type, int index);
-
-    int  CountChildren()
-    {
-        return m_ChildArray.GetSize();
-    }
-    IPDF_LayoutElement* GetChild(int index)
-    {
-        return m_ChildArray.GetAt(index);
-    }
-
-    IPDF_LayoutElement* GetParent()
-    {
-        return m_pParentElm;
-    }
-    int                CountObjects()
-    {
-        return m_ObjArray.GetSize();
-    }
-    CPDF_PageObject*   GetObject(int index)
-    {
-        return m_ObjArray.GetAt(index);
-    }
-    CPDF_AutoReflowElement* m_pParentElm;
-    LayoutType         m_ElmType;
-    CAR_ElmPtrArray m_ChildArray;
-    CAR_ObjPtrArray m_ObjArray;
-    FX_FLOAT           m_SpaceBefore;
-};
-#define AUTOREFLOW_STEP_GENERATELINE           1
-#define AUTOREFLOW_STEP_GENERATEParagraph      2
-#define AUTOREFLOW_STEP_CREATEELEMENT          3
-#define AUTOREFLOW_STEP_REMOVEDATA                     4
-class CPDF_AutoReflowLayoutProvider : public IPDF_LayoutProvider
-{
-public:
-    CPDF_AutoReflowLayoutProvider(CPDF_PageObjects* pPage, FX_BOOL bReadOrder);
-    ~CPDF_AutoReflowLayoutProvider();
-    void       SetLayoutProviderStyle(LAYOUTPROVIDER_STYLE Style)
-    {
-        m_Style = Style;
-    }
-    LayoutStatus StartLoad(IFX_Pause* pPause = NULL);
-    LayoutStatus Continue();
-    int                        GetPosition();
-    IPDF_LayoutElement* GetRoot()
-    {
-        return m_pRoot;
-    }
-    FX_FLOAT GetObjMinCell(CPDF_PageObject* pObj);
-    void Conver2AppreceOrder(const CPDF_PageObjects* pStreamOrderObjs, CPDF_PageObjects* pAppraceOrderObjs);
-    void       ReleaseElm(CPDF_AutoReflowElement*& pElm, FX_BOOL bReleaseChildren = TRUE);
-    void GenerateCell();
-    void GenerateStructTree();
-    void GenerateLine(CFX_PtrArray& cellArray);
-    void GenerateParagraph(CFX_PtrArray& cellArray);
-    void CreateElement();
-    void AddObjectArray(CPDF_AutoReflowElement* pElm, CFX_PtrList& ObjList);
-    FX_FLOAT GetLayoutOrderHeight(CPDF_PageObject* pCurObj);
-    FX_FLOAT GetLayoutOrderWidth(CPDF_PageObject* pCurObj);
-    int GetWritingMode(CPDF_PageObject* pPreObj, CPDF_PageObject* pCurObj);
-    int GetRectStart(FX_RECT rect);
-    int GetRectEnd(FX_RECT rect);
-    int GetRectTop(FX_RECT rect);
-    int GetRectBottom(FX_RECT rect);
-    int GetRectHeight(FX_RECT rect);
-    int GetRectWidth(FX_RECT rect);
-    void ProcessObj(CFX_PtrArray& cellArray, CPDF_PageObject* pObj, CFX_AffineMatrix matrix);
-    int32_t LogicPreObj(CPDF_PageObject* pObj);
-
-    CPDF_AutoReflowElement* m_pRoot;
-    CPDF_AutoReflowElement* m_pCurrElm;
-    CPDF_Page* m_pPDFPage;
-    IFX_Pause* m_pPause;
-    CFX_AffineMatrix m_PDFDisplayMatrix;
-    CPDF_PageObject* m_pPreObj;
-    LayoutStatus m_Status;
-    int m_WritingMode;
-    CFX_PtrArray m_CellArray;
-    FX_BOOL             m_bReadOrder;
-    LAYOUTPROVIDER_STYLE m_Style;
-    CFX_PtrArray m_cellArray;
-    int                        m_Step;
-};
-
-#endif  // CORE_SRC_REFLOW_AUTOREFLOW_H_
diff --git a/core/src/reflow/layoutprocessor_reflow.cpp b/core/src/reflow/layoutprocessor_reflow.cpp
deleted file mode 100644 (file)
index 81ba691..0000000
+++ /dev/null
@@ -1,1560 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "../../include/reflow/reflowengine.h"
-#include "reflowedpage.h"
-#include "layoutprovider_taggedpdf.h"
-IPDF_LayoutProcessor* IPDF_LayoutProcessor::Create_LayoutProcessor_Reflow(FX_FLOAT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, void* pReflowedPage, int flags, FX_FLOAT lineSpace )
-{
-    if(pReflowedPage == NULL || fWidth <= 20) {
-        return NULL;
-    }
-    CPDF_LayoutProcessor_Reflow* pReflowEngine = FX_NEW CPDF_LayoutProcessor_Reflow();
-    if (NULL == pReflowEngine) {
-        return NULL;
-    }
-    pReflowEngine->Init(TopIndent, fWidth, fHeight, (CPDF_ReflowedPage*)pReflowedPage, flags, lineSpace);
-    return pReflowEngine;
-}
-CPDF_LayoutProcessor_Reflow::CPDF_LayoutProcessor_Reflow()
-{
-    m_pPause = NULL;
-    m_pLayoutElement = NULL;
-    m_fRefWidth = 0;
-    m_fRefWidth = 0;
-    m_fCurrLineWidth = 0;
-    m_fCurrLineHeight = 0;
-    m_bIllustration = FALSE;
-    m_pPreObj = NULL;
-    m_pCurrLine = FX_NEW CRF_DataPtrArray(50);
-    m_pTempLine = FX_NEW CRF_DataPtrArray(50);
-    m_StartIndent = 0;
-    m_PausePosition = 0;
-}
-CPDF_LayoutProcessor_Reflow::~CPDF_LayoutProcessor_Reflow()
-{
-    if (m_pCurrLine) {
-        m_pCurrLine->RemoveAll();
-        delete m_pCurrLine;
-    }
-    m_pCurrLine = NULL;
-    if (m_pTempLine) {
-        m_pTempLine->RemoveAll();
-        delete m_pTempLine;
-    }
-    m_pTempLine = NULL;
-}
-void CPDF_LayoutProcessor_Reflow::Init(FX_FLOAT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, CPDF_ReflowedPage* pReflowedPage, int flags, FX_FLOAT lineSpace)
-{
-    m_pLayoutElement = NULL;
-    m_TopIndent = TopIndent;
-    m_Status = LayoutReady;
-    m_flags = flags;
-    m_pReflowedPage = pReflowedPage;
-    m_fScreenHeight = fHeight;
-    m_fRefWidth = fWidth;
-    m_fCurrLineHeight = 0;
-    m_fCurrLineWidth = 0;
-    m_fLineSpace = lineSpace;
-    pReflowedPage->m_PageWidth = fWidth;
-    pReflowedPage->m_PageHeight = TopIndent;
-}
-void CPDF_LayoutProcessor_Reflow::FitPageMode()
-{
-    if(m_flags & RF_PARSER_PAGEMODE && m_fScreenHeight > 20) {
-        float fitPageHeight = m_fScreenHeight;
-        CPDF_ReflowedPage* pRFPage = m_pReflowedPage;
-        int count = pRFPage->m_pReflowed->GetSize();
-        CFX_WordArray dy;
-        dy.Add(0);
-        int pos = 0;
-        int screenCount = 1;
-        FX_FLOAT h = pRFPage->GetPageHeight();
-        while (h > screenCount * fitPageHeight) {
-            FX_FLOAT tempPageHeight = screenCount * fitPageHeight;
-            int j = 0;
-            FX_FLOAT tempDy = 0;
-            for(int i = 0; i < count; i++) {
-                CRF_Data* pData = (*pRFPage->m_pReflowed)[i];
-                FX_FLOAT posY;
-                posY = pData->m_PosY;
-                if(FXSYS_fabs(posY) > tempPageHeight &&
-                        FXSYS_fabs(posY + pData->m_Height) < tempPageHeight) {
-                    if(j == 0) {
-                        j = i;
-                    }
-                    if(pData->m_Height > fitPageHeight) {
-                        FX_FLOAT zoom;
-                        FX_FLOAT spaceh = screenCount * fitPageHeight + posY + pData->m_Height;
-                        if(spaceh < fitPageHeight / 3 * 2) {
-                            spaceh = fitPageHeight;
-                        }
-                        zoom = spaceh / pData->m_Height;
-                        tempDy = spaceh - pData->m_Height;
-                        pData->m_Height = spaceh;
-                        pData->m_Width *= zoom;
-                        break;
-                    }
-                    FX_FLOAT dy = pData->m_PosY + pData->m_Height + tempPageHeight;
-                    if(dy > tempDy) {
-                        tempDy = dy;
-                    }
-                } else if(FXSYS_fabs(posY + pData->m_Height) > tempPageHeight) {
-                    break;
-                }
-            }
-            for(; j < count; j++) {
-                CRF_Data* pData = (*pRFPage->m_pReflowed)[j];
-                FX_FLOAT posY;
-                posY = pData->m_PosY;
-                if(FXSYS_fabs(posY) > tempPageHeight ) {
-                    pData->m_PosY -= tempDy;
-                }
-                if(pData->m_Height >= fitPageHeight) {
-                    pData->m_Height = fitPageHeight - 1;
-                    if(pData->GetType() == CRF_Data::Text) {
-                        CRF_CharData* pCharData = (CRF_CharData*)pData;
-                        pCharData->m_pCharState->m_fFontSize = pData->m_Height;
-                    }
-                }
-            }
-            pRFPage->m_PageHeight += tempDy;
-            h += tempDy;
-            screenCount++;
-        }
-    }
-}
-LayoutStatus CPDF_LayoutProcessor_Reflow::StartProcess(IPDF_LayoutElement* pElement, IFX_Pause* pPause, const CFX_AffineMatrix* pPDFMatrix)
-{
-    if(!pElement) {
-        return LayoutError;
-    }
-    m_pPause = pPause;
-    m_PDFMatrix = *pPDFMatrix;
-    m_pRootElement = pElement;
-    ProcessElement(m_pRootElement, m_fRefWidth);
-    if(m_Status == LayoutToBeContinued) {
-        return LayoutToBeContinued;
-    }
-    m_Status = LayoutFinished;
-    FitPageMode();
-    return LayoutFinished;
-}
-LayoutStatus CPDF_LayoutProcessor_Reflow::Continue()
-{
-    int size = m_pReflowedPage->m_pReflowed->GetSize();
-    ProcessElement(m_pRootElement, m_CurrRefWidth);
-    size = m_pReflowedPage->m_pReflowed->GetSize();
-    if(m_Status == LayoutReady) {
-        m_Status = LayoutFinished;
-        FitPageMode();
-    }
-    return m_Status;
-}
-int CPDF_LayoutProcessor_Reflow::GetPosition()
-{
-    return m_PausePosition;
-}
-FX_BOOL        CPDF_LayoutProcessor_Reflow::IsCanBreakAfter(FX_DWORD unicode)
-{
-    if(unicode == -1) {
-        return FALSE;
-    }
-    switch(unicode) {
-        case 40:
-        case 91:
-        case 123:
-            return FALSE;
-    }
-    if(unicode >= 256) {
-        return TRUE;
-    } else if(unicode >= 48 && unicode <= 57) {
-        return FALSE;
-    } else if(unicode >= 64 && unicode <= 90) {
-        return FALSE;
-    } else if(unicode >= 97 && unicode <= 122) {
-        return FALSE;
-    }
-    return TRUE;
-}
-FX_BOOL        CPDF_LayoutProcessor_Reflow::IsCanBreakBefore(FX_DWORD unicode)
-{
-    if(unicode == -1) {
-        return FALSE;
-    }
-    switch(unicode) {
-        case 33:
-        case 41:
-        case 44:
-        case 46:
-        case 59:
-        case 63:
-        case 93:
-        case 125:
-            return FALSE;
-    }
-    if(unicode >= 256) {
-        return TRUE;
-    } else if(unicode >= 48 && unicode <= 57) {
-        return FALSE;
-    } else if(unicode >= 64 && unicode <= 90) {
-        return FALSE;
-    } else if(unicode >= 97 && unicode <= 122) {
-        return FALSE;
-    }
-    return TRUE;
-}
-void CPDF_LayoutProcessor_Reflow::ProcessTable(FX_FLOAT dx)
-{
-    if(m_pReflowedPage->m_pReflowed->GetSize() == 0) {
-        return;
-    }
-    CRF_Table* pTable = m_TableArray.GetAt(m_TableArray.GetSize() - 1);
-    int rowCount = pTable->m_nCell.GetSize();
-    int n = 0;
-    FX_FLOAT* dyRow = FX_Alloc(FX_FLOAT, rowCount + 1);
-    FXSYS_memset(dyRow, 0, sizeof(FX_FLOAT) * (rowCount + 1));
-    dyRow[0] = 0 ;
-    dyRow[0] = - pTable->m_ReflowPageHeight;
-    int tableColCount = 0;
-    int i;
-    for(i = 0; i < rowCount; i++) {
-        int colCount = pTable->m_nCell.GetAt(i);
-        if(colCount > tableColCount) {
-            tableColCount = colCount;
-        }
-    }
-    int cellCount = tableColCount * rowCount;
-    RF_TableCell** pVirtualTable = FX_Alloc(RF_TableCell*, cellCount);
-    FXSYS_memset(pVirtualTable, 0, sizeof(RF_TableCell*) * cellCount);
-    for(i = 0; i < rowCount; i++) {
-        int colCount = pTable->m_nCell.GetAt(i);
-        FX_FLOAT rowWidth = 0;
-        int j = 0;
-        int s = pTable->m_pCellArray.GetSize();
-        for(j = 0; j < colCount; j++) {
-            RF_TableCell* pCell = (RF_TableCell*)pTable->m_pCellArray.GetAt(n++);
-            if(pCell->m_EndPos < pCell->m_BeginPos) {
-                continue;
-            }
-            int pos = i * tableColCount;
-            while(pos < cellCount && pVirtualTable[pos] != NULL) {
-                pos++;
-            }
-            if(pos >= (i + 1) * tableColCount) {
-                pos = i * tableColCount + j;
-            }
-            int RowSpan = pCell->m_RowSpan;
-            int ColSpan = pCell->m_ColSpan;
-            if(RowSpan + i > rowCount) {
-                RowSpan = rowCount - i;
-            }
-            if(ColSpan + j > colCount) {
-                ColSpan = colCount - j;
-            }
-            for(int m = 0; m < RowSpan; m++) {
-                for(int nn = 0; nn < ColSpan; nn++) {
-                    if(pos + nn >= cellCount) {
-                        break;
-                    }
-                    pVirtualTable[pos + nn] = pCell;
-                }
-                pos += tableColCount;
-            }
-            FX_FLOAT dxCell = dx;
-            for(pos = i * tableColCount; pVirtualTable[pos] != pCell && pos < cellCount; pos++) {
-                dxCell += (pVirtualTable[pos])->m_MaxWidth;
-            }
-            CRF_Data* pData = (*m_pReflowedPage->m_pReflowed)[pCell->m_BeginPos];
-            FX_FLOAT dy = dyRow[i] - pData->m_Height - pData->m_PosY;
-            CFX_AffineMatrix matrix(1, 0, 0, 1, dxCell, dy);
-            Transform(&matrix, m_pReflowedPage->m_pReflowed, pCell->m_BeginPos, pCell->m_EndPos - pCell->m_BeginPos + 1);
-            if(pCell->m_RowSpan + i <= rowCount) {
-                if(FXSYS_fabs(dyRow[pCell->m_RowSpan + i]) < FXSYS_fabs(dyRow[i] - pCell->m_CellHeight)) {
-                    dyRow[pCell->m_RowSpan + i] = dyRow[i] - pCell->m_CellHeight;
-                }
-            }
-        }
-    }
-    n = 0;
-    for(i = 0; i < rowCount; i++) {
-        int colCount = pTable->m_nCell.GetAt(i);
-        for(int j = 0; j < colCount; j++) {
-            RF_TableCell* pCell = (RF_TableCell*)pTable->m_pCellArray.GetAt(n++);
-            switch(pCell->m_BlockAlign) {
-                case LayoutAfter: {
-                        FX_FLOAT dy = dyRow[i + pCell->m_RowSpan] - pCell->m_CellHeight - dyRow[i];
-                        CFX_AffineMatrix matrix(1, 0, 0, 1, 0, dy);
-                        Transform(&matrix, m_pReflowedPage->m_pReflowed, pCell->m_BeginPos, pCell->m_EndPos - pCell->m_BeginPos + 1);
-                    }
-                    break;
-                case LayoutMiddle:
-                case LayoutJustify: {
-                        FX_FLOAT dy = (dyRow[i + pCell->m_RowSpan] + pCell->m_CellHeight - dyRow[i]) / 2;
-                        CFX_AffineMatrix matrix(1, 0, 0, 1, 0, dy);
-                        Transform(&matrix, m_pReflowedPage->m_pReflowed, pCell->m_BeginPos, pCell->m_EndPos - pCell->m_BeginPos + 1);
-                        break;
-                    }
-                default:
-                    break;
-            }
-        }
-    }
-    CRF_Data* pData = (*m_pReflowedPage->m_pReflowed)[m_pReflowedPage->m_pReflowed->GetSize() - 1];
-    m_pReflowedPage->m_PageHeight = - dyRow[rowCount] + pData->m_Height;
-    FX_Free(pVirtualTable);
-    FX_Free(dyRow);
-    int size = pTable->m_pCellArray.GetSize();
-    for(i = 0; i < size; i++) {
-        RF_TableCell* pCell = pTable->m_pCellArray.GetAt(i);
-        FX_Free(pCell);
-    }
-    pTable->m_pCellArray.RemoveAll();
-    pTable->m_nCell.RemoveAll();
-    int s = sizeof(CRF_Table);
-    delete pTable;
-    m_TableArray.RemoveAt(m_TableArray.GetSize() - 1);
-}
-CFX_FloatRect CPDF_LayoutProcessor_Reflow::GetElmBBox(IPDF_LayoutElement* pElement)
-{
-    CFX_FloatRect rect;
-    int objCount = pElement->CountObjects();
-    int count = pElement->CountChildren();
-    if(objCount == 0 && count == 0) {
-        return rect;
-    }
-    CFX_AffineMatrix matrix;
-    int i;
-    for(i = 0; i < objCount; i++) {
-        CPDF_PageObject* pObj = pElement->GetObject(0);
-        if(!pObj) {
-            continue;
-        }
-        if( rect.Height() == 0 ) {
-            rect = pObj->GetBBox(&matrix);
-        } else {
-            rect.Union(pObj->GetBBox(&matrix));
-        }
-    }
-    for(i = 0; i < count; i++) {
-        IPDF_LayoutElement* pChildElement = pElement->GetChild(i);
-        if( rect.Height() == 0 ) {
-            rect = GetElmBBox(pChildElement);
-        } else {
-            rect.Union(GetElmBBox(pChildElement));
-        }
-    }
-    return rect;
-}
-FX_FLOAT CPDF_LayoutProcessor_Reflow::GetElmWidth(IPDF_LayoutElement* pElement)
-{
-    if(!pElement) {
-        return 0;
-    }
-    LayoutType layoutType = pElement->GetType();
-    FX_FLOAT width = 0;
-    if(layoutType == LayoutTable || layoutType == LayoutTableDataCell || layoutType == LayoutTableHeaderCell) {
-        width = pElement->GetNumberAttr(LayoutWidth);
-        if(width > 0) {
-            return width;
-        }
-    } else if( layoutType == LayoutTableRow) {
-        int count = pElement->CountChildren();
-        for(int i = 0; i < count; i++) {
-            IPDF_LayoutElement* pElm = pElement->GetChild(i);
-            width += pElm->GetNumberAttr(LayoutWidth);
-        }
-        if(width > 0) {
-            return width;
-        }
-    }
-    CFX_FloatRect rect = GetElmBBox(pElement);
-    return rect.Width();
-}
-FX_BOOL GetIntersection(FX_FLOAT low1, FX_FLOAT high1, FX_FLOAT low2, FX_FLOAT high2,
-                        FX_FLOAT& interlow, FX_FLOAT& interhigh);
-FX_BOOL IsSameLine(FX_BOOL bHorizontal, CFX_FloatRect Rect1, CFX_FloatRect Rect2)
-{
-    if(bHorizontal) {
-        FX_FLOAT inter_top, inter_bottom;
-        if (!GetIntersection(Rect1.bottom, Rect1.top, Rect2.bottom, Rect2.top,
-                             inter_bottom, inter_top)) {
-            return FALSE;
-        }
-        FX_FLOAT lineHeight = Rect1.top - Rect1.bottom;
-        if(lineHeight > 20 && lineHeight > Rect2.Height() * 2) {
-            return FALSE;
-        }
-        if(lineHeight > 5 && Rect2.Height() / 2 > lineHeight) {
-            return FALSE;
-        }
-        FX_FLOAT inter_h = inter_top - inter_bottom;
-        if (inter_h < (lineHeight) / 2 && inter_h < Rect2.Height() / 2) {
-            return FALSE;
-        }
-    } else {
-        FX_FLOAT inter_left, inter_right;
-        if(!GetIntersection(Rect1.left, Rect1.right, Rect2.left, Rect2.right, inter_left, inter_right)) {
-            return FALSE;
-        }
-        FX_FLOAT inter_w = inter_right - inter_left;
-        if (inter_w < (Rect1.right - Rect1.left) / 2 && inter_w < (Rect2.right - Rect2.left) / 2) {
-            return FALSE;
-        }
-    }
-    return TRUE;
-}
-int32_t IsCanMergeParagraph(IPDF_LayoutElement* pPrevElement, IPDF_LayoutElement* pNextElement)
-{
-    int32_t analogial = 100;
-    int32_t nPrevObj = pPrevElement->CountObjects(), i;
-    CPDF_PageObject* pPrevObj = NULL;
-    CFX_FloatRect prevRect, rect;
-    CFX_PtrArray prevLine, line;
-    FX_BOOL bParagraphStart = FALSE;
-    for(i = 0; i < nPrevObj; i++) {
-        CPDF_PageObject* pObj = pPrevElement->GetObject(i);
-        if(!pPrevObj) {
-            pPrevObj = pObj;
-            rect = CFX_FloatRect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, pObj->m_Top);
-            line.Add(pObj);
-            continue;
-        }
-        CFX_FloatRect objRect = CFX_FloatRect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, pObj->m_Top);
-        if(IsSameLine(TRUE, rect, objRect)) {
-            line.Add(pObj);
-            rect.Union(objRect);
-        } else {
-            prevLine.RemoveAll();
-            prevLine.Append(line);
-            prevRect = rect;
-            line.RemoveAll();
-            line.Add(pObj);
-            rect = objRect;
-            if(!bParagraphStart) {
-                if (prevRect.left > rect.left + rect.Height() * 1.5) {
-                    bParagraphStart = TRUE;
-                }
-            }
-        }
-    }
-    if(prevLine.GetSize()) {
-        if(FXSYS_fabs(rect.right - prevRect.right) > rect.Height()) {
-            analogial -= 50;
-        }
-    }
-    CPDF_PageObject* pObj = pPrevElement->GetObject(nPrevObj - 1);
-    if(pObj->m_Type == PDFPAGE_TEXT) {
-        CPDF_TextObject* pText = (CPDF_TextObject*)pObj;
-        int32_t nItem = pText->CountItems();
-        CPDF_TextObjectItem item;
-        pText->GetItemInfo(nItem - 1, &item);
-        CFX_WideString wStr = pText->GetFont()->UnicodeFromCharCode(item.m_CharCode);
-        if(wStr.IsEmpty()) {
-            wStr = (FX_WCHAR)item.m_CharCode;
-        }
-        FX_WCHAR wch = wStr.GetAt(wStr.GetLength() - 1);
-        switch(wch) {
-            case '.':
-            case 12290:
-            case 65311:
-            case 63:
-            case 33:
-            case 65281:
-                analogial -= 50;
-                break;
-        }
-    }
-    prevLine.RemoveAll();
-    prevLine.Append(line);
-    line.RemoveAll();
-    int32_t nNextObj = pNextElement->CountObjects();
-    pPrevObj = NULL;
-    FX_BOOL bFirst = TRUE;
-    for(i = 0; i < nNextObj; i++) {
-        CPDF_PageObject* pObj = pNextElement->GetObject(i);
-        if(!pPrevObj) {
-            pPrevObj = pObj;
-            rect = CFX_FloatRect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, pObj->m_Top);
-            line.Add(pObj);
-            continue;
-        }
-        CFX_FloatRect objRect = CFX_FloatRect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, pObj->m_Top);
-        if(IsSameLine(TRUE, rect, objRect)) {
-            line.Add(pObj);
-            rect.Union(objRect);
-        } else {
-            if(FXSYS_fabs(rect.right - prevRect.right) < rect.Height() && FXSYS_fabs(rect.left - prevRect.left) < rect.Height()) {
-                analogial += 50;
-            }
-            prevLine.RemoveAll();
-            prevLine.Append(line);
-            prevRect = rect;
-            line.RemoveAll();
-            line.Add(pObj);
-            rect = objRect;
-            if(!bFirst) {
-                break;
-            }
-            bFirst = FALSE;
-        }
-    }
-    if(prevLine.GetSize()) {
-        if(bParagraphStart) {
-            if(prevRect.left - rect.left > rect.Height() && prevRect.left - rect.left < rect.Height() * 3) {
-                analogial -= 50;
-            }
-        } else {
-            if(FXSYS_fabs(prevRect.left - rect.left) < rect.Height()) {
-                analogial -= 50;
-            }
-        }
-    }
-    return analogial;
-}
-void CPDF_LayoutProcessor_Reflow::ProcessElement(IPDF_LayoutElement* pElement, FX_FLOAT reflowWidth)
-{
-    if(pElement == NULL) {
-        return;
-    }
-    if(m_Status == LayoutReady) {
-        LayoutType layoutType = pElement->GetType();
-        int32_t ElementType = GetElementTypes(layoutType);
-        switch(ElementType) {
-            case SST_IE:
-                m_bIllustration = TRUE;
-                break;
-            case SST_BLSE:
-                FinishedCurrLine();
-                FX_FLOAT StartIndent = 0;
-                if(IPDF_LayoutElement* pParent = pElement->GetParent()) {
-                    StartIndent = pParent->GetNumberAttr(LayoutStartIndent);
-                }
-                FX_FLOAT currStartIndent = pElement->GetNumberAttr(LayoutStartIndent);
-                m_StartIndent = ConverWidth(currStartIndent);
-                FX_FLOAT width = reflowWidth;
-                if(StartIndent != currStartIndent) {
-                    reflowWidth -= m_StartIndent;
-                }
-                FX_FLOAT spaceBefore = pElement->GetNumberAttr(LayoutSpaceBefore);
-                m_pReflowedPage->m_PageHeight += spaceBefore;
-                m_TextAlign = pElement->GetEnumAttr(LayoutTextAlign);
-                if(IPDF_LayoutElement* pParent = pElement->GetParent()) {
-                    StartIndent = pParent->GetNumberAttr(LayoutEndIndent);
-                    FX_FLOAT currEndIndent = pElement->GetNumberAttr(LayoutEndIndent);
-                    if(StartIndent != currStartIndent) {
-                        reflowWidth -= ConverWidth(currEndIndent);
-                    }
-                }
-                if(reflowWidth * 2 < width) {
-                    reflowWidth = width;
-                    m_StartIndent = 0;
-                }
-                break;
-        }
-        switch(layoutType) {
-            case LayoutTable: {
-                    CRF_Table* pTable = FX_NEW CRF_Table;
-                    if (NULL == pTable) {
-                        break;
-                    }
-                    m_TableArray.Add(pTable);
-                    pTable->m_ReflowPageHeight = m_pReflowedPage->m_PageHeight;
-                    pTable->m_TableWidth = GetElmWidth(pElement);
-                    break;
-                }
-            case LayoutTableRow: {
-                    if(!m_TableArray.GetSize()) {
-                        break;
-                    }
-                    int count = pElement->CountChildren();
-                    CRF_Table* pTable = m_TableArray.GetAt(m_TableArray.GetSize() - 1);
-                    int f = 0;
-                    for(int i = 0; i < count; i++) {
-                        IPDF_LayoutElement* pChildElement = pElement->GetChild(i);
-                        LayoutType type = pChildElement->GetType();
-                        if(type == LayoutTableDataCell || type == LayoutTableHeaderCell) {
-                            f++;
-                        }
-                    }
-                    pTable->m_nCell.Add(f);
-                    break;
-                }
-            case LayoutTableDataCell:
-            case LayoutTableHeaderCell: {
-                    if(!m_TableArray.GetSize()) {
-                        break;
-                    }
-                    RF_TableCell* pCell = FX_Alloc(RF_TableCell, 1);
-                    FXSYS_memset(pCell, 0 , sizeof(RF_TableCell));
-                    CRF_Table* pTable = m_TableArray.GetAt(m_TableArray.GetSize() - 1);
-                    int pos = pTable->m_nCell.GetSize() - 1;
-                    pCell->m_BeginPos = m_pReflowedPage->m_pReflowed->GetSize();
-                    FX_FLOAT cellWidth = pElement->GetNumberAttr(LayoutWidth);
-                    if(cellWidth == 0 || pCell->m_MaxWidth > pTable->m_TableWidth) {
-                        CRF_Table* pTable = m_TableArray.GetAt(m_TableArray.GetSize() - 1);
-                        pCell->m_MaxWidth = reflowWidth / pTable->m_nCell.GetAt(pTable->m_nCell.GetSize() - 1);
-                    } else {
-                        pCell->m_MaxWidth = pElement->GetNumberAttr(LayoutWidth) * reflowWidth / pTable->m_TableWidth;
-                    }
-                    pCell->m_ColSpan = (int)(pElement->GetNumberAttr(LayoutColSpan));
-                    pCell->m_RowSpan = (int)(pElement->GetNumberAttr(LayoutRowSpan));
-                    if(!pCell->m_ColSpan) {
-                        pCell->m_ColSpan = 1;
-                    }
-                    if(!pCell->m_RowSpan ) {
-                        pCell->m_RowSpan = 1;
-                    }
-                    pCell->m_BlockAlign = pElement->GetEnumAttr(LayoutBlockAlign);
-                    m_TextAlign = pElement->GetEnumAttr(LayoutInlineAlign);
-                    pCell->m_PosX = 0;
-                    pCell->m_PosY = 0;
-                    reflowWidth = pCell->m_MaxWidth;
-                    pTable->m_pCellArray.Add(pCell);
-                    break;
-                }
-            default:
-                break;
-        }
-        m_fLineHeight = pElement->GetNumberAttr(LayoutLineHeight);
-        int ReflowedSize = m_pReflowedPage->m_pReflowed->GetSize();
-        if(pElement->CountObjects()) {
-            ProcessObjs(pElement, reflowWidth);
-        }
-    }
-    int count = pElement->CountChildren();
-    for(int i = 0; i < count; i++) {
-        IPDF_LayoutElement* pChildElement = pElement->GetChild(i);
-        ProcessElement(pChildElement, reflowWidth);
-        if(m_pPause && m_pRootElement == pElement && m_Status != LayoutToBeContinued ) {
-            if(m_pPause->NeedToPauseNow()) {
-                m_pLayoutElement = pChildElement;
-                m_Status = LayoutToBeContinued;
-                m_CurrRefWidth = reflowWidth;
-                m_PausePosition = (i + 1) * 100 / (count + 1);
-                return ;
-            }
-        }
-        if(m_Status == LayoutToBeContinued && m_pLayoutElement == pChildElement) {
-            m_Status = LayoutReady;
-        }
-    }
-    if(m_Status == LayoutReady) {
-        FX_FLOAT dx = 0;
-        LayoutType layoutType = pElement->GetType();
-        int32_t ElementType = GetElementTypes(layoutType);
-        switch(ElementType) {
-            case SST_IE:
-                m_bIllustration = FALSE;
-                FinishedCurrLine();
-                break;
-            case SST_BLSE:
-                FinishedCurrLine();
-                FX_FLOAT StartIndent = 0;
-                if(IPDF_LayoutElement* pParent = pElement->GetParent()) {
-                    StartIndent = pParent->GetNumberAttr(LayoutStartIndent);
-                }
-                FX_FLOAT currStartIndent = pElement->GetNumberAttr(LayoutStartIndent);
-                if(StartIndent != currStartIndent) {
-                    reflowWidth += ConverWidth(currStartIndent);
-                    dx += ConverWidth(currStartIndent);
-                }
-                FX_FLOAT spaceAfter = pElement->GetNumberAttr(LayoutSpaceAfter);
-                m_pReflowedPage->m_PageHeight += spaceAfter;
-                break;
-        }
-        switch(layoutType) {
-            case LayoutTableDataCell:
-            case LayoutTableHeaderCell: {
-                    if(!m_TableArray.GetSize()) {
-                        break;
-                    }
-                    CRF_Table* pTable = m_TableArray.GetAt(m_TableArray.GetSize() - 1);
-                    RF_TableCell* pCell = pTable->m_pCellArray.GetAt(pTable->m_pCellArray.GetSize() - 1);
-                    pCell->m_EndPos = m_pReflowedPage->m_pReflowed->GetSize() - 1;
-                    if(pCell->m_EndPos < pCell->m_BeginPos) {
-                        pCell->m_CellHeight = 0;
-                    } else {
-                        CRF_Data* pBeginData = (*m_pReflowedPage->m_pReflowed)[pCell->m_BeginPos];
-                        CRF_Data* pEndData = (*m_pReflowedPage->m_pReflowed)[pCell->m_EndPos];
-                        pCell->m_CellHeight = pBeginData->m_Height > pEndData->m_Height ? pBeginData->m_Height : pEndData->m_Height;
-                        pCell->m_CellHeight -= pEndData->m_PosY - pBeginData->m_PosY;
-                    }
-                    break;
-                }
-            case LayoutTableRow: {
-                    if(!m_TableArray.GetSize()) {
-                        break;
-                    }
-                    CRF_Table* pTable = m_TableArray.GetAt(m_TableArray.GetSize() - 1);
-                    if(pTable->m_nCol == 0) {
-                        pTable->m_nCol = pTable->m_pCellArray.GetSize();
-                    }
-                    break;
-                }
-            case LayoutTable: {
-                    ProcessTable(dx);
-                    break;
-                }
-            default:
-                if(dx) {
-                    CFX_AffineMatrix matrix(1, 0, 0, 1, dx, 0);
-                    int ReflowedSize = m_pReflowedPage->m_pReflowed->GetSize();
-                    Transform(&matrix, m_pReflowedPage->m_pReflowed, ReflowedSize, m_pReflowedPage->m_pReflowed->GetSize() - ReflowedSize);
-                }
-        }
-    }
-    if(m_pRootElement == pElement) {
-        m_PausePosition = 100;
-    }
-}
-int32_t CPDF_LayoutProcessor_Reflow::GetElementTypes(LayoutType layoutType)
-{
-    switch(layoutType) {
-        case LayoutParagraph:
-        case LayoutHeading:
-        case LayoutHeading1:
-        case LayoutHeading2:
-        case LayoutHeading3:
-        case LayoutHeading4:
-        case LayoutHeading5:
-        case LayoutHeading6:
-        case LayoutList:
-        case LayoutListItem:
-        case LayoutListLabel:
-        case LayoutListBody:
-        case LayoutTable:
-        case LayoutTableHeaderCell:
-        case LayoutTableDataCell:
-        case LayoutTableRow:
-        case LayoutTableHeaderGroup:
-        case LayoutTableBodyGroup:
-        case LayoutTableFootGroup:
-        case LayoutTOCI:
-        case LayoutCaption:
-            return SST_BLSE;
-        case LayoutFigure:
-        case LayoutFormula:
-        case LayoutForm:
-            return SST_IE;
-        case LayoutSpan:
-        case LayoutQuote:
-        case LayoutNote:
-        case LayoutReference:
-        case LayoutBibEntry:
-        case LayoutCode:
-        case LayoutLink:
-        case LayoutAnnot:
-        case LayoutRuby:
-        case LayoutWarichu:
-            return SST_ILSE;
-        default:
-            return SST_GE;
-    }
-    return FALSE;
-}
-FX_FLOAT       CPDF_LayoutProcessor_Reflow::ConverWidth(FX_FLOAT width)
-{
-    return width;
-}
-void CPDF_LayoutProcessor_Reflow::ProcessObject(CPDF_PageObject* pObj, FX_FLOAT reflowWidth, CFX_AffineMatrix objMatrix)
-{
-    if(!pObj) {
-        return;
-    }
-    if(pObj->m_Type == PDFPAGE_TEXT) {
-        ProcessTextObject( (CPDF_TextObject *)pObj, reflowWidth, objMatrix);
-    } else if(pObj->m_Type == PDFPAGE_IMAGE) {
-        if(!(m_flags & RF_PARSER_IMAGE)) {
-            return;
-        }
-        CPDF_PageObjects* pObjs = FX_NEW CPDF_PageObjects(FALSE);
-        if (NULL == pObjs) {
-            return;
-        }
-        FX_POSITION pos = pObjs->GetLastObjectPosition();
-        pos = pObjs->InsertObject(pos, pObj);
-        CFX_AffineMatrix matrix;
-        FX_RECT rect = pObj->GetBBox(&matrix);
-        CPDF_ImageObject* ImageObj = (CPDF_ImageObject*)pObj;
-        ProcessUnitaryObjs(pObjs, reflowWidth, objMatrix);
-        delete pObjs;
-    } else if(pObj->m_Type == PDFPAGE_PATH) {
-    } else if(pObj->m_Type == PDFPAGE_FORM) {
-        CPDF_FormObject* pForm = (CPDF_FormObject*)pObj;
-        FX_POSITION pos = pForm->m_pForm->GetFirstObjectPosition();
-        objMatrix.Concat(pForm->m_FormMatrix);
-        while (pos) {
-            CPDF_PageObject* pObj1 = pForm->m_pForm->GetNextObject(pos);
-            ProcessObject(pObj1, reflowWidth, objMatrix);
-        }
-    }
-}
-void CPDF_LayoutProcessor_Reflow::ProcessObjs(IPDF_LayoutElement* pElement, FX_FLOAT reflowWidth)
-{
-    m_fCurrMaxWidth = reflowWidth;
-    int ObjCount = pElement->CountObjects();
-    for(int i = 0; i < ObjCount; i++) {
-        CPDF_PageObject* pObj = pElement->GetObject(i);
-        ProcessObject(pObj, reflowWidth, m_PDFMatrix);
-        continue;
-    }
-}
-void CPDF_LayoutProcessor_Reflow::AddTemp2CurrLine(int begin, int count)
-{
-    if(begin < 0 || count <= 0 || !m_pReflowedPage || !m_pReflowedPage->m_pReflowed || !m_pTempLine) {
-        return;
-    } else {
-        count += begin;
-    }
-    int size = m_pReflowedPage->m_pReflowed->GetSize();
-    int temps = m_pTempLine->GetSize();
-    for(int i = begin; i < count; i++) {
-        CRF_Data* pData = (*m_pTempLine)[i];
-        AddData2CurrLine(pData);
-    }
-}
-void CPDF_LayoutProcessor_Reflow::AddData2CurrLine(CRF_Data* pData)
-{
-    if(pData == NULL || m_pCurrLine == NULL) {
-        return;
-    }
-    m_pCurrLine->Add(pData);
-    m_fCurrLineWidth = pData->m_PosX + pData->m_Width;
-    if(pData->m_Height > m_fCurrLineHeight) {
-        m_fCurrLineHeight = pData->m_Height;
-    }
-}
-void CPDF_LayoutProcessor_Reflow::UpdateCurrLine()
-{
-}
-void CPDF_LayoutProcessor_Reflow::Transform(const CFX_AffineMatrix* pMatrix, CRF_DataPtrArray* pDataArray, int beginPos, int count)
-{
-    if (!pDataArray) {
-        return;
-    }
-    if(count == 0) {
-        count = pDataArray->GetSize();
-    } else {
-        count += beginPos;
-    }
-    for(int i = beginPos; i < count; i++) {
-        CRF_Data* pData = (*pDataArray)[i];
-        Transform(pMatrix, pData);
-    }
-}
-void CPDF_LayoutProcessor_Reflow::Transform(const CFX_AffineMatrix* pMatrix, CRF_Data* pData)
-{
-    if(pData->GetType() == CRF_Data::Path) {
-        CRF_PathData* pPathData = (CRF_PathData*)pData;
-        pPathData->m_pPath2Device.Concat(*pMatrix);
-    }
-    pMatrix->Transform(pData->m_PosX, pData->m_PosY, pData->m_PosX, pData->m_PosY);
-}
-FX_BOOL CPDF_LayoutProcessor_Reflow::FinishedCurrLine()
-{
-    if (NULL == m_pCurrLine) {
-        return FALSE;
-    }
-    int count = m_pCurrLine->GetSize();
-    if(count == 0) {
-        return FALSE;
-    }
-    if(m_fLineHeight > m_fCurrLineHeight) {
-        m_fCurrLineHeight = m_fLineHeight;
-    } else {
-        m_fCurrLineHeight += 2;
-    }
-    if(m_pReflowedPage->m_pReflowed->GetSize() > 0) {
-        m_fCurrLineHeight += m_fLineSpace;
-    }
-    FX_FLOAT height = m_pReflowedPage->m_PageHeight + m_fCurrLineHeight;
-    FX_FLOAT lineHeight = m_fLineHeight;
-    if(lineHeight == 0) {
-        lineHeight = m_fCurrLineHeight;
-    }
-    FX_FLOAT dx = 0;
-    switch(m_TextAlign) {
-        case LayoutCenter:
-            dx = (m_fCurrMaxWidth - m_fCurrLineWidth) / 2;
-            break;
-        case LayoutEnd:
-            dx = m_fCurrMaxWidth - m_fCurrLineWidth;
-            break;
-        case LayoutJustify:
-            break;
-        default:
-            break;
-    }
-    FX_FLOAT dy = - height;
-    int refedSize = m_pReflowedPage->m_pReflowed->GetSize();
-    if(count == 13) {
-        int a = 0;
-    }
-    for(int i = 0; i < count; i++) {
-        CRF_Data* pData = (*m_pCurrLine)[i];
-        m_pReflowedPage->m_pReflowed->Add(pData);
-        FX_FLOAT x = m_StartIndent + dx * (m_TextAlign == LayoutJustify ? i + 1 : 1);
-        CFX_AffineMatrix matrix(1, 0, 0, 1, x, dy);
-        Transform(&matrix, pData);
-    }
-    m_pCurrLine->RemoveAll();
-    m_fCurrLineWidth = 0;
-    m_pReflowedPage->m_PageHeight += m_fCurrLineHeight;
-    m_fCurrLineHeight = 0;
-    return TRUE;
-}
-CRF_CharState* CPDF_LayoutProcessor_Reflow::GetCharState(CPDF_TextObject* pObj, CPDF_Font* pFont, FX_FLOAT fHeight, FX_ARGB color)
-{
-    if (NULL == m_pReflowedPage->m_pCharState) {
-        return NULL;
-    }
-    int count = m_pReflowedPage->m_pCharState->GetSize();
-    for(int i = count - 1; i >= 0; i--) {
-        CRF_CharState* pState = (CRF_CharState*)m_pReflowedPage->m_pCharState->GetAt(i);
-        if(pState->m_Color == color && pState->m_fFontSize == fHeight && pState->m_pFont == pFont && pState->m_pTextObj == pObj) {
-            return pState;
-        }
-    }
-    CRF_CharState pState;
-    pState.m_pTextObj = pObj;
-    pState.m_Color = color;
-    pState.m_pFont = pFont;
-    pState.m_fFontSize = fHeight;
-    int ascent = pFont->GetTypeAscent();
-    int descent = pFont->GetTypeDescent();
-    pState.m_fAscent = ascent * fHeight / (ascent - descent);
-    if(descent == 0) {
-        pState.m_fDescent = 0;
-    } else {
-        pState.m_fDescent = descent * fHeight / (ascent - descent);
-    }
-    pState.m_bVert = FALSE;
-    CPDF_CIDFont *pCIDFont = pFont->GetCIDFont();
-    if(pCIDFont) {
-        pState.m_bVert = pCIDFont->IsVertWriting();
-    }
-    m_pReflowedPage->m_pCharState->Add(pState);
-    return (CRF_CharState*)m_pReflowedPage->m_pCharState->GetAt(count);
-}
-int CPDF_LayoutProcessor_Reflow::GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const
-{
-    if(charCode == -1) {
-        return 0;
-    }
-    int w = pFont->GetCharWidthF(charCode);
-    if(w == 0) {
-        CFX_ByteString str;
-        pFont->AppendChar(str, charCode);
-        w = pFont->GetStringWidth(str, 1);
-        if(w == 0) {
-            FX_RECT BBox;
-            pFont->GetCharBBox(charCode, BBox);
-            w = BBox.right - BBox.left;
-        }
-    }
-    return w;
-}
-void CPDF_LayoutProcessor_Reflow::CreateRFData(CPDF_PageObject* pObj, CFX_AffineMatrix* pObjMatrix)
-{
-    if (NULL == m_pReflowedPage->m_pMemoryPool) {
-        return;
-    }
-    if(pObj->m_Type == PDFPAGE_TEXT) {
-        CPDF_TextObject* pTextObj = (CPDF_TextObject* )pObj;
-        int count = pTextObj->CountItems();
-        if(!count) {
-            return;
-        }
-        if(count == 1) {
-            CPDF_TextObjectItem Item;
-            pTextObj->GetItemInfo(0, &Item);
-            if(Item.m_CharCode == 49) {
-                int a = 0;
-            }
-        }
-        CPDF_Font * pFont = pTextObj->GetFont();
-        FX_FLOAT fs = pTextObj->GetFontSize();
-        FX_FLOAT* pmatrix = pTextObj->m_TextState.GetMatrix();
-        FX_FLOAT matrix1 = pmatrix[1];
-        if(pmatrix[2] == 0) {
-            matrix1 = 0;
-        }
-        CFX_AffineMatrix textMatrix(pmatrix[0], matrix1, pmatrix[2], pmatrix[3], 0, 0);
-        FX_FLOAT height = FXSYS_fabs(textMatrix.TransformDistance(fs));
-        if(pObjMatrix) {
-            height = FXSYS_fabs(pObjMatrix->TransformDistance(height));
-        }
-        int r = 0, g = 0, b = 0;
-        pTextObj->m_ColorState.GetFillColor()->GetRGB(r, g, b);
-        FX_ARGB col = r * 0x10000;
-        col += g * 0x100;
-        col += b;
-        CRF_CharState* pState = GetCharState(pTextObj, pFont, height, col);
-        FX_FLOAT dx = 0, dy = 0;
-        FX_RECT ObjBBox;
-        if(pObjMatrix) {
-            ObjBBox = pTextObj->GetBBox(pObjMatrix);
-            dx = (float)ObjBBox.left;
-            dy = (float)ObjBBox.bottom;
-        } else {
-            CFX_AffineMatrix matrix;
-            ObjBBox = pTextObj->GetBBox(&matrix);
-        }
-        FX_FLOAT objWidth = 0;
-        CFX_ByteString str;
-        FX_BOOL bOrder = TRUE;
-        CFX_PtrArray tempArray;
-        int i = 0;
-        CPDF_TextObjectItem Item;
-        pTextObj->GetItemInfo(i, &Item);
-        dx = Item.m_OriginX;
-        dy = Item.m_OriginY;
-        textMatrix.Transform(Item.m_OriginX, Item.m_OriginY, dx, dy);
-        CRF_CharData* pLastData = NULL;
-        FX_FLOAT horzScale = pTextObj->m_TextState.GetFontSizeV() / pTextObj->m_TextState.GetFontSizeH();
-        while(i < count) {
-            pTextObj->GetItemInfo(i, &Item);
-            if(Item.m_CharCode == -1) {
-                i++;
-                continue;
-            }
-            FX_FLOAT OriginX, OriginY;
-            textMatrix.Transform(Item.m_OriginX, Item.m_OriginY, OriginX, OriginY);
-            CRF_CharData* pData = (CRF_CharData*)m_pReflowedPage->m_pMemoryPool->Alloc(sizeof(CRF_CharData));
-            if (NULL == pData) {
-                continue;
-            }
-            pData->m_Type = CRF_Data::Text;
-            if(FXSYS_fabs(OriginY - dy) > FXSYS_fabs(OriginX - dx)) {
-                pData->m_PosY = dy;
-                pData->m_PosX = pLastData->m_PosX + pLastData->m_Width + textMatrix.TransformDistance(pTextObj->m_TextState.GetObject()->m_CharSpace);
-            } else {
-                pData->m_PosY = OriginY;
-                pData->m_PosX = OriginX;
-            }
-            int size = tempArray.GetSize();
-            if(size && pData->m_PosX < pLastData->m_PosX ) {
-                for (int j = 0; j < size; j++) {
-                    CRF_CharData* pData1 = (CRF_CharData*)tempArray.GetAt(j);
-                    if(pData1->m_PosX > pData->m_PosX) {
-                        tempArray.InsertAt(j, pData);
-                        break;
-                    }
-                }
-            } else {
-                tempArray.Add(pData);
-            }
-            pLastData = pData;
-            pData->m_CharCode = Item.m_CharCode;
-            pData->m_Height = FXSYS_fabs(height);
-            int w = GetCharWidth(Item.m_CharCode, pFont);
-            pData->m_Width = FXSYS_fabs(fs * textMatrix.TransformDistance((FX_FLOAT)w) / 1000);
-            if(horzScale) {
-                pData->m_Width /= horzScale;
-            }
-            pData->m_pCharState = pState;
-            i++;
-        }
-        count = tempArray.GetSize();
-        for (int j = 0; j < count; j++) {
-            CRF_CharData* pData = (CRF_CharData*)tempArray.GetAt(j);
-            if (m_pTempLine) {
-                m_pTempLine->Add(pData);
-            }
-        }
-        tempArray.RemoveAll();
-    } else if(pObj->m_Type == PDFPAGE_IMAGE) {
-        CPDF_ImageObject* pImageObj = (CPDF_ImageObject* )pObj;
-        CRF_ImageData* pRFImage = (CRF_ImageData*)m_pReflowedPage->m_pMemoryPool->Alloc(sizeof(CRF_ImageData));
-        if (NULL == pRFImage) {
-            return;
-        }
-        pRFImage->m_pBitmap = NULL;
-        pRFImage->m_Type = CRF_Data::Image;
-        if (m_pTempLine) {
-            m_pTempLine->Add(pRFImage);
-        }
-        CPDF_Image *pImage = pImageObj->m_pImage;
-        if (!pImage->m_pDIBSource || !pImage->m_pMask) {
-            if(pImage->StartLoadDIBSource(m_pReflowedPage->GetFormResDict(pImageObj), m_pReflowedPage->m_pPDFPage->m_pResources, 0, 0, TRUE)) {
-                pImage->Continue(NULL);
-            }
-        }
-        CFX_DIBSource* pDibSource = pImage->DetachBitmap();
-        if (pDibSource) {
-            pRFImage->m_pBitmap = pDibSource->Clone();
-            delete pDibSource;
-        }
-        CFX_DIBSource* pMask = pImage->DetachMask();
-        if (pMask) {
-            if (!pMask->IsAlphaMask()) {
-                CFX_DIBitmap* pMaskBmp = pMask->Clone();
-                pMaskBmp->ConvertFormat(FXDIB_8bppMask);
-                pRFImage->m_pBitmap->MultiplyAlpha(pMaskBmp);
-                delete pMaskBmp;
-            } else {
-                pRFImage->m_pBitmap->MultiplyAlpha(pMask);
-            }
-            delete pMask;
-        }
-        CFX_FloatRect ObjBBox;
-        if(pObjMatrix) {
-            ObjBBox = pImageObj->GetBBox(pObjMatrix);
-        } else {
-            CFX_AffineMatrix matrix;
-            ObjBBox = pImageObj->GetBBox(&matrix);
-        }
-        pRFImage->m_Width = ObjBBox.Width();
-        pRFImage->m_Height = ObjBBox.Height();
-        pRFImage->m_PosX = 0;
-        pRFImage->m_PosY = 0;
-        CFX_AffineMatrix matrix(1, 0, 0, -1, 0, 0);
-        matrix.Concat(pImageObj->m_Matrix);
-        matrix.Concat(*pObjMatrix);
-        pRFImage->m_Matrix.Set(matrix.a == 0 ? 0 : matrix.a / FXSYS_fabs(matrix.a),
-                               matrix.b == 0 ? 0 : matrix.b / FXSYS_fabs(matrix.b),
-                               matrix.c == 0 ? 0 : matrix.c / FXSYS_fabs(matrix.c),
-                               matrix.d == 0 ? 0 : matrix.d / FXSYS_fabs(matrix.d), 0, 0);
-    } else if(pObj->m_Type == PDFPAGE_PATH) {
-    }
-}
-FX_FLOAT CPDF_LayoutProcessor_Reflow:: GetDatasWidth(int beginPos, int endpos)
-{
-    if(endpos < beginPos || !m_pTempLine) {
-        return 0;
-    }
-    if(endpos > m_pTempLine->GetSize() - 1) {
-        endpos = m_pTempLine->GetSize() - 1;
-    }
-    CRF_Data* pBeginData = (*m_pTempLine)[beginPos];
-    CRF_Data* pEndData = (*m_pTempLine)[endpos];
-    return pEndData->m_PosX - pBeginData->m_PosX + pEndData->m_Width;
-}
-FX_WCHAR CPDF_LayoutProcessor_Reflow::GetPreChar()
-{
-    if (NULL == m_pCurrLine) {
-        return -1;
-    }
-    int index = m_pCurrLine->GetSize() - 1;
-    CRF_CharData* pCharData = NULL;
-    while (index >= 0 && !pCharData) {
-        CRF_Data* pData = (*m_pCurrLine)[index];
-        if(pData->GetType() == CRF_Data::Text) {
-            pCharData = (CRF_CharData*)pData;
-        } else {
-            return -1;
-        }
-        index --;
-    }
-    if(m_pReflowedPage) {
-        index = m_pReflowedPage->m_pReflowed->GetSize() - 1;
-    }
-    while(!pCharData && index >= 0) {
-        CRF_Data* pData = (*m_pReflowedPage->m_pReflowed)[index];
-        if(pData->GetType() == CRF_Data::Text) {
-            pCharData = (CRF_CharData*)pData;
-        } else {
-            return -1;
-        }
-        index --;
-    }
-    if(pCharData) {
-        CFX_WideString str = pCharData->m_pCharState->m_pFont->UnicodeFromCharCode(pCharData->m_CharCode);
-        return str.GetAt(0);
-    }
-    return -1;
-}
-int CPDF_LayoutProcessor_Reflow::ProcessInsertObject(CPDF_TextObject* pObj, CFX_AffineMatrix formMatrix)
-{
-    if(!pObj || !m_pPreObj || !m_pCurrLine) {
-        return 0;
-    }
-    if(m_pCurrLine->GetSize() == 0) {
-        return 0;
-    }
-    CPDF_TextObjectItem item;
-    int nItem = m_pPreObj->CountItems();
-    m_pPreObj->GetItemInfo(nItem - 1, &item);
-    FX_FLOAT last_pos = item.m_OriginX;
-    FX_FLOAT last_width = GetCharWidth(item.m_CharCode, m_pPreObj->GetFont()) * m_pPreObj->GetFontSize() / 1000;
-    last_width = FXSYS_fabs(last_width);
-    pObj->GetItemInfo(0, &item);
-    FX_FLOAT this_width = GetCharWidth(item.m_CharCode, pObj->GetFont()) * pObj->GetFontSize() / 1000;
-    this_width = FXSYS_fabs(this_width);
-    FX_FLOAT threshold = last_width > this_width ? last_width / 4 : this_width / 4;
-    CFX_AffineMatrix prev_matrix, prev_reverse;
-    m_pPreObj->GetTextMatrix(&prev_matrix);
-    prev_matrix.Concat(m_perMatrix);
-    prev_reverse.SetReverse(prev_matrix);
-    FX_FLOAT x = pObj->GetPosX(), y = pObj->GetPosY();
-    formMatrix.Transform(x, y);
-    prev_reverse.Transform(x, y);
-    FX_WCHAR preChar  = GetPreChar();
-    CFX_WideString wstrItem = pObj->GetFont()->UnicodeFromCharCode(item.m_CharCode);
-    FX_WCHAR curChar = wstrItem.GetAt(0);
-    if (FXSYS_fabs(y) > threshold * 2) {
-        if (preChar == L'-') {
-            return 3;
-        }
-        if (preChar != L' ') {
-            return 1;
-        }
-        return 2;
-    }
-    if ((x - last_pos - last_width) > threshold && curChar != L' ' && preChar != L' ') {
-        return 1;
-    }
-    return 0;
-}
-int32_t CPDF_LayoutProcessor_Reflow::LogicPreObj(CPDF_TextObject* pObj)
-{
-    CPDF_TextObject* pPreObj = m_pPreObj;
-    m_pPreObj = pObj;
-    if(!pObj || !pPreObj) {
-        return 0;
-    }
-    CPDF_TextObjectItem item;
-    pPreObj->GetItemInfo(pPreObj->CountItems() - 1, &item);
-    FX_FLOAT last_pos = item.m_OriginX;
-    FX_FLOAT last_width = pPreObj->GetFont()->GetCharWidthF(item.m_CharCode) * pPreObj->GetFontSize() / 1000;
-    last_width = FXSYS_fabs(last_width);
-    pObj->GetItemInfo(0, &item);
-    FX_FLOAT this_width = pObj->GetFont()->GetCharWidthF(item.m_CharCode) * pObj->GetFontSize() / 1000;
-    this_width = FXSYS_fabs(this_width);
-    FX_FLOAT threshold = last_width > this_width ? last_width / 4 : this_width / 4;
-    CFX_AffineMatrix prev_matrix, prev_reverse;
-    pPreObj->GetTextMatrix(&prev_matrix);
-    prev_reverse.SetReverse(prev_matrix);
-    FX_FLOAT x = pObj->GetPosX(), y = pObj->GetPosY();
-    prev_reverse.Transform(x, y);
-    CFX_WideString wstrItem = pObj->GetFont()->UnicodeFromCharCode(item.m_CharCode);
-    FX_WCHAR curChar = wstrItem.GetAt(0);
-    if (FXSYS_fabs(y) > threshold * 2) {
-        return 2;
-    }
-    FX_WCHAR preChar = 0;
-    if (FXSYS_fabs(last_pos + last_width - x) > threshold && curChar != L' ') {
-        return 1;
-    }
-    return 0;
-    m_pPreObj = pObj;
-    if(!pPreObj) {
-        return 0;
-    }
-    if(pPreObj->m_Type != pObj->m_Type) {
-        return 0;
-    }
-    CFX_FloatRect rcCurObj(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, pObj->m_Top);
-    CFX_FloatRect rcPreObj(pPreObj->m_Left, pPreObj->m_Bottom, pPreObj->m_Right, pPreObj->m_Top);
-    if(pObj->m_Type == PDFPAGE_IMAGE) {
-        if(rcPreObj.Contains(rcCurObj)) {
-            return 2;
-        }
-        if(rcCurObj.Contains(rcPreObj)) {
-            return 2;
-        }
-        return 0;
-    }
-    if(pObj->m_Type == PDFPAGE_TEXT) {
-        if(!((rcPreObj.bottom > rcCurObj.top) || (rcPreObj.top < rcCurObj.bottom))) {
-            FX_FLOAT height = FX_MIN(rcPreObj.Height(), rcCurObj.Height());
-            if((rcCurObj.left - rcPreObj.right) > height / 3) {
-                return 3;
-            }
-        }
-        if(FXSYS_fabs(rcPreObj.Width() - rcCurObj.Width()) >= 2 || FXSYS_fabs(rcPreObj.Height() - rcCurObj.Height()) >= 2 ) {
-            return 0;
-        }
-        CPDF_TextObject* pPreTextObj = (CPDF_TextObject*)pPreObj;
-        CPDF_TextObject* pCurTextObj = (CPDF_TextObject*)pObj;
-        int nPreCount = pPreTextObj->CountItems();
-        int nCurCount = pCurTextObj->CountItems();
-        if (nPreCount != nCurCount) {
-            return 0;
-        }
-        FX_BOOL bSame = TRUE;
-        for (int i = 0; i < nPreCount; i++) {
-            CPDF_TextObjectItem itemPer, itemCur;
-            pPreTextObj->GetItemInfo(i, &itemPer);
-            pCurTextObj->GetItemInfo(i, &itemCur);
-            if (itemCur.m_CharCode != itemPer.m_CharCode) {
-                return 0;
-            }
-            if (itemCur.m_OriginX != itemPer.m_OriginX) {
-                bSame = FALSE;
-            }
-            if (itemCur.m_OriginY != itemPer.m_OriginY) {
-                bSame = FALSE;
-            }
-        }
-        if(rcPreObj.left == rcCurObj.left && rcPreObj.top == rcCurObj.top) {
-            return 1;
-        }
-        if(FXSYS_fabs(rcPreObj.left - rcCurObj.left) < rcPreObj.Width() / 3
-                && FXSYS_fabs(rcPreObj.top - rcCurObj.top) < rcPreObj.Height() / 3) {
-            return 2;
-        }
-    }
-    return 0;
-}
-FX_BOOL CPDF_LayoutProcessor_Reflow::IsSameTextObject(CPDF_TextObject* pTextObj1, CPDF_TextObject* pTextObj2)
-{
-    if (!pTextObj1 || !pTextObj2) {
-        return FALSE;
-    }
-    CFX_FloatRect rcPreObj(pTextObj2->m_Left, pTextObj2->m_Bottom, pTextObj2->m_Right, pTextObj2->m_Top);
-    CFX_FloatRect rcCurObj(pTextObj1->m_Left, pTextObj1->m_Bottom, pTextObj1->m_Right, pTextObj1->m_Top);
-    if (rcPreObj.IsEmpty() && rcCurObj.IsEmpty()) {
-        return FALSE;
-    }
-    if (!rcPreObj.IsEmpty() || !rcCurObj.IsEmpty()) {
-        rcPreObj.Intersect(rcCurObj);
-        if (rcPreObj.IsEmpty()) {
-            return FALSE;
-        }
-        if (FXSYS_fabs(rcPreObj.Width() - rcCurObj.Width()) > rcCurObj.Width() / 2) {
-            return FALSE;
-        }
-        if (pTextObj2->GetFontSize() != pTextObj1->GetFontSize()) {
-            return FALSE;
-        }
-    }
-    int nPreCount = pTextObj2->CountItems();
-    int nCurCount = pTextObj1->CountItems();
-    if (nPreCount != nCurCount) {
-        return FALSE;
-    }
-    for (int i = 0; i < nPreCount; i++) {
-        CPDF_TextObjectItem itemPer, itemCur;
-        pTextObj2->GetItemInfo(i, &itemPer);
-        pTextObj1->GetItemInfo(i, &itemCur);
-        if (itemCur.m_CharCode != itemPer.m_CharCode) {
-            return FALSE;
-        }
-    }
-    return TRUE;
-}
-void CPDF_LayoutProcessor_Reflow::ProcessTextObject(CPDF_TextObject *pTextObj, FX_FLOAT reflowWidth, CFX_AffineMatrix objMatrix)
-{
-    if(reflowWidth < 0 || !m_pCurrLine || !m_pTempLine) {
-        return;
-    }
-    if(IsSameTextObject(pTextObj, m_pPreObj)) {
-        return;
-    }
-    CPDF_PageObject* pPreObj = m_pPreObj;
-    int32_t logic = ProcessInsertObject(pTextObj, objMatrix);
-    m_pPreObj = pTextObj;
-    m_perMatrix.Copy(objMatrix);
-    int size = m_pTempLine->GetSize();
-    int curs = m_pCurrLine->GetSize();
-    CreateRFData(pTextObj);
-    size = m_pTempLine->GetSize();
-    int reds = m_pReflowedPage->m_pReflowed->GetSize();
-    if(size == 0) {
-        return;
-    }
-    if(logic == 1) {
-        m_fCurrLineWidth += pTextObj->GetBBox(&objMatrix).Height() / 3;
-    } else if(logic == 3 && curs) {
-        m_fCurrLineWidth -= (*m_pCurrLine)[curs - 1]->m_Width;
-        m_pCurrLine->Delete(curs - 1);
-    }
-    int beginPos = 0, endPos = m_pTempLine->GetSize() - 1;
-    while(beginPos <= endPos) {
-        int tempBeginPos = beginPos;
-        int tempEndPos = endPos;
-        FX_FLOAT all_width = GetDatasWidth( beginPos, endPos);
-        if(all_width < reflowWidth - m_fCurrLineWidth) {
-            CRF_CharData* pBeginData = (CRF_CharData*)(*m_pTempLine)[beginPos];
-            CFX_AffineMatrix matrix(1, 0, 0, 1, -pBeginData->m_PosX + m_fCurrLineWidth, -pBeginData->m_PosY);
-            Transform(&matrix, m_pTempLine, beginPos, endPos - beginPos + 1);
-            AddTemp2CurrLine(beginPos, endPos - beginPos + 1);
-            m_pTempLine->RemoveAll();
-            return;
-        }
-        int    midPos ;
-        if(tempBeginPos >= tempEndPos && tempEndPos != 0) {
-            midPos = tempEndPos;
-        } else {
-            while (tempBeginPos < tempEndPos ) {
-                midPos = (tempEndPos - tempBeginPos) / 2 + tempBeginPos;
-                if(midPos == tempBeginPos || midPos == tempEndPos) {
-                    break;
-                }
-                FX_FLOAT w = GetDatasWidth( beginPos, midPos);
-                if(w < reflowWidth - m_fCurrLineWidth) {
-                    tempBeginPos = midPos;
-                } else {
-                    tempEndPos = midPos;
-                }
-            }
-            midPos = tempBeginPos;
-            if(midPos == 0) {
-                FX_FLOAT w = GetDatasWidth( beginPos, 1);
-                if(w > reflowWidth - m_fCurrLineWidth) {
-                    midPos = -1;
-                }
-            }
-        }
-        if(midPos == -1) {
-            int count = m_pCurrLine->GetSize();
-            if(count == 0) {
-                midPos = 0;
-            }
-        }
-        int f = -1;
-        int i = 0;
-        for(i = midPos; i >= beginPos; i--) {
-            CRF_CharData* pData = (CRF_CharData*)(*m_pTempLine)[i];
-            CFX_WideString Wstr = pData->m_pCharState->m_pFont->UnicodeFromCharCode(pData->m_CharCode);
-            FX_WCHAR cha = Wstr.GetAt(0);
-            if(i < m_pTempLine->GetSize() - 1) {
-                CRF_CharData* pNextData = (CRF_CharData*)(*m_pTempLine)[i + 1];
-                if(pNextData->m_PosX - (pData->m_PosX + pData->m_Width) >= pData->m_Height / 4) {
-                    f = i;
-                    i++;
-                }
-            }
-            if(f == -1) {
-                if(IsCanBreakAfter((FX_DWORD)cha)) {
-                    f = i;
-                    i++;
-                } else if(IsCanBreakBefore((FX_DWORD)cha)) {
-                    f = i - 1;
-                    if(f < beginPos) {
-                        f = -1;
-                    }
-                }
-            }
-            if(f != -1) {
-                CRF_CharData* pBeginData = (CRF_CharData*)(*m_pTempLine)[beginPos];
-                CFX_AffineMatrix matrix(1, 0, 0, 1, -pBeginData->m_PosX + m_fCurrLineWidth, -pBeginData->m_PosY);
-                Transform(&matrix, m_pTempLine, beginPos, f - beginPos + 1);
-                CRF_Data* pData = (*m_pTempLine)[0];
-                AddTemp2CurrLine(beginPos, f - beginPos + 1);
-                beginPos = i;
-                FinishedCurrLine();
-                f = 1;
-                break;
-            }
-        }
-        if(f == -1 && i < beginPos) {
-            if( m_pCurrLine->GetSize()) {
-                int count = m_pCurrLine->GetSize();
-                f = -1;
-                for(int i = count - 1; i >= 0; i--) {
-                    CRF_Data* pData = (*m_pCurrLine)[i];
-                    if(pData->GetType() != CRF_Data::Text) {
-                        f = i + 1;
-                    } else {
-                        CRF_CharData* pCharData = (CRF_CharData*)pData;
-                        CFX_WideString Wstr = pCharData->m_pCharState->m_pFont->UnicodeFromCharCode(pCharData->m_CharCode);
-                        FX_WCHAR cha = Wstr.GetAt(0);
-                        if(IsCanBreakAfter(cha)) {
-                            f = i + 1;
-                            i++;
-                        } else if(IsCanBreakBefore(cha)) {
-                            f = i;
-                        }
-                        if(f == 0) {
-                            f = -1;
-                        }
-                    }
-                    if(f != -1) {
-                        FinishedCurrLine();
-                        if(f < count) {
-                            int reflowdCount = m_pReflowedPage->m_pReflowed->GetSize();
-                            int pos = reflowdCount + f - count;
-                            CRF_CharData* pData = (CRF_CharData*)(*m_pReflowedPage->m_pReflowed)[pos];
-                            CFX_AffineMatrix matrix(1, 0, 0, 1, -pData->m_PosX + m_fCurrLineWidth, -pData->m_PosY);
-                            Transform(&matrix, m_pReflowedPage->m_pReflowed, pos, reflowdCount - pos);
-                            for(int j = pos; j < reflowdCount; j++) {
-                                AddData2CurrLine((*m_pReflowedPage->m_pReflowed)[j]);
-                            }
-                            m_pReflowedPage->m_pReflowed->Delete(pos, count - f);
-                            if(logic == 3) {
-                                m_fCurrLineWidth += pTextObj->GetBBox(&objMatrix).Height() / 3;
-                            }
-                        }
-                        break;
-                    }
-                }
-            }
-            if(f == -1) {
-                CRF_CharData* pData = (CRF_CharData*)(*m_pTempLine)[beginPos];
-                CFX_AffineMatrix matrix(1, 0, 0, 1, -pData->m_PosX + m_fCurrLineWidth, -pData->m_PosY);
-                if(beginPos == midPos) {
-                    Transform(&matrix, pData);
-                    FX_RECT rect;
-                    pData->m_pCharState->m_pFont->GetFontBBox(rect);
-                    FX_FLOAT* pmatrix = pTextObj->m_TextState.GetMatrix();
-                    CFX_AffineMatrix textMatrix(pmatrix[0], pmatrix[1], pmatrix[2], pmatrix[3], 0, 0);
-                    FX_FLOAT width = pData->m_Height * (rect.right - rect.left) / 1000;
-                    FX_FLOAT f = (reflowWidth - m_fCurrLineWidth) / width;
-                    pData->m_PosY *= f;
-                    pData->m_Width *= f;
-                    pData->m_Height *= f;
-                    pData->m_pCharState = GetCharState(pData->m_pCharState->m_pTextObj, pData->m_pCharState->m_pFont, pData->m_Height, pData->m_pCharState->m_Color);
-                    AddData2CurrLine(pData);
-                } else {
-                    for(int m = beginPos; m <= midPos; m++) {
-                        CRF_CharData* pData = (CRF_CharData*)(*m_pTempLine)[m];
-                        Transform(&matrix, pData);
-                        AddData2CurrLine(pData);
-                    }
-                }
-                FinishedCurrLine();
-                beginPos = midPos + 1;
-            }
-        }
-    }
-    m_pTempLine->RemoveAll();
-    return;
-}
-void CPDF_LayoutProcessor_Reflow::ProcessUnitaryObjs(CPDF_PageObjects *pObjs, FX_FLOAT reflowWidth, CFX_AffineMatrix objMatrix)
-{
-    if(!pObjs) {
-        return;
-    }
-    CFX_FloatRect ObjBBox = pObjs->CalcBoundingBox();
-    objMatrix.TransformRect(ObjBBox);
-    FX_FLOAT ObjWidth = ObjBBox.Width();
-    FX_FLOAT ObjHeight = ObjBBox.Height();
-    CFX_AffineMatrix matrix;
-    if(ObjWidth <= reflowWidth - m_fCurrLineWidth) {
-        matrix.Set(1, 0, 0, 1, m_fCurrLineWidth , 0);
-    } else if(ObjWidth <= reflowWidth) {
-        FinishedCurrLine();
-        matrix.Set(1, 0, 0, 1, 0, 0);
-    } else {
-        FinishedCurrLine();
-        FX_FLOAT f = reflowWidth / ObjWidth ;
-        matrix.Set(f, 0, 0, f, 0, 0);
-    }
-    CFX_AffineMatrix tempMatrix = matrix;
-    matrix.Concat(objMatrix);
-    FX_POSITION pos = pObjs->GetFirstObjectPosition();
-    while(pos) {
-        CPDF_PageObject* pObj = pObjs->GetNextObject(pos);
-        if(pObj->m_Type == PDFPAGE_TEXT) {
-            int32_t ret = LogicPreObj((CPDF_TextObject*)pObj);
-            if(ret == 1 || ret == 2) {
-                continue;
-            }
-        }
-        CreateRFData(pObj, &matrix);
-    }
-    if (m_pTempLine) {
-        Transform(&tempMatrix, m_pTempLine, 0, m_pTempLine->GetSize());
-        AddTemp2CurrLine(0, m_pTempLine->GetSize());
-        m_pTempLine->RemoveAll();
-    }
-}
-void CPDF_LayoutProcessor_Reflow::ProcessPathObject(CPDF_PathObject *pObj, FX_FLOAT reflowWidth)
-{
-}
diff --git a/core/src/reflow/layoutprovider_taggedpdf.cpp b/core/src/reflow/layoutprovider_taggedpdf.cpp
deleted file mode 100644 (file)
index 785b0e2..0000000
+++ /dev/null
@@ -1,780 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "layoutprovider_taggedpdf.h"
-CPDF_LayoutElement::CPDF_LayoutElement()
-{
-    m_pTaggedElement = NULL;
-    m_pParentElement = NULL;
-}
-CPDF_LayoutElement::~CPDF_LayoutElement()
-{
-    m_ObjArray.RemoveAll();
-    int size = m_ChildArray.GetSize();
-    for(int i = 0; i < size; i++) {
-        CPDF_LayoutElement* pChild = (CPDF_LayoutElement*)m_ChildArray.GetAt(i);
-        delete pChild;
-        pChild = NULL;
-    }
-    m_ChildArray.RemoveAll();
-}
-LayoutType CPDF_LayoutElement::ConvertLayoutType(const CFX_ByteStringC& name)
-{
-    if(name == (const char*)("Document")) {
-        return LayoutDocument;
-    } else if(name == (const char*)("Part")) {
-        return LayoutPart;
-    } else if(name == (const char*)("Art")) {
-        return LayoutArt;
-    } else if(name == (const char*)("Sect")) {
-        return LayoutSect;
-    } else if(name == (const char*)("Div")) {
-        return LayoutDiv;
-    } else if(name == (const char*)("BlockQuote")) {
-        return LayoutBlockQuote;
-    } else if(name == (const char*)("Caption")) {
-        return LayoutCaption;
-    } else if(name == (const char*)("TOC")) {
-        return LayoutTOC;
-    } else if(name == (const char*)("TOCI")) {
-        return LayoutTOCI;
-    } else if(name == (const char*)("Index")) {
-        return LayoutIndex;
-    } else if(name == (const char*)("NonStruct")) {
-        return LayoutNonStruct;
-    } else if(name == (const char*)("Private")) {
-        return LayoutPrivate;
-    } else if(name == (const char*)("P")) {
-        return LayoutParagraph;
-    } else if(name == (const char*)("H")) {
-        return LayoutHeading;
-    } else if(name == (const char*)("H1")) {
-        return LayoutHeading1;
-    } else if(name == (const char*)("H2")) {
-        return LayoutHeading2;
-    } else if(name == (const char*)("H3")) {
-        return LayoutHeading3;
-    } else if(name == (const char*)("H4")) {
-        return LayoutHeading4;
-    } else if(name == (const char*)("H5")) {
-        return LayoutHeading5;
-    } else if(name == (const char*)("H6")) {
-        return LayoutHeading6;
-    } else if(name == (const char*)("L")) {
-        return LayoutList;
-    } else if(name == (const char*)("LI")) {
-        return LayoutListItem;
-    } else if(name == (const char*)("Lbl")) {
-        return LayoutListLabel;
-    } else if(name == (const char*)("LBody")) {
-        return LayoutListBody;
-    } else if(name == (const char*)("Table")) {
-        return LayoutTable;
-    } else if(name == (const char*)("TR")) {
-        return LayoutTableRow;
-    } else if(name == (const char*)("TH")) {
-        return LayoutTableHeaderCell;
-    } else if(name == (const char*)("TD")) {
-        return LayoutTableDataCell;
-    } else if(name == (const char*)("THead")) {
-        return LayoutTableHeaderGroup;
-    } else if(name == (const char*)("TBody")) {
-        return LayoutTableBodyGroup;
-    } else if(name == (const char*)("TFoot")) {
-        return LayoutTableFootGroup;
-    } else if(name == (const char*)("Span")) {
-        return LayoutSpan;
-    } else if(name == (const char*)("Quote")) {
-        return LayoutQuote;
-    } else if(name == (const char*)("Note")) {
-        return LayoutNote;
-    } else if(name == (const char*)("Reference")) {
-        return LayoutReference;
-    } else if(name == (const char*)("BibEntry")) {
-        return LayoutBibEntry;
-    } else if(name == (const char*)("Code")) {
-        return LayoutCode;
-    } else if(name == (const char*)("Link")) {
-        return LayoutLink;
-    } else if(name == (const char*)("Annot")) {
-        return LayoutAnnot;
-    } else if(name == (const char*)("Ruby")) {
-        return LayoutRuby;
-    } else if(name == (const char*)("RB")) {
-        return LayoutRubyBase;
-    } else if(name == (const char*)("RT")) {
-        return LayoutRubyAnnot;
-    } else if(name == (const char*)("RP")) {
-        return LayoutRubyPunc;
-    } else if(name == (const char*)("Warichu")) {
-        return LayoutWarichu;
-    } else if(name == (const char*)("WT")) {
-        return LayoutWarichuText;
-    } else if(name == (const char*)("WP")) {
-        return LayoutWarichuPunc;
-    } else if(name == (const char*)("Figure")) {
-        return LayoutFigure;
-    } else if(name == (const char*)("Formula")) {
-        return LayoutFormula;
-    } else if(name == (const char*)("Form")) {
-        return LayoutForm;
-    } else {
-        return LayoutUnknown;
-    }
-}
-CFX_ByteStringC CPDF_LayoutElement::ConvertLayoutType(LayoutType type)
-{
-    const CFX_ByteStringC& name = "";
-    if(type == LayoutArifact) {
-        return "Arifact";
-    } else if( type == LayoutDocument) {
-        return "Document";
-    } else if( type == LayoutPart) {
-        return "Part";
-    } else if( type == LayoutArt) {
-        return "Art";
-    } else if( type == LayoutSect) {
-        return "Sect";
-    } else if( type == LayoutDiv) {
-        return "Div";
-    } else if( type == LayoutBlockQuote) {
-        return "BlockQuote";
-    } else if( type == LayoutCaption) {
-        return "Caption";
-    } else if( type == LayoutTOC) {
-        return "TOC";
-    } else if( type == LayoutTOCI) {
-        return "TOCI";
-    } else if( type == LayoutIndex) {
-        return "Index";
-    } else if( type == LayoutNonStruct) {
-        return "NonStruct";
-    } else if( type == LayoutPrivate) {
-        return "Private";
-    } else if( type == LayoutParagraph) {
-        return "P";
-    } else if( type == LayoutHeading) {
-        return "H";
-    } else if( type == LayoutHeading1) {
-        return "H1";
-    } else if( type == LayoutHeading2) {
-        return "H2";
-    } else if( type == LayoutHeading3) {
-        return "H3";
-    } else if( type == LayoutHeading4) {
-        return "H4";
-    } else if( type == LayoutHeading5) {
-        return "H5";
-    } else if( type == LayoutHeading6) {
-        return "H6";
-    } else if( type == LayoutList) {
-        return "L";
-    } else if( type == LayoutListItem) {
-        return "LI";
-    } else if( type == LayoutListLabel) {
-        return "Lbl";
-    } else if( type == LayoutListBody) {
-        return "LBody";
-    } else if( type == LayoutTable) {
-        return "Table";
-    } else if( type == LayoutTableRow) {
-        return "TR";
-    } else if( type == LayoutTableHeaderCell) {
-        return "TH";
-    } else if( type == LayoutTableDataCell) {
-        return "TD";
-    } else if( type == LayoutTableHeaderGroup) {
-        return "THead";
-    } else if( type == LayoutTableBodyGroup) {
-        return "TBody";
-    } else if( type == LayoutTableFootGroup) {
-        return "TFoot";
-    } else if( type == LayoutSpan) {
-        return "Span";
-    } else if( type == LayoutQuote) {
-        return "Quote";
-    } else if( type == LayoutNote) {
-        return "Note";
-    } else if( type == LayoutReference) {
-        return "Reference";
-    } else if( type == LayoutBibEntry) {
-        return "BibEntry";
-    } else if( type == LayoutCode) {
-        return "Code";
-    } else if( type == LayoutLink) {
-        return "Link";
-    } else if( type == LayoutAnnot) {
-        return "Annot";
-    } else if( type == LayoutRuby) {
-        return "Ruby";
-    } else if( type == LayoutRubyBase) {
-        return "RB";
-    } else if( type == LayoutRubyAnnot) {
-        return "RT";
-    } else if( type == LayoutRubyPunc) {
-        return "RP";
-    } else if( type == LayoutWarichu) {
-        return "Warichu";
-    } else if( type == LayoutWarichuText) {
-        return "WT";
-    } else if( type == LayoutWarichuPunc) {
-        return "WP";
-    } else if( type == LayoutFigure) {
-        return "Figure";
-    } else if( type == LayoutFormula) {
-        return "Formula";
-    } else if( type == LayoutForm) {
-        return "Form";
-    }
-    return name;
-}
-CFX_ByteStringC CPDF_LayoutElement::ConvertLayoutAttr(LayoutAttr attr)
-{
-    switch(attr) {
-        case LayoutArtifactType:
-            return "Type";
-        case LayoutArtifactAttached:
-            return "Attached";
-        case LayoutArtifactSubType:
-            return "Subtype";
-        case LayoutPlacement:
-            return "Placement";
-        case LayoutWritingMode:
-            return "WritingMode";
-        case LayoutBackgroundColor:
-            return "BackgroundColor";
-        case LayoutBorderColor:
-            return "BorderColor";
-        case LayoutBorderStyle:
-            return "BorderStyle";
-        case LayoutBorderThickness:
-            return "BorderThickness";
-        case LayoutPadding:
-            return "Padding";
-        case LayoutColor:
-            return "Color";
-        case LayoutSpaceBefore:
-            return "SpaceBefore";
-        case LayoutSpaceAfter:
-            return "SpaceAfter";
-        case LayoutStartIndent:
-            return "StartIndent";
-        case LayoutEndIndent:
-            return "EndIndent";
-        case LayoutTextIndent:
-            return "TextIndent";
-        case LayoutTextAlign:
-            return "TextAlign";
-        case LayoutBBox:
-            return "BBox";
-        case LayoutWidth:
-            return "Width";
-        case LayoutHeight:
-            return "Height";
-        case LayoutBlockAlign:
-            return "BlockAlign";
-        case LayoutInlineAlign:
-            return "InlineAlign";
-        case LayoutTBorderStyle:
-            return "TBorderStyle";
-        case LayoutTPadding:
-            return "TPadding";
-        case LayoutBaselineShift:
-            return "BaselineShift";
-        case LayoutLineHeight:
-            return "LineHeight";
-        case LayoutTextDecorationColor:
-            return "TextDecorationColor";
-        case LayoutTextDecorationThickness:
-            return "TextDecorationThickness";
-        case LayoutTextDecorationType:
-            return "TextDecorationType";
-        case LayoutRubyAlign:
-            return "RubyAlign";
-        case LayoutRubyPosition:
-            return "RubyPosition";
-        case LayoutGlyphOrientationVertical:
-            return "GlyphOrientationVertical";
-        case LayoutColumnCount:
-            return "ColumnCount";
-        case LayoutColumnGap:
-            return "ColumnGap";
-        case LayoutColumnWidths:
-            return "ColumnWidths";
-        case LayoutListNumbering:
-            return "ListNumbering";
-        case LayoutFieldRole:
-            return "Role";
-        case LayoutFieldChecked:
-            return "checked";
-        case LayoutFieldDesc:
-            return "Desc";
-        case LayoutRowSpan:
-            return "RowSpan";
-        case LayoutColSpan:
-            return "ColSpan";
-        case LayoutTableHeaders:
-            return "Headers";
-        case LayoutTableHeaderScope:
-            return "Scope";
-        case LayoutTableSummary:
-            return "Summary";
-        default:
-            return "";
-    }
-}
-LayoutEnum CPDF_LayoutElement::ConvertLayoutEnum(CFX_ByteStringC Enum)
-{
-    if(Enum == "Block") {
-        return LayoutBlock;
-    } else if (Enum == "Inline") {
-        return LayoutInline;
-    } else if (Enum == "Before") {
-        return LayoutBefore;
-    } else if (Enum == "Start") {
-        return LayoutStart;
-    } else if (Enum == "End") {
-        return LayoutEnd;
-    } else if (Enum == "LrTb") {
-        return LayoutLrTb;
-    } else if (Enum == "RlTb") {
-        return LayoutRlTb;
-    } else if (Enum == "TbRl") {
-        return LayoutTbRl;
-    } else if (Enum == "None") {
-        return LayoutNone;
-    } else if (Enum == "Hidden") {
-        return LayoutHidden;
-    } else if (Enum == "Dotted") {
-        return LayoutDotted;
-    } else if (Enum == "Dashed") {
-        return LayoutDashed;
-    } else if (Enum == "Solid") {
-        return LayoutSolid;
-    } else if (Enum == "Double") {
-        return LayoutDouble;
-    } else if (Enum == "Groove") {
-        return LayoutGroove;
-    } else if (Enum == "Ridge") {
-        return LayoutRidge;
-    } else if (Enum == "Inset") {
-        return LayoutInset;
-    } else if (Enum == "Outset") {
-        return LayoutOutset;
-    } else if (Enum == "Normal") {
-        return LayoutNormal;
-    } else if (Enum == "Auto") {
-        return LayoutAuto;
-    } else if (Enum == "Center") {
-        return LayoutCenter;
-    } else if (Enum == "Justify") {
-        return LayoutJustify;
-    } else if (Enum == "Middle") {
-        return LayoutMiddle;
-    } else if (Enum == "Underline") {
-        return LayoutUnderline;
-    } else if (Enum == "Overline") {
-        return LayoutOverline;
-    } else if (Enum == "LineThrough") {
-        return LayoutLineThrough;
-    } else if (Enum == "Distribute") {
-        return LayoutDistribute;
-    } else if (Enum == "Disc") {
-        return LayoutDisc;
-    } else if (Enum == "Circle") {
-        return LayoutCircle;
-    } else if (Enum == "Square") {
-        return LayoutSquare;
-    } else if (Enum == "Decimal") {
-        return LayoutDecimal;
-    } else if (Enum == "UpperRoman") {
-        return LayoutUpperRoman;
-    } else if (Enum == "LowerRoman") {
-        return LayoutLowerRoman;
-    } else if (Enum == "UpperAlpha") {
-        return LayoutUpperAlpha;
-    } else if (Enum == "LowerAlpha") {
-        return LayoutLowerAlpha;
-    } else if (Enum == "rb") {
-        return LayoutRB;
-    } else if (Enum == "cb") {
-        return LayoutCB;
-    } else if (Enum == "pb") {
-        return LayoutPB;
-    } else if (Enum == "tv") {
-        return LayoutTV;
-    } else if (Enum == "on") {
-        return LayoutOn;
-    } else if (Enum == "off") {
-        return LayoutOff;
-    } else if (Enum == "neutral") {
-        return LayoutNeutral;
-    } else if (Enum == "Row") {
-        return LayoutRow;
-    } else if (Enum == "Column") {
-        return LayoutColumn;
-    } else if (Enum == "Both") {
-        return LayoutBoth;
-    } else if (Enum == "Left") {
-        return LayoutLeft;
-    } else if (Enum == "Top") {
-        return LayoutTop;
-    } else if (Enum == "Bottom") {
-        return LayoutBottom;
-    } else if (Enum == "Right") {
-        return LayoutRight;
-    } else if (Enum == "Pagination") {
-        return LayoutPagination;
-    } else if (Enum == "Layout") {
-        return LayoutLayout;
-    } else if (Enum == "Page") {
-        return LayoutPage;
-    } else if (Enum == "Background") {
-        return LayoutBackground;
-    } else if (Enum == "Header") {
-        return LayoutHeader;
-    } else if (Enum == "Footer") {
-        return LayoutFooter;
-    } else if (Enum == "Watermark") {
-        return LayoutWatermark;
-    } else {
-        return LayoutInvalid;
-    }
-}
-LayoutType CPDF_LayoutElement::GetType()
-{
-    if(!m_pTaggedElement) {
-        return LayoutUnknown;
-    }
-    CFX_ByteString name = m_pTaggedElement->GetType();
-    return ConvertLayoutType(name);
-}
-int    CPDF_LayoutElement::CountAttrValues(LayoutAttr attr_type)
-{
-    if(!m_pTaggedElement) {
-        return 0;
-    }
-    CPDF_Object* pObj = m_pTaggedElement->GetAttr(GetAttrOwner(attr_type), ConvertLayoutAttr(attr_type), IsInheritable(attr_type));
-    if(pObj) {
-        return 1;
-    } else {
-        return 0;
-    }
-}
-LayoutEnum CPDF_LayoutElement::GetEnumAttr(LayoutAttr attr_type, int index)
-{
-    if(!m_pTaggedElement) {
-        return LayoutInvalid;
-    }
-    CFX_ByteStringC owner = GetAttrOwner(attr_type);
-    CFX_ByteStringC default_value = GetDefaultNameValue(attr_type);
-    CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type);
-    CFX_ByteString     AttrValue = m_pTaggedElement->GetName(owner, AttrName, default_value, IsInheritable(attr_type), index);
-    return ConvertLayoutEnum(AttrValue);
-}
-CFX_ByteStringC CPDF_LayoutElement::GetAttrOwner(LayoutAttr attr_type)
-{
-    switch(attr_type) {
-        case LayoutListNumbering:
-            return "List";
-        case LayoutFieldRole:
-        case LayoutFieldChecked :
-        case LayoutFieldDesc:
-            return "PrintField";
-        case LayoutRowSpan:
-        case LayoutColSpan:
-        case LayoutTableHeaders:
-        case LayoutTableHeaderScope:
-        case LayoutTableSummary:
-            return "Table";
-        default:
-            return "Layout";
-    }
-}
-FX_FLOAT       CPDF_LayoutElement::GetNumberAttr(LayoutAttr attr_type, int index)
-{
-    if(!m_pTaggedElement) {
-        return 0;
-    }
-    CFX_ByteStringC owner = GetAttrOwner(attr_type);
-    FX_FLOAT default_value = GetDefaultFloatValue(attr_type);
-    CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type);
-    FX_FLOAT f = m_pTaggedElement->GetNumber(owner, AttrName, default_value, IsInheritable(attr_type), index);
-    if(attr_type == LayoutWidth && !f) {
-        f = m_pTaggedElement->GetNumber("Table", AttrName, default_value, IsInheritable(attr_type), index);
-    }
-    return f;
-}
-FX_COLORREF    CPDF_LayoutElement::GetColorAttr(LayoutAttr attr_type, int index)
-{
-    if(!m_pTaggedElement) {
-        return 0;
-    }
-    CFX_ByteStringC owner = GetAttrOwner(attr_type);
-    FX_COLORREF default_value = GetDefaultColorValue(attr_type);
-    CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type);
-    FX_ARGB f = m_pTaggedElement->GetColor(owner, AttrName, default_value, IsInheritable(attr_type), index);
-    return f;
-}
-FX_FLOAT CPDF_LayoutElement::GetDefaultFloatValue(LayoutAttr attr_type)
-{
-    switch(attr_type) {
-        case LayoutColumnCount:
-            return 1;
-        case LayoutRowSpan:
-            return 1;
-        case LayoutColSpan:
-            return 1;
-        default:
-            return 0;
-    }
-}
-FX_COLORREF CPDF_LayoutElement::GetDefaultColorValue(LayoutAttr attr_type)
-{
-    return -1;
-}
-CFX_ByteStringC CPDF_LayoutElement::GetDefaultNameValue(LayoutAttr attr_type)
-{
-    switch(attr_type) {
-        case LayoutPlacement:
-            return "Inline";
-        case LayoutWritingMode:
-            return "LrTb";
-        case LayoutBorderStyle:
-            return "None";
-        case LayoutTextAlign:
-            return "Start";
-        case LayoutBlockAlign:
-            return "Before";
-        case LayoutInlineAlign:
-            return "Start";
-        case LayoutTBorderStyle:
-            return "None";
-        case LayoutTextDecorationType:
-            return "None";
-        case LayoutRubyAlign:
-            return "Distribute";
-        case LayoutRubyPosition:
-            return "Before";
-        case LayoutGlyphOrientationVertical:
-            return "Auto";
-        case LayoutListNumbering:
-            return "None";
-        case LayoutFieldRole:
-            return "None";
-        default:
-            return "";
-    }
-}
-FX_BOOL        CPDF_LayoutElement::IsInheritable(LayoutAttr type)
-{
-    switch(type) {
-        case LayoutWritingMode:
-        case LayoutTextAlign:
-        case LayoutBlockAlign:
-        case LayoutInlineAlign:
-        case LayoutLineHeight:
-        case LayoutGlyphOrientationVertical:
-        case LayoutRubyAlign:
-        case LayoutRubyPosition:
-        case LayoutBorderThickness:
-        case LayoutStartIndent:
-        case LayoutEndIndent:
-        case LayoutTextIndent:
-        case LayoutTPadding:
-        case LayoutTextDecorationThickness:
-        case LayoutBorderColor:
-        case LayoutColor:
-        case LayoutTextDecorationColor:
-            return TRUE;
-        default:
-            return FALSE;
-    }
-}
-int    CPDF_LayoutElement::CountChildren()
-{
-    return m_ChildArray.GetSize();
-}
-IPDF_LayoutElement* CPDF_LayoutElement::GetChild(int index)
-{
-    return (IPDF_LayoutElement*)m_ChildArray.GetAt(index);
-}
-IPDF_LayoutElement* CPDF_LayoutElement::GetParent()
-{
-    return m_pParentElement;
-}
-int    CPDF_LayoutElement::CountObjects()
-{
-    if(m_pTaggedElement == NULL) {
-        return 0;
-    }
-    CFX_PtrArray* pObj = &m_ObjArray;
-    int size = pObj->GetSize();
-    return size;
-}
-CPDF_PageObject* CPDF_LayoutElement::GetObject(int index)
-{
-    if(m_pTaggedElement == NULL) {
-        return NULL;
-    }
-    CFX_PtrArray *pObj = &m_ObjArray;
-    int size = pObj->GetSize();
-    if(index < size) {
-        return (CPDF_PageObject*)pObj->GetAt(index);
-    }
-    return NULL;
-}
-FX_BOOL CPDF_LayoutElement::AddObject(CPDF_PageObject* pObj)
-{
-    return m_ObjArray.Add(pObj);
-}
-IPDF_LayoutProvider* IPDF_LayoutProvider::Create_LayoutProvider_TaggedPDF(CPDF_PageObjects* pPage)
-{
-    if(pPage == NULL) {
-        return NULL;
-    }
-    CPDF_LayoutProvider_TaggedPDF* pProvider = FX_NEW CPDF_LayoutProvider_TaggedPDF;
-    if (!pProvider) {
-        return NULL;
-    }
-    pProvider->Init(pPage);
-    return pProvider;
-}
-CPDF_LayoutProvider_TaggedPDF::CPDF_LayoutProvider_TaggedPDF()
-{
-    m_pPause = NULL;
-    m_pRoot = NULL;
-    m_pPageTree = NULL;
-    m_pCurTaggedElement = NULL;
-}
-CPDF_LayoutProvider_TaggedPDF::~CPDF_LayoutProvider_TaggedPDF()
-{
-    m_pCurTaggedElement = NULL;
-    m_pPause = NULL;
-    if(m_pRoot) {
-        delete m_pRoot;
-    }
-    m_pRoot = NULL;
-    if(m_pPageTree) {
-        delete m_pPageTree;
-    }
-    m_pPageTree = NULL;
-}
-void CPDF_LayoutProvider_TaggedPDF::ProcessElement(CPDF_LayoutElement*pParent, CPDF_StructElement* pTaggedElement)
-{
-    if(!pTaggedElement) {
-        return;
-    }
-    if(!pParent) {
-        m_Status = LayoutError;
-        return;
-    }
-    CPDF_LayoutElement* pElement = FX_NEW CPDF_LayoutElement;
-    if (!pElement) {
-        m_Status = LayoutError;
-        return;
-    }
-    pElement->m_pParentElement = pParent;
-    pElement->m_pTaggedElement = pTaggedElement;
-    pParent->m_ChildArray.Add(pElement);
-    int count = pTaggedElement->CountKids();
-    for(int i = 0; i < count; i++) {
-        CPDF_StructKid Kid = pTaggedElement->GetKid(i);
-        switch(Kid.m_Type) {
-            case CPDF_StructKid::Element: {
-                    ProcessElement(pElement, Kid.m_Element.m_pElement);
-                    if(m_Status != LayoutReady) {
-                        return ;
-                    }
-                }
-                break;
-            case CPDF_StructKid::PageContent: {
-                    int count = m_pPage->CountObjects();
-                    FX_POSITION pos = m_pPage->GetFirstObjectPosition();
-                    if(!pos) {
-                        m_Status = LayoutError;
-                        return ;
-                    }
-                    while (pos) {
-                        CPDF_PageObject* pObj = m_pPage->GetNextObject(pos);
-                        int pbjMCID = pObj->m_ContentMark.GetMCID();
-                        if((FX_DWORD)(pObj->m_ContentMark.GetMCID()) == Kid.m_PageContent.m_ContentId) {
-                            pElement->AddObject(pObj);
-                        }
-                    }
-                }
-                break;
-            case CPDF_StructKid::StreamContent:
-            case CPDF_StructKid::Object:
-            default:
-                break;
-        }
-    }
-}
-LayoutStatus CPDF_LayoutProvider_TaggedPDF::StartLoad(IFX_Pause* pPause)
-{
-    m_pPause = pPause;
-    if(m_pPage->m_pDocument && m_pPage->m_pFormDict) {
-        m_pPageTree = CPDF_StructTree::LoadPage(m_pPage->m_pDocument, m_pPage->m_pFormDict);
-    }
-    if(!m_pPageTree) {
-        m_Status = LayoutError;
-        return LayoutError;
-    }
-    int count = m_pPageTree->CountTopElements();
-    if(count == 0) {
-        m_Status = LayoutError;
-        return LayoutError;
-    }
-    m_pRoot = FX_NEW CPDF_LayoutElement;
-    if (!m_pRoot) {
-        m_Status = LayoutError;
-        return LayoutError;
-    }
-    for(int i = 0; i < count; i++) {
-        CPDF_StructElement* pElement = m_pPageTree->GetTopElement(i);
-        if(pElement) {
-            ProcessElement(m_pRoot, pElement);
-            if(m_Status != LayoutReady) {
-                return m_Status;
-            }
-        }
-    }
-    m_pCurTaggedElement = NULL;
-    m_Status = LayoutFinished;
-    return LayoutFinished;
-}
-LayoutStatus CPDF_LayoutProvider_TaggedPDF::Continue()
-{
-    if(!m_pCurTaggedElement) {
-        return LayoutError;
-    }
-    if(m_Status != LayoutToBeContinued) {
-        return LayoutError;
-    }
-    m_Status = LayoutReady;
-    int count = m_pPageTree->CountTopElements();
-    for(int i = 0; i < count; i++) {
-        CPDF_StructElement* pElement = m_pPageTree->GetTopElement(i);
-        if(pElement) {
-            ProcessElement(m_pRoot, pElement);
-            if(m_Status != LayoutReady) {
-                return m_Status;
-            }
-        }
-    }
-    m_pCurTaggedElement = NULL;
-    m_Status = LayoutFinished;
-    return LayoutFinished;
-}
-int CPDF_LayoutProvider_TaggedPDF::GetPosition()
-{
-    if(m_TopElementIndex == 0) {
-        return 0;
-    }
-    int count = m_pPageTree->CountTopElements();
-    return m_TopElementIndex / count * 100;
-}
diff --git a/core/src/reflow/layoutprovider_taggedpdf.h b/core/src/reflow/layoutprovider_taggedpdf.h
deleted file mode 100644 (file)
index fa6c994..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_SRC_REFLOW_LAYOUTPROVIDER_TAGGEDPDF_H_
-#define CORE_SRC_REFLOW_LAYOUTPROVIDER_TAGGEDPDF_H_
-
-#include "../../include/reflow/reflowengine.h"
-
-class CPDF_LayoutElement : public IPDF_LayoutElement
-{
-public:
-    CPDF_LayoutElement();
-    ~CPDF_LayoutElement();
-
-    LayoutType GetType();
-    void       GetRect(CFX_FloatRect& rcRect) {};
-
-    int                CountAttrValues(LayoutAttr attr_type);
-
-    LayoutEnum GetEnumAttr(LayoutAttr attr_type, int index);
-    FX_FLOAT   GetNumberAttr(LayoutAttr attr_type, int index);
-    FX_COLORREF        GetColorAttr(LayoutAttr attr_type, int index);
-
-    int                CountChildren();
-
-    IPDF_LayoutElement* GetChild(int index);
-
-    IPDF_LayoutElement* GetParent();
-
-    int        CountObjects();
-    CPDF_PageObject*   GetObject(int index);
-    FX_BOOL AddObject(CPDF_PageObject* pObj);
-    CPDF_StructElement* m_pTaggedElement;
-    CPDF_LayoutElement* m_pParentElement;
-    CFX_PtrArray       m_ChildArray;
-    LayoutType ConvertLayoutType(const CFX_ByteStringC& name);
-    CFX_ByteStringC ConvertLayoutType(LayoutType type);
-    CFX_ByteStringC ConvertLayoutAttr(LayoutAttr attr);
-    LayoutEnum ConvertLayoutEnum(CFX_ByteStringC Enum);
-
-protected:
-    FX_BOOL            IsInheritable(LayoutAttr attr_type);
-    CFX_ByteStringC GetAttrOwner(LayoutAttr attr_type);
-    CFX_ByteStringC GetDefaultNameValue(LayoutAttr attr_type);
-    FX_FLOAT           GetDefaultFloatValue(LayoutAttr attr_type);
-    FX_COLORREF                GetDefaultColorValue(LayoutAttr attr_type);
-    CFX_PtrArray       m_ObjArray;
-};
-class CPDF_LayoutProvider_TaggedPDF : public IPDF_LayoutProvider
-{
-public:
-    CPDF_LayoutProvider_TaggedPDF();
-    ~CPDF_LayoutProvider_TaggedPDF();
-    void                       SetLayoutProviderStyle(LAYOUTPROVIDER_STYLE style) {};
-
-    void       Init(CPDF_PageObjects* pPage)
-    {
-        m_pPage = pPage;
-        m_Status = LayoutReady;
-    };
-
-    LayoutStatus       StartLoad(IFX_Pause* pPause = NULL);
-    LayoutStatus       Continue();
-    int                                GetPosition();
-
-    IPDF_LayoutElement* GetRoot()
-    {
-        return m_pRoot;
-    };
-
-protected:
-    void ProcessElement(CPDF_LayoutElement*pParent, CPDF_StructElement* pTaggedElement);
-    LayoutStatus       m_Status;
-    CPDF_StructElement* m_pCurTaggedElement;
-    CPDF_LayoutElement* m_pRoot;
-    IFX_Pause*                 m_pPause;
-    CPDF_PageObjects*  m_pPage;
-    CPDF_StructTree*   m_pPageTree;
-    int                                        m_TopElementIndex;
-};
-
-#endif  // CORE_SRC_REFLOW_LAYOUTPROVIDER_TAGGEDPDF_H_
diff --git a/core/src/reflow/reflowedpage.cpp b/core/src/reflow/reflowedpage.cpp
deleted file mode 100644 (file)
index 3335eed..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "../../include/reflow/reflowengine.h"
-#include "reflowedpage.h"
-CPDF_ProgressiveReflowPageParser::CPDF_ProgressiveReflowPageParser()
-{
-    m_nObjProcessed = 0;
-    m_pReflowEngine = NULL;
-    m_pProvider = NULL;
-}
-CPDF_ProgressiveReflowPageParser::~CPDF_ProgressiveReflowPageParser()
-{
-    if(m_pProvider) {
-        delete m_pProvider;
-    }
-    m_pProvider = NULL;
-    if(m_pReflowEngine) {
-        delete m_pReflowEngine;
-    }
-    m_pReflowEngine = NULL;
-}
-void CPDF_ProgressiveReflowPageParser::Init()
-{
-    m_Status = Ready;
-}
-CPDF_ReflowedPage::CPDF_ReflowedPage(CFX_GrowOnlyPool* pMemoryPool)
-{
-    m_PageWidth = 0;
-    m_PageHeight = 0;
-    m_bWaiting = TRUE;
-    if(pMemoryPool) {
-        m_pMemoryPool = pMemoryPool;
-        m_bCreateMemoryPool = FALSE;
-    } else {
-        m_pMemoryPool = FX_NEW CFX_GrowOnlyPool;
-        m_bCreateMemoryPool = TRUE;
-    }
-    m_pCharState = FX_NEW CRF_CharStateArray(10);
-    m_pReflowed = FX_NEW CRF_DataPtrArray(500);
-    m_pPageInfos = NULL;
-}
-CPDF_ReflowedPage::~CPDF_ReflowedPage()
-{
-    if (m_pReflowed) {
-        for(int i = 0; i < m_pReflowed->GetSize(); i++) {
-            CRF_Data* pData = (*m_pReflowed)[i];
-            if(pData->m_Type == CRF_Data::Image) {
-                delete ((CRF_ImageData*)pData)->m_pBitmap;
-            }
-        }
-        m_pReflowed->RemoveAll();
-        delete m_pReflowed;
-    }
-    m_pReflowed = NULL;
-    if (m_pCharState) {
-        m_pCharState->RemoveAll();
-        delete m_pCharState;
-    }
-    m_pCharState = NULL;
-    if(m_bCreateMemoryPool && m_pMemoryPool) {
-        m_pMemoryPool->FreeAll();
-    }
-    if (m_pMemoryPool) {
-        delete m_pMemoryPool;
-    }
-    m_pMemoryPool = NULL;
-    m_pPDFPage = NULL;
-    if (m_pPageInfos) {
-        ReleasePageObjsMemberShip();
-    }
-}
-FX_BOOL CPDF_ReflowedPage::RetainPageObjsMemberShip()
-{
-    if (NULL == m_pPDFPage) {
-        return FALSE;
-    }
-    if (NULL == m_pPageInfos) {
-        m_pPageInfos = FX_NEW CFX_MapPtrToPtr();
-    } else {
-        return TRUE;
-    }
-    FX_POSITION        pos = m_pPDFPage->GetFirstObjectPosition();
-    if (!pos)  {
-        return FALSE;
-    }
-    CPDF_PageObject* pPageObj = NULL;
-    while (pos) {
-        pPageObj = m_pPDFPage->GetNextObject(pos);
-        MarkPageObjMemberShip(pPageObj, NULL);
-        pPageObj = NULL;
-    }
-    return TRUE;
-}
-void CPDF_ReflowedPage::MarkPageObjMemberShip(CPDF_PageObject* pObj, CRF_PageInfo* pParent)
-{
-    if (NULL == m_pPageInfos) {
-        return;
-    }
-    CRF_PageInfo* pPageInfo = FX_NEW CRF_PageInfo(pObj, pParent);
-    if (NULL == pPageInfo) {
-        return;
-    }
-    m_pPageInfos->SetAt(pObj, pPageInfo);
-    if (PDFPAGE_FORM != pObj->m_Type) {
-        return;
-    }
-    CPDF_FormObject* pFormObj = (CPDF_FormObject*)pObj;
-    FX_POSITION        pos;
-    pos = pFormObj->m_pForm->GetFirstObjectPosition();
-    if (!pos)  {
-        return;
-    }
-    CPDF_PageObject* pPageObj = NULL;
-    while (pos) {
-        pPageObj = pFormObj->m_pForm->GetNextObject(pos);
-        MarkPageObjMemberShip(pPageObj, pPageInfo);
-        pPageObj = NULL;
-    }
-}
-void CPDF_ReflowedPage::ReleasePageObjsMemberShip()
-{
-    if (NULL == m_pPageInfos) {
-        return;
-    }
-    CPDF_PageObject* pPageObj = NULL;
-    CRF_PageInfo* pPageInfo = NULL;
-    FX_POSITION pos = m_pPageInfos->GetStartPosition();
-    while (pos) {
-        m_pPageInfos->GetNextAssoc(pos, (void*&)pPageObj, (void*&)pPageInfo);
-        delete pPageInfo;
-    }
-    m_pPageInfos->RemoveAll();
-    delete m_pPageInfos;
-    m_pPageInfos = NULL;
-}
-CPDF_Dictionary* CPDF_ReflowedPage::GetFormResDict(CPDF_PageObject* pObj)
-{
-    if (NULL == m_pPageInfos) {
-        return NULL;
-    }
-    if (FALSE == RetainPageObjsMemberShip()) {
-        return NULL;
-    }
-    CRF_PageInfo* pPageInfo = (CRF_PageInfo*)m_pPageInfos->GetValueAt(pObj);
-    if (NULL == pPageInfo) {
-        return NULL;
-    }
-    return pPageInfo->GetFormDict();
-}
-void CPDF_ReflowedPage::GetDisplayMatrix(CFX_AffineMatrix& matrix, int32_t xPos, int32_t yPos, int32_t xSize, int32_t ySize, int32_t iRotate, const CFX_AffineMatrix* pPageMatrix)
-{
-    CFX_AffineMatrix display_matrix;
-    if(m_PageHeight == 0) {
-        matrix.Set(1, 0, 0, -1, 0, 0);
-        return;
-    }
-    int32_t x0, y0, x1, y1, x2, y2;
-    iRotate %= 4;
-    switch (iRotate) {
-        case 0:
-            x0 = xPos;
-            y0 = yPos;
-            x1 = xPos;
-            y1 = yPos + ySize;
-            x2 = xPos + xSize;
-            y2 = yPos;
-            break;
-        case 3:
-            x0 = xPos;
-            y0 = ySize + yPos;
-            x1 =  xPos + xSize;
-            y1 = yPos + ySize;
-            x2 = xPos;
-            y2 = yPos;
-            break;
-        case 2:
-            x0 = xSize + xPos;
-            y0 = ySize + yPos;
-            x1 = xSize + xPos ;
-            y1 = yPos;
-            x2 = xPos;
-            y2 =  ySize + yPos;
-            break;
-        case 1:
-            x0 = xPos + xSize;
-            y0 = yPos;
-            x1 = xPos;
-            y1 = yPos;
-            x2 = xPos + xSize;
-            y2 = yPos + ySize;
-            break;
-    }
-    display_matrix.Set(FXSYS_Div((FX_FLOAT)(x2 - x0), m_PageWidth),
-                       FXSYS_Div((FX_FLOAT)(y2 - y0), m_PageWidth),
-                       FXSYS_Div((FX_FLOAT)(x1 - x0), m_PageHeight),
-                       FXSYS_Div((FX_FLOAT)(y1 - y0), m_PageHeight),
-                       (FX_FLOAT)(x0), (FX_FLOAT)(y0));
-    matrix.Set(1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f);
-    matrix.Concat(display_matrix);
-    return;
-}
-FX_FLOAT CPDF_ReflowedPage::GetPageHeight()
-{
-    return m_PageHeight;
-}
-void CPDF_ReflowedPage::FocusGetData(const CFX_AffineMatrix matrix, int32_t x, int32_t y, CFX_ByteString& str)
-{
-    if (NULL == m_pReflowed) {
-        return;
-    }
-    CFX_AffineMatrix revMatrix;
-    revMatrix.SetReverse(matrix);
-    FX_FLOAT x1, y1;
-    revMatrix.Transform((float)x, (float)y, x1, y1);
-    int count = m_pReflowed->GetSize();
-    FX_FLOAT dx = 1000, dy = 1000;
-    int32_t pos = 0;
-    int32_t i;
-    for(i = 0; i < count; i++) {
-        CRF_Data* pData = (*m_pReflowed)[i];
-        FX_FLOAT tempdy = FXSYS_fabs(pData->m_PosY - y1);
-        if(FXSYS_fabs(tempdy - dy) < 1) {
-            continue;
-        }
-        CFX_FloatRect rect (0, pData->m_PosY + pData->m_Height, m_PageWidth, pData->m_PosY);
-        if(rect.Contains(x1, y1)) {
-            pos = i;
-            dx = 0;
-            dy = 0;
-            break;
-        } else if(tempdy < dy) {
-            dy = tempdy;
-            dx = FXSYS_fabs(pData->m_PosX - x1);
-            pos = i;
-        } else if (tempdy == dy) {
-            FX_FLOAT tempdx = FXSYS_fabs(pData->m_PosX - x1);
-            if(tempdx < dx) {
-                dx = tempdx;
-                pos = i;
-            }
-        } else if (tempdy > dy) {
-            break;
-        }
-    }
-    if(dx != 0 || dy != 0) {
-        count = count < (pos + 10) ? count : (pos + 10);
-        for(i = 0 > (pos - 10) ? 0 : (pos - 10); i < count; i++) {
-            CRF_Data* pData = (*m_pReflowed)[i];
-            FX_FLOAT tempdy = FXSYS_fabs(pData->m_PosY - y1);
-            if(tempdy < dy) {
-                dy = tempdy;
-                dx = FXSYS_fabs(pData->m_PosX - x1);
-                pos = i;
-            } else if (tempdy == dy) {
-                FX_FLOAT tempdx = FXSYS_fabs(pData->m_PosX - x1);
-                if(tempdx < dx) {
-                    dx = tempdx;
-                    pos = i;
-                }
-            }
-        }
-    }
-    str.Format("%d", pos);
-}
-FX_BOOL CPDF_ReflowedPage::FocusGetPosition(const CFX_AffineMatrix matrix, CFX_ByteString str, int32_t& x, int32_t& y)
-{
-    if (NULL == m_pReflowed) {
-        return FALSE;
-    }
-    int32_t pos = FXSYS_atoi(str);
-    if(pos < 0 || pos >= m_pReflowed->GetSize()) {
-        return FALSE;
-    }
-    CRF_Data* pData = (*m_pReflowed)[pos];
-    FX_FLOAT x1, y1;
-    matrix.Transform(pData->m_PosX, pData->m_PosY + pData->m_Height, x1, y1);
-    x = (int)x1;
-    y = (int)y1;
-    return TRUE;
-}
-int CPDF_ProgressiveReflowPageParser::GetPosition()
-{
-    if(!m_pProvider) {
-        return 0;
-    }
-    if(!m_pReflowEngine) {
-        return m_pProvider->GetPosition() / 2;
-    }
-    return m_pProvider->GetPosition() / 2 + m_pReflowEngine->GetPosition() / 2;
-}
-void CPDF_ProgressiveReflowPageParser::Continue(IFX_Pause* pPause)
-{
-    if (NULL == m_pReflowPage) {
-        return;
-    }
-    if(m_Status != ToBeContinued) {
-        return;
-    }
-    m_pPause = pPause;
-    if(m_pReflowEngine) {
-        if(m_pReflowEngine->Continue() != LayoutToBeContinued) {
-            m_Status = Done;
-        }
-    } else {
-        if(m_pProvider->Continue() == LayoutFinished) {
-            m_pReflowEngine = IPDF_LayoutProcessor::Create_LayoutProcessor_Reflow(m_TopIndent, m_ReflowedWidth, m_fScreenHeight, m_pReflowPage, m_flags, m_ParseStyle.m_LineSpace);
-            CFX_AffineMatrix matrix;
-            m_pPDFPage->GetDisplayMatrix(matrix, 0, 0, (int)(m_pPDFPage->GetPageWidth()), (int)(m_pPDFPage->GetPageHeight()), 0);
-            if(m_pReflowEngine->StartProcess(m_pProvider->GetRoot(), m_pPause, &matrix) != LayoutToBeContinued) {
-                m_Status = Done;
-            }
-        }
-    }
-    if(m_TopIndent && m_Status == Done) {
-        m_pReflowPage->m_PageHeight -= m_TopIndent;
-    }
-}
-void CPDF_ProgressiveReflowPageParser::Clear()
-{
-    Init();
-    return;
-}
-FX_BOOL IPDF_ProgressiveReflowPageParser::IsTaggedPage(CPDF_PageObjects*pPage)
-{
-    if(!pPage) {
-        return FALSE;
-    }
-    CPDF_StructTree* pPageTree = CPDF_StructTree::LoadPage(pPage->m_pDocument, pPage->m_pFormDict);
-    if(pPageTree) {
-        int count = pPageTree->CountTopElements();
-        if(count) {
-            for(int i = 0; i < count; i++) {
-                CPDF_StructElement* pElm = pPageTree->GetTopElement(i);
-                if(pElm) {
-                    delete pPageTree;
-                    pPageTree = NULL;
-                    return TRUE;
-                }
-            }
-        }
-        delete pPageTree;
-        pPageTree = NULL;
-        return FALSE;
-    }
-    return FALSE;
-}
-void CPDF_ProgressiveReflowPageParser::Start(IPDF_ReflowedPage* pReflowPage, CPDF_Page* pPage, FX_FLOAT topIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, IFX_Pause* pPause, int flags)
-{
-    if (NULL == pReflowPage) {
-        m_Status = Failed;
-        return;
-    }
-    m_flags = flags;
-    m_pReflowPage = (CPDF_ReflowedPage*)pReflowPage;
-    m_pReflowPage->m_pPDFPage = pPage;
-    m_pReflowPage->ReleasePageObjsMemberShip();
-    m_pPDFPage = pPage;
-    m_TopIndent = topIndent;
-    m_pPause = pPause;
-    m_fScreenHeight = fHeight;
-    m_ReflowedWidth = fWidth;
-    m_pProvider = IPDF_LayoutProvider::Create_LayoutProvider_TaggedPDF(m_pPDFPage);
-    LayoutStatus status = m_pProvider->StartLoad(pPause);
-    if(status == LayoutError) {
-        delete m_pProvider;
-        m_pProvider = IPDF_LayoutProvider::Create_LayoutProvider_AutoReflow(m_pPDFPage, m_flags & RF_PARSER_READERORDER);
-        if (NULL == m_pProvider) {
-            m_Status = Failed;
-            return;
-        }
-        status = m_pProvider->StartLoad(pPause);
-    }
-    if(status == LayoutError) {
-        delete m_pProvider;
-        m_pProvider = NULL;
-        m_Status = Failed;
-        return;
-    }
-    if(status == LayoutToBeContinued) {
-        m_Status = ToBeContinued;
-    } else if (status == LayoutFinished) {
-        m_pReflowEngine = IPDF_LayoutProcessor::Create_LayoutProcessor_Reflow(topIndent, fWidth, fHeight, pReflowPage, m_flags, m_ParseStyle.m_LineSpace);
-        if(NULL == m_pReflowEngine) {
-            delete m_pProvider;
-            m_pProvider = NULL;
-            m_Status = Failed;
-            return;
-        }
-        CFX_AffineMatrix matrix;
-        pPage->GetDisplayMatrix(matrix, 0, 0, (int)(pPage->GetPageWidth()), (int)(pPage->GetPageHeight()), 0);
-        CFX_AffineMatrix matrix1 = pPage->GetPageMatrix();
-        if((status = m_pReflowEngine->StartProcess(m_pProvider->GetRoot(), pPause, &matrix)) != LayoutToBeContinued) {
-            delete m_pReflowEngine;
-            m_pReflowEngine = NULL;
-            m_Status = Done;
-        } else {
-            m_Status = ToBeContinued;
-        }
-    }
-    if(status != LayoutToBeContinued) {
-        delete m_pProvider;
-        m_pProvider = NULL;
-    }
-    if(m_TopIndent && m_Status == Done) {
-        m_pReflowPage->m_PageHeight -= m_TopIndent;
-    }
-    return;
-}
-CPDF_ProgressiveReflowPageRender::~CPDF_ProgressiveReflowPageRender()
-{
-    if(m_pDisplayMatrix) {
-        delete m_pDisplayMatrix;
-    }
-    m_pDisplayMatrix = NULL;
-}
-CPDF_ProgressiveReflowPageRender::CPDF_ProgressiveReflowPageRender()
-{
-    m_Status = Ready;
-    m_pReflowPage = NULL;
-    m_pDisplayMatrix = NULL;
-    m_CurrNum = 0;
-    m_pFontEncoding = NULL;
-    m_DisplayColor = -1;
-}
-static FX_FLOAT _CIDTransformToFloat(uint8_t ch)
-{
-    if (ch < 128) {
-        return ch * 1.0f / 127;
-    }
-    return (-255 + ch) * 1.0f / 127;
-}
-int    CPDF_ProgressiveReflowPageRender::GetPosition()
-{
-    if(m_CurrNum == 0 || NULL == m_pReflowPage) {
-        return 0;
-    }
-    int size = m_pReflowPage->m_pReflowed->GetSize();
-    if(size == 0 || m_CurrNum >= size) {
-        return 100;
-    }
-    return (int)(m_CurrNum * 100 / size);
-}
-void CPDF_ProgressiveReflowPageRender::Display(IFX_Pause* pPause)
-{
-    if (NULL == m_pReflowPage) {
-        m_Status = Done;
-        return;
-    }
-    FX_RECT clipBox = m_pFXDevice->GetClipBox();
-    int size = m_pReflowPage->m_pReflowed->GetSize();
-    if (size < 1 || NULL == m_pDisplayMatrix) {
-        m_Status = Done;
-        return;
-    }
-    for(int i = m_CurrNum; i < size; i++) {
-        CRF_Data* pData = (*m_pReflowPage->m_pReflowed)[i];
-        if(!pData) {
-            continue;
-        }
-        CFX_FloatRect rect (pData->m_PosX, pData->m_PosY + pData->m_Height, pData->m_PosX + pData->m_Width, pData->m_PosY);
-        m_pDisplayMatrix->TransformRect(rect);
-        if(rect.left > clipBox.right || rect.right < clipBox.left || rect.bottom > clipBox.bottom || rect.top < clipBox.top) {
-            continue;
-        }
-        if(pData->GetType() == CRF_Data::Text) {
-            CRF_CharData* pCharData = (CRF_CharData*)pData;
-            CPDF_Font* pPDFFont = pCharData->m_pCharState->m_pFont;
-            if(pPDFFont->GetFontType() == PDFFONT_TYPE3) {
-                continue;
-            }
-            FX_FLOAT x = pData->m_PosX, y = pData->m_PosY - pCharData->m_pCharState->m_fDescent;
-            FXTEXT_CHARPOS charpos ;
-            charpos.m_GlyphIndex = pPDFFont->GlyphFromCharCode(pCharData->m_CharCode);
-            charpos.m_FontCharWidth = pPDFFont->m_Font.GetGlyphWidth(charpos.m_GlyphIndex);
-            charpos.m_OriginX       = x;
-            charpos.m_OriginY       = y;
-            FX_FLOAT charW = pData->m_Width * 1000 / pData->m_Height;
-            if(charW != charpos.m_FontCharWidth) {
-                charpos.m_bGlyphAdjust  = TRUE;
-                charpos.m_AdjustMatrix[0] = charW / charpos.m_FontCharWidth;
-                charpos.m_AdjustMatrix[1] = 0;
-                charpos.m_AdjustMatrix[2] = 0;
-                charpos.m_AdjustMatrix[3] = 1;
-            } else {
-                charpos.m_bGlyphAdjust  = FALSE;
-            }
-            FX_BOOL bRet = FALSE;
-            if(m_DisplayColor == -1)
-                bRet = m_pFXDevice->DrawNormalText(1, &charpos, &(pPDFFont->m_Font),
-                                                   NULL, pCharData->m_pCharState->m_fFontSize,
-                                                   m_pDisplayMatrix, pCharData->m_pCharState->m_Color + 0xff000000, FXTEXT_CLEARTYPE);
-            else
-                bRet = m_pFXDevice->DrawNormalText(1, &charpos, &(pPDFFont->m_Font),
-                                                   NULL, pCharData->m_pCharState->m_fFontSize, m_pDisplayMatrix, m_DisplayColor, FXTEXT_CLEARTYPE);
-        } else if(pData->GetType() == CRF_Data::Image) {
-            CRF_ImageData* pImageData = (CRF_ImageData*)pData;
-            if(!pImageData->m_pBitmap) {
-                continue;
-            }
-            int left = 0, top = 0;
-            CFX_DIBitmap* pDiBmp = NULL;
-            CFX_DIBSource* pDispSource = pImageData->m_pBitmap;
-            if(pImageData->m_Matrix.d < 0) {
-                CFX_AffineMatrix matrix(pImageData->m_Matrix.a, 0, 0, -pImageData->m_Matrix.d, 0, 0);
-                int left, top;
-                pDiBmp = pImageData->m_pBitmap->TransformTo(&matrix, left, top);
-                pDispSource = pDiBmp;
-            }
-            if (NULL == pDispSource) {
-                continue;
-            }
-            if (pDispSource->GetFormat() == FXDIB_1bppMask || pDispSource->GetFormat() == FXDIB_8bppMask) {
-                m_pFXDevice->StretchBitMask(pDispSource, (int)(rect.left + 0.5), (int)(rect.bottom + 0.5), (int)(rect.Width() + 0.5), (int)(rect.Height() + 0.5), 0xff000000);
-            } else {
-                m_pFXDevice->StretchDIBits(pDispSource, (int)(rect.left + 0.5), (int)(rect.bottom + 0.5), (int)(rect.Width() + 0.5), (int)(rect.Height() + 0.5));
-            }
-            if(m_pFXDevice->GetBitmap() && m_pFXDevice->GetBitmap()->GetFormat() == FXDIB_8bppRgb &&
-                    m_pFXDevice->GetBitmap()->GetPalette() == NULL) {
-                int nPalette = 0;
-                switch(m_DitherBits) {
-                    case 0:
-                        nPalette = 0;
-                        break;
-                    case 1:
-                        nPalette = 2;
-                        break;
-                    case 2:
-                        nPalette = 4;
-                        break;
-                    case 3:
-                        nPalette = 8;
-                        break;
-                    case 4:
-                        nPalette = 16;
-                        break;
-                    case 5:
-                        nPalette = 32;
-                        break;
-                    case 6:
-                        nPalette = 64;
-                        break;
-                    case 7:
-                        nPalette = 128;
-                        break;
-                    default:
-                        nPalette = 256;
-                        break;
-                }
-                if(nPalette >= 2) {
-                    FX_ARGB * palette = FX_Alloc(FX_ARGB, nPalette);
-                    nPalette --;
-                    palette[0] = 0;
-                    palette[nPalette] = 255;
-                    FX_FLOAT Dither = (FX_FLOAT)255 / (nPalette);
-                    for(int i = 1; i < nPalette; i++) {
-                        palette[i] = (FX_ARGB)(Dither * i + 0.5);
-                    }
-                    FX_RECT tmpRect = rect.GetOutterRect();
-                    m_pFXDevice->GetBitmap()->DitherFS(palette, nPalette + 1, &tmpRect);
-                    FX_Free (palette);
-                }
-            }
-            if(pDiBmp) {
-                delete pDiBmp;
-            }
-        } else if(pData->GetType() == CRF_Data::Path) {
-        }
-        if(!(i % 10)) {
-            if(pPause && pPause->NeedToPauseNow()) {
-                i++;
-                m_CurrNum = i;
-                m_Status = ToBeContinued;
-                return;
-            }
-        }
-    }
-    m_CurrNum = size;
-    m_Status = Done;
-}
-void CPDF_ProgressiveReflowPageRender::Start(IPDF_ReflowedPage* pReflowPage, CFX_RenderDevice* pDevice, const CFX_AffineMatrix* pMatrix, IFX_Pause* pPause, int DitherBits)
-{
-    if(!pReflowPage || !pDevice || !pMatrix) {
-        m_Status = Failed;
-        return;
-    }
-    m_DitherBits = DitherBits;
-    m_Status = Ready;
-    m_CurrNum = 0;
-    m_pReflowPage = (CPDF_ReflowedPage*)pReflowPage;
-    m_pFXDevice = pDevice;
-    if(NULL == m_pDisplayMatrix) {
-        m_pDisplayMatrix = FX_NEW CFX_AffineMatrix;
-    }
-    if (m_pDisplayMatrix) {
-        m_pDisplayMatrix->Copy(*pMatrix);
-    }
-    m_Status = ToBeContinued;
-    Display(pPause);
-}
-void CPDF_ProgressiveReflowPageRender::Continue(IFX_Pause* pPause)
-{
-    Display(pPause);
-}
-void CPDF_ProgressiveReflowPageRender::SetDisplayColor(FX_COLORREF color)
-{
-    m_DisplayColor = color;
-}
-void CPDF_ProgressiveReflowPageRender::Clear()
-{
-    if (m_pDisplayMatrix) {
-        delete m_pDisplayMatrix;
-    }
-    m_pDisplayMatrix = NULL;
-    m_pReflowPage = NULL;
-    m_pFXDevice = NULL;
-    m_CurrNum = 0;
-    m_Status = Ready;
-}
diff --git a/core/src/reflow/reflowedpage.h b/core/src/reflow/reflowedpage.h
deleted file mode 100644 (file)
index 79b4937..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_SRC_REFLOW_REFLOWEDPAGE_H_
-#define CORE_SRC_REFLOW_REFLOWEDPAGE_H_
-
-#include "../../include/reflow/reflowengine.h"
-
-#define GET_SIGNED(a) ( (a)>0 ? a/a : (a==0 ? 0 : -a/a) )
-class CRF_Data;
-class CRF_LineData;
-class CRF_CharData;
-class CRF_PathData;
-class CRF_ImageData;
-class CRF_Table;
-class CRF_AttrOperation;
-class CRF_OperationDate;
-class CPDF_ReflowedPage;
-class CPDF_Rect;
-typedef CFX_SegmentedArray<CRF_Data*> CRF_DataPtrArray;
-class CRF_CharState;
-typedef CFX_SegmentedArray<CRF_CharState> CRF_CharStateArray;
-#define SST_GE         1
-#define SST_BLSE       2
-#define SST_ILSE       3
-#define SST_IE         4
-class CPDF_LayoutProcessor_Reflow : public IPDF_LayoutProcessor
-{
-public:
-    CPDF_LayoutProcessor_Reflow();
-    ~CPDF_LayoutProcessor_Reflow();
-    void Init(FX_FLOAT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, CPDF_ReflowedPage* pReflowedPage, int flags, FX_FLOAT lineSpace);
-
-    LayoutStatus       StartProcess(IPDF_LayoutElement* pElement, IFX_Pause* pPause, const CFX_AffineMatrix* pPDFMatrix = NULL);
-    LayoutStatus       Continue();
-    int                                GetPosition();
-protected:
-    void       FitPageMode();
-    void       ProcessElement(IPDF_LayoutElement* pElement, FX_FLOAT reflowWidth);
-    FX_FLOAT GetElmWidth(IPDF_LayoutElement* pElement);
-    CFX_FloatRect GetElmBBox(IPDF_LayoutElement* pElement);
-    void       ProcessTable(FX_FLOAT dx);
-    void       ProcessObjs(IPDF_LayoutElement* pElement, FX_FLOAT reflowWidth);
-    void       ProcessObject(CPDF_PageObject* pObj, FX_FLOAT reflowWidth, CFX_AffineMatrix objMatrix);
-    void       ProcessTextObject(CPDF_TextObject *pObj, FX_FLOAT reflowWidth, CFX_AffineMatrix objMatrix);
-    void       ProcessPathObject(CPDF_PathObject *pObj, FX_FLOAT reflowWidth);
-    void       ProcessUnitaryObjs(CPDF_PageObjects *pObjs, FX_FLOAT reflowWidth, CFX_AffineMatrix objMatrix);
-    int32_t LogicPreObj(CPDF_TextObject* pObj);
-    int ProcessInsertObject(CPDF_TextObject* pObj, CFX_AffineMatrix formMatrix);
-    FX_WCHAR GetPreChar();
-    FX_BOOL IsSameTextObject(CPDF_TextObject* pTextObj1, CPDF_TextObject* pTextObj2);
-    int GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const;
-    FX_BOOL    IsCanBreakAfter(FX_DWORD unicode);
-    FX_BOOL    IsCanBreakBefore(FX_DWORD unicode);
-    int32_t GetElementTypes(LayoutType layoutType);
-    void                               CreateRFData(CPDF_PageObject* pObj, CFX_AffineMatrix* pMatrix = NULL);
-    CRF_CharState*             GetCharState(CPDF_TextObject* pObj, CPDF_Font* pFont, FX_FLOAT fHeight, FX_ARGB color);
-    FX_FLOAT           ConverWidth(FX_FLOAT width);
-    void       AddData2CurrLine(CRF_Data* pData);
-    void       AddTemp2CurrLine(int begin, int count );
-    void       Transform(const CFX_AffineMatrix* pMatrix, CRF_Data* pData);
-    void       Transform(const CFX_AffineMatrix* pMatrix, CRF_DataPtrArray* pDataArray, int beginPos, int count = 0);
-    FX_FLOAT GetDatasWidth( int beginPos, int endpos);
-    void       UpdateCurrLine();
-    FX_BOOL    FinishedCurrLine();
-    int m_flags;
-    CFX_AffineMatrix m_PDFMatrix;
-    LayoutStatus       m_Status;
-    CPDF_TextObject* m_pPreObj;
-    CFX_AffineMatrix m_perMatrix;
-    IPDF_LayoutElement*        m_pLayoutElement;
-    IPDF_LayoutElement* m_pRootElement;
-    FX_FLOAT           m_CurrRefWidth;
-    IFX_Pause*         m_pPause;
-    LayoutEnum         m_CurrWritingMode;
-    CPDF_ReflowedPage* m_pReflowedPage;
-    FX_FLOAT           m_fRefWidth;
-    FX_FLOAT           m_TopIndent;
-    FX_FLOAT           m_fLineSpace;
-    FX_FLOAT           m_fScreenHeight;
-    FX_FLOAT           m_fCurrMaxWidth;
-    FX_FLOAT           m_fCurrLineWidth;
-    FX_FLOAT           m_fCurrLineHeight;
-    CRF_DataPtrArray*  m_pCurrLine;
-    CRF_DataPtrArray*  m_pTempLine;
-    FX_BOOL                    m_bIllustration;
-    FX_FLOAT           m_fLineHeight;
-    LayoutEnum         m_TextAlign;
-    FX_FLOAT           m_StartIndent;
-    CFX_ArrayTemplate<CRF_Table*> m_TableArray;
-    int                                m_PausePosition;
-};
-struct RF_TableCell {
-    int                        m_BeginPos;
-    int                        m_EndPos;
-    FX_FLOAT m_MaxWidth;
-    FX_FLOAT m_PosX;
-    FX_FLOAT   m_PosY;
-    FX_FLOAT   m_CellWidth;
-    FX_FLOAT m_CellHeight;
-    int                        m_RowSpan;
-    int                        m_ColSpan;
-    LayoutEnum m_BlockAlign;
-    LayoutEnum m_InlineAlign;
-};
-typedef CFX_ArrayTemplate<RF_TableCell*> CRF_TableCellArray;
-class CRF_Table 
-{
-public:
-    CRF_Table()
-    {
-        m_TableWidth = 0;
-        m_nCol = 0;
-    }
-    CRF_TableCellArray  m_pCellArray;
-    CFX_WordArray              m_nCell;
-    int                                        m_nCol;
-    FX_FLOAT                   m_TableWidth;
-    FX_FLOAT                   m_ReflowPageHeight;
-};
-class CRF_CharState 
-{
-public:
-    CPDF_Font* m_pFont;
-    FX_ARGB            m_Color;
-    FX_BOOL            m_bVert;
-    FX_FLOAT m_fFontSize;
-    FX_FLOAT m_fAscent;
-    FX_FLOAT m_fDescent;
-
-    CPDF_TextObject*   m_pTextObj;
-};
-class CRF_PageInfo 
-{
-public:
-    CRF_PageInfo(CPDF_PageObject* pPageObj, CRF_PageInfo* pParent = NULL)
-        : m_pPageObj(pPageObj) , m_pParent(pParent)
-    {
-    }
-    CPDF_PageObject* GetPageObj()
-    {
-        return m_pPageObj;
-    }
-    CPDF_Dictionary* GetFormDict()
-    {
-        if (NULL == m_pParent) {
-            return NULL;
-        }
-        CPDF_PageObject* pParentObj = m_pParent->GetPageObj();
-        if (NULL == pParentObj || PDFPAGE_FORM != pParentObj->m_Type) {
-            return NULL;
-        }
-        return ((CPDF_FormObject*)pParentObj)->m_pForm->m_pResources;
-    }
-protected:
-    CPDF_PageObject*           m_pPageObj;
-    CRF_PageInfo*                      m_pParent;
-};
-class CPDF_ReflowedPage : public IPDF_ReflowedPage, public CFX_PrivateData
-{
-public:
-
-    CPDF_ReflowedPage(CFX_GrowOnlyPool*        pMemoryPool);
-    ~CPDF_ReflowedPage();
-    CFX_PrivateData*   GetPrivateDataCtrl()
-    {
-        return this;
-    };
-    void               GetDisplayMatrix(CFX_AffineMatrix& matrix, int32_t xPos, int32_t yPos, int32_t xSize, int32_t ySize, int32_t iRotate, const CFX_AffineMatrix* pPageMatrix);
-
-    FX_FLOAT   GetPageHeight() ;
-    FX_FLOAT   GetPageWidth()
-    {
-        return m_PageWidth;
-    };
-    void               FocusGetData(const CFX_AffineMatrix matrix, int32_t x, int32_t y, CFX_ByteString& str);
-    FX_BOOL            FocusGetPosition(const CFX_AffineMatrix matrix, CFX_ByteString str, int32_t& x, int32_t& y);
-    CRF_DataPtrArray*  m_pReflowed;
-    FX_FLOAT                   m_PageWidth;
-    FX_FLOAT                   m_PageHeight;
-    FX_BOOL                            m_bWaiting;
-    CRF_CharStateArray*        m_pCharState;
-    CFX_GrowOnlyPool*  m_pMemoryPool;
-    FX_BOOL                            m_bCreateMemoryPool;
-    CPDF_Page*                 m_pPDFPage;
-    FX_BOOL                                    RetainPageObjsMemberShip();
-    void                                       MarkPageObjMemberShip(CPDF_PageObject* pObj, CRF_PageInfo* pParent);
-    void                                       ReleasePageObjsMemberShip();
-    CPDF_Dictionary*           GetFormResDict(CPDF_PageObject* pObj);
-
-    CFX_MapPtrToPtr*           m_pPageInfos;
-};
-class CPDF_ProgressiveReflowPageParser : public IPDF_ProgressiveReflowPageParser
-{
-public:
-    CPDF_ProgressiveReflowPageParser();
-    ~CPDF_ProgressiveReflowPageParser() ;
-    void                       Init();
-
-    ParseStatus                GetStatus()
-    {
-        return m_Status;
-    };
-
-    void                       SetParserStyle(RF_ParseStyle style)
-    {
-        m_ParseStyle = style;
-    };
-    void                       Start(IPDF_ReflowedPage* pReflowPage, CPDF_Page* pPage, FX_FLOAT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, IFX_Pause* pPause, int flags);
-    void                       Continue(IFX_Pause* pPause);
-    int                                GetPosition() ;
-
-    void                       Clear();
-    ParseStatus                m_Status;
-protected:
-    RF_ParseStyle              m_ParseStyle;
-    CPDF_Page*                 m_pPDFPage;
-    IFX_Pause*                 m_pPause;
-    CPDF_ReflowedPage* m_pReflowPage;
-    FX_FLOAT                   m_TopIndent;
-    FX_FLOAT                   m_ReflowedWidth;
-    FX_FLOAT                   m_fScreenHeight;
-    IPDF_LayoutProvider*       m_pProvider;
-    IPDF_LayoutProcessor*      m_pReflowEngine;
-    int                                        m_nObjProcessed;
-    int m_flags;
-};
-class CPDF_ProgressiveReflowPageRender : public IPDF_ProgressiveReflowPageRender
-{
-public:
-    CPDF_ProgressiveReflowPageRender();
-    ~CPDF_ProgressiveReflowPageRender() ;
-
-    RenderStatus                       GetStatus()
-    {
-        return m_Status;
-    };
-
-
-    void               SetDisplayColor(FX_COLORREF color);
-    void               Start(IPDF_ReflowedPage* pReflowPage, CFX_RenderDevice* pDevice, const CFX_AffineMatrix* pMatrix, IFX_Pause* pPause, int DitherBits);
-    void               Continue(IFX_Pause* pPause);
-    int                        GetPosition();
-
-
-    void                               Clear();
-protected:
-    void                               Display(IFX_Pause* pPause);
-    RenderStatus m_Status;
-    CPDF_ReflowedPage* m_pReflowPage;
-    CFX_AffineMatrix*  m_pDisplayMatrix;
-    int                                        m_CurrNum;
-    IFX_FontEncoding*  m_pFontEncoding;
-    CFX_RenderDevice*  m_pFXDevice;
-    int                                        m_DitherBits;
-    FX_COLORREF                        m_DisplayColor;
-    typedef struct CRF_TextDataAtt {
-        CRF_TextDataAtt()
-        {
-            pFont = NULL;
-            fFontSize = 0.0f;
-            Color = 0;
-        }
-        CRF_TextDataAtt(CPDF_Font* font, FX_FLOAT fontSize, FX_ARGB color)
-        {
-            pFont = font;
-            fFontSize = fontSize;
-            Color = color;
-        }
-        CPDF_Font*  pFont;
-        FX_FLOAT    fFontSize;
-        FX_ARGB                Color;
-    } CRF_TEXTDATAATT;
-    inline bool isTextDataAttSame(CRF_TEXTDATAATT data1, CRF_TEXTDATAATT data2)
-    {
-        if (data1.pFont != data2.pFont) {
-            return false;
-        }
-        if (data1.Color != data2.Color) {
-            return false;
-        }
-        if (fabs(data1.fFontSize - data2.fFontSize) > 0.0f) {
-            return false;
-        }
-        return true;
-    };
-};
-#define TYPE_UNKNOW            0
-#define TYPE_TEXT              1
-#define TYPE_PATH              2
-#define TYPE_IMAGE             3
-#define TYPE_LINE              4
-class CRF_Data 
-{
-public:
-    typedef enum {Unknow, Text, Image, Path, Line, paragraph} RF_DataType;
-    CRF_Data()
-    {
-        m_Type = Unknow;
-        m_Width = 0;
-        m_PosY = 0;
-        m_PosX = 0;
-        m_Height = 0;
-    }
-    RF_DataType        GetType()
-    {
-        return m_Type;
-    }
-    virtual            ~CRF_Data() {}
-    RF_DataType        m_Type;
-    FX_FLOAT   m_PosX;
-    FX_FLOAT   m_PosY;
-    FX_FLOAT   m_Width;
-    FX_FLOAT   m_Height;
-};
-class CRF_LineData : public CRF_Data
-{
-public:
-    CRF_LineData()
-    {
-        m_Type = Line;
-    }
-};
-class CRF_CharData : public CRF_Data
-{
-public:
-    CRF_CharData()
-    {
-        m_Type = Text;
-        m_CharCode = -1;
-    }
-    CRF_CharState*     m_pCharState;
-    FX_DWORD           m_CharCode;
-};
-class CRF_ImageData : public CRF_Data
-{
-public:
-    CRF_ImageData()
-    {
-        m_Type = Image;
-        m_pBitmap = NULL;
-    }
-    ~CRF_ImageData()
-    {
-        if(m_pBitmap) {
-            delete m_pBitmap;
-        }
-        m_pBitmap = NULL;
-    }
-    CFX_AffineMatrix m_Matrix;
-    CFX_DIBitmap*      m_pBitmap;
-};
-class CRF_PathData : public CRF_Data
-{
-public:
-    CRF_PathData()
-    {
-        m_Type = Path;
-        m_bDecoration = FALSE;
-    }
-    ~CRF_PathData() {};
-    FX_BOOL                    m_bDecoration;
-    CPDF_Path                  m_pPathData;
-    CFX_AffineMatrix   m_pPath2Device;
-    CPDF_GraphState            m_pGraphState;
-    FX_ARGB            m_fill_argb;
-    FX_ARGB            m_stroke_argb;
-    int                        m_fill_mode;
-};
-
-#endif  // CORE_SRC_REFLOW_REFLOWEDPAGE_H_
diff --git a/core/src/reflow/reflowedtextpage.cpp b/core/src/reflow/reflowedtextpage.cpp
deleted file mode 100644 (file)
index a5ad0be..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "reflowedtextpage.h"
-IPDF_TextPage* IPDF_TextPage::CreateReflowTextPage(IPDF_ReflowedPage* pRefPage)
-{
-    return FX_NEW CRF_TextPage(pRefPage);
-}
-CRF_TextPage::CRF_TextPage(IPDF_ReflowedPage* pRefPage)
-{
-    m_pRefPage = (CPDF_ReflowedPage*)(pRefPage);
-    m_pDataList = NULL;
-    m_CountBSArray = NULL;
-}
-CRF_TextPage::~CRF_TextPage()
-{
-    if(m_pDataList) {
-        delete m_pDataList;
-        m_pDataList = NULL;
-    }
-    if(m_CountBSArray) {
-        delete m_CountBSArray;
-        m_CountBSArray = NULL;
-    }
-}
-FX_BOOL CRF_TextPage::ParseTextPage()
-{
-    if(!m_pRefPage) {
-        return FALSE;
-    }
-    int count = m_pRefPage->m_pReflowed->GetSize();
-    if(count < 500) {
-        m_pDataList = FX_NEW CRF_CharDataPtrArray(count);
-    } else {
-        m_pDataList = FX_NEW CRF_CharDataPtrArray(500);
-    }
-    if (NULL == m_pDataList) {
-        return FALSE;
-    }
-    for(int i = 0; i < count; i++) {
-        CRF_Data* pData = (*(m_pRefPage->m_pReflowed))[i];
-        if(pData->GetType() == CRF_Data::Text) {
-            m_pDataList->Add((CRF_CharData*)pData);
-        }
-    }
-    m_CountBSArray = FX_NEW CFX_CountBSINT32Array(20);
-    if(NULL == m_CountBSArray) {
-        return FALSE;
-    }
-    return TRUE;
-}
-FX_BOOL        CRF_TextPage::IsParsered() const
-{
-    if(m_pDataList) {
-        return TRUE;
-    }
-    return FALSE;
-}
-int CRF_TextPage::CharIndexFromTextIndex(int TextIndex) const
-{
-    return TextIndex;
-}
-int CRF_TextPage::TextIndexFromCharIndex(int CharIndex) const
-{
-    return CharIndex;
-}
-
-int    CRF_TextPage::CountChars() const
-{
-    if (NULL == m_pDataList) {
-        return -1;
-    }
-    return m_pDataList->GetSize();
-}
-void CRF_TextPage::GetCharInfo(int index, FPDF_CHAR_INFO & info) const
-{
-    if(index >= CountChars() || index < 0 || !m_pDataList) {
-        return;
-    }
-    CRF_CharData* pData = (*m_pDataList)[index];
-    FX_FLOAT ReltiveCorddDs = pData->m_pCharState->m_fDescent;
-    FX_FLOAT ReltiveCorddAs = pData->m_pCharState->m_fAscent;
-    info.m_Flag                = CHAR_NORMAL;
-    info.m_pTextObj    = pData->m_pCharState->m_pTextObj;
-    info.m_OriginX     = pData->m_PosX;
-    info.m_OriginY     = pData->m_PosY - ReltiveCorddDs;
-    info.m_FontSize    = pData->m_pCharState->m_fFontSize;
-    CFX_FloatRect FloatRectTmp(pData->m_PosX, pData->m_PosY, pData->m_PosX + pData->m_Width, pData->m_PosY + ReltiveCorddAs - ReltiveCorddDs);
-    info.m_CharBox     = FloatRectTmp;
-    CFX_WideString str = pData->m_pCharState->m_pFont->UnicodeFromCharCode(pData->m_CharCode);
-    if(!str.IsEmpty()) {
-        info.m_Unicode = str.GetAt(0);
-    } else {
-        info.m_Unicode = -1;
-    }
-    info.m_Charcode = (FX_WCHAR)pData->m_CharCode;
-    info.m_Matrix = CFX_Matrix(1, 0, 0, 1, 0, 0);
-}
-extern FX_BOOL GetIntersection(FX_FLOAT low1, FX_FLOAT high1, FX_FLOAT low2, FX_FLOAT high2, FX_FLOAT& interlow, FX_FLOAT& interhigh);
-inline FX_BOOL _IsInsameline(const CFX_FloatRect& rectA, const CFX_FloatRect& rectB)
-{
-    if((rectA.top >= rectB.bottom && rectB.top >= rectA.bottom)) {
-        return TRUE;
-    } else {
-        return FALSE;
-    }
-}
-inline FX_BOOL _IsIntersect(const CFX_FloatRect& rectA, const CFX_FloatRect& rectB)
-{
-    FX_FLOAT interlow = .0f, interhigh = .0f;
-    if(GetIntersection(rectA.bottom, rectA.top, rectB.bottom, rectB.top, interlow, interhigh)) {
-        if(GetIntersection(rectA.left, rectA.right, rectB.left, rectB.right, interlow, interhigh)) {
-            return TRUE;
-        } else {
-            return FALSE;
-        }
-    }
-    return FALSE;
-}
-void CRF_TextPage::GetRectArray(int start, int nCount, CFX_RectArray& rectArray) const
-{
-    int indexlen = start + nCount;
-    FPDF_CHAR_INFO info;
-    FX_BOOL bstart = TRUE;
-    CFX_FloatRect recttmp;
-    int i;
-    for(i = start; i < indexlen; i++) {
-        GetCharInfo(i, info);
-        if(bstart) {
-            recttmp = info.m_CharBox;
-            bstart = FALSE;
-        } else if(_IsInsameline(recttmp, info.m_CharBox)) {
-            recttmp.right = info.m_CharBox.right;
-            if(info.m_CharBox.top > recttmp.top) {
-                recttmp.top = info.m_CharBox.top;
-            }
-            if(info.m_CharBox.bottom < recttmp.bottom) {
-                recttmp.bottom = info.m_CharBox.bottom;
-            }
-        } else {
-            rectArray.Add(recttmp);
-            recttmp = info.m_CharBox;
-        }
-    }
-    rectArray.Add(recttmp);
-}
-inline FX_FLOAT _GetDistance(CFX_FloatRect floatRect, CPDF_Point point)
-{
-    if(floatRect.right < point.x && floatRect.bottom > point.y) {
-        return FXSYS_sqrt(FXSYS_pow(point.x - floatRect.right, 2) + FXSYS_pow(floatRect.bottom - point.y, 2));
-    }
-    if (floatRect.right < point.x && floatRect.top < point.y) {
-        return FXSYS_sqrt(FXSYS_pow(point.x - floatRect.right, 2) + FXSYS_pow(point.y - floatRect.top, 2));
-    }
-    if(floatRect.left > point.x && floatRect.bottom > point.y) {
-        return FXSYS_sqrt(FXSYS_pow(floatRect.bottom - point.y, 2) + FXSYS_pow(floatRect.left - point.x, 2));
-    }
-    if((floatRect.right > point.x || FXSYS_fabs(floatRect.right - point.x) <= 0.0001f) &&
-            (floatRect.left < point.x || FXSYS_fabs(floatRect.left - point.x) <= 0.0001f) && floatRect.bottom > point.y) {
-        return FXSYS_fabs(floatRect.bottom - point.y);
-    }
-    if(floatRect.left > point.x && (floatRect.bottom < point.y || FXSYS_fabs(floatRect.bottom - point.y) <= 0.0001f) &&
-            (floatRect.top > point.y || FXSYS_fabs(floatRect.top - point.y) <= 0.0001f)) {
-        return FXSYS_fabs(floatRect.left - point.x);
-    }
-    if(floatRect.left > point.x && floatRect.top < point.y) {
-        return FXSYS_sqrt(FXSYS_pow(floatRect.left - point.x, 2) + FXSYS_pow(point.y - floatRect.top, 2));
-    }
-    if ((floatRect.left < point.x || FXSYS_fabs(floatRect.left - point.x) <= 0.0001f) &&
-            (floatRect.right > point.x || FXSYS_fabs(floatRect.right - point.x) <= 0.0001f) && floatRect.top < point.y) {
-        return FXSYS_fabs(point.y - floatRect.top);
-    }
-    if(floatRect.right < point.x && (floatRect.top > point.y || FXSYS_fabs(floatRect.top - point.y) <= 0.0001f) &&
-            (floatRect.bottom < point.y || FXSYS_fabs(floatRect.bottom - point.y) <= 0.0001f)) {
-        return point.x - floatRect.right;
-    }
-    return .0f;
-}
-int CRF_TextPage::GetIndexAtPos(CPDF_Point point, FX_FLOAT xTorelance, FX_FLOAT yTorelance) const
-{
-    int index = -1, i = 0, j = 0;
-    FPDF_CHAR_INFO info;
-    CFX_FloatRect rectTmp;
-    FX_FLOAT MinDistance = 1000, DistanceTmp = 0;
-    FX_FLOAT rect_bottom = point.x - xTorelance;
-    CFX_FloatRect TorelanceRect(rect_bottom <= 0 ? 0 : rect_bottom, point.y - yTorelance, point.x + xTorelance, point.y + yTorelance);
-    int count = CountChars();
-    for(i = 0; i < count; i++) {
-        GetCharInfo(i, info);
-        rectTmp = info.m_CharBox;
-        if(rectTmp.Contains(point.x, point.y)) {
-            index = i;
-            break;
-        } else if(_IsIntersect(rectTmp, TorelanceRect)) {
-            DistanceTmp = _GetDistance(rectTmp, point);
-            if(DistanceTmp < MinDistance) {
-                MinDistance = DistanceTmp;
-                index = i;
-            }
-        }
-    }
-    return index;
-}
-int CRF_TextPage::GetIndexAtPos(FX_FLOAT x, FX_FLOAT y, FX_FLOAT xTorelance, FX_FLOAT yTorelance) const
-{
-    int index = 0;
-    CPDF_Point point(x, y);
-    if((index = GetIndexAtPos(point, xTorelance, yTorelance)) < 0) {
-        return -1;
-    } else {
-        return index;
-    }
-}
-int CRF_TextPage::GetOrderByDirection(int index, int direction) const
-{
-    return -1;
-}
-CFX_WideString CRF_TextPage::GetTextByRect(CFX_FloatRect rect) const
-{
-    int count;
-    FPDF_CHAR_INFO info;
-    CFX_WideString str;
-    CFX_FloatRect  Recttmp;
-    FX_BOOL bstart = TRUE;
-    count = CountChars();
-    if(rect.IsEmpty()) {
-        return L"";
-    }
-    for(int i = 0; i < count; i++) {
-        GetCharInfo(i, info);
-        if(_IsIntersect(rect, info.m_CharBox)) {
-            if(bstart) {
-                Recttmp = info.m_CharBox;
-                str += info.m_Unicode;
-                bstart = FALSE;
-            } else if(_IsInsameline(Recttmp, info.m_CharBox)) {
-                str += info.m_Unicode;
-            } else {
-                str += L"\r\n";
-                Recttmp = info.m_CharBox;
-                str += info.m_Unicode;
-            }
-        }
-    }
-    if(str.IsEmpty()) {
-        return L"";
-    } else {
-        return str;
-    }
-}
-void CRF_TextPage::GetRectsArrayByRect(CFX_FloatRect rect, CFX_RectArray& resRectArray) const
-{
-    int count, i;
-    FX_BOOL bstart = TRUE;
-    FPDF_CHAR_INFO info;
-    CFX_FloatRect recttmp;
-    count = CountChars();
-    for(i = 0; i < count; i++) {
-        GetCharInfo(i, info);
-        if(_IsIntersect(rect, info.m_CharBox)) {
-            if(bstart) {
-                recttmp = info.m_CharBox;
-                bstart = FALSE;
-            } else if(_IsInsameline(recttmp, info.m_CharBox)) {
-                recttmp.right = info.m_CharBox.right;
-                if(info.m_CharBox.top > recttmp.top) {
-                    recttmp.top = info.m_CharBox.top;
-                }
-                if(info.m_CharBox.bottom < recttmp.bottom) {
-                    recttmp.bottom = info.m_CharBox.bottom;
-                }
-            } else {
-                resRectArray.Add(recttmp);
-                recttmp = info.m_CharBox;
-            }
-        }
-    }
-    resRectArray.Add(recttmp);
-}
-int CRF_TextPage::CountRects(int start, int nCount)
-{
-    m_rectArray.RemoveAll();
-    GetRectArray(start, nCount, m_rectArray);
-    return m_rectArray.GetSize();
-}
-void CRF_TextPage::GetRect(int rectIndex, FX_FLOAT& left, FX_FLOAT& top, FX_FLOAT& right, FX_FLOAT &bottom) const
-{
-    if(m_rectArray.GetSize() <= rectIndex) {
-        return;
-    }
-    left   = m_rectArray[rectIndex].left;
-    top    = m_rectArray[rectIndex].top;
-    right  = m_rectArray[rectIndex].right;
-    bottom = m_rectArray[rectIndex].bottom;
-}
-FX_BOOL CRF_TextPage::GetBaselineRotate(int rectIndex, int& Rotate)
-{
-    Rotate = 0;
-    return TRUE;
-}
-FX_BOOL CRF_TextPage::GetBaselineRotate(CFX_FloatRect rect, int& Rotate)
-{
-    Rotate = 0;
-    return TRUE;
-}
-int CRF_TextPage::CountBoundedSegments(FX_FLOAT left, FX_FLOAT top, FX_FLOAT right, FX_FLOAT bottom, FX_BOOL bContains)
-{
-    if (!m_CountBSArray) {
-        return -1;
-    }
-    m_CountBSArray->RemoveAll();
-    CFX_FloatRect floatrect(left, bottom, right, top);
-    int totalcount, i, j = 0, counttmp = 0;
-    FX_BOOL bstart = TRUE;
-    FPDF_CHAR_INFO info;
-    CFX_FloatRect recttmp;
-    totalcount = CountChars();
-    for(i = 0; i < totalcount; i++) {
-        GetCharInfo(i, info);
-        if(_IsIntersect(floatrect, info.m_CharBox)) {
-            if(bstart) {
-                m_CountBSArray->Add(i);
-                counttmp = 1;
-                recttmp = info.m_CharBox;
-                bstart = FALSE;
-            } else if(_IsInsameline(recttmp, info.m_CharBox)) {
-                recttmp.right = info.m_CharBox.right;
-                if(info.m_CharBox.top > recttmp.top) {
-                    recttmp.top = info.m_CharBox.top;
-                }
-                if(info.m_CharBox.bottom < recttmp.bottom) {
-                    recttmp.bottom = info.m_CharBox.bottom;
-                }
-                counttmp ++;
-            } else {
-                m_CountBSArray->Add(counttmp);
-                m_CountBSArray->Add(i);
-                counttmp = 1;
-                j++;
-                recttmp = info.m_CharBox;
-            }
-        }
-    }
-    m_CountBSArray->Add(counttmp);
-    j++;
-    return j;
-}
-void CRF_TextPage::GetBoundedSegment(int index, int& start, int& count) const
-{
-    if (!m_CountBSArray) {
-        return;
-    }
-    if(m_CountBSArray->GetSize() <= index * 2) {
-        start = 0;
-        count = 0;
-        return;
-    }
-    start = *(int *)m_CountBSArray->GetAt(index * 2);
-    count = *(int *)m_CountBSArray->GetAt(index * 2 + 1);
-}
-
-int CRF_TextPage::GetWordBreak(int index, int direction) const
-{
-    return -1;
-}
-CFX_WideString CRF_TextPage::GetPageText(int start, int nCount ) const
-{
-    if(nCount == -1) {
-        nCount = CountChars();
-        start = 0;
-    } else if(nCount < 1) {
-        return L"";
-    } else if(start >= CountChars()) {
-        return L"";
-    }
-    int i, index = start + nCount;
-    FPDF_CHAR_INFO info;
-    CFX_WideString str;
-    CFX_FloatRect recttmp;
-    FX_BOOL bstart = TRUE;
-    for(i = start; i < index; i++) {
-        GetCharInfo(i, info);
-        if(bstart) {
-            recttmp = info.m_CharBox;
-            str += info.m_Unicode;
-            bstart = FALSE;
-        } else if (_IsInsameline(recttmp, info.m_CharBox)) {
-            str += info.m_Unicode;
-        } else {
-            str += L"\r\n";
-            recttmp = info.m_CharBox;
-            str += info.m_Unicode;
-        }
-    }
-    if(str.IsEmpty()) {
-        return L"";
-    }
-    return str;
-}
diff --git a/core/src/reflow/reflowedtextpage.h b/core/src/reflow/reflowedtextpage.h
deleted file mode 100644 (file)
index bb6e24a..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_SRC_REFLOW_REFLOWEDTEXTPAGE_H_
-#define CORE_SRC_REFLOW_REFLOWEDTEXTPAGE_H_
-
-#include "../../include/reflow/reflowengine.h"
-#include "../../src/reflow/reflowedpage.h"
-
-typedef CFX_SegmentedArray<CRF_CharData*> CRF_CharDataPtrArray;
-typedef CFX_SegmentedArray<int32_t> CFX_CountBSINT32Array;
-class CRF_TextPage : public IPDF_TextPage
-{
-public:
-    CRF_TextPage(IPDF_ReflowedPage* pRefPage);
-
-    virtual ~CRF_TextPage() ;
-    FX_BOOL                    ParseTextPage();
-    void                       NormalizeObjects(FX_BOOL bNormalize)
-    {
-        return;
-    };
-
-    FX_BOOL                    IsParsered() const;
-public:
-
-    int CharIndexFromTextIndex(int TextIndex) const;
-
-    int TextIndexFromCharIndex(int CharIndex) const;
-
-
-    int                                CountChars() const;
-
-    virtual    void    GetCharInfo(int index, FPDF_CHAR_INFO & info) const;
-
-    void                       GetRectArray(int start, int nCount, CFX_RectArray& rectArray) const;
-
-
-    int                                GetIndexAtPos(CPDF_Point point, FX_FLOAT xTorelance, FX_FLOAT yTorelance) const;
-
-    int                                GetIndexAtPos(FX_FLOAT x, FX_FLOAT y, FX_FLOAT xTorelance, FX_FLOAT yTorelance) const;
-
-    virtual    int                             GetOrderByDirection(int index, int direction) const;
-
-    CFX_WideString     GetTextByRect(CFX_FloatRect rect) const;
-
-    void                       GetRectsArrayByRect(CFX_FloatRect rect, CFX_RectArray& resRectArray) const;
-
-
-    int                                CountRects(int start, int nCount);
-
-    virtual    void                    GetRect(int rectIndex, FX_FLOAT& left, FX_FLOAT& top, FX_FLOAT& right, FX_FLOAT &bottom) const;
-    virtual    FX_BOOL                 GetBaselineRotate(int rectIndex, int& Rotate);
-    virtual FX_BOOL                    GetBaselineRotate(CFX_FloatRect rect, int& Rotate);
-
-    virtual    int                             CountBoundedSegments(FX_FLOAT left, FX_FLOAT top, FX_FLOAT right, FX_FLOAT bottom, FX_BOOL bContains = FALSE);
-
-    virtual    void                    GetBoundedSegment(int index, int& start, int& count) const;
-
-
-    int                                GetWordBreak(int index, int direction) const;
-
-    CFX_WideString     GetPageText(int start, int nCount = -1 ) const;
-private:
-    CPDF_ReflowedPage*         m_pRefPage;
-    CRF_CharDataPtrArray*      m_pDataList;
-    CFX_RectArray                      m_rectArray;
-    CFX_CountBSINT32Array*     m_CountBSArray;
-};
-
-#endif  // CORE_SRC_REFLOW_REFLOWEDTEXTPAGE_H_
diff --git a/core/src/reflow/reflowengine.cpp b/core/src/reflow/reflowengine.cpp
deleted file mode 100644 (file)
index 11007c9..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "../../include/reflow/reflowengine.h"
-#include "reflowedpage.h"
-IPDF_ReflowedPage* IPDF_ReflowedPage::Create()
-{
-    CPDF_ReflowedPage* pRefPage = FX_NEW CPDF_ReflowedPage(NULL);
-    return pRefPage;
-}
-IPDF_ReflowedPage* Create_ReflowPage()
-{
-    return IPDF_ReflowedPage::Create();
-}
-IPDF_ProgressiveReflowPageParser* Create_ReflowPageParser()
-{
-    return IPDF_ProgressiveReflowPageParser::Create();
-}
-IPDF_ProgressiveReflowPageParser* IPDF_ProgressiveReflowPageParser::Create()
-{
-    CPDF_ProgressiveReflowPageParser* pParser = FX_NEW CPDF_ProgressiveReflowPageParser;
-    if (NULL == pParser) {
-        return NULL;
-    }
-    pParser->Init();
-    return pParser;
-}
-IPDF_ProgressiveReflowPageRender* Create_ReflowPageRender()
-{
-    return IPDF_ProgressiveReflowPageRender::Create();
-}
-IPDF_ProgressiveReflowPageRender* IPDF_ProgressiveReflowPageRender::Create()
-{
-    return FX_NEW CPDF_ProgressiveReflowPageRender;
-}