From 3f3b45cc74b0499912409f766a595945dbbfc4c5 Mon Sep 17 00:00:00 2001 From: John Abd-El-Malek Date: Fri, 23 May 2014 17:28:10 -0700 Subject: Convert all line endings to LF. --- fpdfsdk/src/pdfwindow/PWL_Icon.cpp | 544 ++++++++++++++++++------------------- 1 file changed, 272 insertions(+), 272 deletions(-) (limited to 'fpdfsdk/src/pdfwindow/PWL_Icon.cpp') diff --git a/fpdfsdk/src/pdfwindow/PWL_Icon.cpp b/fpdfsdk/src/pdfwindow/PWL_Icon.cpp index a859a52de7..b85b845553 100644 --- a/fpdfsdk/src/pdfwindow/PWL_Icon.cpp +++ b/fpdfsdk/src/pdfwindow/PWL_Icon.cpp @@ -1,272 +1,272 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "../../include/pdfwindow/PDFWindow.h" -#include "../../include/pdfwindow/PWL_Wnd.h" -#include "../../include/pdfwindow/PWL_Icon.h" -#include "../../include/pdfwindow/PWL_Utils.h" - -/* ------------------------------- CPWL_Image ---------------------------------- */ - -CPWL_Image::CPWL_Image() : m_pPDFStream(NULL) -{ -} - -CPWL_Image::~CPWL_Image() -{ -} - -CFX_ByteString CPWL_Image::GetImageAppStream() -{ - CFX_ByteTextBuf sAppStream; - - CFX_ByteString sAlias = this->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 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"; - - 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"; - } - - return sAppStream.GetByteString(); -} - -void CPWL_Image::SetPDFStream(CPDF_Stream * pStream) -{ - m_pPDFStream = pStream; -} - -CPDF_Stream * CPWL_Image::GetPDFStream() -{ - return this->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; - } - } -} - -CPDF_Matrix CPWL_Image::GetImageMatrix() -{ - if (m_pPDFStream) - { - if (CPDF_Dictionary * pDict = m_pPDFStream->GetDict()) - { - return pDict->GetMatrix("Matrix"); - } - } - - 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; - - return CFX_ByteString(); -} - -void CPWL_Image::SetImageAlias(FX_LPCSTR sImageAlias) -{ - m_sImageAlias = sImageAlias; -} - -void CPWL_Image::GetScale(FX_FLOAT & fHScale,FX_FLOAT & fVScale) -{ - fHScale = 1.0f; - fVScale = 1.0f; -} - - -void CPWL_Image::GetImageOffset(FX_FLOAT & x,FX_FLOAT & y) -{ - x = 0.0f; - y = 0.0f; -} - -/* ------------------------------- CPWL_Icon ---------------------------------- */ - -CPWL_Icon::CPWL_Icon() : m_pIconFit(NULL) -{ -} - -CPWL_Icon::~CPWL_Icon() -{ -} - -FX_INT32 CPWL_Icon::GetScaleMethod() -{ - if (m_pIconFit) - return m_pIconFit->GetScaleMethod(); - - return 0; -} - -FX_BOOL CPWL_Icon::IsProportionalScale() -{ - if (m_pIconFit) - return m_pIconFit->IsProportionalScale(); - - return FALSE; -} - -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->GetArray("A"); - 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; - } -} - -FX_BOOL CPWL_Icon::GetFittingBounds() -{ - if (m_pIconFit) - return m_pIconFit->GetFittingBounds(); - - 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 = this->GetClientRect(); - fPlateWidth = rcPlate.right - rcPlate.left; - fPlateHeight = rcPlate.top - rcPlate.bottom; - - GetImageSize(fImageWidth,fImageHeight); - - FX_INT32 nScaleMethod = this->GetScaleMethod(); - - /* - enum ScaleMethod - { - Always = 0, //A, Always scale - Bigger, //B, Scale only when the icon is bigger than the annotation rectangle - Smaller, //S, Scale only when the icon is smaller then the annotation rectangle - Never //N, Never scale - }; - */ - - 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; - - this->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 = this->GetClientRect(); - fPlateWidth = rcPlate.right - rcPlate.left; - fPlateHeight = rcPlate.top - rcPlate.bottom; - - x = (fPlateWidth - fImageFactWidth) * fLeft; - y = (fPlateHeight - fImageFactHeight) * fBottom; -} - +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "../../include/pdfwindow/PDFWindow.h" +#include "../../include/pdfwindow/PWL_Wnd.h" +#include "../../include/pdfwindow/PWL_Icon.h" +#include "../../include/pdfwindow/PWL_Utils.h" + +/* ------------------------------- CPWL_Image ---------------------------------- */ + +CPWL_Image::CPWL_Image() : m_pPDFStream(NULL) +{ +} + +CPWL_Image::~CPWL_Image() +{ +} + +CFX_ByteString CPWL_Image::GetImageAppStream() +{ + CFX_ByteTextBuf sAppStream; + + CFX_ByteString sAlias = this->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 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"; + + 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"; + } + + return sAppStream.GetByteString(); +} + +void CPWL_Image::SetPDFStream(CPDF_Stream * pStream) +{ + m_pPDFStream = pStream; +} + +CPDF_Stream * CPWL_Image::GetPDFStream() +{ + return this->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; + } + } +} + +CPDF_Matrix CPWL_Image::GetImageMatrix() +{ + if (m_pPDFStream) + { + if (CPDF_Dictionary * pDict = m_pPDFStream->GetDict()) + { + return pDict->GetMatrix("Matrix"); + } + } + + 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; + + return CFX_ByteString(); +} + +void CPWL_Image::SetImageAlias(FX_LPCSTR sImageAlias) +{ + m_sImageAlias = sImageAlias; +} + +void CPWL_Image::GetScale(FX_FLOAT & fHScale,FX_FLOAT & fVScale) +{ + fHScale = 1.0f; + fVScale = 1.0f; +} + + +void CPWL_Image::GetImageOffset(FX_FLOAT & x,FX_FLOAT & y) +{ + x = 0.0f; + y = 0.0f; +} + +/* ------------------------------- CPWL_Icon ---------------------------------- */ + +CPWL_Icon::CPWL_Icon() : m_pIconFit(NULL) +{ +} + +CPWL_Icon::~CPWL_Icon() +{ +} + +FX_INT32 CPWL_Icon::GetScaleMethod() +{ + if (m_pIconFit) + return m_pIconFit->GetScaleMethod(); + + return 0; +} + +FX_BOOL CPWL_Icon::IsProportionalScale() +{ + if (m_pIconFit) + return m_pIconFit->IsProportionalScale(); + + return FALSE; +} + +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->GetArray("A"); + 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; + } +} + +FX_BOOL CPWL_Icon::GetFittingBounds() +{ + if (m_pIconFit) + return m_pIconFit->GetFittingBounds(); + + 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 = this->GetClientRect(); + fPlateWidth = rcPlate.right - rcPlate.left; + fPlateHeight = rcPlate.top - rcPlate.bottom; + + GetImageSize(fImageWidth,fImageHeight); + + FX_INT32 nScaleMethod = this->GetScaleMethod(); + + /* + enum ScaleMethod + { + Always = 0, //A, Always scale + Bigger, //B, Scale only when the icon is bigger than the annotation rectangle + Smaller, //S, Scale only when the icon is smaller then the annotation rectangle + Never //N, Never scale + }; + */ + + 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; + + this->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 = this->GetClientRect(); + fPlateWidth = rcPlate.right - rcPlate.left; + fPlateHeight = rcPlate.top - rcPlate.bottom; + + x = (fPlateWidth - fImageFactWidth) * fLeft; + y = (fPlateHeight - fImageFactHeight) * fBottom; +} + -- cgit v1.2.3