Index: core/src/fpdfapi/fpdf_render/fpdf_render.cpp |
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp |
index a2638fe7e1367c9f9158a72b7dbbcf3ddfdb3928..faf6afe7f662eb051fb65e7d86013614bc828e01 100644 |
--- a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp |
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp |
@@ -181,7 +181,7 @@ CPDF_RenderStatus::~CPDF_RenderStatus() { |
FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext, |
CFX_RenderDevice* pDevice, |
- const CFX_AffineMatrix* pDeviceMatrix, |
+ const CFX_Matrix* pDeviceMatrix, |
const CPDF_PageObject* pStopObj, |
const CPDF_RenderStatus* pParentState, |
const CPDF_GraphicStates* pInitialStates, |
@@ -241,9 +241,9 @@ FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext, |
return TRUE; |
} |
void CPDF_RenderStatus::RenderObjectList(const CPDF_PageObjects* pObjs, |
- const CFX_AffineMatrix* pObj2Device) { |
+ const CFX_Matrix* pObj2Device) { |
CFX_FloatRect clip_rect = m_pDevice->GetClipBox(); |
- CFX_AffineMatrix device2object; |
+ CFX_Matrix device2object; |
device2object.SetReverse(*pObj2Device); |
device2object.TransformRect(clip_rect); |
int index = 0; |
@@ -270,9 +270,8 @@ void CPDF_RenderStatus::RenderObjectList(const CPDF_PageObjects* pObjs, |
} |
} |
} |
-void CPDF_RenderStatus::RenderSingleObject( |
- const CPDF_PageObject* pObj, |
- const CFX_AffineMatrix* pObj2Device) { |
+void CPDF_RenderStatus::RenderSingleObject(const CPDF_PageObject* pObj, |
+ const CFX_Matrix* pObj2Device) { |
CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth); |
if (++s_CurrentRecursionDepth > kRenderMaxRecursionDepth) { |
return; |
@@ -290,10 +289,9 @@ void CPDF_RenderStatus::RenderSingleObject( |
ProcessObjectNoClip(pObj, pObj2Device); |
} |
-FX_BOOL CPDF_RenderStatus::ContinueSingleObject( |
- const CPDF_PageObject* pObj, |
- const CFX_AffineMatrix* pObj2Device, |
- IFX_Pause* pPause) { |
+FX_BOOL CPDF_RenderStatus::ContinueSingleObject(const CPDF_PageObject* pObj, |
+ const CFX_Matrix* pObj2Device, |
+ IFX_Pause* pPause) { |
if (m_pObjectRenderer) { |
if (m_pObjectRenderer->Continue(pPause)) |
return TRUE; |
@@ -335,11 +333,10 @@ IPDF_ObjectRenderer* IPDF_ObjectRenderer::Create(int type) { |
} |
return new CPDF_ImageRenderer; |
} |
-FX_BOOL CPDF_RenderStatus::GetObjectClippedRect( |
- const CPDF_PageObject* pObj, |
- const CFX_AffineMatrix* pObj2Device, |
- FX_BOOL bLogical, |
- FX_RECT& rect) const { |
+FX_BOOL CPDF_RenderStatus::GetObjectClippedRect(const CPDF_PageObject* pObj, |
+ const CFX_Matrix* pObj2Device, |
+ FX_BOOL bLogical, |
+ FX_RECT& rect) const { |
rect = pObj->GetBBox(pObj2Device); |
FX_RECT rtClip = m_pDevice->GetClipBox(); |
if (!bLogical) { |
@@ -359,7 +356,7 @@ FX_BOOL CPDF_RenderStatus::GetObjectClippedRect( |
return rect.IsEmpty(); |
} |
void CPDF_RenderStatus::DitherObjectArea(const CPDF_PageObject* pObj, |
- const CFX_AffineMatrix* pObj2Device) { |
+ const CFX_Matrix* pObj2Device) { |
CFX_DIBitmap* pBitmap = m_pDevice->GetBitmap(); |
if (pBitmap == NULL) { |
return; |
@@ -380,9 +377,8 @@ void CPDF_RenderStatus::DitherObjectArea(const CPDF_PageObject* pObj, |
pBitmap->DitherFS(pal, 16, &rect); |
} |
} |
-void CPDF_RenderStatus::ProcessObjectNoClip( |
- const CPDF_PageObject* pObj, |
- const CFX_AffineMatrix* pObj2Device) { |
+void CPDF_RenderStatus::ProcessObjectNoClip(const CPDF_PageObject* pObj, |
+ const CFX_Matrix* pObj2Device) { |
FX_BOOL bRet = FALSE; |
switch (pObj->m_Type) { |
case PDFPAGE_TEXT: |
@@ -405,9 +401,8 @@ void CPDF_RenderStatus::ProcessObjectNoClip( |
DrawObjWithBackground(pObj, pObj2Device); |
} |
} |
-FX_BOOL CPDF_RenderStatus::DrawObjWithBlend( |
- const CPDF_PageObject* pObj, |
- const CFX_AffineMatrix* pObj2Device) { |
+FX_BOOL CPDF_RenderStatus::DrawObjWithBlend(const CPDF_PageObject* pObj, |
+ const CFX_Matrix* pObj2Device) { |
FX_BOOL bRet = FALSE; |
switch (pObj->m_Type) { |
case PDFPAGE_PATH: |
@@ -427,9 +422,8 @@ void CPDF_RenderStatus::GetScaledMatrix(CFX_Matrix& matrix) const { |
matrix.a *= FXSYS_fabs(dCTM.a); |
matrix.d *= FXSYS_fabs(dCTM.d); |
} |
-void CPDF_RenderStatus::DrawObjWithBackground( |
- const CPDF_PageObject* pObj, |
- const CFX_AffineMatrix* pObj2Device) { |
+void CPDF_RenderStatus::DrawObjWithBackground(const CPDF_PageObject* pObj, |
+ const CFX_Matrix* pObj2Device) { |
FX_RECT rect; |
if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) { |
return; |
@@ -443,7 +437,7 @@ void CPDF_RenderStatus::DrawObjWithBackground( |
if (!buffer.Initialize(m_pContext, m_pDevice, &rect, pObj, &m_Options, res)) { |
return; |
} |
- CFX_AffineMatrix matrix = *pObj2Device; |
+ CFX_Matrix matrix = *pObj2Device; |
matrix.Concat(*buffer.GetMatrix()); |
GetScaledMatrix(matrix); |
CPDF_Dictionary* pFormResource = NULL; |
@@ -462,14 +456,14 @@ void CPDF_RenderStatus::DrawObjWithBackground( |
buffer.OutputToDevice(); |
} |
FX_BOOL CPDF_RenderStatus::ProcessForm(CPDF_FormObject* pFormObj, |
- const CFX_AffineMatrix* pObj2Device) { |
+ const CFX_Matrix* pObj2Device) { |
CPDF_Dictionary* pOC = |
pFormObj->m_pForm->m_pFormDict->GetDict(FX_BSTRC("OC")); |
if (pOC && m_Options.m_pOCContext && |
!m_Options.m_pOCContext->CheckOCGVisible(pOC)) { |
return TRUE; |
} |
- CFX_AffineMatrix matrix = pFormObj->m_FormMatrix; |
+ CFX_Matrix matrix = pFormObj->m_FormMatrix; |
matrix.Concat(*pObj2Device); |
CPDF_Dictionary* pResources = NULL; |
if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) { |
@@ -486,7 +480,7 @@ FX_BOOL CPDF_RenderStatus::ProcessForm(CPDF_FormObject* pFormObj, |
m_pDevice->RestoreState(); |
return TRUE; |
} |
-FX_BOOL IsAvailableMatrix(const CFX_AffineMatrix& matrix) { |
+FX_BOOL IsAvailableMatrix(const CFX_Matrix& matrix) { |
if (matrix.a == 0 || matrix.d == 0) { |
return matrix.b != 0 && matrix.c != 0; |
} |
@@ -496,7 +490,7 @@ FX_BOOL IsAvailableMatrix(const CFX_AffineMatrix& matrix) { |
return TRUE; |
} |
FX_BOOL CPDF_RenderStatus::ProcessPath(CPDF_PathObject* pPathObj, |
- const CFX_AffineMatrix* pObj2Device) { |
+ const CFX_Matrix* pObj2Device) { |
int FillType = pPathObj->m_FillType; |
FX_BOOL bStroke = pPathObj->m_bStroke; |
ProcessPathPattern(pPathObj, pObj2Device, FillType, bStroke); |
@@ -511,7 +505,7 @@ FX_BOOL CPDF_RenderStatus::ProcessPath(CPDF_PathObject* pPathObj, |
if (bStroke) { |
stroke_argb = GetStrokeArgb(pPathObj); |
} |
- CFX_AffineMatrix path_matrix = pPathObj->m_Matrix; |
+ CFX_Matrix path_matrix = pPathObj->m_Matrix; |
path_matrix.Concat(*pObj2Device); |
if (!IsAvailableMatrix(path_matrix)) { |
return TRUE; |
@@ -623,7 +617,7 @@ FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { |
return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); |
} |
void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath, |
- const CFX_AffineMatrix* pObj2Device) { |
+ const CFX_Matrix* pObj2Device) { |
if (ClipPath.IsNull()) { |
if (!m_LastClipPath.IsNull()) { |
m_pDevice->RestoreState(TRUE); |
@@ -683,7 +677,7 @@ void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath, |
} |
void CPDF_RenderStatus::DrawClipPath(CPDF_ClipPath ClipPath, |
- const CFX_AffineMatrix* pObj2Device) { |
+ const CFX_Matrix* pObj2Device) { |
if (ClipPath.IsNull()) { |
return; |
} |
@@ -707,9 +701,9 @@ void CPDF_RenderStatus::DrawClipPath(CPDF_ClipPath ClipPath, |
} |
} |
FX_BOOL CPDF_RenderStatus::SelectClipPath(CPDF_PathObject* pPathObj, |
- const CFX_AffineMatrix* pObj2Device, |
+ const CFX_Matrix* pObj2Device, |
FX_BOOL bStroke) { |
- CFX_AffineMatrix path_matrix = pPathObj->m_Matrix; |
+ CFX_Matrix path_matrix = pPathObj->m_Matrix; |
path_matrix.Concat(*pObj2Device); |
if (bStroke) { |
CFX_GraphStateData graphState(*pPathObj->m_GraphState); |
@@ -725,9 +719,8 @@ FX_BOOL CPDF_RenderStatus::SelectClipPath(CPDF_PathObject* pPathObj, |
} |
return m_pDevice->SetClip_PathFill(pPathObj->m_Path, &path_matrix, fill_mode); |
} |
-FX_BOOL CPDF_RenderStatus::ProcessTransparency( |
- const CPDF_PageObject* pPageObj, |
- const CFX_AffineMatrix* pObj2Device) { |
+FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, |
+ const CFX_Matrix* pObj2Device) { |
const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; |
int blend_type = |
pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; |
@@ -838,7 +831,7 @@ FX_BOOL CPDF_RenderStatus::ProcessTransparency( |
CFX_DIBitmap* bitmap = bitmap_device.GetBitmap(); |
bitmap->Clear(0); |
- CFX_AffineMatrix new_matrix = *pObj2Device; |
+ CFX_Matrix new_matrix = *pObj2Device; |
new_matrix.TranslateI(-rect.left, -rect.top); |
new_matrix.Scale(scaleX, scaleY); |
nonstd::unique_ptr<CFX_DIBitmap> pTextMask; |
@@ -855,7 +848,7 @@ FX_BOOL CPDF_RenderStatus::ProcessTransparency( |
if (textobj == NULL) { |
break; |
} |
- CFX_AffineMatrix text_matrix; |
+ CFX_Matrix text_matrix; |
textobj->GetTextMatrix(&text_matrix); |
CPDF_TextRenderer::DrawTextPath( |
&text_device, textobj->m_nChars, textobj->m_pCharCodes, |
@@ -871,7 +864,7 @@ FX_BOOL CPDF_RenderStatus::ProcessTransparency( |
bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix); |
m_bStopped = bitmap_render.m_bStopped; |
if (pSMaskDict) { |
- CFX_AffineMatrix smask_matrix; |
+ CFX_Matrix smask_matrix; |
FXSYS_memcpy(&smask_matrix, pGeneralState->m_SMaskMatrix, |
sizeof smask_matrix); |
smask_matrix.Concat(*pObj2Device); |
@@ -930,7 +923,7 @@ CFX_DIBitmap* CPDF_RenderStatus::GetBackdrop(const CPDF_PageObject* pObj, |
return pBackdrop.release(); |
} |
- CFX_AffineMatrix FinalMatrix = m_DeviceMatrix; |
+ CFX_Matrix FinalMatrix = m_DeviceMatrix; |
FinalMatrix.TranslateI(-left, -top); |
FinalMatrix.Scale(scaleX, scaleY); |
pBackdrop->Clear(pBackdrop->HasAlpha() ? 0 : 0xffffffff); |
@@ -943,7 +936,7 @@ CFX_DIBitmap* CPDF_RenderStatus::GetBackdrop(const CPDF_PageObject* pObj, |
void CPDF_RenderContext::GetBackground(CFX_DIBitmap* pBuffer, |
const CPDF_PageObject* pObj, |
const CPDF_RenderOptions* pOptions, |
- CFX_AffineMatrix* pFinalMatrix) { |
+ CFX_Matrix* pFinalMatrix) { |
CFX_FxgeDevice device; |
device.Attach(pBuffer); |
@@ -994,9 +987,8 @@ void CPDF_RenderContext::Clear() { |
m_bFirstLayer = TRUE; |
m_ContentList.RemoveAll(); |
} |
-void CPDF_RenderContext::AppendObjectList( |
- CPDF_PageObjects* pObjs, |
- const CFX_AffineMatrix* pObject2Device) { |
+void CPDF_RenderContext::AppendObjectList(CPDF_PageObjects* pObjs, |
+ const CFX_Matrix* pObject2Device) { |
_PDF_RenderItem* pItem = m_ContentList.AddSpace(); |
pItem->m_pObjectList = pObjs; |
if (pObject2Device) { |
@@ -1007,19 +999,19 @@ void CPDF_RenderContext::AppendObjectList( |
} |
void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, |
const CPDF_RenderOptions* pOptions, |
- const CFX_AffineMatrix* pLastMatrix) { |
+ const CFX_Matrix* pLastMatrix) { |
Render(pDevice, NULL, pOptions, pLastMatrix); |
} |
void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, |
const CPDF_PageObject* pStopObj, |
const CPDF_RenderOptions* pOptions, |
- const CFX_AffineMatrix* pLastMatrix) { |
+ const CFX_Matrix* pLastMatrix) { |
int count = m_ContentList.GetSize(); |
for (int j = 0; j < count; j++) { |
pDevice->SaveState(); |
_PDF_RenderItem* pItem = m_ContentList.GetDataPtr(j); |
if (pLastMatrix) { |
- CFX_AffineMatrix FinalMatrix = pItem->m_Matrix; |
+ CFX_Matrix FinalMatrix = pItem->m_Matrix; |
FinalMatrix.Concat(*pLastMatrix); |
CPDF_RenderStatus status; |
status.Initialize(this, pDevice, pLastMatrix, pStopObj, NULL, NULL, |
@@ -1051,7 +1043,7 @@ void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, |
} |
void CPDF_RenderContext::DrawObjectList(CFX_RenderDevice* pDevice, |
CPDF_PageObjects* pObjs, |
- const CFX_AffineMatrix* pObject2Device, |
+ const CFX_Matrix* pObject2Device, |
const CPDF_RenderOptions* pOptions) { |
AppendObjectList(pObjs, pObject2Device); |
Render(pDevice, pOptions); |
@@ -1130,7 +1122,7 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) { |
pItem->m_pObjectList->m_Transparency, FALSE, NULL); |
m_pDevice->SaveState(); |
m_ClipRect = m_pDevice->GetClipBox(); |
- CFX_AffineMatrix device2object; |
+ CFX_Matrix device2object; |
device2object.SetReverse(pItem->m_Matrix); |
device2object.TransformRect(m_ClipRect); |
} |