| Index: fpdfsdk/src/pdfwindow/PWL_Icon.cpp
|
| diff --git a/fpdfsdk/src/pdfwindow/PWL_Icon.cpp b/fpdfsdk/src/pdfwindow/PWL_Icon.cpp
|
| index 71174dfb0a62b8d5033a1274b12ccdb7b5cce3d9..29e0aa86f5ad7c505da72f67c8e56c254035cc73 100644
|
| --- a/fpdfsdk/src/pdfwindow/PWL_Icon.cpp
|
| +++ b/fpdfsdk/src/pdfwindow/PWL_Icon.cpp
|
| @@ -9,254 +9,222 @@
|
| #include "../../include/pdfwindow/PWL_Icon.h"
|
| #include "../../include/pdfwindow/PWL_Utils.h"
|
|
|
| -/* ------------------------------- CPWL_Image ---------------------------------- */
|
| +/* ------------------------------- CPWL_Image ----------------------------------
|
| + */
|
|
|
| -CPWL_Image::CPWL_Image() : m_pPDFStream(NULL)
|
| -{
|
| -}
|
| +CPWL_Image::CPWL_Image() : m_pPDFStream(NULL) {}
|
|
|
| -CPWL_Image::~CPWL_Image()
|
| -{
|
| -}
|
| +CPWL_Image::~CPWL_Image() {}
|
|
|
| -CFX_ByteString CPWL_Image::GetImageAppStream()
|
| -{
|
| - CFX_ByteTextBuf sAppStream;
|
| +CFX_ByteString CPWL_Image::GetImageAppStream() {
|
| + CFX_ByteTextBuf sAppStream;
|
|
|
| - CFX_ByteString sAlias = GetImageAlias();
|
| - CPDF_Rect rcPlate = GetClientRect();
|
| - CPDF_Matrix mt;
|
| - mt.SetReverse(GetImageMatrix());
|
| + CFX_ByteString sAlias = GetImageAlias();
|
| + CPDF_Rect rcPlate = GetClientRect();
|
| + CPDF_Matrix mt;
|
| + mt.SetReverse(GetImageMatrix());
|
|
|
| - FX_FLOAT fHScale = 1.0f;
|
| - FX_FLOAT fVScale = 1.0f;
|
| - GetScale(fHScale,fVScale);
|
| + FX_FLOAT fHScale = 1.0f;
|
| + FX_FLOAT fVScale = 1.0f;
|
| + GetScale(fHScale, fVScale);
|
|
|
| - FX_FLOAT fx = 0.0f;
|
| - FX_FLOAT fy = 0.0f;
|
| - GetImageOffset(fx,fy);
|
| + FX_FLOAT fx = 0.0f;
|
| + FX_FLOAT fy = 0.0f;
|
| + GetImageOffset(fx, fy);
|
|
|
| - if (m_pPDFStream && sAlias.GetLength()>0)
|
| - {
|
| - sAppStream << "q\n";
|
| - sAppStream << rcPlate.left << " " << rcPlate.bottom << " "
|
| - << rcPlate.right - rcPlate.left << " " << rcPlate.top - rcPlate.bottom << " re W n\n";
|
| + if (m_pPDFStream && sAlias.GetLength() > 0) {
|
| + sAppStream << "q\n";
|
| + sAppStream << rcPlate.left << " " << rcPlate.bottom << " "
|
| + << rcPlate.right - rcPlate.left << " "
|
| + << rcPlate.top - rcPlate.bottom << " re W n\n";
|
|
|
| - sAppStream << fHScale << " 0 0 " << fVScale << " " << rcPlate.left + fx << " " << rcPlate.bottom + fy << " cm\n";
|
| - sAppStream << mt.GetA() << " " << mt.GetB() << " " << mt.GetC() << " " << mt.GetD() << " " << mt.GetE() << " " << mt.GetF() << " cm\n";
|
| + sAppStream << fHScale << " 0 0 " << fVScale << " " << rcPlate.left + fx
|
| + << " " << rcPlate.bottom + fy << " cm\n";
|
| + sAppStream << mt.GetA() << " " << mt.GetB() << " " << mt.GetC() << " "
|
| + << mt.GetD() << " " << mt.GetE() << " " << mt.GetF() << " cm\n";
|
|
|
| - sAppStream << "0 g 0 G 1 w /" << sAlias << " Do\n" << "Q\n";
|
| - }
|
| + sAppStream << "0 g 0 G 1 w /" << sAlias << " Do\n"
|
| + << "Q\n";
|
| + }
|
|
|
| - return sAppStream.GetByteString();
|
| + return sAppStream.GetByteString();
|
| }
|
|
|
| -void CPWL_Image::SetPDFStream(CPDF_Stream * pStream)
|
| -{
|
| - m_pPDFStream = pStream;
|
| +void CPWL_Image::SetPDFStream(CPDF_Stream* pStream) {
|
| + m_pPDFStream = pStream;
|
| }
|
|
|
| -CPDF_Stream * CPWL_Image::GetPDFStream()
|
| -{
|
| - return m_pPDFStream;
|
| +CPDF_Stream* CPWL_Image::GetPDFStream() {
|
| + return m_pPDFStream;
|
| }
|
|
|
| -void CPWL_Image::GetImageSize(FX_FLOAT & fWidth,FX_FLOAT & fHeight)
|
| -{
|
| - fWidth = 0.0f;
|
| - fHeight = 0.0f;
|
| -
|
| - if (m_pPDFStream)
|
| - {
|
| - if (CPDF_Dictionary * pDict = m_pPDFStream->GetDict())
|
| - {
|
| - CPDF_Rect rect = pDict->GetRect("BBox");
|
| -
|
| - fWidth = rect.right - rect.left;
|
| - fHeight = rect.top - rect.bottom;
|
| - }
|
| - }
|
| -}
|
| +void CPWL_Image::GetImageSize(FX_FLOAT& fWidth, FX_FLOAT& fHeight) {
|
| + fWidth = 0.0f;
|
| + fHeight = 0.0f;
|
|
|
| -CPDF_Matrix CPWL_Image::GetImageMatrix()
|
| -{
|
| - if (m_pPDFStream)
|
| - {
|
| - if (CPDF_Dictionary * pDict = m_pPDFStream->GetDict())
|
| - {
|
| - return pDict->GetMatrix("Matrix");
|
| - }
|
| - }
|
| -
|
| - return CPDF_Matrix();
|
| -}
|
| + if (m_pPDFStream) {
|
| + if (CPDF_Dictionary* pDict = m_pPDFStream->GetDict()) {
|
| + CPDF_Rect rect = pDict->GetRect("BBox");
|
|
|
| -CFX_ByteString CPWL_Image::GetImageAlias()
|
| -{
|
| - if (m_sImageAlias.IsEmpty())
|
| - {
|
| - if (m_pPDFStream)
|
| - {
|
| - if (CPDF_Dictionary * pDict = m_pPDFStream->GetDict())
|
| - {
|
| - return pDict->GetString("Name");
|
| - }
|
| - }
|
| - }
|
| - else
|
| - return m_sImageAlias;
|
| -
|
| - return CFX_ByteString();
|
| + fWidth = rect.right - rect.left;
|
| + fHeight = rect.top - rect.bottom;
|
| + }
|
| + }
|
| }
|
|
|
| -void CPWL_Image::SetImageAlias(const FX_CHAR* sImageAlias)
|
| -{
|
| - m_sImageAlias = sImageAlias;
|
| -}
|
| +CPDF_Matrix CPWL_Image::GetImageMatrix() {
|
| + if (m_pPDFStream) {
|
| + if (CPDF_Dictionary* pDict = m_pPDFStream->GetDict()) {
|
| + return pDict->GetMatrix("Matrix");
|
| + }
|
| + }
|
|
|
| -void CPWL_Image::GetScale(FX_FLOAT & fHScale,FX_FLOAT & fVScale)
|
| -{
|
| - fHScale = 1.0f;
|
| - fVScale = 1.0f;
|
| + return CPDF_Matrix();
|
| }
|
|
|
| +CFX_ByteString CPWL_Image::GetImageAlias() {
|
| + if (m_sImageAlias.IsEmpty()) {
|
| + if (m_pPDFStream) {
|
| + if (CPDF_Dictionary* pDict = m_pPDFStream->GetDict()) {
|
| + return pDict->GetString("Name");
|
| + }
|
| + }
|
| + } else
|
| + return m_sImageAlias;
|
|
|
| -void CPWL_Image::GetImageOffset(FX_FLOAT & x,FX_FLOAT & y)
|
| -{
|
| - x = 0.0f;
|
| - y = 0.0f;
|
| + return CFX_ByteString();
|
| }
|
|
|
| -/* ------------------------------- CPWL_Icon ---------------------------------- */
|
| +void CPWL_Image::SetImageAlias(const FX_CHAR* sImageAlias) {
|
| + m_sImageAlias = sImageAlias;
|
| +}
|
|
|
| -CPWL_Icon::CPWL_Icon() : m_pIconFit(NULL)
|
| -{
|
| +void CPWL_Image::GetScale(FX_FLOAT& fHScale, FX_FLOAT& fVScale) {
|
| + fHScale = 1.0f;
|
| + fVScale = 1.0f;
|
| }
|
|
|
| -CPWL_Icon::~CPWL_Icon()
|
| -{
|
| +void CPWL_Image::GetImageOffset(FX_FLOAT& x, FX_FLOAT& y) {
|
| + x = 0.0f;
|
| + y = 0.0f;
|
| }
|
|
|
| -int32_t CPWL_Icon::GetScaleMethod()
|
| -{
|
| - if (m_pIconFit)
|
| - return m_pIconFit->GetScaleMethod();
|
| +/* ------------------------------- CPWL_Icon ----------------------------------
|
| + */
|
|
|
| - return 0;
|
| -}
|
| +CPWL_Icon::CPWL_Icon() : m_pIconFit(NULL) {}
|
|
|
| -FX_BOOL CPWL_Icon::IsProportionalScale()
|
| -{
|
| - if (m_pIconFit)
|
| - return m_pIconFit->IsProportionalScale();
|
| +CPWL_Icon::~CPWL_Icon() {}
|
|
|
| - return FALSE;
|
| -}
|
| +int32_t CPWL_Icon::GetScaleMethod() {
|
| + if (m_pIconFit)
|
| + return m_pIconFit->GetScaleMethod();
|
|
|
| -void CPWL_Icon::GetIconPosition(FX_FLOAT & fLeft, FX_FLOAT & fBottom)
|
| -{
|
| - if (m_pIconFit)
|
| - {
|
| - //m_pIconFit->GetIconPosition(fLeft,fBottom);
|
| - fLeft = 0.0f;
|
| - fBottom = 0.0f;
|
| - CPDF_Array* pA = m_pIconFit->m_pDict ? m_pIconFit->m_pDict->GetArray("A") : NULL;
|
| - if (pA != NULL)
|
| - {
|
| - FX_DWORD dwCount = pA->GetCount();
|
| - if (dwCount > 0) fLeft = pA->GetNumber(0);
|
| - if (dwCount > 1) fBottom = pA->GetNumber(1);
|
| - }
|
| - }
|
| - else
|
| - {
|
| - fLeft = 0.0f;
|
| - fBottom = 0.0f;
|
| - }
|
| + return 0;
|
| }
|
|
|
| -FX_BOOL CPWL_Icon::GetFittingBounds()
|
| -{
|
| - if (m_pIconFit)
|
| - return m_pIconFit->GetFittingBounds();
|
| +FX_BOOL CPWL_Icon::IsProportionalScale() {
|
| + if (m_pIconFit)
|
| + return m_pIconFit->IsProportionalScale();
|
|
|
| - return FALSE;
|
| + return FALSE;
|
| }
|
|
|
| -void CPWL_Icon::GetScale(FX_FLOAT & fHScale,FX_FLOAT & fVScale)
|
| -{
|
| - fHScale = 1.0f;
|
| - fVScale = 1.0f;
|
| -
|
| - if (m_pPDFStream)
|
| - {
|
| - FX_FLOAT fImageWidth,fImageHeight;
|
| - FX_FLOAT fPlateWidth,fPlateHeight;
|
| -
|
| - CPDF_Rect rcPlate = GetClientRect();
|
| - fPlateWidth = rcPlate.right - rcPlate.left;
|
| - fPlateHeight = rcPlate.top - rcPlate.bottom;
|
| -
|
| - GetImageSize(fImageWidth,fImageHeight);
|
| -
|
| - int32_t nScaleMethod = GetScaleMethod();
|
| -
|
| - switch (nScaleMethod)
|
| - {
|
| - default:
|
| - case 0:
|
| - fHScale = fPlateWidth / PWL_MAX(fImageWidth,1.0f);
|
| - fVScale = fPlateHeight / PWL_MAX(fImageHeight,1.0f);
|
| - break;
|
| - case 1:
|
| - if (fPlateWidth < fImageWidth)
|
| - fHScale = fPlateWidth / PWL_MAX(fImageWidth,1.0f);
|
| - if (fPlateHeight < fImageHeight)
|
| - fVScale = fPlateHeight / PWL_MAX(fImageHeight,1.0f);
|
| - break;
|
| - case 2:
|
| - if (fPlateWidth > fImageWidth)
|
| - fHScale = fPlateWidth / PWL_MAX(fImageWidth,1.0f);
|
| - if (fPlateHeight > fImageHeight)
|
| - fVScale = fPlateHeight / PWL_MAX(fImageHeight,1.0f);
|
| - break;
|
| - case 3:
|
| - break;
|
| - }
|
| -
|
| - FX_FLOAT fMinScale;
|
| - if (IsProportionalScale())
|
| - {
|
| - fMinScale = PWL_MIN(fHScale,fVScale);
|
| - fHScale = fMinScale;
|
| - fVScale = fMinScale;
|
| - }
|
| - }
|
| +void CPWL_Icon::GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom) {
|
| + if (m_pIconFit) {
|
| + // m_pIconFit->GetIconPosition(fLeft,fBottom);
|
| + fLeft = 0.0f;
|
| + fBottom = 0.0f;
|
| + CPDF_Array* pA =
|
| + m_pIconFit->m_pDict ? m_pIconFit->m_pDict->GetArray("A") : NULL;
|
| + if (pA != NULL) {
|
| + FX_DWORD dwCount = pA->GetCount();
|
| + if (dwCount > 0)
|
| + fLeft = pA->GetNumber(0);
|
| + if (dwCount > 1)
|
| + fBottom = pA->GetNumber(1);
|
| + }
|
| + } else {
|
| + fLeft = 0.0f;
|
| + fBottom = 0.0f;
|
| + }
|
| }
|
|
|
| -void CPWL_Icon::GetImageOffset(FX_FLOAT & x,FX_FLOAT & y)
|
| -{
|
| - FX_FLOAT fLeft,fBottom;
|
| +FX_BOOL CPWL_Icon::GetFittingBounds() {
|
| + if (m_pIconFit)
|
| + return m_pIconFit->GetFittingBounds();
|
|
|
| - GetIconPosition(fLeft, fBottom);
|
| - x = 0.0f;
|
| - y = 0.0f;
|
| + return FALSE;
|
| +}
|
| +
|
| +void CPWL_Icon::GetScale(FX_FLOAT& fHScale, FX_FLOAT& fVScale) {
|
| + fHScale = 1.0f;
|
| + fVScale = 1.0f;
|
|
|
| - FX_FLOAT fImageWidth,fImageHeight;
|
| - GetImageSize(fImageWidth,fImageHeight);
|
| + if (m_pPDFStream) {
|
| + FX_FLOAT fImageWidth, fImageHeight;
|
| + FX_FLOAT fPlateWidth, fPlateHeight;
|
|
|
| - FX_FLOAT fHScale,fVScale;
|
| - GetScale(fHScale,fVScale);
|
| + CPDF_Rect rcPlate = GetClientRect();
|
| + fPlateWidth = rcPlate.right - rcPlate.left;
|
| + fPlateHeight = rcPlate.top - rcPlate.bottom;
|
|
|
| - FX_FLOAT fImageFactWidth = fImageWidth * fHScale;
|
| - FX_FLOAT fImageFactHeight = fImageHeight * fVScale;
|
| + GetImageSize(fImageWidth, fImageHeight);
|
|
|
| - FX_FLOAT fPlateWidth,fPlateHeight;
|
| - CPDF_Rect rcPlate = GetClientRect();
|
| - fPlateWidth = rcPlate.right - rcPlate.left;
|
| - fPlateHeight = rcPlate.top - rcPlate.bottom;
|
| + int32_t nScaleMethod = GetScaleMethod();
|
|
|
| - x = (fPlateWidth - fImageFactWidth) * fLeft;
|
| - y = (fPlateHeight - fImageFactHeight) * fBottom;
|
| + switch (nScaleMethod) {
|
| + default:
|
| + case 0:
|
| + fHScale = fPlateWidth / PWL_MAX(fImageWidth, 1.0f);
|
| + fVScale = fPlateHeight / PWL_MAX(fImageHeight, 1.0f);
|
| + break;
|
| + case 1:
|
| + if (fPlateWidth < fImageWidth)
|
| + fHScale = fPlateWidth / PWL_MAX(fImageWidth, 1.0f);
|
| + if (fPlateHeight < fImageHeight)
|
| + fVScale = fPlateHeight / PWL_MAX(fImageHeight, 1.0f);
|
| + break;
|
| + case 2:
|
| + if (fPlateWidth > fImageWidth)
|
| + fHScale = fPlateWidth / PWL_MAX(fImageWidth, 1.0f);
|
| + if (fPlateHeight > fImageHeight)
|
| + fVScale = fPlateHeight / PWL_MAX(fImageHeight, 1.0f);
|
| + break;
|
| + case 3:
|
| + break;
|
| + }
|
| +
|
| + FX_FLOAT fMinScale;
|
| + if (IsProportionalScale()) {
|
| + fMinScale = PWL_MIN(fHScale, fVScale);
|
| + fHScale = fMinScale;
|
| + fVScale = fMinScale;
|
| + }
|
| + }
|
| }
|
|
|
| +void CPWL_Icon::GetImageOffset(FX_FLOAT& x, FX_FLOAT& y) {
|
| + FX_FLOAT fLeft, fBottom;
|
| +
|
| + GetIconPosition(fLeft, fBottom);
|
| + x = 0.0f;
|
| + y = 0.0f;
|
| +
|
| + FX_FLOAT fImageWidth, fImageHeight;
|
| + GetImageSize(fImageWidth, fImageHeight);
|
| +
|
| + FX_FLOAT fHScale, fVScale;
|
| + GetScale(fHScale, fVScale);
|
| +
|
| + FX_FLOAT fImageFactWidth = fImageWidth * fHScale;
|
| + FX_FLOAT fImageFactHeight = fImageHeight * fVScale;
|
| +
|
| + FX_FLOAT fPlateWidth, fPlateHeight;
|
| + CPDF_Rect rcPlate = GetClientRect();
|
| + fPlateWidth = rcPlate.right - rcPlate.left;
|
| + fPlateHeight = rcPlate.top - rcPlate.bottom;
|
| +
|
| + x = (fPlateWidth - fImageFactWidth) * fLeft;
|
| + y = (fPlateHeight - fImageFactHeight) * fBottom;
|
| +}
|
|
|