diff options
author | dan sinclair <dsinclair@chromium.org> | 2016-03-23 19:29:15 -0400 |
---|---|---|
committer | dan sinclair <dsinclair@chromium.org> | 2016-03-23 19:29:15 -0400 |
commit | 89e904b1748114df561ebcb020492d085149664e (patch) | |
tree | 0f7803a179241a8ff70c70d49e645268975a98d7 /fpdfsdk/pdfwindow/PWL_Utils.h | |
parent | 61b2fc718910a5ab2a75ec5026b239ff33bccfdc (diff) | |
download | pdfium-89e904b1748114df561ebcb020492d085149664e.tar.xz |
Move the fpdfsdk/include/pdfwindow/ headers into fpdfsdk/pdfwindow.
This CL moves all of the pdfwindow headers to live beside their source files.
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1823153002 .
Diffstat (limited to 'fpdfsdk/pdfwindow/PWL_Utils.h')
-rw-r--r-- | fpdfsdk/pdfwindow/PWL_Utils.h | 412 |
1 files changed, 412 insertions, 0 deletions
diff --git a/fpdfsdk/pdfwindow/PWL_Utils.h b/fpdfsdk/pdfwindow/PWL_Utils.h new file mode 100644 index 0000000000..fed1528294 --- /dev/null +++ b/fpdfsdk/pdfwindow/PWL_Utils.h @@ -0,0 +1,412 @@ +// 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 + +#ifndef FPDFSDK_PDFWINDOW_PWL_UTILS_H_ +#define FPDFSDK_PDFWINDOW_PWL_UTILS_H_ + +#include "core/include/fpdfdoc/fpdf_vt.h" +#include "fpdfsdk/include/fxedit/fx_edit.h" +#include "fpdfsdk/pdfwindow/PWL_Wnd.h" + +class CFX_PathData; +struct CPWL_Color; + +template <class T> +T PWL_MIN(const T& i, const T& j) { + return ((i < j) ? i : j); +} +template <class T> +T PWL_MAX(const T& i, const T& j) { + return ((i > j) ? i : j); +} + +#define PWL_PDF2WIN(color) (uint8_t(color * 255)) +#define PWL_WIN2PDF(color) ((FX_FLOAT)((FX_FLOAT)color / 255.0f)) + +#define PWL_MAKEDWORD(low, high) \ + ((FX_DWORD)((uint16_t)(low) | (FX_DWORD)(((uint16_t)(high)) << 16))) +#define PWL_GETLOWWORD(dword) ((uint16_t)(dword)) +#define PWL_GETHIGHWORD(dword) ((uint16_t)(dword >> 16)) + +#define PWL_ICONTYPE_CHECKMARK 0 +#define PWL_ICONTYPE_CIRCLE 1 +#define PWL_ICONTYPE_COMMENT 2 +#define PWL_ICONTYPE_CROSS 3 +#define PWL_ICONTYPE_HELP 4 +#define PWL_ICONTYPE_INSERTTEXT 5 +#define PWL_ICONTYPE_KEY 6 +#define PWL_ICONTYPE_NEWPARAGRAPH 7 +#define PWL_ICONTYPE_TEXTNOTE 8 +#define PWL_ICONTYPE_PARAGRAPH 9 +#define PWL_ICONTYPE_RIGHTARROW 10 +#define PWL_ICONTYPE_RIGHTPOINTER 11 +#define PWL_ICONTYPE_STAR 12 +#define PWL_ICONTYPE_UPARROW 13 +#define PWL_ICONTYPE_UPLEFTARROW 14 + +#define PWL_ICONTYPE_GRAPH 15 +#define PWL_ICONTYPE_PAPERCLIP 16 +#define PWL_ICONTYPE_ATTACHMENT 17 +#define PWL_ICONTYPE_TAG 18 + +#define PWL_ICONTYPE_FOXIT 19 + +#define PWL_ICONTYPE_UNKNOWN -1 + +// checkbox & radiobutton style +#define PCS_CHECK 0 +#define PCS_CIRCLE 1 +#define PCS_CROSS 2 +#define PCS_DIAMOND 3 +#define PCS_SQUARE 4 +#define PCS_STAR 5 + +// pushbutton layout style +#define PPBL_LABEL 0 +#define PPBL_ICON 1 +#define PPBL_ICONTOPLABELBOTTOM 2 +#define PPBL_LABELTOPICONBOTTOM 3 +#define PPBL_ICONLEFTLABELRIGHT 4 +#define PPBL_LABELLEFTICONRIGHT 5 +#define PPBL_LABELOVERICON 6 + +class CPWL_Point : public CFX_FloatPoint { + public: + CPWL_Point() : CFX_FloatPoint(0.0f, 0.0f) {} + CPWL_Point(FX_FLOAT fx, FX_FLOAT fy) : CFX_FloatPoint(fx, fy) {} + CPWL_Point(const CPWL_Point& point) : CFX_FloatPoint(point.x, point.y) {} +}; + +enum PWL_PATHDATA_TYPE { + PWLPT_MOVETO, + PWLPT_LINETO, + PWLPT_BEZIERTO, + PWLPT_UNKNOWN +}; + +enum PWL_PATH_TYPE { PWLPT_PATHDATA, PWLPT_STREAM }; + +class CPWL_PathData { + public: + CPWL_PathData() : point(), type(PWLPT_UNKNOWN) {} + CPWL_PathData(const CPWL_Point& pt, PWL_PATHDATA_TYPE tp) + : point(pt), type(tp) {} + + CPWL_Point point; + PWL_PATHDATA_TYPE type; +}; + +class IPWL_SpellCheck; + +class CPWL_Utils { + public: + static CFX_FloatRect InflateRect(const CFX_FloatRect& rcRect, FX_FLOAT fSize); + static CFX_FloatRect DeflateRect(const CFX_FloatRect& rcRect, FX_FLOAT fSize); + static FX_BOOL IntersectRect(const CFX_FloatRect& rect1, + const CFX_FloatRect& rect2); + static FX_BOOL ContainsRect(const CFX_FloatRect& rcParent, + const CFX_FloatRect& rcChild); + static CFX_FloatRect ScaleRect(const CFX_FloatRect& rcRect, FX_FLOAT fScale); + static CPVT_WordRange OverlapWordRange(const CPVT_WordRange& wr1, + const CPVT_WordRange& wr2); + static CFX_FloatRect GetCenterSquare(const CFX_FloatRect& rect); + static CPWL_Color SubstractColor(const CPWL_Color& sColor, + FX_FLOAT fColorSub); + static CPWL_Color DevideColor(const CPWL_Color& sColor, + FX_FLOAT fColorDevide); + static CFX_FloatRect MaxRect(const CFX_FloatRect& rect1, + const CFX_FloatRect& rect2); + static CFX_FloatRect OffsetRect(const CFX_FloatRect& rect, + FX_FLOAT x, + FX_FLOAT y); + static CFX_FloatPoint OffsetPoint(const CFX_FloatPoint& point, + FX_FLOAT x, + FX_FLOAT y); + static FX_COLORREF PWLColorToFXColor(const CPWL_Color& color, + int32_t nTransparancy = 255); + static FX_BOOL IsBlackOrWhite(const CPWL_Color& color); + static CPWL_Color GetReverseColor(const CPWL_Color& color); + + static CFX_ByteString GetColorAppStream(const CPWL_Color& color, + const FX_BOOL& bFillOrStroke = TRUE); + static CFX_ByteString GetBorderAppStream(const CFX_FloatRect& rect, + FX_FLOAT fWidth, + const CPWL_Color& color, + const CPWL_Color& crLeftTop, + const CPWL_Color& crRightBottom, + int32_t nStyle, + const CPWL_Dash& dash); + static CFX_ByteString GetCircleBorderAppStream( + const CFX_FloatRect& rect, + FX_FLOAT fWidth, + const CPWL_Color& color, + const CPWL_Color& crLeftTop, + const CPWL_Color& crRightBottom, + int32_t nStyle, + const CPWL_Dash& dash); + static CFX_ByteString GetRectFillAppStream(const CFX_FloatRect& rect, + const CPWL_Color& color); + static CFX_ByteString GetCircleFillAppStream(const CFX_FloatRect& rect, + const CPWL_Color& color); + + static CFX_ByteString GetPushButtonAppStream(const CFX_FloatRect& rcBBox, + IFX_Edit_FontMap* pFontMap, + CPDF_Stream* pIconStream, + CPDF_IconFit& IconFit, + const CFX_WideString& sLabel, + const CPWL_Color& crText, + FX_FLOAT fFontSize, + int32_t nLayOut); + static CFX_ByteString GetCheckBoxAppStream(const CFX_FloatRect& rcBBox, + int32_t nStyle, + const CPWL_Color& crText); + static CFX_ByteString GetRadioButtonAppStream(const CFX_FloatRect& rcBBox, + int32_t nStyle, + const CPWL_Color& crText); + + static CFX_ByteString GetEditAppStream(IFX_Edit* pEdit, + const CFX_FloatPoint& ptOffset, + const CPVT_WordRange* pRange = NULL, + FX_BOOL bContinuous = TRUE, + uint16_t SubWord = 0); + static CFX_ByteString GetEditSelAppStream( + IFX_Edit* pEdit, + const CFX_FloatPoint& ptOffset, + const CPVT_WordRange* pRange = NULL); + static CFX_ByteString GetSpellCheckAppStream( + IFX_Edit* pEdit, + IPWL_SpellCheck* pSpellCheck, + const CFX_FloatPoint& ptOffset, + const CPVT_WordRange* pRange = NULL); + static CFX_ByteString GetTextAppStream(const CFX_FloatRect& rcBBox, + IFX_Edit_FontMap* pFontMap, + const CFX_WideString& sText, + int32_t nAlignmentH, + int32_t nAlignmentV, + FX_FLOAT fFontSize, + FX_BOOL bMultiLine, + FX_BOOL bAutoReturn, + const CPWL_Color& crText); + static CFX_ByteString GetDropButtonAppStream(const CFX_FloatRect& rcBBox); + + static void DrawFillRect(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + const CFX_FloatRect& rect, + const CPWL_Color& color, + int32_t nTransparancy); + static void DrawFillRect(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + const CFX_FloatRect& rect, + const FX_COLORREF& color); + static void DrawStrokeRect(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + const CFX_FloatRect& rect, + const FX_COLORREF& color, + FX_FLOAT fWidth); + static void DrawStrokeLine(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + const CFX_FloatPoint& ptMoveTo, + const CFX_FloatPoint& ptLineTo, + const FX_COLORREF& color, + FX_FLOAT fWidth); + static void DrawBorder(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + const CFX_FloatRect& rect, + FX_FLOAT fWidth, + const CPWL_Color& color, + const CPWL_Color& crLeftTop, + const CPWL_Color& crRightBottom, + int32_t nStyle, + int32_t nTransparancy); + static void DrawFillArea(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + const CFX_FloatPoint* pPts, + int32_t nCount, + const FX_COLORREF& color); + static void DrawShadow(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + FX_BOOL bVertical, + FX_BOOL bHorizontal, + CFX_FloatRect rect, + int32_t nTransparancy, + int32_t nStartGray, + int32_t nEndGray); + static void DrawEditSpellCheck(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + IFX_Edit* pEdit, + const CFX_FloatRect& rcClip, + const CFX_FloatPoint& ptOffset, + const CPVT_WordRange* pRange, + IPWL_SpellCheck* pSpellCheck); + + public: + static void ConvertCMYK2RGB(FX_FLOAT dC, + FX_FLOAT dM, + FX_FLOAT dY, + FX_FLOAT dK, + FX_FLOAT& dR, + FX_FLOAT& dG, + FX_FLOAT& dB); + static void ConvertRGB2CMYK(FX_FLOAT dR, + FX_FLOAT dG, + FX_FLOAT dB, + FX_FLOAT& dC, + FX_FLOAT& dM, + FX_FLOAT& dY, + FX_FLOAT& dK); + + static void ConvertRGB2GRAY(FX_FLOAT dR, + FX_FLOAT dG, + FX_FLOAT dB, + FX_FLOAT& dGray); + static void ConvertGRAY2RGB(FX_FLOAT dGray, + FX_FLOAT& dR, + FX_FLOAT& dG, + FX_FLOAT& dB); + + static void ConvertCMYK2GRAY(FX_FLOAT dC, + FX_FLOAT dM, + FX_FLOAT dY, + FX_FLOAT dK, + FX_FLOAT& dGray); + static void ConvertGRAY2CMYK(FX_FLOAT dGray, + FX_FLOAT& dC, + FX_FLOAT& dM, + FX_FLOAT& dY, + FX_FLOAT& dK); + + static void PWLColorToARGB(const CPWL_Color& color, + int32_t& alpha, + FX_FLOAT& red, + FX_FLOAT& green, + FX_FLOAT& blue); + + public: + static CFX_ByteString GetIconAppStream( + int32_t nType, + const CFX_FloatRect& rect, + const CPWL_Color& crFill, + const CPWL_Color& crStroke = PWL_DEFAULT_BLACKCOLOR); + static void DrawIconAppStream(CFX_RenderDevice* pDevice, + CFX_Matrix* pUser2Device, + int32_t nType, + const CFX_FloatRect& rect, + const CPWL_Color& crFill, + const CPWL_Color& crStroke, + const int32_t nTransparancy); + + private: + static CFX_ByteString GetAppStreamFromArray(const CPWL_PathData* pPathData, + int32_t nCount); + static void GetPathDataFromArray(CFX_PathData& path, + const CPWL_PathData* pPathData, + int32_t nCount); + + static CFX_ByteString GetAppStream_Check(const CFX_FloatRect& rcBBox, + const CPWL_Color& crText); + static CFX_ByteString GetAppStream_Circle(const CFX_FloatRect& rcBBox, + const CPWL_Color& crText); + static CFX_ByteString GetAppStream_Cross(const CFX_FloatRect& rcBBox, + const CPWL_Color& crText); + static CFX_ByteString GetAppStream_Diamond(const CFX_FloatRect& rcBBox, + const CPWL_Color& crText); + static CFX_ByteString GetAppStream_Square(const CFX_FloatRect& rcBBox, + const CPWL_Color& crText); + static CFX_ByteString GetAppStream_Star(const CFX_FloatRect& rcBBox, + const CPWL_Color& crText); + + static CFX_ByteString GetAP_Check(const CFX_FloatRect& crBBox); + static CFX_ByteString GetAP_Circle(const CFX_FloatRect& crBBox); + static CFX_ByteString GetAP_Cross(const CFX_FloatRect& crBBox); + static CFX_ByteString GetAP_Diamond(const CFX_FloatRect& crBBox); + static CFX_ByteString GetAP_Square(const CFX_FloatRect& crBBox); + static CFX_ByteString GetAP_Star(const CFX_FloatRect& crBBox); + static CFX_ByteString GetAP_HalfCircle(const CFX_FloatRect& crBBox, + FX_FLOAT fRotate); + + static void GetGraphics_Checkmark(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Circle(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Comment(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Cross(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Help(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_InsertText(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Key(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_NewParagraph(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_TextNote(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Paragraph(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_RightArrow(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_RightPointer(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Star(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_UpArrow(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_UpLeftArrow(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Graph(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Paperclip(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Attachment(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Tag(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); + static void GetGraphics_Foxit(CFX_ByteString& sPathData, + CFX_PathData& path, + const CFX_FloatRect& crBBox, + const PWL_PATH_TYPE type); +}; + +#endif // FPDFSDK_PDFWINDOW_PWL_UTILS_H_ |