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 |