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 #ifndef _PWL_UTILS_H_ | 7 #ifndef _PWL_UTILS_H_ |
8 #define _PWL_UTILS_H_ | 8 #define _PWL_UTILS_H_ |
9 | 9 |
10 template<class T> T PWL_MIN (const T & i, const T & j) { return ((i < j) ? i : j
); } | 10 template <class T> |
11 template<class T> T PWL_MAX (const T & i, const T & j) { return ((i > j) ? i : j
); } | 11 T PWL_MIN(const T& i, const T& j) { |
12 | 12 return ((i < j) ? i : j); |
13 #define PWL_PDF2WIN(color)» » » » » (FX_BYTE(color*2
55)) | 13 } |
14 #define PWL_WIN2PDF(color)» » » » » ((FX_FLOAT)((FX_
FLOAT)color/255.0f)) | 14 template <class T> |
15 | 15 T PWL_MAX(const T& i, const T& j) { |
16 #define PWL_MAKEDWORD(low,high)»» » » ((FX_DWORD)((FX_WORD)(lo
w) | (FX_DWORD)(((FX_WORD)(high))<<16))) | 16 return ((i > j) ? i : j); |
17 #define PWL_GETLOWWORD(dword)» » » » ((FX_WORD)(dword)) | 17 } |
18 #define PWL_GETHIGHWORD(dword)» » » » ((FX_WORD)(dword>>16)) | 18 |
19 | 19 #define PWL_PDF2WIN(color) (FX_BYTE(color * 255)) |
20 #define PWL_ICONTYPE_CHECKMARK» » » » 0 | 20 #define PWL_WIN2PDF(color) ((FX_FLOAT)((FX_FLOAT)color / 255.0f)) |
21 #define PWL_ICONTYPE_CIRCLE» » » » » 1 | 21 |
22 #define PWL_ICONTYPE_COMMENT» » » » 2 | 22 #define PWL_MAKEDWORD(low, high) \ |
23 #define PWL_ICONTYPE_CROSS» » » » » 3 | 23 ((FX_DWORD)((FX_WORD)(low) | (FX_DWORD)(((FX_WORD)(high)) << 16))) |
24 #define PWL_ICONTYPE_HELP» » » » » 4 | 24 #define PWL_GETLOWWORD(dword) ((FX_WORD)(dword)) |
25 #define PWL_ICONTYPE_INSERTTEXT»» » » 5 | 25 #define PWL_GETHIGHWORD(dword) ((FX_WORD)(dword >> 16)) |
26 #define PWL_ICONTYPE_KEY» » » » » 6 | 26 |
27 #define PWL_ICONTYPE_NEWPARAGRAPH» » » 7 | 27 #define PWL_ICONTYPE_CHECKMARK 0 |
28 #define PWL_ICONTYPE_TEXTNOTE» » » » 8 | 28 #define PWL_ICONTYPE_CIRCLE 1 |
29 #define PWL_ICONTYPE_PARAGRAPH» » » » 9 | 29 #define PWL_ICONTYPE_COMMENT 2 |
30 #define PWL_ICONTYPE_RIGHTARROW»» » » 10 | 30 #define PWL_ICONTYPE_CROSS 3 |
31 #define PWL_ICONTYPE_RIGHTPOINTER» » » 11 | 31 #define PWL_ICONTYPE_HELP 4 |
32 #define PWL_ICONTYPE_STAR» » » » » 12 | 32 #define PWL_ICONTYPE_INSERTTEXT 5 |
33 #define PWL_ICONTYPE_UPARROW» » » » 13 | 33 #define PWL_ICONTYPE_KEY 6 |
34 #define PWL_ICONTYPE_UPLEFTARROW» » » 14 | 34 #define PWL_ICONTYPE_NEWPARAGRAPH 7 |
35 | 35 #define PWL_ICONTYPE_TEXTNOTE 8 |
36 #define PWL_ICONTYPE_GRAPH» » » » » 15 | 36 #define PWL_ICONTYPE_PARAGRAPH 9 |
37 #define PWL_ICONTYPE_PAPERCLIP» » » » 16 | 37 #define PWL_ICONTYPE_RIGHTARROW 10 |
38 #define PWL_ICONTYPE_ATTACHMENT»» » » 17 | 38 #define PWL_ICONTYPE_RIGHTPOINTER 11 |
39 #define PWL_ICONTYPE_TAG» » » » » 18 | 39 #define PWL_ICONTYPE_STAR 12 |
40 | 40 #define PWL_ICONTYPE_UPARROW 13 |
41 #define PWL_ICONTYPE_FOXIT» » » » » 19 | 41 #define PWL_ICONTYPE_UPLEFTARROW 14 |
42 | 42 |
43 #define PWL_ICONTYPE_UNKNOWN» » » » -1 | 43 #define PWL_ICONTYPE_GRAPH 15 |
44 | 44 #define PWL_ICONTYPE_PAPERCLIP 16 |
45 //checkbox & radiobutton style | 45 #define PWL_ICONTYPE_ATTACHMENT 17 |
46 #define PCS_CHECK» » » » » » » 0 | 46 #define PWL_ICONTYPE_TAG 18 |
47 #define PCS_CIRCLE» » » » » » » 1 | 47 |
48 #define PCS_CROSS» » » » » » » 2 | 48 #define PWL_ICONTYPE_FOXIT 19 |
49 #define PCS_DIAMOND» » » » » » » 3 | 49 |
50 #define PCS_SQUARE» » » » » » » 4 | 50 #define PWL_ICONTYPE_UNKNOWN -1 |
51 #define PCS_STAR» » » » » » » 5 | 51 |
52 | 52 // checkbox & radiobutton style |
53 #define»PWL_PI» » » » » » » » 3.141592
65358979f | 53 #define PCS_CHECK 0 |
54 #define PWL_BEZIER» » » » » » » 0.552284
7498308f | 54 #define PCS_CIRCLE 1 |
55 | 55 #define PCS_CROSS 2 |
56 //pushbutton layout style | 56 #define PCS_DIAMOND 3 |
57 #define PPBL_LABEL» » » » » » » 0 | 57 #define PCS_SQUARE 4 |
58 #define PPBL_ICON» » » » » » » 1 | 58 #define PCS_STAR 5 |
59 #define PPBL_ICONTOPLABELBOTTOM»» » » 2 | 59 |
60 #define»PPBL_LABELTOPICONBOTTOM»» » » 3 | 60 #define PWL_PI 3.14159265358979f |
61 #define»PPBL_ICONLEFTLABELRIGHT»» » » 4 | 61 #define PWL_BEZIER 0.5522847498308f |
62 #define PPBL_LABELLEFTICONRIGHT»» » » 5 | 62 |
63 #define PPBL_LABELOVERICON» » » » » 6 | 63 // pushbutton layout style |
64 | 64 #define PPBL_LABEL 0 |
65 class CPWL_Point : public CPDF_Point | 65 #define PPBL_ICON 1 |
66 { | 66 #define PPBL_ICONTOPLABELBOTTOM 2 |
67 public: | 67 #define PPBL_LABELTOPICONBOTTOM 3 |
68 » CPWL_Point() : CPDF_Point(0.0f,0.0f){} | 68 #define PPBL_ICONLEFTLABELRIGHT 4 |
69 » CPWL_Point(FX_FLOAT fx, FX_FLOAT fy) : CPDF_Point(fx,fy) {} | 69 #define PPBL_LABELLEFTICONRIGHT 5 |
70 » CPWL_Point(const CPWL_Point& point) : CPDF_Point(point.x, point.y) {} | 70 #define PPBL_LABELOVERICON 6 |
| 71 |
| 72 class CPWL_Point : public CPDF_Point { |
| 73 public: |
| 74 CPWL_Point() : CPDF_Point(0.0f, 0.0f) {} |
| 75 CPWL_Point(FX_FLOAT fx, FX_FLOAT fy) : CPDF_Point(fx, fy) {} |
| 76 CPWL_Point(const CPWL_Point& point) : CPDF_Point(point.x, point.y) {} |
71 }; | 77 }; |
72 | 78 |
73 enum PWL_PATHDATA_TYPE | 79 enum PWL_PATHDATA_TYPE { |
74 { | 80 PWLPT_MOVETO, |
75 » PWLPT_MOVETO, | 81 PWLPT_LINETO, |
76 » PWLPT_LINETO, | 82 PWLPT_BEZIERTO, |
77 » PWLPT_BEZIERTO, | 83 PWLPT_UNKNOWN |
78 » PWLPT_UNKNOWN | |
79 }; | 84 }; |
80 | 85 |
81 enum PWL_PATH_TYPE | 86 enum PWL_PATH_TYPE { PWLPT_PATHDATA, PWLPT_STREAM }; |
82 { | 87 |
83 » PWLPT_PATHDATA, | 88 class CPWL_PathData { |
84 » PWLPT_STREAM | 89 public: |
| 90 CPWL_PathData() : point(), type(PWLPT_UNKNOWN) {} |
| 91 CPWL_PathData(const CPWL_Point& pt, PWL_PATHDATA_TYPE tp) |
| 92 : point(pt), type(tp) {} |
| 93 |
| 94 CPWL_Point point; |
| 95 PWL_PATHDATA_TYPE type; |
85 }; | 96 }; |
86 | 97 |
87 class CPWL_PathData | 98 class IPWL_SpellCheck; |
88 { | 99 |
89 public: | 100 class PWL_CLASS CPWL_Utils { |
90 CPWL_PathData() : point(), type(PWLPT_UNKNOWN){} | 101 public: |
91 CPWL_PathData(const CPWL_Point& pt, PWL_PATHDATA_TYPE tp) : point(pt), t
ype(tp) {} | 102 static CPDF_Rect InflateRect(const CPDF_Rect& rcRect, FX_FLOAT fSize); |
92 | 103 static CPDF_Rect DeflateRect(const CPDF_Rect& rcRect, FX_FLOAT fSize); |
93 CPWL_Point
point; | 104 static FX_BOOL IntersectRect(const CPDF_Rect& rect1, const CPDF_Rect& rect2); |
94 PWL_PATHDATA_TYPE type; | 105 static FX_BOOL ContainsRect(const CPDF_Rect& rcParent, |
| 106 const CPDF_Rect& rcChild); |
| 107 static CPDF_Rect ScaleRect(const CPDF_Rect& rcRect, FX_FLOAT fScale); |
| 108 static CPVT_WordRange OverlapWordRange(const CPVT_WordRange& wr1, |
| 109 const CPVT_WordRange& wr2); |
| 110 static CPDF_Rect GetCenterSquare(const CPDF_Rect& rect); |
| 111 static CPWL_Color SubstractColor(const CPWL_Color& sColor, |
| 112 FX_FLOAT fColorSub); |
| 113 static CPWL_Color DevideColor(const CPWL_Color& sColor, |
| 114 FX_FLOAT fColorDevide); |
| 115 static CPDF_Rect MaxRect(const CPDF_Rect& rect1, const CPDF_Rect& rect2); |
| 116 static CPDF_Rect OffsetRect(const CPDF_Rect& rect, FX_FLOAT x, FX_FLOAT y); |
| 117 static CPDF_Point OffsetPoint(const CPDF_Point& point, |
| 118 FX_FLOAT x, |
| 119 FX_FLOAT y); |
| 120 static FX_COLORREF PWLColorToFXColor(const CPWL_Color& color, |
| 121 FX_INT32 nTransparancy = 255); |
| 122 static FX_BOOL IsBlackOrWhite(const CPWL_Color& color); |
| 123 static CPWL_Color GetReverseColor(const CPWL_Color& color); |
| 124 |
| 125 static CFX_ByteString GetColorAppStream(const CPWL_Color& color, |
| 126 const FX_BOOL& bFillOrStroke = TRUE); |
| 127 static CFX_ByteString GetBorderAppStream(const CPDF_Rect& rect, |
| 128 FX_FLOAT fWidth, |
| 129 const CPWL_Color& color, |
| 130 const CPWL_Color& crLeftTop, |
| 131 const CPWL_Color& crRightBottom, |
| 132 FX_INT32 nStyle, |
| 133 const CPWL_Dash& dash); |
| 134 static CFX_ByteString GetCircleBorderAppStream( |
| 135 const CPDF_Rect& rect, |
| 136 FX_FLOAT fWidth, |
| 137 const CPWL_Color& color, |
| 138 const CPWL_Color& crLeftTop, |
| 139 const CPWL_Color& crRightBottom, |
| 140 FX_INT32 nStyle, |
| 141 const CPWL_Dash& dash); |
| 142 static CFX_ByteString GetRectFillAppStream(const CPDF_Rect& rect, |
| 143 const CPWL_Color& color); |
| 144 static CFX_ByteString GetCircleFillAppStream(const CPDF_Rect& rect, |
| 145 const CPWL_Color& color); |
| 146 |
| 147 static CFX_ByteString GetPushButtonAppStream(const CPDF_Rect& rcBBox, |
| 148 IFX_Edit_FontMap* pFontMap, |
| 149 CPDF_Stream* pIconStream, |
| 150 CPDF_IconFit& IconFit, |
| 151 const CFX_WideString& sLabel, |
| 152 const CPWL_Color& crText, |
| 153 FX_FLOAT fFontSize, |
| 154 FX_INT32 nLayOut); |
| 155 static CFX_ByteString GetCheckBoxAppStream(const CPDF_Rect& rcBBox, |
| 156 FX_INT32 nStyle, |
| 157 const CPWL_Color& crText); |
| 158 static CFX_ByteString GetRadioButtonAppStream(const CPDF_Rect& rcBBox, |
| 159 FX_INT32 nStyle, |
| 160 const CPWL_Color& crText); |
| 161 |
| 162 static CFX_ByteString GetEditAppStream(IFX_Edit* pEdit, |
| 163 const CPDF_Point& ptOffset, |
| 164 const CPVT_WordRange* pRange = NULL, |
| 165 FX_BOOL bContinuous = TRUE, |
| 166 FX_WORD SubWord = 0); |
| 167 static CFX_ByteString GetEditSelAppStream( |
| 168 IFX_Edit* pEdit, |
| 169 const CPDF_Point& ptOffset, |
| 170 const CPVT_WordRange* pRange = NULL); |
| 171 static CFX_ByteString GetSpellCheckAppStream( |
| 172 IFX_Edit* pEdit, |
| 173 IPWL_SpellCheck* pSpellCheck, |
| 174 const CPDF_Point& ptOffset, |
| 175 const CPVT_WordRange* pRange = NULL); |
| 176 static CFX_ByteString GetTextAppStream(const CPDF_Rect& rcBBox, |
| 177 IFX_Edit_FontMap* pFontMap, |
| 178 const CFX_WideString& sText, |
| 179 FX_INT32 nAlignmentH, |
| 180 FX_INT32 nAlignmentV, |
| 181 FX_FLOAT fFontSize, |
| 182 FX_BOOL bMultiLine, |
| 183 FX_BOOL bAutoReturn, |
| 184 const CPWL_Color& crText); |
| 185 static CFX_ByteString GetDropButtonAppStream(const CPDF_Rect& rcBBox); |
| 186 |
| 187 static void DrawFillRect(CFX_RenderDevice* pDevice, |
| 188 CPDF_Matrix* pUser2Device, |
| 189 const CPDF_Rect& rect, |
| 190 const CPWL_Color& color, |
| 191 FX_INT32 nTransparancy); |
| 192 static void DrawFillRect(CFX_RenderDevice* pDevice, |
| 193 CPDF_Matrix* pUser2Device, |
| 194 const CPDF_Rect& rect, |
| 195 const FX_COLORREF& color); |
| 196 static void DrawStrokeRect(CFX_RenderDevice* pDevice, |
| 197 CPDF_Matrix* pUser2Device, |
| 198 const CPDF_Rect& rect, |
| 199 const FX_COLORREF& color, |
| 200 FX_FLOAT fWidth); |
| 201 static void DrawStrokeLine(CFX_RenderDevice* pDevice, |
| 202 CPDF_Matrix* pUser2Device, |
| 203 const CPDF_Point& ptMoveTo, |
| 204 const CPDF_Point& ptLineTo, |
| 205 const FX_COLORREF& color, |
| 206 FX_FLOAT fWidth); |
| 207 static void DrawBorder(CFX_RenderDevice* pDevice, |
| 208 CPDF_Matrix* pUser2Device, |
| 209 const CPDF_Rect& rect, |
| 210 FX_FLOAT fWidth, |
| 211 const CPWL_Color& color, |
| 212 const CPWL_Color& crLeftTop, |
| 213 const CPWL_Color& crRightBottom, |
| 214 FX_INT32 nStyle, |
| 215 const CPWL_Dash& dash, |
| 216 FX_INT32 nTransparancy); |
| 217 static void DrawFillArea(CFX_RenderDevice* pDevice, |
| 218 CPDF_Matrix* pUser2Device, |
| 219 const CPDF_Point* pPts, |
| 220 FX_INT32 nCount, |
| 221 const FX_COLORREF& color); |
| 222 static void DrawShadow(CFX_RenderDevice* pDevice, |
| 223 CPDF_Matrix* pUser2Device, |
| 224 FX_BOOL bVertical, |
| 225 FX_BOOL bHorizontal, |
| 226 CPDF_Rect rect, |
| 227 FX_INT32 nTransparancy, |
| 228 FX_INT32 nStartGray, |
| 229 FX_INT32 nEndGray); |
| 230 static void DrawEditSpellCheck(CFX_RenderDevice* pDevice, |
| 231 CPDF_Matrix* pUser2Device, |
| 232 IFX_Edit* pEdit, |
| 233 const CPDF_Rect& rcClip, |
| 234 const CPDF_Point& ptOffset, |
| 235 const CPVT_WordRange* pRange, |
| 236 IPWL_SpellCheck* pSpellCheck); |
| 237 |
| 238 public: |
| 239 static void ConvertCMYK2RGB(FX_FLOAT dC, |
| 240 FX_FLOAT dM, |
| 241 FX_FLOAT dY, |
| 242 FX_FLOAT dK, |
| 243 FX_FLOAT& dR, |
| 244 FX_FLOAT& dG, |
| 245 FX_FLOAT& dB); |
| 246 static void ConvertRGB2CMYK(FX_FLOAT dR, |
| 247 FX_FLOAT dG, |
| 248 FX_FLOAT dB, |
| 249 FX_FLOAT& dC, |
| 250 FX_FLOAT& dM, |
| 251 FX_FLOAT& dY, |
| 252 FX_FLOAT& dK); |
| 253 |
| 254 static void ConvertRGB2GRAY(FX_FLOAT dR, |
| 255 FX_FLOAT dG, |
| 256 FX_FLOAT dB, |
| 257 FX_FLOAT& dGray); |
| 258 static void ConvertGRAY2RGB(FX_FLOAT dGray, |
| 259 FX_FLOAT& dR, |
| 260 FX_FLOAT& dG, |
| 261 FX_FLOAT& dB); |
| 262 |
| 263 static void ConvertCMYK2GRAY(FX_FLOAT dC, |
| 264 FX_FLOAT dM, |
| 265 FX_FLOAT dY, |
| 266 FX_FLOAT dK, |
| 267 FX_FLOAT& dGray); |
| 268 static void ConvertGRAY2CMYK(FX_FLOAT dGray, |
| 269 FX_FLOAT& dC, |
| 270 FX_FLOAT& dM, |
| 271 FX_FLOAT& dY, |
| 272 FX_FLOAT& dK); |
| 273 |
| 274 static void PWLColorToARGB(const CPWL_Color& color, |
| 275 FX_INT32& alpha, |
| 276 FX_FLOAT& red, |
| 277 FX_FLOAT& green, |
| 278 FX_FLOAT& blue); |
| 279 |
| 280 public: |
| 281 static CFX_ByteString GetIconAppStream( |
| 282 FX_INT32 nType, |
| 283 const CPDF_Rect& rect, |
| 284 const CPWL_Color& crFill, |
| 285 const CPWL_Color& crStroke = PWL_DEFAULT_BLACKCOLOR); |
| 286 static void DrawIconAppStream(CFX_RenderDevice* pDevice, |
| 287 CPDF_Matrix* pUser2Device, |
| 288 FX_INT32 nType, |
| 289 const CPDF_Rect& rect, |
| 290 const CPWL_Color& crFill, |
| 291 const CPWL_Color& crStroke, |
| 292 const FX_INT32 nTransparancy); |
| 293 |
| 294 private: |
| 295 static CFX_ByteString GetAppStreamFromArray(const CPWL_PathData* pPathData, |
| 296 FX_INT32 nCount); |
| 297 static void GetPathDataFromArray(CFX_PathData& path, |
| 298 const CPWL_PathData* pPathData, |
| 299 FX_INT32 nCount); |
| 300 |
| 301 static CFX_ByteString GetAppStream_Check(const CPDF_Rect& rcBBox, |
| 302 const CPWL_Color& crText); |
| 303 static CFX_ByteString GetAppStream_Circle(const CPDF_Rect& rcBBox, |
| 304 const CPWL_Color& crText); |
| 305 static CFX_ByteString GetAppStream_Cross(const CPDF_Rect& rcBBox, |
| 306 const CPWL_Color& crText); |
| 307 static CFX_ByteString GetAppStream_Diamond(const CPDF_Rect& rcBBox, |
| 308 const CPWL_Color& crText); |
| 309 static CFX_ByteString GetAppStream_Square(const CPDF_Rect& rcBBox, |
| 310 const CPWL_Color& crText); |
| 311 static CFX_ByteString GetAppStream_Star(const CPDF_Rect& rcBBox, |
| 312 const CPWL_Color& crText); |
| 313 |
| 314 static CFX_ByteString GetAP_Check(const CPDF_Rect& crBBox); |
| 315 static CFX_ByteString GetAP_Circle(const CPDF_Rect& crBBox); |
| 316 static CFX_ByteString GetAP_Cross(const CPDF_Rect& crBBox); |
| 317 static CFX_ByteString GetAP_Diamond(const CPDF_Rect& crBBox); |
| 318 static CFX_ByteString GetAP_Square(const CPDF_Rect& crBBox); |
| 319 static CFX_ByteString GetAP_Star(const CPDF_Rect& crBBox); |
| 320 static CFX_ByteString GetAP_HalfCircle(const CPDF_Rect& crBBox, |
| 321 FX_FLOAT fRotate); |
| 322 |
| 323 static void GetGraphics_Checkmark(CFX_ByteString& sPathData, |
| 324 CFX_PathData& path, |
| 325 const CPDF_Rect& crBBox, |
| 326 const PWL_PATH_TYPE type); |
| 327 static void GetGraphics_Circle(CFX_ByteString& sPathData, |
| 328 CFX_PathData& path, |
| 329 const CPDF_Rect& crBBox, |
| 330 const PWL_PATH_TYPE type); |
| 331 static void GetGraphics_Comment(CFX_ByteString& sPathData, |
| 332 CFX_PathData& path, |
| 333 const CPDF_Rect& crBBox, |
| 334 const PWL_PATH_TYPE type); |
| 335 static void GetGraphics_Cross(CFX_ByteString& sPathData, |
| 336 CFX_PathData& path, |
| 337 const CPDF_Rect& crBBox, |
| 338 const PWL_PATH_TYPE type); |
| 339 static void GetGraphics_Help(CFX_ByteString& sPathData, |
| 340 CFX_PathData& path, |
| 341 const CPDF_Rect& crBBox, |
| 342 const PWL_PATH_TYPE type); |
| 343 static void GetGraphics_InsertText(CFX_ByteString& sPathData, |
| 344 CFX_PathData& path, |
| 345 const CPDF_Rect& crBBox, |
| 346 const PWL_PATH_TYPE type); |
| 347 static void GetGraphics_Key(CFX_ByteString& sPathData, |
| 348 CFX_PathData& path, |
| 349 const CPDF_Rect& crBBox, |
| 350 const PWL_PATH_TYPE type); |
| 351 static void GetGraphics_NewParagraph(CFX_ByteString& sPathData, |
| 352 CFX_PathData& path, |
| 353 const CPDF_Rect& crBBox, |
| 354 const PWL_PATH_TYPE type); |
| 355 static void GetGraphics_TextNote(CFX_ByteString& sPathData, |
| 356 CFX_PathData& path, |
| 357 const CPDF_Rect& crBBox, |
| 358 const PWL_PATH_TYPE type); |
| 359 static void GetGraphics_Paragraph(CFX_ByteString& sPathData, |
| 360 CFX_PathData& path, |
| 361 const CPDF_Rect& crBBox, |
| 362 const PWL_PATH_TYPE type); |
| 363 static void GetGraphics_RightArrow(CFX_ByteString& sPathData, |
| 364 CFX_PathData& path, |
| 365 const CPDF_Rect& crBBox, |
| 366 const PWL_PATH_TYPE type); |
| 367 static void GetGraphics_RightPointer(CFX_ByteString& sPathData, |
| 368 CFX_PathData& path, |
| 369 const CPDF_Rect& crBBox, |
| 370 const PWL_PATH_TYPE type); |
| 371 static void GetGraphics_Star(CFX_ByteString& sPathData, |
| 372 CFX_PathData& path, |
| 373 const CPDF_Rect& crBBox, |
| 374 const PWL_PATH_TYPE type); |
| 375 static void GetGraphics_UpArrow(CFX_ByteString& sPathData, |
| 376 CFX_PathData& path, |
| 377 const CPDF_Rect& crBBox, |
| 378 const PWL_PATH_TYPE type); |
| 379 static void GetGraphics_UpLeftArrow(CFX_ByteString& sPathData, |
| 380 CFX_PathData& path, |
| 381 const CPDF_Rect& crBBox, |
| 382 const PWL_PATH_TYPE type); |
| 383 static void GetGraphics_Graph(CFX_ByteString& sPathData, |
| 384 CFX_PathData& path, |
| 385 const CPDF_Rect& crBBox, |
| 386 const PWL_PATH_TYPE type); |
| 387 static void GetGraphics_Paperclip(CFX_ByteString& sPathData, |
| 388 CFX_PathData& path, |
| 389 const CPDF_Rect& crBBox, |
| 390 const PWL_PATH_TYPE type); |
| 391 static void GetGraphics_Attachment(CFX_ByteString& sPathData, |
| 392 CFX_PathData& path, |
| 393 const CPDF_Rect& crBBox, |
| 394 const PWL_PATH_TYPE type); |
| 395 static void GetGraphics_Tag(CFX_ByteString& sPathData, |
| 396 CFX_PathData& path, |
| 397 const CPDF_Rect& crBBox, |
| 398 const PWL_PATH_TYPE type); |
| 399 static void GetGraphics_Foxit(CFX_ByteString& sPathData, |
| 400 CFX_PathData& path, |
| 401 const CPDF_Rect& crBBox, |
| 402 const PWL_PATH_TYPE type); |
95 }; | 403 }; |
96 | 404 |
97 class IPWL_SpellCheck; | 405 #endif // !defined(AFX_PWL_UTILS_H__D32812AD_A875_4E08_9D3C_0A57020987C6__INCLU
DED_) |
98 | |
99 class PWL_CLASS CPWL_Utils | |
100 { | |
101 public: | |
102 static CPDF_Rect InflateR
ect(const CPDF_Rect& rcRect, FX_FLOAT fSize); | |
103 static CPDF_Rect DeflateR
ect(const CPDF_Rect& rcRect, FX_FLOAT fSize); | |
104 static FX_BOOL Intersec
tRect(const CPDF_Rect& rect1, const CPDF_Rect& rect2); | |
105 static FX_BOOL Contains
Rect(const CPDF_Rect& rcParent, const CPDF_Rect& rcChild); | |
106 static CPDF_Rect ScaleRec
t(const CPDF_Rect& rcRect,FX_FLOAT fScale); | |
107 static CPVT_WordRange OverlapWordRange
(const CPVT_WordRange& wr1, const CPVT_WordRange& wr2); | |
108 static CPDF_Rect GetCente
rSquare(const CPDF_Rect & rect); | |
109 static CPWL_Color Substrac
tColor(const CPWL_Color & sColor,FX_FLOAT fColorSub); | |
110 static CPWL_Color DevideCo
lor(const CPWL_Color & sColor,FX_FLOAT fColorDevide); | |
111 static CPDF_Rect MaxRect(
const CPDF_Rect & rect1,const CPDF_Rect & rect2); | |
112 static CPDF_Rect OffsetRe
ct(const CPDF_Rect & rect,FX_FLOAT x,FX_FLOAT y); | |
113 static CPDF_Point OffsetPo
int(const CPDF_Point & point,FX_FLOAT x,FX_FLOAT y); | |
114 static FX_COLORREF PWLColor
ToFXColor(const CPWL_Color& color, FX_INT32 nTransparancy = 255); | |
115 static FX_BOOL IsBlackO
rWhite(const CPWL_Color& color); | |
116 static CPWL_Color GetRever
seColor(const CPWL_Color& color); | |
117 | |
118 static CFX_ByteString GetColorAppStrea
m(const CPWL_Color & color,const FX_BOOL & bFillOrStroke = TRUE); | |
119 static CFX_ByteString GetBorderAppStre
am(const CPDF_Rect & rect, FX_FLOAT fWidth, | |
120
const CPWL_Color & color, const CPWL_Color & crLeftTop, const CP
WL_Color & crRightBottom, | |
121
FX_INT32 nStyle, const CPWL_Dash & dash); | |
122 static CFX_ByteString GetCircleBorderA
ppStream(const CPDF_Rect & rect, FX_FLOAT fWidth, | |
123
const CPWL_Color & color, const CPWL_Color & crLeftTop, const CP
WL_Color & crRightBottom, | |
124
FX_INT32 nStyle, const CPWL_Dash & dash); | |
125 static CFX_ByteString GetRectFillAppSt
ream(const CPDF_Rect & rect,const CPWL_Color & color); | |
126 static CFX_ByteString GetCircleFillApp
Stream(const CPDF_Rect & rect,const CPWL_Color & color); | |
127 | |
128 static CFX_ByteString GetPushButtonApp
Stream(const CPDF_Rect & rcBBox, | |
129
IFX_Edit_FontMap * pFontMap, | |
130
CPDF_Stream * pIconStream, | |
131
CPDF_IconFit & IconFit, | |
132
const CFX_WideString & sLabel,
| |
133
const CPWL_Color & crText, | |
134
FX_FLOAT fFontSize, | |
135
FX_INT32 nLayOut); | |
136 static CFX_ByteString GetCheckBoxAppSt
ream(const CPDF_Rect & rcBBox, | |
137
FX_INT32 nStyle, | |
138
const CPWL_Color & crText); | |
139 static CFX_ByteString GetRadioButtonAp
pStream(const CPDF_Rect & rcBBox, | |
140
FX_INT32 nStyle, | |
141
const CPWL_Color & crText); | |
142 | |
143 static CFX_ByteString GetEditAppStream
(IFX_Edit* pEdit, const CPDF_Point & ptOffset, const CPVT_WordRange * pRange = N
ULL, | |
144
FX_BOOL bContinuous = TRUE, FX_WORD SubWord = 0)
; | |
145 static CFX_ByteString GetEditSelAppStr
eam(IFX_Edit* pEdit, const CPDF_Point & ptOffset, | |
146
const CPVT_WordRange * pRange = NULL); | |
147 static CFX_ByteString GetSpellCheckApp
Stream(IFX_Edit* pEdit, IPWL_SpellCheck* pSpellCheck, | |
148
const CPDF_Point & ptOffset, | |
149
const CPVT_WordRange * pRange = NULL); | |
150 static CFX_ByteString GetTextAppStream
(const CPDF_Rect & rcBBox,IFX_Edit_FontMap * pFontMap, | |
151
const CFX_WideString & sText, FX_INT32 nAlignmen
tH, FX_INT32 nAlignmentV, | |
152
FX_FLOAT fFontSize, FX_BOOL bMultiLine, FX_BOOL
bAutoReturn, const CPWL_Color & crText); | |
153 static CFX_ByteString GetDropButtonApp
Stream(const CPDF_Rect & rcBBox); | |
154 | |
155 static void
DrawFillRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,const CPDF_Rec
t & rect, | |
156
const CPWL_Color & color, FX_INT32 nTransparancy
); | |
157 static void
DrawFillRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, | |
158
const CPDF_Rect & rect,const FX_COLORREF & color
); | |
159 static void
DrawStrokeRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,const CPDF_R
ect & rect, | |
160
const FX_COLORREF & color, FX_FLOAT fWidth); | |
161 static void
DrawStrokeLine(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, | |
162
const CPDF_Point & ptMoveTo, const CPDF_Point &
ptLineTo, const FX_COLORREF & color, FX_FLOAT fWidth); | |
163 static void
DrawBorder(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, | |
164
const CPDF_Rect & rect, FX_FLOAT fWidth, | |
165
const CPWL_Color & color, const CPWL_Color & crLeftTop, const CP
WL_Color & crRightBottom, | |
166
FX_INT32 nStyle, const CPWL_Dash & dash, FX_INT32 nTransparancy)
; | |
167 static void
DrawFillArea(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, | |
168
const CPDF_Point* pPts, FX_INT32 nCount, const F
X_COLORREF& color); | |
169 static void
DrawShadow(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, | |
170
FX_BOOL bVertical, FX_BOOL bHorizontal, CPDF_Rec
t rect, | |
171
FX_INT32 nTransparancy, FX_INT32 nStartGray, FX_
INT32 nEndGray); | |
172 static void
DrawEditSpellCheck(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, IFX_Edi
t* pEdit, | |
173
const CPDF_Rect& rcClip, const CPDF_Point& ptOff
set, const CPVT_WordRange* pRange, | |
174
IPWL_SpellCheck* pSpellCheck); | |
175 public: | |
176 static void
ConvertCMYK2RGB(FX_FLOAT dC,FX_FLOAT dM,FX_FLOAT dY,FX_FLOAT dK,FX_FLOAT &dR,FX_
FLOAT &dG,FX_FLOAT &dB); | |
177 static void
ConvertRGB2CMYK(FX_FLOAT dR,FX_FLOAT dG,FX_FLOAT dB,FX_FLOAT &dC,FX_FLOAT &dM,FX
_FLOAT &dY,FX_FLOAT &dK); | |
178 | |
179 static void
ConvertRGB2GRAY(FX_FLOAT dR,FX_FLOAT dG,FX_FLOAT dB,FX_FLOAT &dGray); | |
180 static void
ConvertGRAY2RGB(FX_FLOAT dGray,FX_FLOAT &dR,FX_FLOAT &dG,FX_FLOAT &dB); | |
181 | |
182 static void
ConvertCMYK2GRAY(FX_FLOAT dC,FX_FLOAT dM,FX_FLOAT dY,FX_FLOAT dK,FX_FLOAT &dGray
); | |
183 static void
ConvertGRAY2CMYK(FX_FLOAT dGray,FX_FLOAT &dC,FX_FLOAT &dM,FX_FLOAT &dY,FX_FLOAT
&dK); | |
184 | |
185 static void
PWLColorToARGB(const CPWL_Color& color, FX_INT32& alpha, FX_FLOAT& red, FX_FLOAT
& green, FX_FLOAT& blue); | |
186 | |
187 public: | |
188 static CFX_ByteString GetIconAppStream
(FX_INT32 nType, const CPDF_Rect& rect, const CPWL_Color& crFill, | |
189
const CPWL_Color& crStroke = PWL_DEFAULT_BLACKCOLOR); | |
190 static void
DrawIconAppStream(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, | |
191
FX_INT32 nType, const CPDF_Rect & rect, const CPWL_Color& crFill
, | |
192
const CPWL_Color& crStroke, const FX_INT32 nTransparancy); | |
193 | |
194 private: | |
195 static CFX_ByteString GetAppStreamFrom
Array(const CPWL_PathData* pPathData, FX_INT32 nCount); | |
196 static void
GetPathDataFromArray(CFX_PathData& path, const CPWL_PathData* pPathData, FX_INT3
2 nCount); | |
197 | |
198 static CFX_ByteString GetAppStream_Che
ck(const CPDF_Rect & rcBBox, const CPWL_Color & crText); | |
199 static CFX_ByteString GetAppStream_Cir
cle(const CPDF_Rect & rcBBox, const CPWL_Color & crText); | |
200 static CFX_ByteString GetAppStream_Cro
ss(const CPDF_Rect & rcBBox, const CPWL_Color & crText); | |
201 static CFX_ByteString GetAppStream_Dia
mond(const CPDF_Rect & rcBBox, const CPWL_Color & crText); | |
202 static CFX_ByteString GetAppStream_Squ
are(const CPDF_Rect & rcBBox, const CPWL_Color & crText); | |
203 static CFX_ByteString GetAppStream_Sta
r(const CPDF_Rect & rcBBox, const CPWL_Color & crText); | |
204 | |
205 static CFX_ByteString GetAP_Check(cons
t CPDF_Rect & crBBox); | |
206 static CFX_ByteString GetAP_Circle(con
st CPDF_Rect & crBBox); | |
207 static CFX_ByteString GetAP_Cross(cons
t CPDF_Rect & crBBox); | |
208 static CFX_ByteString GetAP_Diamond(co
nst CPDF_Rect & crBBox); | |
209 static CFX_ByteString GetAP_Square(con
st CPDF_Rect & crBBox); | |
210 static CFX_ByteString GetAP_Star(const
CPDF_Rect & crBBox); | |
211 static CFX_ByteString GetAP_HalfCircle
(const CPDF_Rect & crBBox,FX_FLOAT fRotate); | |
212 | |
213 static void
GetGraphics_Checkmark(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_
Rect& crBBox, const PWL_PATH_TYPE type); | |
214 static void
GetGraphics_Circle(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rec
t& crBBox, const PWL_PATH_TYPE type); | |
215 static void
GetGraphics_Comment(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Re
ct& crBBox, const PWL_PATH_TYPE type); | |
216 static void
GetGraphics_Cross(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect
& crBBox, const PWL_PATH_TYPE type); | |
217 static void
GetGraphics_Help(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect&
crBBox, const PWL_PATH_TYPE type); | |
218 static void
GetGraphics_InsertText(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF
_Rect& crBBox, const PWL_PATH_TYPE type); | |
219 static void
GetGraphics_Key(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect&
crBBox, const PWL_PATH_TYPE type); | |
220 static void
GetGraphics_NewParagraph(CFX_ByteString& sPathData, CFX_PathData& path, const CP
DF_Rect& crBBox, const PWL_PATH_TYPE type); | |
221 static void
GetGraphics_TextNote(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_R
ect& crBBox, const PWL_PATH_TYPE type); | |
222 static void
GetGraphics_Paragraph(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_
Rect& crBBox, const PWL_PATH_TYPE type); | |
223 static void
GetGraphics_RightArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF
_Rect& crBBox, const PWL_PATH_TYPE type); | |
224 static void
GetGraphics_RightPointer(CFX_ByteString& sPathData, CFX_PathData& path, const CP
DF_Rect& crBBox, const PWL_PATH_TYPE type); | |
225 static void
GetGraphics_Star(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect&
crBBox, const PWL_PATH_TYPE type); | |
226 static void
GetGraphics_UpArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Re
ct& crBBox, const PWL_PATH_TYPE type); | |
227 static void
GetGraphics_UpLeftArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPD
F_Rect& crBBox, const PWL_PATH_TYPE type); | |
228 static void
GetGraphics_Graph(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect
& crBBox, const PWL_PATH_TYPE type); | |
229 static void
GetGraphics_Paperclip(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_
Rect& crBBox, const PWL_PATH_TYPE type); | |
230 static void
GetGraphics_Attachment(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF
_Rect& crBBox, const PWL_PATH_TYPE type); | |
231 static void
GetGraphics_Tag(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect&
crBBox, const PWL_PATH_TYPE type); | |
232 static void
GetGraphics_Foxit(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect
& crBBox, const PWL_PATH_TYPE type); | |
233 }; | |
234 | |
235 #endif // !defined(AFX_PWL_UTILS_H__D32812AD_A875_4E08_9D3C_0A57020987C6__INCLUD
ED_) | |
236 | |
237 | |
OLD | NEW |