| Index: core/src/reflow/reflowedpage.h
|
| diff --git a/core/src/reflow/reflowedpage.h b/core/src/reflow/reflowedpage.h
|
| index b76834132e41b6dc95ed95d6bb658f2984115333..94b0f1b345b73b8c44ad438f0eef13c0445a71c8 100644
|
| --- a/core/src/reflow/reflowedpage.h
|
| +++ b/core/src/reflow/reflowedpage.h
|
| @@ -1,13 +1,13 @@
|
| // 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 _REFLOWED_PAGE_H
|
| #define _REFLOWED_PAGE_H
|
| #include "../../include/reflow/reflowengine.h"
|
| -#define GET_SIGNED(a) ( (a)>0 ? a/a : (a==0 ? 0 : -a/a) )
|
| +#define GET_SIGNED(a) ((a) > 0 ? a / a : (a == 0 ? 0 : -a / a))
|
| class CRF_Data;
|
| class CRF_LineData;
|
| class CRF_CharData;
|
| @@ -22,351 +22,353 @@ class CFX_Object;
|
| 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 CFX_Object
|
| -{
|
| -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);
|
| +#define SST_GE 1
|
| +#define SST_BLSE 2
|
| +#define SST_ILSE 3
|
| +#define SST_IE 4
|
| +class CPDF_LayoutProcessor_Reflow : public IPDF_LayoutProcessor,
|
| + public CFX_Object {
|
| + 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();
|
|
|
| - 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);
|
| - FX_INT32 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);
|
| - FX_INT32 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;
|
| + 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);
|
| + FX_INT32 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);
|
| + FX_INT32 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;
|
| + 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 CFX_Object
|
| -{
|
| -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_Table : public CFX_Object {
|
| + 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 CFX_Object
|
| -{
|
| -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;
|
| +class CRF_CharState : public CFX_Object {
|
| + 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;
|
| + CPDF_TextObject* m_pTextObj;
|
| };
|
| -class CRF_PageInfo : public CFX_Object
|
| -{
|
| -public:
|
| - CRF_PageInfo(CPDF_PageObject* pPageObj, CRF_PageInfo* pParent = NULL)
|
| - : m_pPageObj(pPageObj) , m_pParent(pParent)
|
| - {
|
| +class CRF_PageInfo : public CFX_Object {
|
| + 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* GetPageObj()
|
| - {
|
| - return m_pPageObj;
|
| + CPDF_PageObject* pParentObj = m_pParent->GetPageObj();
|
| + if (NULL == pParentObj || PDFPAGE_FORM != pParentObj->m_Type) {
|
| + return NULL;
|
| }
|
| - 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 CFX_Object
|
| -{
|
| -public:
|
| + return ((CPDF_FormObject*)pParentObj)->m_pForm->m_pResources;
|
| + }
|
|
|
| - CPDF_ReflowedPage(CFX_GrowOnlyPool* pMemoryPool);
|
| - ~CPDF_ReflowedPage();
|
| - CFX_PrivateData* GetPrivateDataCtrl()
|
| - {
|
| - return this;
|
| - };
|
| - void GetDisplayMatrix(CFX_AffineMatrix& matrix, FX_INT32 xPos, FX_INT32 yPos, FX_INT32 xSize, FX_INT32 ySize, FX_INT32 iRotate, const CFX_AffineMatrix* pPageMatrix);
|
| + protected:
|
| + CPDF_PageObject* m_pPageObj;
|
| + CRF_PageInfo* m_pParent;
|
| +};
|
| +class CPDF_ReflowedPage : public IPDF_ReflowedPage,
|
| + public CFX_PrivateData,
|
| + public CFX_Object {
|
| + public:
|
| + CPDF_ReflowedPage(CFX_GrowOnlyPool* pMemoryPool);
|
| + ~CPDF_ReflowedPage();
|
| + CFX_PrivateData* GetPrivateDataCtrl() { return this; };
|
| + void GetDisplayMatrix(CFX_AffineMatrix& matrix,
|
| + FX_INT32 xPos,
|
| + FX_INT32 yPos,
|
| + FX_INT32 xSize,
|
| + FX_INT32 ySize,
|
| + FX_INT32 iRotate,
|
| + const CFX_AffineMatrix* pPageMatrix);
|
|
|
| - FX_FLOAT GetPageHeight() ;
|
| - FX_FLOAT GetPageWidth()
|
| - {
|
| - return m_PageWidth;
|
| - };
|
| - void FocusGetData(const CFX_AffineMatrix matrix, FX_INT32 x, FX_INT32 y, CFX_ByteString& str);
|
| - FX_BOOL FocusGetPosition(const CFX_AffineMatrix matrix, CFX_ByteString str, FX_INT32& x, FX_INT32& 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);
|
| + FX_FLOAT GetPageHeight();
|
| + FX_FLOAT GetPageWidth() { return m_PageWidth; };
|
| + void FocusGetData(const CFX_AffineMatrix matrix,
|
| + FX_INT32 x,
|
| + FX_INT32 y,
|
| + CFX_ByteString& str);
|
| + FX_BOOL FocusGetPosition(const CFX_AffineMatrix matrix,
|
| + CFX_ByteString str,
|
| + FX_INT32& x,
|
| + FX_INT32& 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;
|
| + CFX_MapPtrToPtr* m_pPageInfos;
|
| };
|
| -class CPDF_ProgressiveReflowPageParser : public IPDF_ProgressiveReflowPageParser, public CFX_Object
|
| -{
|
| -public:
|
| - CPDF_ProgressiveReflowPageParser();
|
| - ~CPDF_ProgressiveReflowPageParser() ;
|
| - void Init();
|
| +class CPDF_ProgressiveReflowPageParser
|
| + : public IPDF_ProgressiveReflowPageParser,
|
| + public CFX_Object {
|
| + public:
|
| + CPDF_ProgressiveReflowPageParser();
|
| + ~CPDF_ProgressiveReflowPageParser();
|
| + void Init();
|
|
|
| - ParseStatus GetStatus()
|
| - {
|
| - return m_Status;
|
| - };
|
| + 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 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 CFX_Object
|
| -{
|
| -public:
|
| - CPDF_ProgressiveReflowPageRender();
|
| - ~CPDF_ProgressiveReflowPageRender() ;
|
| + void Clear();
|
| + ParseStatus m_Status;
|
|
|
| - RenderStatus GetStatus()
|
| - {
|
| - return 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 CFX_Object {
|
| + 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 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();
|
|
|
| - 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 CFX_Object
|
| -{
|
| -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;
|
| + 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;
|
| }
|
| - RF_DataType GetType()
|
| - {
|
| - return m_Type;
|
| + CRF_TextDataAtt(CPDF_Font* font, FX_FLOAT fontSize, FX_ARGB color) {
|
| + pFont = font;
|
| + fFontSize = fontSize;
|
| + Color = color;
|
| }
|
| - 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;
|
| + 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;
|
| }
|
| - CRF_CharState* m_pCharState;
|
| - FX_DWORD m_CharCode;
|
| -};
|
| -class CRF_ImageData : public CRF_Data
|
| -{
|
| -public:
|
| - CRF_ImageData()
|
| - {
|
| - m_Type = Image;
|
| - m_pBitmap = NULL;
|
| + if (data1.Color != data2.Color) {
|
| + return false;
|
| }
|
| - ~CRF_ImageData()
|
| - {
|
| - if(m_pBitmap) {
|
| - delete m_pBitmap;
|
| - }
|
| - m_pBitmap = NULL;
|
| + if (fabs(data1.fFontSize - data2.fFontSize) > 0.0f) {
|
| + return false;
|
| }
|
| - CFX_AffineMatrix m_Matrix;
|
| - CFX_DIBitmap* m_pBitmap;
|
| + return true;
|
| + };
|
| };
|
| -class CRF_PathData : public CRF_Data
|
| -{
|
| -public:
|
| - CRF_PathData()
|
| - {
|
| - m_Type = Path;
|
| - m_bDecoration = FALSE;
|
| +#define TYPE_UNKNOW 0
|
| +#define TYPE_TEXT 1
|
| +#define TYPE_PATH 2
|
| +#define TYPE_IMAGE 3
|
| +#define TYPE_LINE 4
|
| +class CRF_Data : public CFX_Object {
|
| + 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;
|
| }
|
| - ~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;
|
| + 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
|
|
|