Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(247)

Side by Side Diff: core/src/fpdfapi/fpdf_render/fpdf_render.cpp

Issue 801913002: Simplify PDFium by removing code that's not used in the open source repo. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/fpdfapi/fpdf_render.h" 7 #include "../../../include/fpdfapi/fpdf_render.h"
8 #include "../../../include/fpdfapi/fpdf_module.h" 8 #include "../../../include/fpdfapi/fpdf_module.h"
9 #include "../fpdf_page/pageint.h" 9 #include "../fpdf_page/pageint.h"
10 #include "../../../include/fxge/fx_ge.h" 10 #include "../../../include/fxge/fx_ge.h"
(...skipping 17 matching lines...) Expand all
28 CPDF_Font* pFont; 28 CPDF_Font* pFont;
29 CPDF_CountedObject<CPDF_Type3Cache*>* cache; 29 CPDF_CountedObject<CPDF_Type3Cache*>* cache;
30 m_Type3FaceMap.GetNextAssoc(pos, pFont, cache); 30 m_Type3FaceMap.GetNextAssoc(pos, pFont, cache);
31 if (bRelease || cache->m_nCount < 2) { 31 if (bRelease || cache->m_nCount < 2) {
32 delete cache->m_Obj; 32 delete cache->m_Obj;
33 delete cache; 33 delete cache;
34 m_Type3FaceMap.RemoveKey(pFont); 34 m_Type3FaceMap.RemoveKey(pFont);
35 } 35 }
36 } 36 }
37 } 37 }
38 #ifndef _FPDFAPI_MINI_
39 { 38 {
40 pos = m_TransferFuncMap.GetStartPosition(); 39 pos = m_TransferFuncMap.GetStartPosition();
41 while (pos) { 40 while (pos) {
42 CPDF_Object* key; 41 CPDF_Object* key;
43 CPDF_CountedObject<CPDF_TransferFunc*>* value; 42 CPDF_CountedObject<CPDF_TransferFunc*>* value;
44 m_TransferFuncMap.GetNextAssoc(pos, key, value); 43 m_TransferFuncMap.GetNextAssoc(pos, key, value);
45 if (bRelease || value->m_nCount < 2) { 44 if (bRelease || value->m_nCount < 2) {
46 delete value->m_Obj; 45 delete value->m_Obj;
47 delete value; 46 delete value;
48 m_TransferFuncMap.RemoveKey(key); 47 m_TransferFuncMap.RemoveKey(key);
49 } 48 }
50 } 49 }
51 } 50 }
52 #endif
53 if (m_pFontCache) { 51 if (m_pFontCache) {
54 if (bRelease) { 52 if (bRelease) {
55 delete m_pFontCache; 53 delete m_pFontCache;
56 m_pFontCache = NULL; 54 m_pFontCache = NULL;
57 } else { 55 } else {
58 m_pFontCache->FreeCache(FALSE); 56 m_pFontCache->FreeCache(FALSE);
59 } 57 }
60 } 58 }
61 } 59 }
62 FX_BOOL CPDF_DocRenderData::Initialize() 60 FX_BOOL CPDF_DocRenderData::Initialize()
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 } 140 }
143 CPDF_RenderOptions::CPDF_RenderOptions() 141 CPDF_RenderOptions::CPDF_RenderOptions()
144 : m_ColorMode(RENDER_COLOR_NORMAL) 142 : m_ColorMode(RENDER_COLOR_NORMAL)
145 , m_Flags(RENDER_CLEARTYPE) 143 , m_Flags(RENDER_CLEARTYPE)
146 , m_Interpolation(0) 144 , m_Interpolation(0)
147 , m_AddFlags(0) 145 , m_AddFlags(0)
148 , m_pOCContext(NULL) 146 , m_pOCContext(NULL)
149 , m_dwLimitCacheSize(1024 * 1024 * 100) 147 , m_dwLimitCacheSize(1024 * 1024 * 100)
150 , m_HalftoneLimit(-1) 148 , m_HalftoneLimit(-1)
151 { 149 {
152 #if defined(_FPDFAPI_MINI_)
153 m_Flags |= RENDER_LIMITEDIMAGECACHE;
154 #endif
155 } 150 }
156 FX_ARGB CPDF_RenderOptions::TranslateColor(FX_ARGB argb) const 151 FX_ARGB CPDF_RenderOptions::TranslateColor(FX_ARGB argb) const
157 { 152 {
158 if (m_ColorMode == RENDER_COLOR_NORMAL) { 153 if (m_ColorMode == RENDER_COLOR_NORMAL) {
159 return argb; 154 return argb;
160 } 155 }
161 if (m_ColorMode == RENDER_COLOR_ALPHA) { 156 if (m_ColorMode == RENDER_COLOR_ALPHA) {
162 return argb; 157 return argb;
163 } 158 }
164 int a, r, g, b; 159 int a, r, g, b;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 } 249 }
255 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { 250 if (!pColorData || pColorData->m_StrokeColor.IsNull()) {
256 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetMod ify(); 251 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetMod ify();
257 pData->m_StrokeRGB = pParentData->m_FillRGB; 252 pData->m_StrokeRGB = pParentData->m_FillRGB;
258 pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor); 253 pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor);
259 } 254 }
260 } 255 }
261 } else { 256 } else {
262 m_InitialStates.DefaultStates(); 257 m_InitialStates.DefaultStates();
263 } 258 }
264 #if defined(_FPDFAPI_MINI_)||defined(_FXCORE_LIMITED_CPU_)
265 m_HalftoneLimit = CPDF_ModuleMgr::Get()->GetRenderModule()->GetConfig()->m_H alftoneLimit;
266 if (pOptions && pOptions->m_HalftoneLimit >= 0) {
267 m_HalftoneLimit = pOptions->m_HalftoneLimit;
268 }
269 #endif
270 m_pObjectRenderer = NULL; 259 m_pObjectRenderer = NULL;
271 m_Transparency = transparency; 260 m_Transparency = transparency;
272 return TRUE; 261 return TRUE;
273 } 262 }
274 void CPDF_RenderStatus::RenderObjectList(const CPDF_PageObjects* pObjs, const CF X_AffineMatrix* pObj2Device) 263 void CPDF_RenderStatus::RenderObjectList(const CPDF_PageObjects* pObjs, const CF X_AffineMatrix* pObj2Device)
275 { 264 {
276 if (m_Level > 32) { 265 if (m_Level > 32) {
277 return; 266 return;
278 } 267 }
279 CFX_FloatRect clip_rect = m_pDevice->GetClipBox(); 268 CFX_FloatRect clip_rect = m_pDevice->GetClipBox();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 } 309 }
321 FX_BOOL CPDF_RenderStatus::ContinueSingleObject(const CPDF_PageObject* pObj, con st CFX_AffineMatrix* pObj2Device, IFX_Pause* pPause) 310 FX_BOOL CPDF_RenderStatus::ContinueSingleObject(const CPDF_PageObject* pObj, con st CFX_AffineMatrix* pObj2Device, IFX_Pause* pPause)
322 { 311 {
323 if (m_pObjectRenderer) { 312 if (m_pObjectRenderer) {
324 if (m_pObjectRenderer->Continue(pPause)) { 313 if (m_pObjectRenderer->Continue(pPause)) {
325 return TRUE; 314 return TRUE;
326 } 315 }
327 if (!m_pObjectRenderer->m_Result) { 316 if (!m_pObjectRenderer->m_Result) {
328 DrawObjWithBackground(pObj, pObj2Device); 317 DrawObjWithBackground(pObj, pObj2Device);
329 } 318 }
330 #ifdef _FPDFAPI_MINI_
331 if (m_DitherBits) {
332 DitherObjectArea(pObj, pObj2Device);
333 }
334 #endif
335 delete m_pObjectRenderer; 319 delete m_pObjectRenderer;
336 m_pObjectRenderer = NULL; 320 m_pObjectRenderer = NULL;
337 return FALSE; 321 return FALSE;
338 } 322 }
339 m_pCurObj = pObj; 323 m_pCurObj = pObj;
340 if (m_Options.m_pOCContext && pObj->m_ContentMark.NotNull()) 324 if (m_Options.m_pOCContext && pObj->m_ContentMark.NotNull())
341 if (!m_Options.m_pOCContext->CheckObjectVisible(pObj)) { 325 if (!m_Options.m_pOCContext->CheckObjectVisible(pObj)) {
342 return FALSE; 326 return FALSE;
343 } 327 }
344 ProcessClipPath(pObj->m_ClipPath, pObj2Device); 328 ProcessClipPath(pObj->m_ClipPath, pObj2Device);
345 if (ProcessTransparency(pObj, pObj2Device)) { 329 if (ProcessTransparency(pObj, pObj2Device)) {
346 return FALSE; 330 return FALSE;
347 } 331 }
348 if (pObj->m_Type == PDFPAGE_IMAGE) { 332 if (pObj->m_Type == PDFPAGE_IMAGE) {
349 m_pObjectRenderer = IPDF_ObjectRenderer::Create(pObj->m_Type); 333 m_pObjectRenderer = IPDF_ObjectRenderer::Create(pObj->m_Type);
350 if (!m_pObjectRenderer->Start(this, pObj, pObj2Device, FALSE)) { 334 if (!m_pObjectRenderer->Start(this, pObj, pObj2Device, FALSE)) {
351 if (!m_pObjectRenderer->m_Result) { 335 if (!m_pObjectRenderer->m_Result) {
352 DrawObjWithBackground(pObj, pObj2Device); 336 DrawObjWithBackground(pObj, pObj2Device);
353 } 337 }
354 #ifdef _FPDFAPI_MINI_
355 if (m_DitherBits) {
356 DitherObjectArea(pObj, pObj2Device);
357 }
358 #endif
359 delete m_pObjectRenderer; 338 delete m_pObjectRenderer;
360 m_pObjectRenderer = NULL; 339 m_pObjectRenderer = NULL;
361 return FALSE; 340 return FALSE;
362 } 341 }
363 return ContinueSingleObject(pObj, pObj2Device, pPause); 342 return ContinueSingleObject(pObj, pObj2Device, pPause);
364 } 343 }
365 ProcessObjectNoClip(pObj, pObj2Device); 344 ProcessObjectNoClip(pObj, pObj2Device);
366 return FALSE; 345 return FALSE;
367 } 346 }
368 IPDF_ObjectRenderer* IPDF_ObjectRenderer::Create(int type) 347 IPDF_ObjectRenderer* IPDF_ObjectRenderer::Create(int type)
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 break; 403 break;
425 case PDFPAGE_IMAGE: 404 case PDFPAGE_IMAGE:
426 bRet = ProcessImage((CPDF_ImageObject*)pObj, pObj2Device); 405 bRet = ProcessImage((CPDF_ImageObject*)pObj, pObj2Device);
427 break; 406 break;
428 case PDFPAGE_SHADING: 407 case PDFPAGE_SHADING:
429 bRet = ProcessShading((CPDF_ShadingObject*)pObj, pObj2Device); 408 bRet = ProcessShading((CPDF_ShadingObject*)pObj, pObj2Device);
430 break; 409 break;
431 case PDFPAGE_FORM: 410 case PDFPAGE_FORM:
432 bRet = ProcessForm((CPDF_FormObject*)pObj, pObj2Device); 411 bRet = ProcessForm((CPDF_FormObject*)pObj, pObj2Device);
433 break; 412 break;
434 #if defined(_FPDFAPI_MINI_)
435 case PDFPAGE_INLINES:
436 bRet = ProcessInlines((CPDF_InlineImages*)pObj, pObj2Device);
437 break;
438 #endif
439 } 413 }
440 if (!bRet) { 414 if (!bRet) {
441 DrawObjWithBackground(pObj, pObj2Device); 415 DrawObjWithBackground(pObj, pObj2Device);
442 } 416 }
443 } 417 }
444 FX_BOOL CPDF_RenderStatus::DrawObjWithBlend(const CPDF_PageObject* pObj, const C FX_AffineMatrix* pObj2Device) 418 FX_BOOL CPDF_RenderStatus::DrawObjWithBlend(const CPDF_PageObject* pObj, const C FX_AffineMatrix* pObj2Device)
445 { 419 {
446 FX_BOOL bRet = FALSE; 420 FX_BOOL bRet = FALSE;
447 switch (pObj->m_Type) { 421 switch (pObj->m_Type) {
448 case PDFPAGE_PATH: 422 case PDFPAGE_PATH:
449 bRet = ProcessPath((CPDF_PathObject*)pObj, pObj2Device); 423 bRet = ProcessPath((CPDF_PathObject*)pObj, pObj2Device);
450 break; 424 break;
451 case PDFPAGE_IMAGE: 425 case PDFPAGE_IMAGE:
452 bRet = ProcessImage((CPDF_ImageObject *)pObj, pObj2Device); 426 bRet = ProcessImage((CPDF_ImageObject *)pObj, pObj2Device);
453 break; 427 break;
454 case PDFPAGE_FORM: 428 case PDFPAGE_FORM:
455 bRet = ProcessForm((CPDF_FormObject*)pObj, pObj2Device); 429 bRet = ProcessForm((CPDF_FormObject*)pObj, pObj2Device);
456 break; 430 break;
457 } 431 }
458 return bRet; 432 return bRet;
459 } 433 }
460 void CPDF_RenderStatus::GetScaledMatrix(CFX_Matrix &matrix) const 434 void CPDF_RenderStatus::GetScaledMatrix(CFX_Matrix &matrix) const
461 { 435 {
462 CFX_Matrix dCTM = m_pDevice->GetCTM(); 436 CFX_Matrix dCTM = m_pDevice->GetCTM();
463 matrix.a *= FXSYS_fabs(dCTM.a); 437 matrix.a *= FXSYS_fabs(dCTM.a);
464 matrix.d *= FXSYS_fabs(dCTM.d); 438 matrix.d *= FXSYS_fabs(dCTM.d);
465 } 439 }
466 void CPDF_RenderStatus::DrawObjWithBackground(const CPDF_PageObject* pObj, const CFX_AffineMatrix* pObj2Device) 440 void CPDF_RenderStatus::DrawObjWithBackground(const CPDF_PageObject* pObj, const CFX_AffineMatrix* pObj2Device)
467 { 441 {
468 #if !defined(_FPDFAPI_MINI_) || defined(_FXCORE_FEATURE_ALL_)
469 FX_RECT rect; 442 FX_RECT rect;
470 if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) { 443 if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) {
471 return; 444 return;
472 } 445 }
473 int res = 300; 446 int res = 300;
474 if (pObj->m_Type == PDFPAGE_IMAGE && m_pDevice->GetDeviceCaps(FXDC_DEVICE_CL ASS) == FXDC_PRINTER) { 447 if (pObj->m_Type == PDFPAGE_IMAGE && m_pDevice->GetDeviceCaps(FXDC_DEVICE_CL ASS) == FXDC_PRINTER) {
475 res = 0; 448 res = 0;
476 } 449 }
477 CPDF_ScaledRenderBuffer buffer; 450 CPDF_ScaledRenderBuffer buffer;
478 if (!buffer.Initialize(m_pContext, m_pDevice, &rect, pObj, &m_Options, res)) { 451 if (!buffer.Initialize(m_pContext, m_pDevice, &rect, pObj, &m_Options, res)) {
479 return; 452 return;
480 } 453 }
481 CFX_AffineMatrix matrix = *pObj2Device; 454 CFX_AffineMatrix matrix = *pObj2Device;
482 matrix.Concat(*buffer.GetMatrix()); 455 matrix.Concat(*buffer.GetMatrix());
483 GetScaledMatrix(matrix); 456 GetScaledMatrix(matrix);
484 CPDF_Dictionary* pFormResource = NULL; 457 CPDF_Dictionary* pFormResource = NULL;
485 if (pObj->m_Type == PDFPAGE_FORM) { 458 if (pObj->m_Type == PDFPAGE_FORM) {
486 CPDF_FormObject* pFormObj = (CPDF_FormObject*)pObj; 459 CPDF_FormObject* pFormObj = (CPDF_FormObject*)pObj;
487 if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) { 460 if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) {
488 pFormResource = pFormObj->m_pForm->m_pFormDict->GetDict(FX_BSTRC("Re sources")); 461 pFormResource = pFormObj->m_pForm->m_pFormDict->GetDict(FX_BSTRC("Re sources"));
489 } 462 }
490 } 463 }
491 CPDF_RenderStatus status; 464 CPDF_RenderStatus status;
492 status.Initialize(m_Level + 1, m_pContext, buffer.GetDevice(), buffer.GetMat rix(), NULL, NULL, NULL, &m_Options, m_Transparency, m_bDropObjects, pFormResour ce); 465 status.Initialize(m_Level + 1, m_pContext, buffer.GetDevice(), buffer.GetMat rix(), NULL, NULL, NULL, &m_Options, m_Transparency, m_bDropObjects, pFormResour ce);
493 status.RenderSingleObject(pObj, &matrix); 466 status.RenderSingleObject(pObj, &matrix);
494 buffer.OutputToDevice(); 467 buffer.OutputToDevice();
495 #endif
496 } 468 }
497 FX_BOOL CPDF_RenderStatus::ProcessForm(CPDF_FormObject* pFormObj, const CFX_Affi neMatrix* pObj2Device) 469 FX_BOOL CPDF_RenderStatus::ProcessForm(CPDF_FormObject* pFormObj, const CFX_Affi neMatrix* pObj2Device)
498 { 470 {
499 CPDF_Dictionary* pOC = pFormObj->m_pForm->m_pFormDict->GetDict(FX_BSTRC("OC" )); 471 CPDF_Dictionary* pOC = pFormObj->m_pForm->m_pFormDict->GetDict(FX_BSTRC("OC" ));
500 if (pOC && m_Options.m_pOCContext && !m_Options.m_pOCContext->CheckOCGVisibl e(pOC)) { 472 if (pOC && m_Options.m_pOCContext && !m_Options.m_pOCContext->CheckOCGVisibl e(pOC)) {
501 return TRUE; 473 return TRUE;
502 } 474 }
503 CFX_AffineMatrix matrix = pFormObj->m_FormMatrix; 475 CFX_AffineMatrix matrix = pFormObj->m_FormMatrix;
504 matrix.Concat(*pObj2Device); 476 matrix.Concat(*pObj2Device);
505 CPDF_Dictionary* pResources = NULL; 477 CPDF_Dictionary* pResources = NULL;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 } 524 }
553 if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) { 525 if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) {
554 FillType |= FXFILL_FULLCOVER; 526 FillType |= FXFILL_FULLCOVER;
555 } 527 }
556 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { 528 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) {
557 FillType |= FXFILL_NOPATHSMOOTH; 529 FillType |= FXFILL_NOPATHSMOOTH;
558 } 530 }
559 if (bStroke) { 531 if (bStroke) {
560 FillType |= FX_FILL_STROKE; 532 FillType |= FX_FILL_STROKE;
561 } 533 }
562 #if !defined(_FPDFAPI_MINI_) || defined(_FXCORE_FEATURE_ALL_)
563 const CPDF_GeneralStateData* pGeneralData = ((CPDF_PageObject*)pPathObj)->m_ GeneralState; 534 const CPDF_GeneralStateData* pGeneralData = ((CPDF_PageObject*)pPathObj)->m_ GeneralState;
564 if (pGeneralData && pGeneralData->m_StrokeAdjust) { 535 if (pGeneralData && pGeneralData->m_StrokeAdjust) {
565 FillType |= FX_STROKE_ADJUST; 536 FillType |= FX_STROKE_ADJUST;
566 } 537 }
567 #endif
568 if (m_pType3Char) { 538 if (m_pType3Char) {
569 FillType |= FX_FILL_TEXT_MODE; 539 FillType |= FX_FILL_TEXT_MODE;
570 } 540 }
571 CFX_GraphStateData graphState(*pPathObj->m_GraphState); 541 CFX_GraphStateData graphState(*pPathObj->m_GraphState);
572 if (m_Options.m_Flags & RENDER_THINLINE) { 542 if (m_Options.m_Flags & RENDER_THINLINE) {
573 graphState.m_LineWidth = 0; 543 graphState.m_LineWidth = 0;
574 } 544 }
575 return m_pDevice->DrawPath(pPathObj->m_Path, &path_matrix, &graphState, fill _argb, stroke_argb, FillType, 0, NULL, m_curBlend); 545 return m_pDevice->DrawPath(pPathObj->m_Path, &path_matrix, &graphState, fill _argb, stroke_argb, FillType, 0, NULL, m_curBlend);
576 } 546 }
577 CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const 547 CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const
(...skipping 14 matching lines...) Expand all
592 pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*)m_Initial States.m_ColorState; 562 pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*)m_Initial States.m_ColorState;
593 } 563 }
594 FX_COLORREF rgb = pColorData->m_FillRGB; 564 FX_COLORREF rgb = pColorData->m_FillRGB;
595 if (rgb == (FX_DWORD) - 1) { 565 if (rgb == (FX_DWORD) - 1) {
596 return 0; 566 return 0;
597 } 567 }
598 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; 568 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState;
599 int alpha; 569 int alpha;
600 if (pGeneralData) { 570 if (pGeneralData) {
601 alpha = (FX_INT32)(pGeneralData->m_FillAlpha * 255); 571 alpha = (FX_INT32)(pGeneralData->m_FillAlpha * 255);
602 #ifndef _FPDFAPI_MINI_
603 if (pGeneralData->m_pTR) { 572 if (pGeneralData->m_pTR) {
604 if (!pGeneralData->m_pTransferFunc) { 573 if (!pGeneralData->m_pTransferFunc) {
605 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = GetTra nsferFunc(pGeneralData->m_pTR); 574 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = GetTra nsferFunc(pGeneralData->m_pTR);
606 } 575 }
607 if (pGeneralData->m_pTransferFunc) { 576 if (pGeneralData->m_pTransferFunc) {
608 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); 577 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb);
609 } 578 }
610 } 579 }
611 #endif
612 } else { 580 } else {
613 alpha = 255; 581 alpha = 255;
614 } 582 }
615 return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); 583 return m_Options.TranslateColor(ArgbEncode(alpha, rgb));
616 } 584 }
617 FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const 585 FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const
618 { 586 {
619 CPDF_ColorStateData* pColorData = (CPDF_ColorStateData*)(const CPDF_ColorSta teData*)pObj->m_ColorState; 587 CPDF_ColorStateData* pColorData = (CPDF_ColorStateData*)(const CPDF_ColorSta teData*)pObj->m_ColorState;
620 if (m_pType3Char && (!m_pType3Char->m_bColored || (m_pType3Char->m_bColored && (!pColorData || pColorData->m_StrokeColor.IsNull())))) { 588 if (m_pType3Char && (!m_pType3Char->m_bColored || (m_pType3Char->m_bColored && (!pColorData || pColorData->m_StrokeColor.IsNull())))) {
621 return m_T3FillColor; 589 return m_T3FillColor;
622 } else if (!pColorData || pColorData->m_StrokeColor.IsNull()) { 590 } else if (!pColorData || pColorData->m_StrokeColor.IsNull()) {
623 pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*)m_Initial States.m_ColorState; 591 pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*)m_Initial States.m_ColorState;
624 } 592 }
625 FX_COLORREF rgb = pColorData->m_StrokeRGB; 593 FX_COLORREF rgb = pColorData->m_StrokeRGB;
626 if (rgb == (FX_DWORD) - 1) { 594 if (rgb == (FX_DWORD) - 1) {
627 return 0; 595 return 0;
628 } 596 }
629 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; 597 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState;
630 int alpha; 598 int alpha;
631 if (pGeneralData) { 599 if (pGeneralData) {
632 alpha = (FX_INT32)(pGeneralData->m_StrokeAlpha * 255); 600 alpha = (FX_INT32)(pGeneralData->m_StrokeAlpha * 255);
633 #ifndef _FPDFAPI_MINI_
634 if (pGeneralData->m_pTR) { 601 if (pGeneralData->m_pTR) {
635 if (!pGeneralData->m_pTransferFunc) { 602 if (!pGeneralData->m_pTransferFunc) {
636 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = GetTra nsferFunc(pGeneralData->m_pTR); 603 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = GetTra nsferFunc(pGeneralData->m_pTR);
637 } 604 }
638 if (pGeneralData->m_pTransferFunc) { 605 if (pGeneralData->m_pTransferFunc) {
639 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); 606 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb);
640 } 607 }
641 } 608 }
642 #endif
643 } else { 609 } else {
644 alpha = 255; 610 alpha = 255;
645 } 611 }
646 return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); 612 return m_Options.TranslateColor(ArgbEncode(alpha, rgb));
647 } 613 }
648 void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Affine Matrix* pObj2Device) 614 void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Affine Matrix* pObj2Device)
649 { 615 {
650 if (ClipPath.IsNull()) { 616 if (ClipPath.IsNull()) {
651 if (m_LastClipPath.IsNull()) { 617 if (m_LastClipPath.IsNull()) {
652 return; 618 return;
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 for (int j = 0; j < count; j ++) { 997 for (int j = 0; j < count; j ++) {
1032 pDevice->SaveState(); 998 pDevice->SaveState();
1033 _PDF_RenderItem* pItem = m_ContentList.GetDataPtr(j); 999 _PDF_RenderItem* pItem = m_ContentList.GetDataPtr(j);
1034 if (pLastMatrix) { 1000 if (pLastMatrix) {
1035 CFX_AffineMatrix FinalMatrix = pItem->m_Matrix; 1001 CFX_AffineMatrix FinalMatrix = pItem->m_Matrix;
1036 FinalMatrix.Concat(*pLastMatrix); 1002 FinalMatrix.Concat(*pLastMatrix);
1037 CPDF_RenderStatus status; 1003 CPDF_RenderStatus status;
1038 status.Initialize(0, this, pDevice, pLastMatrix, pStopObj, NULL, NUL L, pOptions, 1004 status.Initialize(0, this, pDevice, pLastMatrix, pStopObj, NULL, NUL L, pOptions,
1039 pItem->m_pObjectList->m_Transparency, FALSE, NULL) ; 1005 pItem->m_pObjectList->m_Transparency, FALSE, NULL) ;
1040 status.RenderObjectList(pItem->m_pObjectList, &FinalMatrix); 1006 status.RenderObjectList(pItem->m_pObjectList, &FinalMatrix);
1041 #if !defined(_FPDFAPI_MINI_)
1042 if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { 1007 if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) {
1043 m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheS ize); 1008 m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheS ize);
1044 } 1009 }
1045 #endif
1046 if (status.m_bStopped) { 1010 if (status.m_bStopped) {
1047 pDevice->RestoreState(); 1011 pDevice->RestoreState();
1048 break; 1012 break;
1049 } 1013 }
1050 } else { 1014 } else {
1051 CPDF_RenderStatus status; 1015 CPDF_RenderStatus status;
1052 status.Initialize(0, this, pDevice, NULL, pStopObj, NULL, NULL, pOpt ions, 1016 status.Initialize(0, this, pDevice, NULL, pStopObj, NULL, NULL, pOpt ions,
1053 pItem->m_pObjectList->m_Transparency, FALSE, NULL) ; 1017 pItem->m_pObjectList->m_Transparency, FALSE, NULL) ;
1054 status.RenderObjectList(pItem->m_pObjectList, &pItem->m_Matrix); 1018 status.RenderObjectList(pItem->m_pObjectList, &pItem->m_Matrix);
1055 #if !defined(_FPDFAPI_MINI_)
1056 if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { 1019 if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) {
1057 m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheS ize); 1020 m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheS ize);
1058 } 1021 }
1059 #endif
1060 if (status.m_bStopped) { 1022 if (status.m_bStopped) {
1061 pDevice->RestoreState(); 1023 pDevice->RestoreState();
1062 break; 1024 break;
1063 } 1025 }
1064 } 1026 }
1065 pDevice->RestoreState(); 1027 pDevice->RestoreState();
1066 } 1028 }
1067 } 1029 }
1068 void CPDF_RenderContext::DrawObjectList(CFX_RenderDevice* pDevice, CPDF_PageObje cts* pObjs, 1030 void CPDF_RenderContext::DrawObjectList(CFX_RenderDevice* pDevice, CPDF_PageObje cts* pObjs,
1069 const CFX_AffineMatrix* pObject2Device, const CPDF_RenderOptions* pOptions) 1031 const CFX_AffineMatrix* pObject2Device, const CPDF_RenderOptions* pOptions)
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 m_Status = Failed; 1068 m_Status = Failed;
1107 return; 1069 return;
1108 } 1070 }
1109 m_Status = ToBeContinued; 1071 m_Status = ToBeContinued;
1110 m_ObjectPos = NULL; 1072 m_ObjectPos = NULL;
1111 m_LayerIndex = 0; 1073 m_LayerIndex = 0;
1112 m_ObjectIndex = 0; 1074 m_ObjectIndex = 0;
1113 m_PrevLastPos = NULL; 1075 m_PrevLastPos = NULL;
1114 Continue(pPause); 1076 Continue(pPause);
1115 } 1077 }
1116 #ifdef _FPDFAPI_MINI_
1117 #define RENDER_STEP_LIMIT 20
1118 #else
1119 #define RENDER_STEP_LIMIT 100 1078 #define RENDER_STEP_LIMIT 100
1120 #endif
1121 void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) 1079 void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause)
1122 { 1080 {
1123 if (m_Status != ToBeContinued) { 1081 if (m_Status != ToBeContinued) {
1124 return; 1082 return;
1125 } 1083 }
1126 FX_DWORD nLayers = m_pContext->m_ContentList.GetSize(); 1084 FX_DWORD nLayers = m_pContext->m_ContentList.GetSize();
1127 for (; m_LayerIndex < nLayers; m_LayerIndex ++) { 1085 for (; m_LayerIndex < nLayers; m_LayerIndex ++) {
1128 _PDF_RenderItem* pItem = m_pContext->m_ContentList.GetDataPtr(m_LayerInd ex); 1086 _PDF_RenderItem* pItem = m_pContext->m_ContentList.GetDataPtr(m_LayerInd ex);
1129 FX_POSITION LastPos = pItem->m_pObjectList->GetLastObjectPosition(); 1087 FX_POSITION LastPos = pItem->m_pObjectList->GetLastObjectPosition();
1130 if (m_ObjectPos == NULL) { 1088 if (m_ObjectPos == NULL) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1168 device2object.TransformRect(m_ClipRect); 1126 device2object.TransformRect(m_ClipRect);
1169 } 1127 }
1170 int objs_to_go = CPDF_ModuleMgr::Get()->GetRenderModule()->GetConfig()-> m_RenderStepLimit; 1128 int objs_to_go = CPDF_ModuleMgr::Get()->GetRenderModule()->GetConfig()-> m_RenderStepLimit;
1171 while (m_ObjectPos) { 1129 while (m_ObjectPos) {
1172 CPDF_PageObject* pCurObj = pItem->m_pObjectList->GetObjectAt(m_Objec tPos); 1130 CPDF_PageObject* pCurObj = pItem->m_pObjectList->GetObjectAt(m_Objec tPos);
1173 if (pCurObj && pCurObj->m_Left <= m_ClipRect.right && pCurObj->m_Rig ht >= m_ClipRect.left && 1131 if (pCurObj && pCurObj->m_Left <= m_ClipRect.right && pCurObj->m_Rig ht >= m_ClipRect.left &&
1174 pCurObj->m_Bottom <= m_ClipRect.top && pCurObj->m_Top >= m_C lipRect.bottom) { 1132 pCurObj->m_Bottom <= m_ClipRect.top && pCurObj->m_Top >= m_C lipRect.bottom) {
1175 if (m_pRenderer->ContinueSingleObject(pCurObj, &pItem->m_Matrix, pPause)) { 1133 if (m_pRenderer->ContinueSingleObject(pCurObj, &pItem->m_Matrix, pPause)) {
1176 return; 1134 return;
1177 } 1135 }
1178 #if !defined(_FPDFAPI_MINI_)
1179 if (pCurObj->m_Type == PDFPAGE_IMAGE && m_pRenderer->m_Options.m _Flags & RENDER_LIMITEDIMAGECACHE) { 1136 if (pCurObj->m_Type == PDFPAGE_IMAGE && m_pRenderer->m_Options.m _Flags & RENDER_LIMITEDIMAGECACHE) {
1180 m_pContext->GetPageCache()->CacheOptimization(m_pRenderer->m _Options.m_dwLimitCacheSize); 1137 m_pContext->GetPageCache()->CacheOptimization(m_pRenderer->m _Options.m_dwLimitCacheSize);
1181 } 1138 }
1182 #endif
1183 if (pCurObj->m_Type == PDFPAGE_FORM || pCurObj->m_Type == PDFPAG E_SHADING) { 1139 if (pCurObj->m_Type == PDFPAGE_FORM || pCurObj->m_Type == PDFPAG E_SHADING) {
1184 objs_to_go = 0; 1140 objs_to_go = 0;
1185 } else { 1141 } else {
1186 objs_to_go --; 1142 objs_to_go --;
1187 } 1143 }
1188 } 1144 }
1189 m_ObjectIndex ++; 1145 m_ObjectIndex ++;
1190 pItem->m_pObjectList->GetNextObject(m_ObjectPos); 1146 pItem->m_pObjectList->GetNextObject(m_ObjectPos);
1191 if (objs_to_go == 0) { 1147 if (objs_to_go == 0) {
1192 if (pPause && pPause->NeedToPauseNow()) { 1148 if (pPause && pPause->NeedToPauseNow()) {
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1313 { 1269 {
1314 CPDF_CountedObject<CPDF_TransferFunc*>* pTransferCounter; 1270 CPDF_CountedObject<CPDF_TransferFunc*>* pTransferCounter;
1315 if (!m_TransferFuncMap.Lookup(pObj, pTransferCounter)) { 1271 if (!m_TransferFuncMap.Lookup(pObj, pTransferCounter)) {
1316 return; 1272 return;
1317 } 1273 }
1318 pTransferCounter->m_nCount--; 1274 pTransferCounter->m_nCount--;
1319 } 1275 }
1320 CPDF_RenderConfig::CPDF_RenderConfig() 1276 CPDF_RenderConfig::CPDF_RenderConfig()
1321 { 1277 {
1322 m_HalftoneLimit = 0; 1278 m_HalftoneLimit = 0;
1323 #ifdef _FPDFAPI_MINI_
1324 m_RenderStepLimit = 20;
1325 #else
1326 m_RenderStepLimit = 100; 1279 m_RenderStepLimit = 100;
1327 #endif
1328 } 1280 }
1329 CPDF_RenderConfig::~CPDF_RenderConfig() 1281 CPDF_RenderConfig::~CPDF_RenderConfig()
1330 { 1282 {
1331 } 1283 }
1332 CPDF_DeviceBuffer::CPDF_DeviceBuffer() 1284 CPDF_DeviceBuffer::CPDF_DeviceBuffer()
1333 { 1285 {
1334 m_pBitmap = NULL; 1286 m_pBitmap = NULL;
1335 m_pDevice = NULL; 1287 m_pDevice = NULL;
1336 m_pContext = NULL; 1288 m_pContext = NULL;
1337 m_pObject = NULL; 1289 m_pObject = NULL;
(...skipping 18 matching lines...) Expand all
1356 if (horz_size && vert_size && max_dpi) { 1308 if (horz_size && vert_size && max_dpi) {
1357 int dpih = pDevice->GetDeviceCaps(FXDC_PIXEL_WIDTH) * 254 / (horz_size * 10); 1309 int dpih = pDevice->GetDeviceCaps(FXDC_PIXEL_WIDTH) * 254 / (horz_size * 10);
1358 int dpiv = pDevice->GetDeviceCaps(FXDC_PIXEL_HEIGHT) * 254 / (vert_size * 10); 1310 int dpiv = pDevice->GetDeviceCaps(FXDC_PIXEL_HEIGHT) * 254 / (vert_size * 10);
1359 if (dpih > max_dpi) { 1311 if (dpih > max_dpi) {
1360 m_Matrix.Scale((FX_FLOAT)(max_dpi) / dpih, 1.0f); 1312 m_Matrix.Scale((FX_FLOAT)(max_dpi) / dpih, 1.0f);
1361 } 1313 }
1362 if (dpiv > max_dpi) { 1314 if (dpiv > max_dpi) {
1363 m_Matrix.Scale(1.0f, (FX_FLOAT)(max_dpi) / (FX_FLOAT)dpiv); 1315 m_Matrix.Scale(1.0f, (FX_FLOAT)(max_dpi) / (FX_FLOAT)dpiv);
1364 } 1316 }
1365 } 1317 }
1366 #ifdef _FPDFAPI_MINI_
1367 m_Matrix.Scale(0.5f, 0.5f);
1368 #endif
1369 #endif 1318 #endif
1370 CFX_Matrix ctm = m_pDevice->GetCTM(); 1319 CFX_Matrix ctm = m_pDevice->GetCTM();
1371 FX_FLOAT fScaleX = FXSYS_fabs(ctm.a); 1320 FX_FLOAT fScaleX = FXSYS_fabs(ctm.a);
1372 FX_FLOAT fScaleY = FXSYS_fabs(ctm.d); 1321 FX_FLOAT fScaleY = FXSYS_fabs(ctm.d);
1373 m_Matrix.Concat(fScaleX, 0, 0, fScaleY, 0, 0); 1322 m_Matrix.Concat(fScaleX, 0, 0, fScaleY, 0, 0);
1374 CFX_FloatRect rect(*pRect); 1323 CFX_FloatRect rect(*pRect);
1375 m_Matrix.TransformRect(rect); 1324 m_Matrix.TransformRect(rect);
1376 FX_RECT bitmap_rect = rect.GetOutterRect(); 1325 FX_RECT bitmap_rect = rect.GetOutterRect();
1377 m_pBitmap = FX_NEW CFX_DIBitmap; 1326 m_pBitmap = FX_NEW CFX_DIBitmap;
1378 m_pBitmap->Create(bitmap_rect.Width(), bitmap_rect.Height(), FXDIB_Argb); 1327 m_pBitmap->Create(bitmap_rect.Width(), bitmap_rect.Height(), FXDIB_Argb);
1379 return TRUE; 1328 return TRUE;
1380 } 1329 }
1381 void CPDF_DeviceBuffer::OutputToDevice() 1330 void CPDF_DeviceBuffer::OutputToDevice()
1382 { 1331 {
1383 if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) { 1332 if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) {
1384 if (m_Matrix.a == 1.0f && m_Matrix.d == 1.0f) { 1333 if (m_Matrix.a == 1.0f && m_Matrix.d == 1.0f) {
1385 m_pDevice->SetDIBits(m_pBitmap, m_Rect.left, m_Rect.top); 1334 m_pDevice->SetDIBits(m_pBitmap, m_Rect.left, m_Rect.top);
1386 } else { 1335 } else {
1387 m_pDevice->StretchDIBits(m_pBitmap, m_Rect.left, m_Rect.top, m_Rect. Width(), m_Rect.Height()); 1336 m_pDevice->StretchDIBits(m_pBitmap, m_Rect.left, m_Rect.top, m_Rect. Width(), m_Rect.Height());
1388 } 1337 }
1389 } else { 1338 } else {
1390 #if !defined(_FPDFAPI_MINI_) || defined(_FXCORE_FEATURE_ALL_)
1391 CFX_DIBitmap buffer; 1339 CFX_DIBitmap buffer;
1392 m_pDevice->CreateCompatibleBitmap(&buffer, m_pBitmap->GetWidth(), m_pBit map->GetHeight()); 1340 m_pDevice->CreateCompatibleBitmap(&buffer, m_pBitmap->GetWidth(), m_pBit map->GetHeight());
1393 m_pContext->GetBackground(&buffer, m_pObject, NULL, &m_Matrix); 1341 m_pContext->GetBackground(&buffer, m_pObject, NULL, &m_Matrix);
1394 buffer.CompositeBitmap(0, 0, buffer.GetWidth(), buffer.GetHeight(), m_pB itmap, 0, 0); 1342 buffer.CompositeBitmap(0, 0, buffer.GetWidth(), buffer.GetHeight(), m_pB itmap, 0, 0);
1395 m_pDevice->StretchDIBits(&buffer, m_Rect.left, m_Rect.top, m_Rect.Width( ), m_Rect.Height()); 1343 m_pDevice->StretchDIBits(&buffer, m_Rect.left, m_Rect.top, m_Rect.Width( ), m_Rect.Height());
1396 #endif
1397 } 1344 }
1398 } 1345 }
1399 CPDF_ScaledRenderBuffer::CPDF_ScaledRenderBuffer() 1346 CPDF_ScaledRenderBuffer::CPDF_ScaledRenderBuffer()
1400 { 1347 {
1401 m_pBitmapDevice = NULL; 1348 m_pBitmapDevice = NULL;
1402 } 1349 }
1403 CPDF_ScaledRenderBuffer::~CPDF_ScaledRenderBuffer() 1350 CPDF_ScaledRenderBuffer::~CPDF_ScaledRenderBuffer()
1404 { 1351 {
1405 if (m_pBitmapDevice) { 1352 if (m_pBitmapDevice) {
1406 delete m_pBitmapDevice; 1353 delete m_pBitmapDevice;
1407 } 1354 }
1408 } 1355 }
1409 #ifndef _FPDFAPI_MINI_
1410 #define _FPDFAPI_IMAGESIZE_LIMIT_ (30 * 1024 * 1024) 1356 #define _FPDFAPI_IMAGESIZE_LIMIT_ (30 * 1024 * 1024)
1411 #else
1412 #define _FPDFAPI_IMAGESIZE_LIMIT_ (10 * 1024 * 1024)
1413 #endif
1414 FX_BOOL CPDF_ScaledRenderBuffer::Initialize(CPDF_RenderContext* pContext, CFX_Re nderDevice* pDevice, FX_RECT* pRect, 1357 FX_BOOL CPDF_ScaledRenderBuffer::Initialize(CPDF_RenderContext* pContext, CFX_Re nderDevice* pDevice, FX_RECT* pRect,
1415 const CPDF_PageObject* pObj, const CPDF_RenderOptions *pOptions, int max _dpi) 1358 const CPDF_PageObject* pObj, const CPDF_RenderOptions *pOptions, int max _dpi)
1416 { 1359 {
1417 FXSYS_assert(pRect != NULL); 1360 FXSYS_assert(pRect != NULL);
1418 m_pDevice = pDevice; 1361 m_pDevice = pDevice;
1419 if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) { 1362 if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) {
1420 return TRUE; 1363 return TRUE;
1421 } 1364 }
1422 m_pContext = pContext; 1365 m_pContext = pContext;
1423 m_Rect = *pRect; 1366 m_Rect = *pRect;
(...skipping 29 matching lines...) Expand all
1453 iPitch = (iWidth * bpp + 31) / 32 * 4; 1396 iPitch = (iWidth * bpp + 31) / 32 * 4;
1454 if (iWidth * iHeight < 1) { 1397 if (iWidth * iHeight < 1) {
1455 return FALSE; 1398 return FALSE;
1456 } 1399 }
1457 if (iPitch * iHeight <= _FPDFAPI_IMAGESIZE_LIMIT_ && 1400 if (iPitch * iHeight <= _FPDFAPI_IMAGESIZE_LIMIT_ &&
1458 m_pBitmapDevice->Create(iWidth, iHeight, dibFormat)) { 1401 m_pBitmapDevice->Create(iWidth, iHeight, dibFormat)) {
1459 break; 1402 break;
1460 } 1403 }
1461 m_Matrix.Scale(0.5f, 0.5f); 1404 m_Matrix.Scale(0.5f, 0.5f);
1462 } 1405 }
1463 #if !defined(_FPDFAPI_MINI_) || defined(_FXCORE_FEATURE_ALL_)
1464 m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions, &m_Matrix); 1406 m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions, &m_Matrix);
1465 #endif
1466 return TRUE; 1407 return TRUE;
1467 } 1408 }
1468 void CPDF_ScaledRenderBuffer::OutputToDevice() 1409 void CPDF_ScaledRenderBuffer::OutputToDevice()
1469 { 1410 {
1470 if (m_pBitmapDevice) { 1411 if (m_pBitmapDevice) {
1471 m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, m_Re ct.top, m_Rect.Width(), m_Rect.Height()); 1412 m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, m_Re ct.top, m_Rect.Width(), m_Rect.Height());
1472 } 1413 }
1473 } 1414 }
1474 FX_BOOL IPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj) 1415 FX_BOOL IPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj)
1475 { 1416 {
1476 const CPDF_ContentMarkData* pData = pObj->m_ContentMark; 1417 const CPDF_ContentMarkData* pData = pObj->m_ContentMark;
1477 int nItems = pData->CountItems(); 1418 int nItems = pData->CountItems();
1478 for (int i = 0; i < nItems; i ++) { 1419 for (int i = 0; i < nItems; i ++) {
1479 CPDF_ContentMarkItem& item = pData->GetItem(i); 1420 CPDF_ContentMarkItem& item = pData->GetItem(i);
1480 if (item.GetName() == FX_BSTRC("OC") && item.GetParamType() == CPDF_Cont entMarkItem::PropertiesDict) { 1421 if (item.GetName() == FX_BSTRC("OC") && item.GetParamType() == CPDF_Cont entMarkItem::PropertiesDict) {
1481 CPDF_Dictionary* pOCG = (CPDF_Dictionary*)item.GetParam(); 1422 CPDF_Dictionary* pOCG = (CPDF_Dictionary*)item.GetParam();
1482 if (!CheckOCGVisible(pOCG)) { 1423 if (!CheckOCGVisible(pOCG)) {
1483 return FALSE; 1424 return FALSE;
1484 } 1425 }
1485 } 1426 }
1486 } 1427 }
1487 return TRUE; 1428 return TRUE;
1488 } 1429 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698