| 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 | 
|---|