| 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 "core/fpdfapi/fpdf_render/render_int.h" | 7 #include "core/fpdfapi/fpdf_render/render_int.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 m_bLoadMask = bLoadMask; | 191 m_bLoadMask = bLoadMask; |
| 192 m_pFormResource = pFormResource; | 192 m_pFormResource = pFormResource; |
| 193 m_pPageResource = m_pContext->GetPageResources(); | 193 m_pPageResource = m_pContext->GetPageResources(); |
| 194 if (pInitialStates && !m_pType3Char) { | 194 if (pInitialStates && !m_pType3Char) { |
| 195 m_InitialStates.CopyStates(*pInitialStates); | 195 m_InitialStates.CopyStates(*pInitialStates); |
| 196 if (pParentState) { | 196 if (pParentState) { |
| 197 const CPDF_ColorStateData* pColorData = | 197 const CPDF_ColorStateData* pColorData = |
| 198 m_InitialStates.m_ColorState.GetObject(); | 198 m_InitialStates.m_ColorState.GetObject(); |
| 199 const CPDF_ColorStateData* pParentData = | 199 const CPDF_ColorStateData* pParentData = |
| 200 pParentState->m_InitialStates.m_ColorState.GetObject(); | 200 pParentState->m_InitialStates.m_ColorState.GetObject(); |
| 201 if (!pColorData || pColorData->GetFillColor()->IsNull()) { | 201 if (!pColorData || pColorData->m_FillColor.IsNull()) { |
| 202 m_InitialStates.m_ColorState.MakePrivateCopy(); | 202 m_InitialStates.m_ColorState.MakePrivateCopy(); |
| 203 m_InitialStates.m_ColorState->SetFillRGB(pParentData->GetFillRGB()); | 203 m_InitialStates.m_ColorState->m_FillRGB = pParentData->m_FillRGB; |
| 204 m_InitialStates.m_ColorState->GetFillColor()->Copy( | 204 m_InitialStates.m_ColorState->m_FillColor.Copy( |
| 205 pParentData->GetFillColor()); | 205 &pParentData->m_FillColor); |
| 206 } | 206 } |
| 207 if (!pColorData || pColorData->GetStrokeColor()->IsNull()) { | 207 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { |
| 208 m_InitialStates.m_ColorState.MakePrivateCopy(); | 208 m_InitialStates.m_ColorState.MakePrivateCopy(); |
| 209 m_InitialStates.m_ColorState->SetStrokeRGB(pParentData->GetFillRGB()); | 209 m_InitialStates.m_ColorState->m_StrokeRGB = pParentData->m_FillRGB; |
| 210 m_InitialStates.m_ColorState->GetStrokeColor()->Copy( | 210 m_InitialStates.m_ColorState->m_StrokeColor.Copy( |
| 211 pParentData->GetStrokeColor()); | 211 &pParentData->m_StrokeColor); |
| 212 } | 212 } |
| 213 } | 213 } |
| 214 } else { | 214 } else { |
| 215 m_InitialStates.DefaultStates(); | 215 m_InitialStates.DefaultStates(); |
| 216 } | 216 } |
| 217 m_pImageRenderer.reset(); | 217 m_pImageRenderer.reset(); |
| 218 m_Transparency = transparency; | 218 m_Transparency = transparency; |
| 219 return TRUE; | 219 return TRUE; |
| 220 } | 220 } |
| 221 void CPDF_RenderStatus::RenderObjectList( | 221 void CPDF_RenderStatus::RenderObjectList( |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 ASSERT(pObj); | 507 ASSERT(pObj); |
| 508 CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData(); | 508 CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData(); |
| 509 return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr; | 509 return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr; |
| 510 } | 510 } |
| 511 FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, | 511 FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, |
| 512 FX_BOOL bType3) const { | 512 FX_BOOL bType3) const { |
| 513 const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); | 513 const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); |
| 514 if (m_pType3Char && !bType3 && | 514 if (m_pType3Char && !bType3 && |
| 515 (!m_pType3Char->m_bColored || | 515 (!m_pType3Char->m_bColored || |
| 516 (m_pType3Char->m_bColored && | 516 (m_pType3Char->m_bColored && |
| 517 (!pColorData || pColorData->GetFillColor()->IsNull())))) { | 517 (!pColorData || pColorData->m_FillColor.IsNull())))) { |
| 518 return m_T3FillColor; | 518 return m_T3FillColor; |
| 519 } | 519 } |
| 520 if (!pColorData || pColorData->GetFillColor()->IsNull()) { | 520 if (!pColorData || pColorData->m_FillColor.IsNull()) { |
| 521 pColorData = m_InitialStates.m_ColorState.GetObject(); | 521 pColorData = m_InitialStates.m_ColorState.GetObject(); |
| 522 } | 522 } |
| 523 FX_COLORREF rgb = pColorData->GetFillRGB(); | 523 FX_COLORREF rgb = pColorData->m_FillRGB; |
| 524 if (rgb == (uint32_t)-1) { | 524 if (rgb == (uint32_t)-1) { |
| 525 return 0; | 525 return 0; |
| 526 } | 526 } |
| 527 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); | 527 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); |
| 528 int alpha; | 528 int alpha; |
| 529 if (pGeneralData) { | 529 if (pGeneralData) { |
| 530 alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); | 530 alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); |
| 531 if (pGeneralData->m_pTR) { | 531 if (pGeneralData->m_pTR) { |
| 532 if (!pGeneralData->m_pTransferFunc) { | 532 if (!pGeneralData->m_pTransferFunc) { |
| 533 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = | 533 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = |
| 534 GetTransferFunc(pGeneralData->m_pTR); | 534 GetTransferFunc(pGeneralData->m_pTR); |
| 535 } | 535 } |
| 536 if (pGeneralData->m_pTransferFunc) { | 536 if (pGeneralData->m_pTransferFunc) { |
| 537 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); | 537 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); |
| 538 } | 538 } |
| 539 } | 539 } |
| 540 } else { | 540 } else { |
| 541 alpha = 255; | 541 alpha = 255; |
| 542 } | 542 } |
| 543 return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); | 543 return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); |
| 544 } | 544 } |
| 545 FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { | 545 FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { |
| 546 const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); | 546 const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); |
| 547 if (m_pType3Char && | 547 if (m_pType3Char && (!m_pType3Char->m_bColored || |
| 548 (!m_pType3Char->m_bColored || | 548 (m_pType3Char->m_bColored && |
| 549 (m_pType3Char->m_bColored && | 549 (!pColorData || pColorData->m_StrokeColor.IsNull())))) { |
| 550 (!pColorData || pColorData->GetStrokeColor()->IsNull())))) { | |
| 551 return m_T3FillColor; | 550 return m_T3FillColor; |
| 552 } | 551 } |
| 553 if (!pColorData || pColorData->GetStrokeColor()->IsNull()) { | 552 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { |
| 554 pColorData = m_InitialStates.m_ColorState.GetObject(); | 553 pColorData = m_InitialStates.m_ColorState.GetObject(); |
| 555 } | 554 } |
| 556 FX_COLORREF rgb = pColorData->GetStrokeRGB(); | 555 FX_COLORREF rgb = pColorData->m_StrokeRGB; |
| 557 if (rgb == (uint32_t)-1) { | 556 if (rgb == (uint32_t)-1) { |
| 558 return 0; | 557 return 0; |
| 559 } | 558 } |
| 560 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); | 559 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); |
| 561 int alpha; | 560 int alpha; |
| 562 if (pGeneralData) { | 561 if (pGeneralData) { |
| 563 alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); | 562 alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); |
| 564 if (pGeneralData->m_pTR) { | 563 if (pGeneralData->m_pTR) { |
| 565 if (!pGeneralData->m_pTransferFunc) { | 564 if (!pGeneralData->m_pTransferFunc) { |
| 566 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = | 565 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 912 } | 911 } |
| 913 CPDF_GraphicStates* CPDF_RenderStatus::CloneObjStates( | 912 CPDF_GraphicStates* CPDF_RenderStatus::CloneObjStates( |
| 914 const CPDF_GraphicStates* pSrcStates, | 913 const CPDF_GraphicStates* pSrcStates, |
| 915 FX_BOOL bStroke) { | 914 FX_BOOL bStroke) { |
| 916 if (!pSrcStates) { | 915 if (!pSrcStates) { |
| 917 return nullptr; | 916 return nullptr; |
| 918 } | 917 } |
| 919 CPDF_GraphicStates* pStates = new CPDF_GraphicStates; | 918 CPDF_GraphicStates* pStates = new CPDF_GraphicStates; |
| 920 pStates->CopyStates(*pSrcStates); | 919 pStates->CopyStates(*pSrcStates); |
| 921 const CPDF_Color* pObjColor = bStroke | 920 const CPDF_Color* pObjColor = bStroke |
| 922 ? pSrcStates->m_ColorState->GetStrokeColor() | 921 ? pSrcStates->m_ColorState.GetStrokeColor() |
| 923 : pSrcStates->m_ColorState->GetFillColor(); | 922 : pSrcStates->m_ColorState.GetFillColor(); |
| 924 if (!pObjColor->IsNull()) { | 923 if (!pObjColor->IsNull()) { |
| 925 pStates->m_ColorState.MakePrivateCopy(); | 924 pStates->m_ColorState.MakePrivateCopy(); |
| 926 pStates->m_ColorState->SetFillRGB( | 925 pStates->m_ColorState->m_FillRGB = |
| 927 bStroke ? pSrcStates->m_ColorState->GetStrokeRGB() | 926 bStroke ? pSrcStates->m_ColorState->m_StrokeRGB |
| 928 : pSrcStates->m_ColorState->GetFillRGB()); | 927 : pSrcStates->m_ColorState->m_FillRGB; |
| 929 pStates->m_ColorState->SetStrokeRGB(pStates->m_ColorState->GetFillRGB()); | 928 pStates->m_ColorState->m_StrokeRGB = pStates->m_ColorState->m_FillRGB; |
| 930 } | 929 } |
| 931 return pStates; | 930 return pStates; |
| 932 } | 931 } |
| 933 | 932 |
| 934 CPDF_RenderContext::CPDF_RenderContext(CPDF_Page* pPage) | 933 CPDF_RenderContext::CPDF_RenderContext(CPDF_Page* pPage) |
| 935 : m_pDocument(pPage->m_pDocument), | 934 : m_pDocument(pPage->m_pDocument), |
| 936 m_pPageResources(pPage->m_pPageResources), | 935 m_pPageResources(pPage->m_pPageResources), |
| 937 m_pPageCache(pPage->GetRenderCache()) {} | 936 m_pPageCache(pPage->GetRenderCache()) {} |
| 938 | 937 |
| 939 CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc, | 938 CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc, |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1298 m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, | 1297 m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, |
| 1299 m_Rect.top, m_Rect.Width(), m_Rect.Height()); | 1298 m_Rect.top, m_Rect.Width(), m_Rect.Height()); |
| 1300 } | 1299 } |
| 1301 } | 1300 } |
| 1302 | 1301 |
| 1303 #if defined _SKIA_SUPPORT_ | 1302 #if defined _SKIA_SUPPORT_ |
| 1304 void CPDF_RenderStatus::DebugVerifyDeviceIsPreMultiplied() const { | 1303 void CPDF_RenderStatus::DebugVerifyDeviceIsPreMultiplied() const { |
| 1305 m_pDevice->DebugVerifyBitmapIsPreMultiplied(); | 1304 m_pDevice->DebugVerifyBitmapIsPreMultiplied(); |
| 1306 } | 1305 } |
| 1307 #endif | 1306 #endif |
| OLD | NEW |