| 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 "xfa/fxfa/include/xfa_ffwidget.h" | 7 #include "xfa/fxfa/include/xfa_ffwidget.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 GetRectWithoutRotate(rtBorder); | 116 GetRectWithoutRotate(rtBorder); |
| 117 CXFA_Margin margin = border.GetMargin(); | 117 CXFA_Margin margin = border.GetMargin(); |
| 118 if (margin) { | 118 if (margin) { |
| 119 XFA_RectWidthoutMargin(rtBorder, margin); | 119 XFA_RectWidthoutMargin(rtBorder, margin); |
| 120 } | 120 } |
| 121 rtBorder.Normalize(); | 121 rtBorder.Normalize(); |
| 122 DrawBorder(pGS, border, rtBorder, pMatrix); | 122 DrawBorder(pGS, border, rtBorder, pMatrix); |
| 123 } | 123 } |
| 124 } | 124 } |
| 125 FX_BOOL CXFA_FFWidget::IsLoaded() { | 125 FX_BOOL CXFA_FFWidget::IsLoaded() { |
| 126 return m_pPageView != NULL; | 126 return !!m_pPageView; |
| 127 } | 127 } |
| 128 FX_BOOL CXFA_FFWidget::LoadWidget() { | 128 FX_BOOL CXFA_FFWidget::LoadWidget() { |
| 129 PerformLayout(); | 129 PerformLayout(); |
| 130 return TRUE; | 130 return TRUE; |
| 131 } | 131 } |
| 132 void CXFA_FFWidget::UnloadWidget() {} | 132 void CXFA_FFWidget::UnloadWidget() {} |
| 133 FX_BOOL CXFA_FFWidget::PerformLayout() { | 133 FX_BOOL CXFA_FFWidget::PerformLayout() { |
| 134 ReCacheWidgetRect(); | 134 ReCacheWidgetRect(); |
| 135 return TRUE; | 135 return TRUE; |
| 136 } | 136 } |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 GetRectWithoutRotate(rtLayout); | 398 GetRectWithoutRotate(rtLayout); |
| 399 return rtLayout.width < 0.1f && rtLayout.height < 0.1f; | 399 return rtLayout.width < 0.1f && rtLayout.height < 0.1f; |
| 400 } | 400 } |
| 401 CXFA_FFWidget* CXFA_FFWidget::GetParent() { | 401 CXFA_FFWidget* CXFA_FFWidget::GetParent() { |
| 402 CXFA_Node* pParentNode = | 402 CXFA_Node* pParentNode = |
| 403 m_pDataAcc->GetNode()->GetNodeItem(XFA_NODEITEM_Parent); | 403 m_pDataAcc->GetNode()->GetNodeItem(XFA_NODEITEM_Parent); |
| 404 if (pParentNode) { | 404 if (pParentNode) { |
| 405 CXFA_WidgetAcc* pParentWidgetAcc = | 405 CXFA_WidgetAcc* pParentWidgetAcc = |
| 406 static_cast<CXFA_WidgetAcc*>(pParentNode->GetWidgetData()); | 406 static_cast<CXFA_WidgetAcc*>(pParentNode->GetWidgetData()); |
| 407 if (pParentWidgetAcc) { | 407 if (pParentWidgetAcc) { |
| 408 return pParentWidgetAcc->GetNextWidget(NULL); | 408 return pParentWidgetAcc->GetNextWidget(nullptr); |
| 409 } | 409 } |
| 410 } | 410 } |
| 411 return NULL; | 411 return nullptr; |
| 412 } | 412 } |
| 413 FX_BOOL CXFA_FFWidget::IsAncestorOf(CXFA_FFWidget* pWidget) { | 413 FX_BOOL CXFA_FFWidget::IsAncestorOf(CXFA_FFWidget* pWidget) { |
| 414 if (!pWidget) { | 414 if (!pWidget) { |
| 415 return FALSE; | 415 return FALSE; |
| 416 } | 416 } |
| 417 CXFA_Node* pNode = m_pDataAcc->GetNode(); | 417 CXFA_Node* pNode = m_pDataAcc->GetNode(); |
| 418 CXFA_Node* pChildNode = pWidget->GetDataAcc()->GetNode(); | 418 CXFA_Node* pChildNode = pWidget->GetDataAcc()->GetNode(); |
| 419 while (pChildNode) { | 419 while (pChildNode) { |
| 420 if (pChildNode == pNode) { | 420 if (pChildNode == pNode) { |
| 421 return TRUE; | 421 return TRUE; |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 577 FX_BOOL StartDIBSource(); | 577 FX_BOOL StartDIBSource(); |
| 578 void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, | 578 void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, |
| 579 int left, | 579 int left, |
| 580 int top, | 580 int top, |
| 581 FX_ARGB mask_argb, | 581 FX_ARGB mask_argb, |
| 582 int bitmap_alpha, | 582 int bitmap_alpha, |
| 583 int blend_mode, | 583 int blend_mode, |
| 584 int Transparency); | 584 int Transparency); |
| 585 }; | 585 }; |
| 586 CXFA_ImageRenderer::CXFA_ImageRenderer() { | 586 CXFA_ImageRenderer::CXFA_ImageRenderer() { |
| 587 m_pDevice = NULL; | 587 m_pDevice = nullptr; |
| 588 m_Status = 0; | 588 m_Status = 0; |
| 589 m_pDIBSource = NULL; | 589 m_pDIBSource = nullptr; |
| 590 m_pCloneConvert = NULL; | 590 m_pCloneConvert = nullptr; |
| 591 m_BitmapAlpha = 255; | 591 m_BitmapAlpha = 255; |
| 592 m_FillArgb = 0; | 592 m_FillArgb = 0; |
| 593 m_Flags = 0; | 593 m_Flags = 0; |
| 594 m_DeviceHandle = NULL; | 594 m_DeviceHandle = nullptr; |
| 595 m_BlendType = FXDIB_BLEND_NORMAL; | 595 m_BlendType = FXDIB_BLEND_NORMAL; |
| 596 m_Result = TRUE; | 596 m_Result = TRUE; |
| 597 m_bPrint = FALSE; | 597 m_bPrint = FALSE; |
| 598 } | 598 } |
| 599 | 599 |
| 600 CXFA_ImageRenderer::~CXFA_ImageRenderer() { | 600 CXFA_ImageRenderer::~CXFA_ImageRenderer() { |
| 601 delete m_pCloneConvert; | 601 delete m_pCloneConvert; |
| 602 if (m_DeviceHandle) | 602 if (m_DeviceHandle) |
| 603 m_pDevice->CancelDIBits(m_DeviceHandle); | 603 m_pDevice->CancelDIBits(m_DeviceHandle); |
| 604 } | 604 } |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 return FALSE; | 734 return FALSE; |
| 735 } | 735 } |
| 736 | 736 |
| 737 void CXFA_ImageRenderer::CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, | 737 void CXFA_ImageRenderer::CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, |
| 738 int left, | 738 int left, |
| 739 int top, | 739 int top, |
| 740 FX_ARGB mask_argb, | 740 FX_ARGB mask_argb, |
| 741 int bitmap_alpha, | 741 int bitmap_alpha, |
| 742 int blend_mode, | 742 int blend_mode, |
| 743 int Transparency) { | 743 int Transparency) { |
| 744 if (pDIBitmap == NULL) { | 744 if (!pDIBitmap) { |
| 745 return; | 745 return; |
| 746 } | 746 } |
| 747 bool bIsolated = !!(Transparency & PDFTRANS_ISOLATED); | 747 bool bIsolated = !!(Transparency & PDFTRANS_ISOLATED); |
| 748 bool bGroup = !!(Transparency & PDFTRANS_GROUP); | 748 bool bGroup = !!(Transparency & PDFTRANS_GROUP); |
| 749 if (blend_mode == FXDIB_BLEND_NORMAL) { | 749 if (blend_mode == FXDIB_BLEND_NORMAL) { |
| 750 if (!pDIBitmap->IsAlphaMask()) { | 750 if (!pDIBitmap->IsAlphaMask()) { |
| 751 if (bitmap_alpha < 255) { | 751 if (bitmap_alpha < 255) { |
| 752 pDIBitmap->MultiplyAlpha(bitmap_alpha); | 752 pDIBitmap->MultiplyAlpha(bitmap_alpha); |
| 753 } | 753 } |
| 754 if (m_pDevice->SetDIBits(pDIBitmap, left, top)) { | 754 if (m_pDevice->SetDIBits(pDIBitmap, left, top)) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 773 if (bGetBackGround) { | 773 if (bGetBackGround) { |
| 774 if (bIsolated || !bGroup) { | 774 if (bIsolated || !bGroup) { |
| 775 if (pDIBitmap->IsAlphaMask()) { | 775 if (pDIBitmap->IsAlphaMask()) { |
| 776 return; | 776 return; |
| 777 } | 777 } |
| 778 m_pDevice->SetDIBitsWithBlend(pDIBitmap, left, top, blend_mode); | 778 m_pDevice->SetDIBitsWithBlend(pDIBitmap, left, top, blend_mode); |
| 779 } else { | 779 } else { |
| 780 FX_RECT rect(left, top, left + pDIBitmap->GetWidth(), | 780 FX_RECT rect(left, top, left + pDIBitmap->GetWidth(), |
| 781 top + pDIBitmap->GetHeight()); | 781 top + pDIBitmap->GetHeight()); |
| 782 rect.Intersect(m_pDevice->GetClipBox()); | 782 rect.Intersect(m_pDevice->GetClipBox()); |
| 783 CFX_DIBitmap* pClone = NULL; | 783 CFX_DIBitmap* pClone = nullptr; |
| 784 FX_BOOL bClone = FALSE; | 784 FX_BOOL bClone = FALSE; |
| 785 if (m_pDevice->GetBackDrop() && m_pDevice->GetBitmap()) { | 785 if (m_pDevice->GetBackDrop() && m_pDevice->GetBitmap()) { |
| 786 bClone = TRUE; | 786 bClone = TRUE; |
| 787 pClone = m_pDevice->GetBackDrop()->Clone(&rect); | 787 pClone = m_pDevice->GetBackDrop()->Clone(&rect); |
| 788 CFX_DIBitmap* pForeBitmap = m_pDevice->GetBitmap(); | 788 CFX_DIBitmap* pForeBitmap = m_pDevice->GetBitmap(); |
| 789 pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(), | 789 pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(), |
| 790 pForeBitmap, rect.left, rect.top); | 790 pForeBitmap, rect.left, rect.top); |
| 791 left = left >= 0 ? 0 : left; | 791 left = left >= 0 ? 0 : left; |
| 792 top = top >= 0 ? 0 : top; | 792 top = top >= 0 ? 0 : top; |
| 793 if (!pDIBitmap->IsAlphaMask()) | 793 if (!pDIBitmap->IsAlphaMask()) |
| (...skipping 22 matching lines...) Expand all Loading... |
| 816 if (pDIBitmap->HasAlpha() && | 816 if (pDIBitmap->HasAlpha() && |
| 817 !(m_pDevice->GetRenderCaps() & FXRC_ALPHA_IMAGE)) { | 817 !(m_pDevice->GetRenderCaps() & FXRC_ALPHA_IMAGE)) { |
| 818 CFX_DIBitmap* pCloneConvert = pDIBitmap->CloneConvert(FXDIB_Rgb); | 818 CFX_DIBitmap* pCloneConvert = pDIBitmap->CloneConvert(FXDIB_Rgb); |
| 819 if (!pCloneConvert) { | 819 if (!pCloneConvert) { |
| 820 return; | 820 return; |
| 821 } | 821 } |
| 822 CXFA_ImageRenderer imageRender; | 822 CXFA_ImageRenderer imageRender; |
| 823 FX_BOOL bRet = imageRender.Start(m_pDevice, pCloneConvert, m_FillArgb, | 823 FX_BOOL bRet = imageRender.Start(m_pDevice, pCloneConvert, m_FillArgb, |
| 824 m_BitmapAlpha, &m_ImageMatrix, m_Flags); | 824 m_BitmapAlpha, &m_ImageMatrix, m_Flags); |
| 825 while (bRet) { | 825 while (bRet) { |
| 826 bRet = imageRender.Continue(NULL); | 826 bRet = imageRender.Continue(nullptr); |
| 827 } | 827 } |
| 828 delete pCloneConvert; | 828 delete pCloneConvert; |
| 829 return; | 829 return; |
| 830 } | 830 } |
| 831 } | 831 } |
| 832 void XFA_DrawImage(CFX_Graphics* pGS, | 832 void XFA_DrawImage(CFX_Graphics* pGS, |
| 833 const CFX_RectF& rtImage, | 833 const CFX_RectF& rtImage, |
| 834 CFX_Matrix* pMatrix, | 834 CFX_Matrix* pMatrix, |
| 835 CFX_DIBitmap* pDIBitmap, | 835 CFX_DIBitmap* pDIBitmap, |
| 836 int32_t iAspect, | 836 int32_t iAspect, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 CFX_PathData path; | 890 CFX_PathData path; |
| 891 path.AppendRect(rtImage.left, rtImage.bottom(), rtImage.right(), rtImage.top); | 891 path.AppendRect(rtImage.left, rtImage.bottom(), rtImage.right(), rtImage.top); |
| 892 pRenderDevice->SetClip_PathFill(&path, pMatrix, FXFILL_WINDING); | 892 pRenderDevice->SetClip_PathFill(&path, pMatrix, FXFILL_WINDING); |
| 893 CFX_Matrix mtImage(1, 0, 0, -1, 0, 1); | 893 CFX_Matrix mtImage(1, 0, 0, -1, 0, 1); |
| 894 mtImage.Concat(rtFit.width, 0, 0, rtFit.height, rtFit.left, rtFit.top); | 894 mtImage.Concat(rtFit.width, 0, 0, rtFit.height, rtFit.left, rtFit.top); |
| 895 mtImage.Concat(*pMatrix); | 895 mtImage.Concat(*pMatrix); |
| 896 CXFA_ImageRenderer imageRender; | 896 CXFA_ImageRenderer imageRender; |
| 897 FX_BOOL bRet = imageRender.Start(pRenderDevice, pDIBitmap, 0, 255, &mtImage, | 897 FX_BOOL bRet = imageRender.Start(pRenderDevice, pDIBitmap, 0, 255, &mtImage, |
| 898 FXDIB_INTERPOL); | 898 FXDIB_INTERPOL); |
| 899 while (bRet) { | 899 while (bRet) { |
| 900 bRet = imageRender.Continue(NULL); | 900 bRet = imageRender.Continue(nullptr); |
| 901 } | 901 } |
| 902 pRenderDevice->RestoreState(false); | 902 pRenderDevice->RestoreState(false); |
| 903 } | 903 } |
| 904 | 904 |
| 905 static const uint8_t g_inv_base64[128] = { | 905 static const uint8_t g_inv_base64[128] = { |
| 906 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | 906 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, |
| 907 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | 907 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, |
| 908 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, | 908 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, |
| 909 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, | 909 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, |
| 910 255, 255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, | 910 255, 255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 925 if ((pStr[i] & 128) == 0) { | 925 if ((pStr[i] & 128) == 0) { |
| 926 if (g_inv_base64[pStr[i]] != 0xFF || pStr[i] == '=') { | 926 if (g_inv_base64[pStr[i]] != 0xFF || pStr[i] == '=') { |
| 927 pCP[j++] = pStr[i]; | 927 pCP[j++] = pStr[i]; |
| 928 } | 928 } |
| 929 } | 929 } |
| 930 } | 930 } |
| 931 pCP[j] = '\0'; | 931 pCP[j] = '\0'; |
| 932 return pCP; | 932 return pCP; |
| 933 } | 933 } |
| 934 static int32_t XFA_Base64Decode(const FX_CHAR* pStr, uint8_t* pOutBuffer) { | 934 static int32_t XFA_Base64Decode(const FX_CHAR* pStr, uint8_t* pOutBuffer) { |
| 935 if (pStr == NULL) { | 935 if (!pStr) { |
| 936 return 0; | 936 return 0; |
| 937 } | 937 } |
| 938 uint8_t* pBuffer = | 938 uint8_t* pBuffer = |
| 939 XFA_RemoveBase64Whitespace((uint8_t*)pStr, FXSYS_strlen((FX_CHAR*)pStr)); | 939 XFA_RemoveBase64Whitespace((uint8_t*)pStr, FXSYS_strlen((FX_CHAR*)pStr)); |
| 940 if (pBuffer == NULL) { | 940 if (!pBuffer) { |
| 941 return 0; | 941 return 0; |
| 942 } | 942 } |
| 943 int32_t iLen = FXSYS_strlen((FX_CHAR*)pBuffer); | 943 int32_t iLen = FXSYS_strlen((FX_CHAR*)pBuffer); |
| 944 int32_t i = 0, j = 0; | 944 int32_t i = 0, j = 0; |
| 945 uint32_t dwLimb = 0; | 945 uint32_t dwLimb = 0; |
| 946 for (; i + 3 < iLen; i += 4) { | 946 for (; i + 3 < iLen; i += 4) { |
| 947 if (pBuffer[i] == '=' || pBuffer[i + 1] == '=' || pBuffer[i + 2] == '=' || | 947 if (pBuffer[i] == '=' || pBuffer[i + 1] == '=' || pBuffer[i + 2] == '=' || |
| 948 pBuffer[i + 3] == '=') { | 948 pBuffer[i + 3] == '=') { |
| 949 if (pBuffer[i] == '=' || pBuffer[i + 1] == '=') { | 949 if (pBuffer[i] == '=' || pBuffer[i + 1] == '=') { |
| 950 break; | 950 break; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 974 } | 974 } |
| 975 } | 975 } |
| 976 FX_Free(pBuffer); | 976 FX_Free(pBuffer); |
| 977 return j; | 977 return j; |
| 978 } | 978 } |
| 979 | 979 |
| 980 static const FX_CHAR g_base64_chars[] = | 980 static const FX_CHAR g_base64_chars[] = |
| 981 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; | 981 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |
| 982 | 982 |
| 983 FX_CHAR* XFA_Base64Encode(const uint8_t* buf, int32_t buf_len) { | 983 FX_CHAR* XFA_Base64Encode(const uint8_t* buf, int32_t buf_len) { |
| 984 FX_CHAR* out = NULL; | 984 FX_CHAR* out = nullptr; |
| 985 int i, j; | 985 int i, j; |
| 986 uint32_t limb; | 986 uint32_t limb; |
| 987 out = FX_Alloc(FX_CHAR, ((buf_len * 8 + 5) / 6) + 5); | 987 out = FX_Alloc(FX_CHAR, ((buf_len * 8 + 5) / 6) + 5); |
| 988 for (i = 0, j = 0, limb = 0; i + 2 < buf_len; i += 3, j += 4) { | 988 for (i = 0, j = 0, limb = 0; i + 2 < buf_len; i += 3, j += 4) { |
| 989 limb = ((uint32_t)buf[i] << 16) | ((uint32_t)buf[i + 1] << 8) | | 989 limb = ((uint32_t)buf[i] << 16) | ((uint32_t)buf[i + 1] << 8) | |
| 990 ((uint32_t)buf[i + 2]); | 990 ((uint32_t)buf[i + 2]); |
| 991 out[j] = g_base64_chars[(limb >> 18) & 63]; | 991 out[j] = g_base64_chars[(limb >> 18) & 63]; |
| 992 out[j + 1] = g_base64_chars[(limb >> 12) & 63]; | 992 out[j + 1] = g_base64_chars[(limb >> 12) & 63]; |
| 993 out[j + 2] = g_base64_chars[(limb >> 6) & 63]; | 993 out[j + 2] = g_base64_chars[(limb >> 6) & 63]; |
| 994 out[j + 3] = g_base64_chars[(limb)&63]; | 994 out[j + 3] = g_base64_chars[(limb)&63]; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 CFX_DIBitmap* XFA_LoadImageData(CXFA_FFDoc* pDoc, | 1039 CFX_DIBitmap* XFA_LoadImageData(CXFA_FFDoc* pDoc, |
| 1040 CXFA_Image* pImage, | 1040 CXFA_Image* pImage, |
| 1041 FX_BOOL& bNameImage, | 1041 FX_BOOL& bNameImage, |
| 1042 int32_t& iImageXDpi, | 1042 int32_t& iImageXDpi, |
| 1043 int32_t& iImageYDpi) { | 1043 int32_t& iImageYDpi) { |
| 1044 CFX_WideString wsHref; | 1044 CFX_WideString wsHref; |
| 1045 pImage->GetHref(wsHref); | 1045 pImage->GetHref(wsHref); |
| 1046 CFX_WideString wsImage; | 1046 CFX_WideString wsImage; |
| 1047 pImage->GetContent(wsImage); | 1047 pImage->GetContent(wsImage); |
| 1048 if (wsHref.IsEmpty() && wsImage.IsEmpty()) { | 1048 if (wsHref.IsEmpty() && wsImage.IsEmpty()) { |
| 1049 return NULL; | 1049 return nullptr; |
| 1050 } | 1050 } |
| 1051 CFX_WideString wsContentType; | 1051 CFX_WideString wsContentType; |
| 1052 pImage->GetContentType(wsContentType); | 1052 pImage->GetContentType(wsContentType); |
| 1053 FXCODEC_IMAGE_TYPE type = XFA_GetImageType(wsContentType); | 1053 FXCODEC_IMAGE_TYPE type = XFA_GetImageType(wsContentType); |
| 1054 CFX_ByteString bsContent; | 1054 CFX_ByteString bsContent; |
| 1055 uint8_t* pImageBuffer = NULL; | 1055 uint8_t* pImageBuffer = nullptr; |
| 1056 IFX_FileRead* pImageFileRead = NULL; | 1056 IFX_FileRead* pImageFileRead = nullptr; |
| 1057 if (wsImage.GetLength() > 0) { | 1057 if (wsImage.GetLength() > 0) { |
| 1058 XFA_ATTRIBUTEENUM iEncoding = | 1058 XFA_ATTRIBUTEENUM iEncoding = |
| 1059 (XFA_ATTRIBUTEENUM)pImage->GetTransferEncoding(); | 1059 (XFA_ATTRIBUTEENUM)pImage->GetTransferEncoding(); |
| 1060 if (iEncoding == XFA_ATTRIBUTEENUM_Base64) { | 1060 if (iEncoding == XFA_ATTRIBUTEENUM_Base64) { |
| 1061 CFX_ByteString bsData = wsImage.UTF8Encode(); | 1061 CFX_ByteString bsData = wsImage.UTF8Encode(); |
| 1062 int32_t iLength = bsData.GetLength(); | 1062 int32_t iLength = bsData.GetLength(); |
| 1063 pImageBuffer = FX_Alloc(uint8_t, iLength); | 1063 pImageBuffer = FX_Alloc(uint8_t, iLength); |
| 1064 int32_t iRead = XFA_Base64Decode(bsData.c_str(), pImageBuffer); | 1064 int32_t iRead = XFA_Base64Decode(bsData.c_str(), pImageBuffer); |
| 1065 if (iRead > 0) { | 1065 if (iRead > 0) { |
| 1066 pImageFileRead = FX_CreateMemoryStream(pImageBuffer, iRead); | 1066 pImageFileRead = FX_CreateMemoryStream(pImageBuffer, iRead); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1078 pDoc->GetPDFNamedImage(wsURL.AsStringC(), iImageXDpi, iImageYDpi); | 1078 pDoc->GetPDFNamedImage(wsURL.AsStringC(), iImageXDpi, iImageYDpi); |
| 1079 if (pBitmap) { | 1079 if (pBitmap) { |
| 1080 bNameImage = TRUE; | 1080 bNameImage = TRUE; |
| 1081 return pBitmap; | 1081 return pBitmap; |
| 1082 } | 1082 } |
| 1083 } | 1083 } |
| 1084 pImageFileRead = pDoc->GetDocProvider()->OpenLinkedFile(pDoc, wsURL); | 1084 pImageFileRead = pDoc->GetDocProvider()->OpenLinkedFile(pDoc, wsURL); |
| 1085 } | 1085 } |
| 1086 if (!pImageFileRead) { | 1086 if (!pImageFileRead) { |
| 1087 FX_Free(pImageBuffer); | 1087 FX_Free(pImageBuffer); |
| 1088 return NULL; | 1088 return nullptr; |
| 1089 } | 1089 } |
| 1090 bNameImage = FALSE; | 1090 bNameImage = FALSE; |
| 1091 CFX_DIBitmap* pBitmap = | 1091 CFX_DIBitmap* pBitmap = |
| 1092 XFA_LoadImageFromBuffer(pImageFileRead, type, iImageXDpi, iImageYDpi); | 1092 XFA_LoadImageFromBuffer(pImageFileRead, type, iImageXDpi, iImageYDpi); |
| 1093 FX_Free(pImageBuffer); | 1093 FX_Free(pImageBuffer); |
| 1094 pImageFileRead->Release(); | 1094 pImageFileRead->Release(); |
| 1095 return pBitmap; | 1095 return pBitmap; |
| 1096 } | 1096 } |
| 1097 static FXDIB_Format XFA_GetDIBFormat(FXCODEC_IMAGE_TYPE type, | 1097 static FXDIB_Format XFA_GetDIBFormat(FXCODEC_IMAGE_TYPE type, |
| 1098 int32_t iComponents, | 1098 int32_t iComponents, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1113 break; | 1113 break; |
| 1114 } | 1114 } |
| 1115 return dibFormat; | 1115 return dibFormat; |
| 1116 } | 1116 } |
| 1117 CFX_DIBitmap* XFA_LoadImageFromBuffer(IFX_FileRead* pImageFileRead, | 1117 CFX_DIBitmap* XFA_LoadImageFromBuffer(IFX_FileRead* pImageFileRead, |
| 1118 FXCODEC_IMAGE_TYPE type, | 1118 FXCODEC_IMAGE_TYPE type, |
| 1119 int32_t& iImageXDpi, | 1119 int32_t& iImageXDpi, |
| 1120 int32_t& iImageYDpi) { | 1120 int32_t& iImageYDpi) { |
| 1121 CFX_GEModule* pGeModule = CFX_GEModule::Get(); | 1121 CFX_GEModule* pGeModule = CFX_GEModule::Get(); |
| 1122 if (!pGeModule) { | 1122 if (!pGeModule) { |
| 1123 return NULL; | 1123 return nullptr; |
| 1124 } | 1124 } |
| 1125 CCodec_ModuleMgr* pCodecMgr = pGeModule->GetCodecModule(); | 1125 CCodec_ModuleMgr* pCodecMgr = pGeModule->GetCodecModule(); |
| 1126 if (!pCodecMgr) { | 1126 if (!pCodecMgr) { |
| 1127 return NULL; | 1127 return nullptr; |
| 1128 } | 1128 } |
| 1129 CFX_DIBAttribute dibAttr; | 1129 CFX_DIBAttribute dibAttr; |
| 1130 CFX_DIBitmap* pBitmap = NULL; | 1130 CFX_DIBitmap* pBitmap = nullptr; |
| 1131 CCodec_ProgressiveDecoder* pProgressiveDecoder = | 1131 CCodec_ProgressiveDecoder* pProgressiveDecoder = |
| 1132 pCodecMgr->CreateProgressiveDecoder(); | 1132 pCodecMgr->CreateProgressiveDecoder(); |
| 1133 pProgressiveDecoder->LoadImageInfo(pImageFileRead, type, &dibAttr, false); | 1133 pProgressiveDecoder->LoadImageInfo(pImageFileRead, type, &dibAttr, false); |
| 1134 switch (dibAttr.m_wDPIUnit) { | 1134 switch (dibAttr.m_wDPIUnit) { |
| 1135 case FXCODEC_RESUNIT_CENTIMETER: | 1135 case FXCODEC_RESUNIT_CENTIMETER: |
| 1136 dibAttr.m_nXDPI = (int32_t)(dibAttr.m_nXDPI * 2.54f); | 1136 dibAttr.m_nXDPI = (int32_t)(dibAttr.m_nXDPI * 2.54f); |
| 1137 dibAttr.m_nYDPI = (int32_t)(dibAttr.m_nYDPI * 2.54f); | 1137 dibAttr.m_nYDPI = (int32_t)(dibAttr.m_nYDPI * 2.54f); |
| 1138 break; | 1138 break; |
| 1139 case FXCODEC_RESUNIT_METER: | 1139 case FXCODEC_RESUNIT_METER: |
| 1140 dibAttr.m_nXDPI = (int32_t)(dibAttr.m_nXDPI / (FX_FLOAT)100 * 2.54f); | 1140 dibAttr.m_nXDPI = (int32_t)(dibAttr.m_nXDPI / (FX_FLOAT)100 * 2.54f); |
| (...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2042 } | 2042 } |
| 2043 XFA_BOX_Fill(box, strokes, pGS, rtWidget, pMatrix, dwFlags); | 2043 XFA_BOX_Fill(box, strokes, pGS, rtWidget, pMatrix, dwFlags); |
| 2044 XFA_BOX_Stroke(box, strokes, pGS, rtWidget, pMatrix, dwFlags); | 2044 XFA_BOX_Stroke(box, strokes, pGS, rtWidget, pMatrix, dwFlags); |
| 2045 } | 2045 } |
| 2046 | 2046 |
| 2047 CXFA_CalcData::CXFA_CalcData() : m_iRefCount(0) {} | 2047 CXFA_CalcData::CXFA_CalcData() : m_iRefCount(0) {} |
| 2048 | 2048 |
| 2049 CXFA_CalcData::~CXFA_CalcData() { | 2049 CXFA_CalcData::~CXFA_CalcData() { |
| 2050 m_Globals.RemoveAll(); | 2050 m_Globals.RemoveAll(); |
| 2051 } | 2051 } |
| OLD | NEW |