OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "../../include/reflow/reflowengine.h" | 7 #include "../../include/reflow/reflowengine.h" |
8 #include "reflowedpage.h" | 8 #include "reflowedpage.h" |
9 #include "layoutprovider_taggedpdf.h" | 9 #include "layoutprovider_taggedpdf.h" |
10 IPDF_LayoutProcessor* IPDF_LayoutProcessor::Create_LayoutProcessor_Reflow(FX_FLO
AT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, void* pReflowedPage, int flags,
FX_FLOAT lineSpace ) | 10 IPDF_LayoutProcessor* IPDF_LayoutProcessor::Create_LayoutProcessor_Reflow(FX_FLO
AT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, void* pReflowedPage, int flags,
FX_FLOAT lineSpace ) |
11 { | 11 { |
12 if(pReflowedPage == NULL || fWidth <= 20) { | 12 if(pReflowedPage == NULL || fWidth <= 20) { |
13 return NULL; | 13 return NULL; |
14 } | 14 } |
15 CPDF_LayoutProcessor_Reflow* pReflowEngine = FX_NEW CPDF_LayoutProcessor_Ref
low(); | 15 CPDF_LayoutProcessor_Reflow* pReflowEngine = new CPDF_LayoutProcessor_Reflow
(); |
16 if (NULL == pReflowEngine) { | |
17 return NULL; | |
18 } | |
19 pReflowEngine->Init(TopIndent, fWidth, fHeight, (CPDF_ReflowedPage*)pReflowe
dPage, flags, lineSpace); | 16 pReflowEngine->Init(TopIndent, fWidth, fHeight, (CPDF_ReflowedPage*)pReflowe
dPage, flags, lineSpace); |
20 return pReflowEngine; | 17 return pReflowEngine; |
21 } | 18 } |
22 CPDF_LayoutProcessor_Reflow::CPDF_LayoutProcessor_Reflow() | 19 CPDF_LayoutProcessor_Reflow::CPDF_LayoutProcessor_Reflow() |
23 { | 20 { |
24 m_pPause = NULL; | 21 m_pPause = NULL; |
25 m_pLayoutElement = NULL; | 22 m_pLayoutElement = NULL; |
26 m_fRefWidth = 0; | 23 m_fRefWidth = 0; |
27 m_fRefWidth = 0; | 24 m_fRefWidth = 0; |
28 m_fCurrLineWidth = 0; | 25 m_fCurrLineWidth = 0; |
29 m_fCurrLineHeight = 0; | 26 m_fCurrLineHeight = 0; |
30 m_bIllustration = FALSE; | 27 m_bIllustration = FALSE; |
31 m_pPreObj = NULL; | 28 m_pPreObj = NULL; |
32 m_pCurrLine = FX_NEW CRF_DataPtrArray(50); | 29 m_pCurrLine = new CRF_DataPtrArray(50); |
33 m_pTempLine = FX_NEW CRF_DataPtrArray(50); | 30 m_pTempLine = new CRF_DataPtrArray(50); |
34 m_StartIndent = 0; | 31 m_StartIndent = 0; |
35 m_PausePosition = 0; | 32 m_PausePosition = 0; |
36 } | 33 } |
37 CPDF_LayoutProcessor_Reflow::~CPDF_LayoutProcessor_Reflow() | 34 CPDF_LayoutProcessor_Reflow::~CPDF_LayoutProcessor_Reflow() |
38 { | 35 { |
39 if (m_pCurrLine) { | 36 if (m_pCurrLine) { |
40 m_pCurrLine->RemoveAll(); | 37 m_pCurrLine->RemoveAll(); |
41 delete m_pCurrLine; | 38 delete m_pCurrLine; |
42 } | 39 } |
43 m_pCurrLine = NULL; | 40 m_pCurrLine = NULL; |
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 } | 547 } |
551 } | 548 } |
552 if(reflowWidth * 2 < width) { | 549 if(reflowWidth * 2 < width) { |
553 reflowWidth = width; | 550 reflowWidth = width; |
554 m_StartIndent = 0; | 551 m_StartIndent = 0; |
555 } | 552 } |
556 break; | 553 break; |
557 } | 554 } |
558 switch(layoutType) { | 555 switch(layoutType) { |
559 case LayoutTable: { | 556 case LayoutTable: { |
560 CRF_Table* pTable = FX_NEW CRF_Table; | 557 CRF_Table* pTable = new CRF_Table; |
561 if (NULL == pTable) { | |
562 break; | |
563 } | |
564 m_TableArray.Add(pTable); | 558 m_TableArray.Add(pTable); |
565 pTable->m_ReflowPageHeight = m_pReflowedPage->m_PageHeight; | 559 pTable->m_ReflowPageHeight = m_pReflowedPage->m_PageHeight; |
566 pTable->m_TableWidth = GetElmWidth(pElement); | 560 pTable->m_TableWidth = GetElmWidth(pElement); |
567 break; | 561 break; |
568 } | 562 } |
569 case LayoutTableRow: { | 563 case LayoutTableRow: { |
570 if(!m_TableArray.GetSize()) { | 564 if(!m_TableArray.GetSize()) { |
571 break; | 565 break; |
572 } | 566 } |
573 int count = pElement->CountChildren(); | 567 int count = pElement->CountChildren(); |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 { | 758 { |
765 if(!pObj) { | 759 if(!pObj) { |
766 return; | 760 return; |
767 } | 761 } |
768 if(pObj->m_Type == PDFPAGE_TEXT) { | 762 if(pObj->m_Type == PDFPAGE_TEXT) { |
769 ProcessTextObject( (CPDF_TextObject *)pObj, reflowWidth, objMatrix); | 763 ProcessTextObject( (CPDF_TextObject *)pObj, reflowWidth, objMatrix); |
770 } else if(pObj->m_Type == PDFPAGE_IMAGE) { | 764 } else if(pObj->m_Type == PDFPAGE_IMAGE) { |
771 if(!(m_flags & RF_PARSER_IMAGE)) { | 765 if(!(m_flags & RF_PARSER_IMAGE)) { |
772 return; | 766 return; |
773 } | 767 } |
774 CPDF_PageObjects* pObjs = FX_NEW CPDF_PageObjects(FALSE); | 768 CPDF_PageObjects* pObjs = new CPDF_PageObjects(FALSE); |
775 if (NULL == pObjs) { | |
776 return; | |
777 } | |
778 FX_POSITION pos = pObjs->GetLastObjectPosition(); | 769 FX_POSITION pos = pObjs->GetLastObjectPosition(); |
779 pos = pObjs->InsertObject(pos, pObj); | 770 pos = pObjs->InsertObject(pos, pObj); |
780 CFX_AffineMatrix matrix; | 771 CFX_AffineMatrix matrix; |
781 FX_RECT rect = pObj->GetBBox(&matrix); | 772 FX_RECT rect = pObj->GetBBox(&matrix); |
782 CPDF_ImageObject* ImageObj = (CPDF_ImageObject*)pObj; | 773 CPDF_ImageObject* ImageObj = (CPDF_ImageObject*)pObj; |
783 ProcessUnitaryObjs(pObjs, reflowWidth, objMatrix); | 774 ProcessUnitaryObjs(pObjs, reflowWidth, objMatrix); |
784 delete pObjs; | 775 delete pObjs; |
785 } else if(pObj->m_Type == PDFPAGE_PATH) { | 776 } else if(pObj->m_Type == PDFPAGE_PATH) { |
786 } else if(pObj->m_Type == PDFPAGE_FORM) { | 777 } else if(pObj->m_Type == PDFPAGE_FORM) { |
787 CPDF_FormObject* pForm = (CPDF_FormObject*)pObj; | 778 CPDF_FormObject* pForm = (CPDF_FormObject*)pObj; |
(...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1551 } | 1542 } |
1552 if (m_pTempLine) { | 1543 if (m_pTempLine) { |
1553 Transform(&tempMatrix, m_pTempLine, 0, m_pTempLine->GetSize()); | 1544 Transform(&tempMatrix, m_pTempLine, 0, m_pTempLine->GetSize()); |
1554 AddTemp2CurrLine(0, m_pTempLine->GetSize()); | 1545 AddTemp2CurrLine(0, m_pTempLine->GetSize()); |
1555 m_pTempLine->RemoveAll(); | 1546 m_pTempLine->RemoveAll(); |
1556 } | 1547 } |
1557 } | 1548 } |
1558 void CPDF_LayoutProcessor_Reflow::ProcessPathObject(CPDF_PathObject *pObj, FX_FL
OAT reflowWidth) | 1549 void CPDF_LayoutProcessor_Reflow::ProcessPathObject(CPDF_PathObject *pObj, FX_FL
OAT reflowWidth) |
1559 { | 1550 { |
1560 } | 1551 } |
OLD | NEW |