| 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 "../../../include/fxge/fx_ge.h" | 7 #include "../../../include/fxge/fx_ge.h" |
| 8 #include "../../../include/fxcodec/fx_codec.h" | 8 #include "../../../include/fxcodec/fx_codec.h" |
| 9 #include "../../../include/fpdfapi/fpdf_module.h" | 9 #include "../../../include/fpdfapi/fpdf_module.h" |
| 10 #include "../../../include/fpdfapi/fpdf_render.h" | 10 #include "../../../include/fpdfapi/fpdf_render.h" |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 new_matrix.TranslateI(-rect.left, -rect.top); | 482 new_matrix.TranslateI(-rect.left, -rect.top); |
| 483 int width = rect.Width(); | 483 int width = rect.Width(); |
| 484 int height = rect.Height(); | 484 int height = rect.Height(); |
| 485 CFX_FxgeDevice bitmap_device1; | 485 CFX_FxgeDevice bitmap_device1; |
| 486 if (!bitmap_device1.Create(rect.Width(), rect.Height(), FXDIB_Rgb32)) { | 486 if (!bitmap_device1.Create(rect.Width(), rect.Height(), FXDIB_Rgb32)) { |
| 487 return TRUE; | 487 return TRUE; |
| 488 } | 488 } |
| 489 bitmap_device1.GetBitmap()->Clear(0xffffff); | 489 bitmap_device1.GetBitmap()->Clear(0xffffff); |
| 490 { | 490 { |
| 491 CPDF_RenderStatus bitmap_render; | 491 CPDF_RenderStatus bitmap_render; |
| 492 bitmap_render.Initialize(m_pRenderStatus->m_Level + 1, m_pRenderStatus->
m_pContext, &bitmap_device1, NULL, NULL, | 492 bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1, N
ULL, NULL, |
| 493 NULL, NULL, &m_pRenderStatus->m_Options, 0, m_p
RenderStatus->m_bDropObjects, NULL, TRUE); | 493 NULL, NULL, &m_pRenderStatus->m_Options, 0, m_p
RenderStatus->m_bDropObjects, NULL, TRUE); |
| 494 CFX_Matrix patternDevice = *pObj2Device; | 494 CFX_Matrix patternDevice = *pObj2Device; |
| 495 patternDevice.Translate((FX_FLOAT) - rect.left, (FX_FLOAT) - rect.top); | 495 patternDevice.Translate((FX_FLOAT) - rect.left, (FX_FLOAT) - rect.top); |
| 496 if(m_pPattern->m_PatternType == PATTERN_TILING) { | 496 if(m_pPattern->m_PatternType == PATTERN_TILING) { |
| 497 bitmap_render.DrawTilingPattern((CPDF_TilingPattern*)m_pPattern, m_p
ImageObject, &patternDevice, FALSE); | 497 bitmap_render.DrawTilingPattern((CPDF_TilingPattern*)m_pPattern, m_p
ImageObject, &patternDevice, FALSE); |
| 498 } else { | 498 } else { |
| 499 bitmap_render.DrawShadingPattern((CPDF_ShadingPattern*)m_pPattern, m
_pImageObject, &patternDevice, FALSE); | 499 bitmap_render.DrawShadingPattern((CPDF_ShadingPattern*)m_pPattern, m
_pImageObject, &patternDevice, FALSE); |
| 500 } | 500 } |
| 501 } | 501 } |
| 502 { | 502 { |
| 503 CFX_FxgeDevice bitmap_device2; | 503 CFX_FxgeDevice bitmap_device2; |
| 504 if (!bitmap_device2.Create(rect.Width(), rect.Height(), FXDIB_8bppRgb))
{ | 504 if (!bitmap_device2.Create(rect.Width(), rect.Height(), FXDIB_8bppRgb))
{ |
| 505 return TRUE; | 505 return TRUE; |
| 506 } | 506 } |
| 507 bitmap_device2.GetBitmap()->Clear(0); | 507 bitmap_device2.GetBitmap()->Clear(0); |
| 508 CPDF_RenderStatus bitmap_render; | 508 CPDF_RenderStatus bitmap_render; |
| 509 bitmap_render.Initialize(m_pRenderStatus->m_Level + 1, m_pRenderStatus->
m_pContext, &bitmap_device2, NULL, NULL, | 509 bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, N
ULL, NULL, |
| 510 NULL, NULL, NULL, 0, m_pRenderStatus->m_bDropOb
jects, NULL, TRUE); | 510 NULL, NULL, NULL, 0, m_pRenderStatus->m_bDropOb
jects, NULL, TRUE); |
| 511 CPDF_ImageRenderer image_render; | 511 CPDF_ImageRenderer image_render; |
| 512 if (image_render.Start(&bitmap_render, m_pDIBSource, 0xffffffff, 255, &n
ew_matrix, m_Flags, TRUE)) { | 512 if (image_render.Start(&bitmap_render, m_pDIBSource, 0xffffffff, 255, &n
ew_matrix, m_Flags, TRUE)) { |
| 513 image_render.Continue(NULL); | 513 image_render.Continue(NULL); |
| 514 } | 514 } |
| 515 if (m_Loader.m_MatteColor != 0xffffffff) { | 515 if (m_Loader.m_MatteColor != 0xffffffff) { |
| 516 int matte_r = FXARGB_R(m_Loader.m_MatteColor); | 516 int matte_r = FXARGB_R(m_Loader.m_MatteColor); |
| 517 int matte_g = FXARGB_G(m_Loader.m_MatteColor); | 517 int matte_g = FXARGB_G(m_Loader.m_MatteColor); |
| 518 int matte_b = FXARGB_B(m_Loader.m_MatteColor); | 518 int matte_b = FXARGB_B(m_Loader.m_MatteColor); |
| 519 for (int row = 0; row < height; row ++) { | 519 for (int row = 0; row < height; row ++) { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 572 new_matrix.TranslateI(-rect.left, -rect.top); | 572 new_matrix.TranslateI(-rect.left, -rect.top); |
| 573 int width = rect.Width(); | 573 int width = rect.Width(); |
| 574 int height = rect.Height(); | 574 int height = rect.Height(); |
| 575 CFX_FxgeDevice bitmap_device1; | 575 CFX_FxgeDevice bitmap_device1; |
| 576 if (!bitmap_device1.Create(width, height, FXDIB_Rgb32)) { | 576 if (!bitmap_device1.Create(width, height, FXDIB_Rgb32)) { |
| 577 return TRUE; | 577 return TRUE; |
| 578 } | 578 } |
| 579 bitmap_device1.GetBitmap()->Clear(0xffffff); | 579 bitmap_device1.GetBitmap()->Clear(0xffffff); |
| 580 { | 580 { |
| 581 CPDF_RenderStatus bitmap_render; | 581 CPDF_RenderStatus bitmap_render; |
| 582 bitmap_render.Initialize(m_pRenderStatus->m_Level + 1, m_pRenderStatus->
m_pContext, &bitmap_device1, NULL, NULL, | 582 bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1, N
ULL, NULL, |
| 583 NULL, NULL, NULL, 0, m_pRenderStatus->m_bDropOb
jects, NULL, TRUE); | 583 NULL, NULL, NULL, 0, m_pRenderStatus->m_bDropOb
jects, NULL, TRUE); |
| 584 CPDF_ImageRenderer image_render; | 584 CPDF_ImageRenderer image_render; |
| 585 if (image_render.Start(&bitmap_render, m_pDIBSource, 0, 255, &new_matrix
, m_Flags, TRUE)) { | 585 if (image_render.Start(&bitmap_render, m_pDIBSource, 0, 255, &new_matrix
, m_Flags, TRUE)) { |
| 586 image_render.Continue(NULL); | 586 image_render.Continue(NULL); |
| 587 } | 587 } |
| 588 } | 588 } |
| 589 { | 589 { |
| 590 CFX_FxgeDevice bitmap_device2; | 590 CFX_FxgeDevice bitmap_device2; |
| 591 if (!bitmap_device2.Create(width, height, FXDIB_8bppRgb)) { | 591 if (!bitmap_device2.Create(width, height, FXDIB_8bppRgb)) { |
| 592 return TRUE; | 592 return TRUE; |
| 593 } | 593 } |
| 594 bitmap_device2.GetBitmap()->Clear(0); | 594 bitmap_device2.GetBitmap()->Clear(0); |
| 595 CPDF_RenderStatus bitmap_render; | 595 CPDF_RenderStatus bitmap_render; |
| 596 bitmap_render.Initialize(m_pRenderStatus->m_Level + 1, m_pRenderStatus->
m_pContext, &bitmap_device2, NULL, NULL, | 596 bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, N
ULL, NULL, |
| 597 NULL, NULL, NULL, 0, m_pRenderStatus->m_bDropOb
jects, NULL, TRUE); | 597 NULL, NULL, NULL, 0, m_pRenderStatus->m_bDropOb
jects, NULL, TRUE); |
| 598 CPDF_ImageRenderer image_render; | 598 CPDF_ImageRenderer image_render; |
| 599 if (image_render.Start(&bitmap_render, m_Loader.m_pMask, 0xffffffff, 255
, &new_matrix, m_Flags, TRUE)) { | 599 if (image_render.Start(&bitmap_render, m_Loader.m_pMask, 0xffffffff, 255
, &new_matrix, m_Flags, TRUE)) { |
| 600 image_render.Continue(NULL); | 600 image_render.Continue(NULL); |
| 601 } | 601 } |
| 602 if (m_Loader.m_MatteColor != 0xffffffff) { | 602 if (m_Loader.m_MatteColor != 0xffffffff) { |
| 603 int matte_r = FXARGB_R(m_Loader.m_MatteColor); | 603 int matte_r = FXARGB_R(m_Loader.m_MatteColor); |
| 604 int matte_g = FXARGB_G(m_Loader.m_MatteColor); | 604 int matte_g = FXARGB_G(m_Loader.m_MatteColor); |
| 605 int matte_b = FXARGB_B(m_Loader.m_MatteColor); | 605 int matte_b = FXARGB_B(m_Loader.m_MatteColor); |
| 606 for (int row = 0; row < height; row ++) { | 606 for (int row = 0; row < height; row ++) { |
| (...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1027 } else { | 1027 } else { |
| 1028 bitmap.Clear(0); | 1028 bitmap.Clear(0); |
| 1029 } | 1029 } |
| 1030 CPDF_Dictionary* pFormResource = NULL; | 1030 CPDF_Dictionary* pFormResource = NULL; |
| 1031 if (form.m_pFormDict) { | 1031 if (form.m_pFormDict) { |
| 1032 pFormResource = form.m_pFormDict->GetDict(FX_BSTRC("Resources")); | 1032 pFormResource = form.m_pFormDict->GetDict(FX_BSTRC("Resources")); |
| 1033 } | 1033 } |
| 1034 CPDF_RenderOptions options; | 1034 CPDF_RenderOptions options; |
| 1035 options.m_ColorMode = bLuminosity ? RENDER_COLOR_NORMAL : RENDER_COLOR_ALPHA
; | 1035 options.m_ColorMode = bLuminosity ? RENDER_COLOR_NORMAL : RENDER_COLOR_ALPHA
; |
| 1036 CPDF_RenderStatus status; | 1036 CPDF_RenderStatus status; |
| 1037 status.Initialize(m_Level + 1, m_pContext, &bitmap_device, NULL, NULL, NULL,
NULL, | 1037 status.Initialize(m_pContext, &bitmap_device, NULL, NULL, NULL, NULL, |
| 1038 &options, 0, m_bDropObjects, pFormResource, TRUE, NULL, 0,
pCS ? pCS->GetFamily() : 0, bLuminosity); | 1038 &options, 0, m_bDropObjects, pFormResource, TRUE, NULL, 0,
pCS ? pCS->GetFamily() : 0, bLuminosity); |
| 1039 status.RenderObjectList(&form, &matrix); | 1039 status.RenderObjectList(&form, &matrix); |
| 1040 pMask = FX_NEW CFX_DIBitmap; | 1040 pMask = FX_NEW CFX_DIBitmap; |
| 1041 if (!pMask->Create(width, height, FXDIB_8bppMask)) { | 1041 if (!pMask->Create(width, height, FXDIB_8bppMask)) { |
| 1042 delete pMask; | 1042 delete pMask; |
| 1043 return NULL; | 1043 return NULL; |
| 1044 } | 1044 } |
| 1045 FX_LPBYTE dest_buf = pMask->GetBuffer(); | 1045 FX_LPBYTE dest_buf = pMask->GetBuffer(); |
| 1046 int dest_pitch = pMask->GetPitch(); | 1046 int dest_pitch = pMask->GetPitch(); |
| 1047 FX_LPBYTE src_buf = bitmap.GetBuffer(); | 1047 FX_LPBYTE src_buf = bitmap.GetBuffer(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1077 } | 1077 } |
| 1078 } else { | 1078 } else { |
| 1079 FXSYS_memcpy32(dest_buf, src_buf, dest_pitch * height); | 1079 FXSYS_memcpy32(dest_buf, src_buf, dest_pitch * height); |
| 1080 } | 1080 } |
| 1081 if (pFunc) { | 1081 if (pFunc) { |
| 1082 delete pFunc; | 1082 delete pFunc; |
| 1083 } | 1083 } |
| 1084 FX_Free(pTransfer); | 1084 FX_Free(pTransfer); |
| 1085 return pMask; | 1085 return pMask; |
| 1086 } | 1086 } |
| OLD | NEW |