| 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 XFA_INCLUDE_FXGRAPHICS_FX_GRAPHICS_H_ | 7 #ifndef XFA_INCLUDE_FXGRAPHICS_FX_GRAPHICS_H_ |
| 8 #define XFA_INCLUDE_FXGRAPHICS_FX_GRAPHICS_H_ | 8 #define XFA_INCLUDE_FXGRAPHICS_FX_GRAPHICS_H_ |
| 9 | 9 |
| 10 #include "core/include/fpdfapi/fpdf_pageobj.h" | 10 #include "core/include/fpdfapi/fpdf_pageobj.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 typedef int32_t FX_DeviceCap; | 94 typedef int32_t FX_DeviceCap; |
| 95 typedef int32_t FX_FillMode; | 95 typedef int32_t FX_FillMode; |
| 96 class CFX_RenderDevice; | 96 class CFX_RenderDevice; |
| 97 class CFX_GraphStateData; | 97 class CFX_GraphStateData; |
| 98 class CFX_Matrix; | 98 class CFX_Matrix; |
| 99 class CFX_DIBSource; | 99 class CFX_DIBSource; |
| 100 class CFX_DIBitmap; | 100 class CFX_DIBitmap; |
| 101 class CFX_Font; | 101 class CFX_Font; |
| 102 class CFX_WideString; | 102 class CFX_WideString; |
| 103 class CFX_PathGenerator; | 103 class CFX_PathGenerator; |
| 104 class CAGG_Graphics; | |
| 105 class CFX_Graphics; | 104 class CFX_Graphics; |
| 106 class CFX_Color; | 105 class CFX_Color; |
| 107 class CFX_Path; | 106 class CFX_Path; |
| 108 class CFX_Pattern; | 107 class CFX_Pattern; |
| 109 class CFX_Shading; | 108 class CFX_Shading; |
| 109 |
| 110 class CAGG_Graphics { |
| 111 public: |
| 112 CAGG_Graphics(); |
| 113 virtual ~CAGG_Graphics(); |
| 114 |
| 115 FX_ERR Create(CFX_Graphics* owner, |
| 116 int32_t width, |
| 117 int32_t height, |
| 118 FXDIB_Format format); |
| 119 |
| 120 private: |
| 121 CFX_Graphics* m_owner; |
| 122 }; |
| 123 |
| 110 class CFX_Graphics { | 124 class CFX_Graphics { |
| 111 public: | 125 public: |
| 112 CFX_Graphics(); | 126 CFX_Graphics(); |
| 127 virtual ~CFX_Graphics(); |
| 113 | 128 |
| 114 FX_ERR Create(CFX_RenderDevice* renderDevice, FX_BOOL isAntialiasing = TRUE); | 129 FX_ERR Create(CFX_RenderDevice* renderDevice, FX_BOOL isAntialiasing = TRUE); |
| 115 | |
| 116 FX_ERR Create(int32_t width, | 130 FX_ERR Create(int32_t width, |
| 117 int32_t height, | 131 int32_t height, |
| 118 FXDIB_Format format, | 132 FXDIB_Format format, |
| 119 FX_BOOL isNative = TRUE, | 133 FX_BOOL isNative = TRUE, |
| 120 FX_BOOL isAntialiasing = TRUE); | 134 FX_BOOL isAntialiasing = TRUE); |
| 121 | 135 |
| 122 virtual ~CFX_Graphics(); | |
| 123 | |
| 124 FX_ERR GetDeviceCap(const int32_t capID, FX_DeviceCap& capVal); | 136 FX_ERR GetDeviceCap(const int32_t capID, FX_DeviceCap& capVal); |
| 125 FX_ERR IsPrinterDevice(FX_BOOL& isPrinter); | 137 FX_ERR IsPrinterDevice(FX_BOOL& isPrinter); |
| 126 FX_ERR EnableAntialiasing(FX_BOOL isAntialiasing); | 138 FX_ERR EnableAntialiasing(FX_BOOL isAntialiasing); |
| 127 | 139 |
| 128 FX_ERR SaveGraphState(); | 140 FX_ERR SaveGraphState(); |
| 129 | |
| 130 FX_ERR RestoreGraphState(); | 141 FX_ERR RestoreGraphState(); |
| 131 | 142 |
| 132 FX_ERR GetLineCap(CFX_GraphStateData::LineCap& lineCap); | 143 FX_ERR GetLineCap(CFX_GraphStateData::LineCap& lineCap) const; |
| 144 FX_ERR GetDashCount(int32_t& dashCount) const; |
| 145 FX_ERR GetLineDash(FX_FLOAT& dashPhase, FX_FLOAT* dashArray) const; |
| 146 FX_ERR GetLineJoin(CFX_GraphStateData::LineJoin& lineJoin) const; |
| 147 FX_ERR GetMiterLimit(FX_FLOAT& miterLimit) const; |
| 148 FX_ERR GetLineWidth(FX_FLOAT& lineWidth) const; |
| 149 FX_ERR GetStrokeAlignment(FX_StrokeAlignment& strokeAlignment) const; |
| 150 FX_ERR GetClipRect(CFX_RectF& rect) const; |
| 151 CFX_Matrix* GetMatrix(); |
| 152 CFX_RenderDevice* GetRenderDevice(); |
| 133 | 153 |
| 134 FX_ERR SetLineCap(CFX_GraphStateData::LineCap lineCap); | 154 FX_ERR SetLineCap(CFX_GraphStateData::LineCap lineCap); |
| 135 | |
| 136 FX_ERR GetDashCount(int32_t& dashCount); | |
| 137 | |
| 138 FX_ERR GetLineDash(FX_FLOAT& dashPhase, FX_FLOAT* dashArray); | |
| 139 | |
| 140 FX_ERR SetLineDash(FX_FLOAT dashPhase, | 155 FX_ERR SetLineDash(FX_FLOAT dashPhase, |
| 141 FX_FLOAT* dashArray, | 156 FX_FLOAT* dashArray, |
| 142 int32_t dashCount); | 157 int32_t dashCount); |
| 143 | |
| 144 FX_ERR SetLineDash(FX_DashStyle dashStyle); | 158 FX_ERR SetLineDash(FX_DashStyle dashStyle); |
| 145 | |
| 146 FX_ERR GetLineJoin(CFX_GraphStateData::LineJoin& lineJoin); | |
| 147 | |
| 148 FX_ERR SetLineJoin(CFX_GraphStateData::LineJoin lineJoin); | 159 FX_ERR SetLineJoin(CFX_GraphStateData::LineJoin lineJoin); |
| 149 | |
| 150 FX_ERR GetMiterLimit(FX_FLOAT& miterLimit); | |
| 151 | |
| 152 FX_ERR SetMiterLimit(FX_FLOAT miterLimit); | 160 FX_ERR SetMiterLimit(FX_FLOAT miterLimit); |
| 153 | |
| 154 FX_ERR GetLineWidth(FX_FLOAT& lineWidth); | |
| 155 | |
| 156 FX_ERR SetLineWidth(FX_FLOAT lineWidth, FX_BOOL isActOnDash = FALSE); | 161 FX_ERR SetLineWidth(FX_FLOAT lineWidth, FX_BOOL isActOnDash = FALSE); |
| 157 | |
| 158 FX_ERR GetStrokeAlignment(FX_StrokeAlignment& strokeAlignment); | |
| 159 | |
| 160 FX_ERR SetStrokeAlignment(FX_StrokeAlignment strokeAlignment); | 162 FX_ERR SetStrokeAlignment(FX_StrokeAlignment strokeAlignment); |
| 161 | |
| 162 FX_ERR SetStrokeColor(CFX_Color* color); | 163 FX_ERR SetStrokeColor(CFX_Color* color); |
| 163 | |
| 164 FX_ERR SetFillColor(CFX_Color* color); | 164 FX_ERR SetFillColor(CFX_Color* color); |
| 165 FX_ERR SetClipRect(const CFX_RectF& rect); |
| 166 FX_ERR SetFont(CFX_Font* font); |
| 167 FX_ERR SetFontSize(const FX_FLOAT size); |
| 168 FX_ERR SetFontHScale(const FX_FLOAT scale); |
| 169 FX_ERR SetCharSpacing(const FX_FLOAT spacing); |
| 170 FX_ERR SetTextDrawingMode(const int32_t mode); |
| 165 | 171 |
| 166 FX_ERR StrokePath(CFX_Path* path, CFX_Matrix* matrix = NULL); | 172 FX_ERR StrokePath(CFX_Path* path, CFX_Matrix* matrix = NULL); |
| 167 | |
| 168 FX_ERR FillPath(CFX_Path* path, | 173 FX_ERR FillPath(CFX_Path* path, |
| 169 FX_FillMode fillMode = FXFILL_WINDING, | 174 FX_FillMode fillMode = FXFILL_WINDING, |
| 170 CFX_Matrix* matrix = NULL); | 175 CFX_Matrix* matrix = NULL); |
| 171 | |
| 172 FX_ERR ClipPath(CFX_Path* path, | 176 FX_ERR ClipPath(CFX_Path* path, |
| 173 FX_FillMode fillMode = FXFILL_WINDING, | 177 FX_FillMode fillMode = FXFILL_WINDING, |
| 174 CFX_Matrix* matrix = NULL); | 178 CFX_Matrix* matrix = NULL); |
| 175 | |
| 176 FX_ERR DrawImage(CFX_DIBSource* source, | 179 FX_ERR DrawImage(CFX_DIBSource* source, |
| 177 const CFX_PointF& point, | 180 const CFX_PointF& point, |
| 178 CFX_Matrix* matrix = NULL); | 181 CFX_Matrix* matrix = NULL); |
| 179 | |
| 180 FX_ERR StretchImage(CFX_DIBSource* source, | 182 FX_ERR StretchImage(CFX_DIBSource* source, |
| 181 const CFX_RectF& rect, | 183 const CFX_RectF& rect, |
| 182 CFX_Matrix* matrix = NULL); | 184 CFX_Matrix* matrix = NULL); |
| 183 | |
| 184 FX_ERR ConcatMatrix(const CFX_Matrix* matrix); | 185 FX_ERR ConcatMatrix(const CFX_Matrix* matrix); |
| 185 | |
| 186 CFX_Matrix* GetMatrix(); | |
| 187 | |
| 188 FX_ERR GetClipRect(CFX_RectF& rect); | |
| 189 | |
| 190 FX_ERR SetClipRect(const CFX_RectF& rect); | |
| 191 | |
| 192 FX_ERR ClearClip(); | 186 FX_ERR ClearClip(); |
| 193 | |
| 194 FX_ERR SetFont(CFX_Font* font); | |
| 195 | |
| 196 FX_ERR SetFontSize(const FX_FLOAT size); | |
| 197 | |
| 198 FX_ERR SetFontHScale(const FX_FLOAT scale); | |
| 199 | |
| 200 FX_ERR SetCharSpacing(const FX_FLOAT spacing); | |
| 201 | |
| 202 FX_ERR SetTextDrawingMode(const int32_t mode); | |
| 203 | |
| 204 FX_ERR ShowText(const CFX_PointF& point, | 187 FX_ERR ShowText(const CFX_PointF& point, |
| 205 const CFX_WideString& text, | 188 const CFX_WideString& text, |
| 206 CFX_Matrix* matrix = NULL); | 189 CFX_Matrix* matrix = NULL); |
| 207 | |
| 208 FX_ERR CalcTextRect(CFX_RectF& rect, | 190 FX_ERR CalcTextRect(CFX_RectF& rect, |
| 209 const CFX_WideString& text, | 191 const CFX_WideString& text, |
| 210 FX_BOOL isMultiline = FALSE, | 192 FX_BOOL isMultiline = FALSE, |
| 211 CFX_Matrix* matrix = NULL); | 193 CFX_Matrix* matrix = NULL); |
| 212 | |
| 213 FX_ERR Transfer(CFX_Graphics* graphics, const CFX_Matrix* matrix); | 194 FX_ERR Transfer(CFX_Graphics* graphics, const CFX_Matrix* matrix); |
| 214 FX_ERR Transfer(CFX_Graphics* graphics, | 195 FX_ERR Transfer(CFX_Graphics* graphics, |
| 215 FX_FLOAT srcLeft, | 196 FX_FLOAT srcLeft, |
| 216 FX_FLOAT srcTop, | 197 FX_FLOAT srcTop, |
| 217 const CFX_RectF& dstRect, | 198 const CFX_RectF& dstRect, |
| 218 const CFX_Matrix* matrix); | 199 const CFX_Matrix* matrix); |
| 219 | 200 |
| 220 CFX_RenderDevice* GetRenderDevice(); | |
| 221 | |
| 222 FX_ERR InverseRect(const CFX_RectF& rect); | 201 FX_ERR InverseRect(const CFX_RectF& rect); |
| 223 FX_ERR XorDIBitmap(const CFX_DIBitmap* srcBitmap, const CFX_RectF& rect); | 202 FX_ERR XorDIBitmap(const CFX_DIBitmap* srcBitmap, const CFX_RectF& rect); |
| 224 FX_ERR EqvDIBitmap(const CFX_DIBitmap* srcBitmap, const CFX_RectF& rect); | 203 FX_ERR EqvDIBitmap(const CFX_DIBitmap* srcBitmap, const CFX_RectF& rect); |
| 225 | 204 |
| 226 private: | 205 private: |
| 227 FX_ERR RenderDeviceSetLineDash(FX_DashStyle dashStyle); | 206 FX_ERR RenderDeviceSetLineDash(FX_DashStyle dashStyle); |
| 228 | |
| 229 FX_ERR RenderDeviceStrokePath(CFX_Path* path, CFX_Matrix* matrix); | 207 FX_ERR RenderDeviceStrokePath(CFX_Path* path, CFX_Matrix* matrix); |
| 230 | |
| 231 FX_ERR RenderDeviceFillPath(CFX_Path* path, | 208 FX_ERR RenderDeviceFillPath(CFX_Path* path, |
| 232 FX_FillMode fillMode, | 209 FX_FillMode fillMode, |
| 233 CFX_Matrix* matrix); | 210 CFX_Matrix* matrix); |
| 234 | |
| 235 FX_ERR RenderDeviceDrawImage(CFX_DIBSource* source, | 211 FX_ERR RenderDeviceDrawImage(CFX_DIBSource* source, |
| 236 const CFX_PointF& point, | 212 const CFX_PointF& point, |
| 237 CFX_Matrix* matrix); | 213 CFX_Matrix* matrix); |
| 238 | |
| 239 FX_ERR RenderDeviceStretchImage(CFX_DIBSource* source, | 214 FX_ERR RenderDeviceStretchImage(CFX_DIBSource* source, |
| 240 const CFX_RectF& rect, | 215 const CFX_RectF& rect, |
| 241 CFX_Matrix* matrix); | 216 CFX_Matrix* matrix); |
| 242 | |
| 243 FX_ERR RenderDeviceShowText(const CFX_PointF& point, | 217 FX_ERR RenderDeviceShowText(const CFX_PointF& point, |
| 244 const CFX_WideString& text, | 218 const CFX_WideString& text, |
| 245 CFX_Matrix* matrix); | 219 CFX_Matrix* matrix); |
| 246 | 220 |
| 247 FX_ERR StrokePathWithPattern(CFX_Path* path, CFX_Matrix* matrix); | 221 FX_ERR StrokePathWithPattern(CFX_Path* path, CFX_Matrix* matrix); |
| 248 | |
| 249 FX_ERR StrokePathWithShading(CFX_Path* path, CFX_Matrix* matrix); | 222 FX_ERR StrokePathWithShading(CFX_Path* path, CFX_Matrix* matrix); |
| 250 | 223 |
| 251 FX_ERR FillPathWithPattern(CFX_Path* path, | 224 FX_ERR FillPathWithPattern(CFX_Path* path, |
| 252 FX_FillMode fillMode, | 225 FX_FillMode fillMode, |
| 253 CFX_Matrix* matrix); | 226 CFX_Matrix* matrix); |
| 254 | |
| 255 FX_ERR FillPathWithShading(CFX_Path* path, | 227 FX_ERR FillPathWithShading(CFX_Path* path, |
| 256 FX_FillMode fillMode, | 228 FX_FillMode fillMode, |
| 257 CFX_Matrix* matrix); | 229 CFX_Matrix* matrix); |
| 230 |
| 258 FX_ERR SetDIBitsWithMatrix(CFX_DIBSource* source, CFX_Matrix* matrix); | 231 FX_ERR SetDIBitsWithMatrix(CFX_DIBSource* source, CFX_Matrix* matrix); |
| 259 FX_ERR CalcTextInfo(const CFX_WideString& text, | 232 FX_ERR CalcTextInfo(const CFX_WideString& text, |
| 260 FX_DWORD* charCodes, | 233 FX_DWORD* charCodes, |
| 261 FXTEXT_CHARPOS* charPos, | 234 FXTEXT_CHARPOS* charPos, |
| 262 CFX_RectF& rect); | 235 CFX_RectF& rect); |
| 263 | 236 |
| 264 protected: | 237 protected: |
| 265 int32_t _type; | 238 int32_t m_type; |
| 266 | 239 |
| 267 private: | 240 private: |
| 268 struct TInfo { | 241 struct TInfo { |
| 269 CFX_GraphStateData _graphState; | 242 TInfo() |
| 270 FX_BOOL _isAntialiasing; | 243 : isAntialiasing(TRUE), |
| 271 FX_StrokeAlignment _strokeAlignment; | 244 strokeAlignment(FX_STROKEALIGNMENT_Center), |
| 272 CFX_Matrix _CTM; | 245 isActOnDash(FALSE), |
| 273 FX_BOOL _isActOnDash; | 246 strokeColor(nullptr), |
| 274 CFX_Color* _strokeColor; | 247 fillColor(nullptr), |
| 275 CFX_Color* _fillColor; | 248 font(nullptr), |
| 276 CFX_Font* _font; | 249 fontSize(40.0), |
| 277 FX_FLOAT _fontSize; | 250 fontHScale(1.0), |
| 278 FX_FLOAT _fontHScale; | 251 fontSpacing(0.0) {} |
| 279 FX_FLOAT _fontSpacing; | 252 explicit TInfo(const TInfo& info); |
| 280 } _info; | 253 TInfo& operator=(const TInfo& other); |
| 281 CFX_RenderDevice* _renderDevice; | 254 |
| 282 CFX_PtrArray _infoStack; | 255 CFX_GraphStateData graphState; |
| 283 CAGG_Graphics* _aggGraphics; | 256 FX_BOOL isAntialiasing; |
| 257 FX_StrokeAlignment strokeAlignment; |
| 258 CFX_Matrix CTM; |
| 259 FX_BOOL isActOnDash; |
| 260 CFX_Color* strokeColor; |
| 261 CFX_Color* fillColor; |
| 262 CFX_Font* font; |
| 263 FX_FLOAT fontSize; |
| 264 FX_FLOAT fontHScale; |
| 265 FX_FLOAT fontSpacing; |
| 266 } m_info; |
| 267 CFX_RenderDevice* m_renderDevice; |
| 268 CFX_PtrArray m_infoStack; |
| 269 CAGG_Graphics* m_aggGraphics; |
| 284 friend class CAGG_Graphics; | 270 friend class CAGG_Graphics; |
| 285 }; | 271 }; |
| 272 |
| 286 class CFX_Path { | 273 class CFX_Path { |
| 287 public: | 274 public: |
| 288 CFX_Path(); | 275 CFX_Path(); |
| 276 virtual ~CFX_Path(); |
| 289 | 277 |
| 290 FX_ERR Create(); | 278 FX_ERR Create(); |
| 291 | |
| 292 virtual ~CFX_Path(); | |
| 293 | |
| 294 FX_ERR MoveTo(FX_FLOAT x, FX_FLOAT y); | 279 FX_ERR MoveTo(FX_FLOAT x, FX_FLOAT y); |
| 295 | |
| 296 FX_ERR LineTo(FX_FLOAT x, FX_FLOAT y); | 280 FX_ERR LineTo(FX_FLOAT x, FX_FLOAT y); |
| 297 | |
| 298 FX_ERR BezierTo(FX_FLOAT ctrlX1, | 281 FX_ERR BezierTo(FX_FLOAT ctrlX1, |
| 299 FX_FLOAT ctrlY1, | 282 FX_FLOAT ctrlY1, |
| 300 FX_FLOAT ctrlX2, | 283 FX_FLOAT ctrlX2, |
| 301 FX_FLOAT ctrlY2, | 284 FX_FLOAT ctrlY2, |
| 302 FX_FLOAT toX, | 285 FX_FLOAT toX, |
| 303 FX_FLOAT toY); | 286 FX_FLOAT toY); |
| 304 | |
| 305 FX_ERR ArcTo(FX_FLOAT left, | 287 FX_ERR ArcTo(FX_FLOAT left, |
| 306 FX_FLOAT top, | 288 FX_FLOAT top, |
| 307 FX_FLOAT width, | 289 FX_FLOAT width, |
| 308 FX_FLOAT height, | 290 FX_FLOAT height, |
| 309 FX_FLOAT startAngle, | 291 FX_FLOAT startAngle, |
| 310 FX_FLOAT sweepAngle); | 292 FX_FLOAT sweepAngle); |
| 311 | |
| 312 FX_ERR Close(); | 293 FX_ERR Close(); |
| 313 | 294 |
| 314 FX_ERR AddLine(FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2); | 295 FX_ERR AddLine(FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2); |
| 315 | |
| 316 FX_ERR AddBezier(FX_FLOAT startX, | 296 FX_ERR AddBezier(FX_FLOAT startX, |
| 317 FX_FLOAT startY, | 297 FX_FLOAT startY, |
| 318 FX_FLOAT ctrlX1, | 298 FX_FLOAT ctrlX1, |
| 319 FX_FLOAT ctrlY1, | 299 FX_FLOAT ctrlY1, |
| 320 FX_FLOAT ctrlX2, | 300 FX_FLOAT ctrlX2, |
| 321 FX_FLOAT ctrlY2, | 301 FX_FLOAT ctrlY2, |
| 322 FX_FLOAT endX, | 302 FX_FLOAT endX, |
| 323 FX_FLOAT endY); | 303 FX_FLOAT endY); |
| 324 | |
| 325 FX_ERR AddRectangle(FX_FLOAT left, | 304 FX_ERR AddRectangle(FX_FLOAT left, |
| 326 FX_FLOAT top, | 305 FX_FLOAT top, |
| 327 FX_FLOAT width, | 306 FX_FLOAT width, |
| 328 FX_FLOAT height); | 307 FX_FLOAT height); |
| 329 | |
| 330 FX_ERR AddEllipse(FX_FLOAT left, | 308 FX_ERR AddEllipse(FX_FLOAT left, |
| 331 FX_FLOAT top, | 309 FX_FLOAT top, |
| 332 FX_FLOAT width, | 310 FX_FLOAT width, |
| 333 FX_FLOAT height); | 311 FX_FLOAT height); |
| 334 | |
| 335 FX_ERR AddEllipse(const CFX_RectF& rect); | 312 FX_ERR AddEllipse(const CFX_RectF& rect); |
| 336 | |
| 337 FX_ERR AddArc(FX_FLOAT left, | 313 FX_ERR AddArc(FX_FLOAT left, |
| 338 FX_FLOAT top, | 314 FX_FLOAT top, |
| 339 FX_FLOAT width, | 315 FX_FLOAT width, |
| 340 FX_FLOAT height, | 316 FX_FLOAT height, |
| 341 FX_FLOAT startAngle, | 317 FX_FLOAT startAngle, |
| 342 FX_FLOAT sweepAngle); | 318 FX_FLOAT sweepAngle); |
| 343 | |
| 344 FX_ERR AddPie(FX_FLOAT left, | 319 FX_ERR AddPie(FX_FLOAT left, |
| 345 FX_FLOAT top, | 320 FX_FLOAT top, |
| 346 FX_FLOAT width, | 321 FX_FLOAT width, |
| 347 FX_FLOAT height, | 322 FX_FLOAT height, |
| 348 FX_FLOAT startAngle, | 323 FX_FLOAT startAngle, |
| 349 FX_FLOAT sweepAngle); | 324 FX_FLOAT sweepAngle); |
| 350 | |
| 351 FX_ERR AddSubpath(CFX_Path* path); | 325 FX_ERR AddSubpath(CFX_Path* path); |
| 352 | |
| 353 FX_ERR Clear(); | 326 FX_ERR Clear(); |
| 354 | 327 |
| 355 FX_BOOL IsEmpty(); | 328 FX_BOOL IsEmpty(); |
| 356 | |
| 357 CFX_PathData* GetPathData(); | 329 CFX_PathData* GetPathData(); |
| 358 | 330 |
| 359 private: | 331 private: |
| 360 CFX_PathGenerator* _generator; | 332 CFX_PathGenerator* m_generator; |
| 361 }; | 333 }; |
| 334 |
| 362 class CFX_Color { | 335 class CFX_Color { |
| 363 public: | 336 public: |
| 364 CFX_Color(); | 337 CFX_Color(); |
| 365 | 338 // TODO(weili): Remove implicit conversions. Make this explicit. |
| 366 CFX_Color(const FX_ARGB argb); | 339 CFX_Color(const FX_ARGB argb); |
| 367 | 340 explicit CFX_Color(CFX_Pattern* pattern, const FX_ARGB argb = 0x0); |
| 368 CFX_Color(CFX_Pattern* pattern, const FX_ARGB argb = 0x0); | 341 explicit CFX_Color(CFX_Shading* shading); |
| 369 | |
| 370 CFX_Color(CFX_Shading* shading); | |
| 371 | |
| 372 virtual ~CFX_Color(); | 342 virtual ~CFX_Color(); |
| 373 | 343 |
| 374 FX_ERR Set(const FX_ARGB argb); | 344 FX_ERR Set(const FX_ARGB argb); |
| 375 | |
| 376 FX_ERR Set(CFX_Pattern* pattern, const FX_ARGB argb = 0x0); | 345 FX_ERR Set(CFX_Pattern* pattern, const FX_ARGB argb = 0x0); |
| 377 | |
| 378 FX_ERR Set(CFX_Shading* shading); | 346 FX_ERR Set(CFX_Shading* shading); |
| 379 | 347 |
| 380 private: | 348 private: |
| 381 int32_t _type; | 349 int32_t m_type; |
| 382 union { | 350 union { |
| 383 struct { | 351 struct { |
| 384 FX_ARGB _argb; | 352 FX_ARGB argb; |
| 385 CFX_Pattern* _pattern; | 353 CFX_Pattern* pattern; |
| 386 }; | 354 } m_info; |
| 387 CFX_Shading* _shading; | 355 CFX_Shading* m_shading; |
| 388 }; | 356 }; |
| 389 | 357 |
| 390 friend class CFX_Graphics; | 358 friend class CFX_Graphics; |
| 391 }; | 359 }; |
| 360 |
| 392 class CFX_Pattern { | 361 class CFX_Pattern { |
| 393 public: | 362 public: |
| 394 CFX_Pattern(); | 363 CFX_Pattern(); |
| 364 virtual ~CFX_Pattern(); |
| 395 | 365 |
| 396 FX_ERR Create(CFX_DIBitmap* bitmap, | 366 FX_ERR Create(CFX_DIBitmap* bitmap, |
| 397 const FX_FLOAT xStep, | 367 const FX_FLOAT xStep, |
| 398 const FX_FLOAT yStep, | 368 const FX_FLOAT yStep, |
| 399 CFX_Matrix* matrix = NULL); | 369 CFX_Matrix* matrix = NULL); |
| 400 | |
| 401 FX_ERR Create(FX_HatchStyle hatchStyle, | 370 FX_ERR Create(FX_HatchStyle hatchStyle, |
| 402 const FX_ARGB foreArgb, | 371 const FX_ARGB foreArgb, |
| 403 const FX_ARGB backArgb, | 372 const FX_ARGB backArgb, |
| 404 CFX_Matrix* matrix = NULL); | 373 CFX_Matrix* matrix = NULL); |
| 405 | 374 |
| 406 virtual ~CFX_Pattern(); | |
| 407 | |
| 408 private: | 375 private: |
| 409 int32_t _type; | 376 int32_t m_type; |
| 410 CFX_Matrix _matrix; | 377 CFX_Matrix m_matrix; |
| 411 union { | 378 union { |
| 412 struct { | 379 struct { |
| 413 CFX_RectF _rect; | 380 CFX_RectF rect; |
| 414 FX_FLOAT _xStep; | 381 FX_FLOAT xStep; |
| 415 FX_FLOAT _yStep; | 382 FX_FLOAT yStep; |
| 416 FX_BOOL _isColored; | 383 FX_BOOL isColored; |
| 417 }; | 384 } m_rectInfo; |
| 418 struct { | 385 struct { |
| 419 CFX_DIBitmap* _bitmap; | 386 CFX_DIBitmap* bitmap; |
| 420 FX_FLOAT _x1Step; | 387 FX_FLOAT x1Step; |
| 421 FX_FLOAT _y1Step; | 388 FX_FLOAT y1Step; |
| 422 }; | 389 } m_bitmapInfo; |
| 423 struct { | 390 struct { |
| 424 FX_HatchStyle _hatchStyle; | 391 FX_HatchStyle hatchStyle; |
| 425 FX_ARGB _foreArgb; | 392 FX_ARGB foreArgb; |
| 426 FX_ARGB _backArgb; | 393 FX_ARGB backArgb; |
| 427 }; | 394 } m_hatchInfo; |
| 428 }; | 395 }; |
| 429 friend class CFX_Graphics; | 396 friend class CFX_Graphics; |
| 430 }; | 397 }; |
| 398 |
| 431 class CFX_Shading { | 399 class CFX_Shading { |
| 432 public: | 400 public: |
| 433 CFX_Shading(); | 401 CFX_Shading(); |
| 402 virtual ~CFX_Shading(); |
| 434 | 403 |
| 435 FX_ERR CreateAxial(const CFX_PointF& beginPoint, | 404 FX_ERR CreateAxial(const CFX_PointF& beginPoint, |
| 436 const CFX_PointF& endPoint, | 405 const CFX_PointF& endPoint, |
| 437 FX_BOOL isExtendedBegin, | 406 FX_BOOL isExtendedBegin, |
| 438 FX_BOOL isExtendedEnd, | 407 FX_BOOL isExtendedEnd, |
| 439 const FX_ARGB beginArgb, | 408 const FX_ARGB beginArgb, |
| 440 const FX_ARGB endArgb); | 409 const FX_ARGB endArgb); |
| 441 | |
| 442 FX_ERR CreateRadial(const CFX_PointF& beginPoint, | 410 FX_ERR CreateRadial(const CFX_PointF& beginPoint, |
| 443 const CFX_PointF& endPoint, | 411 const CFX_PointF& endPoint, |
| 444 const FX_FLOAT beginRadius, | 412 const FX_FLOAT beginRadius, |
| 445 const FX_FLOAT endRadius, | 413 const FX_FLOAT endRadius, |
| 446 FX_BOOL isExtendedBegin, | 414 FX_BOOL isExtendedBegin, |
| 447 FX_BOOL isExtendedEnd, | 415 FX_BOOL isExtendedEnd, |
| 448 const FX_ARGB beginArgb, | 416 const FX_ARGB beginArgb, |
| 449 const FX_ARGB endArgb); | 417 const FX_ARGB endArgb); |
| 450 | 418 |
| 451 virtual ~CFX_Shading(); | |
| 452 | |
| 453 private: | 419 private: |
| 454 FX_ERR InitArgbArray(); | 420 FX_ERR InitArgbArray(); |
| 455 | 421 |
| 456 private: | 422 int32_t m_type; |
| 457 int32_t _type; | 423 CFX_PointF m_beginPoint; |
| 458 CFX_PointF _beginPoint; | 424 CFX_PointF m_endPoint; |
| 459 CFX_PointF _endPoint; | 425 FX_FLOAT m_beginRadius; |
| 460 FX_FLOAT _beginRadius; | 426 FX_FLOAT m_endRadius; |
| 461 FX_FLOAT _endRadius; | 427 FX_BOOL m_isExtendedBegin; |
| 462 FX_BOOL _isExtendedBegin; | 428 FX_BOOL m_isExtendedEnd; |
| 463 FX_BOOL _isExtendedEnd; | 429 FX_ARGB m_beginArgb; |
| 464 FX_ARGB _beginArgb; | 430 FX_ARGB m_endArgb; |
| 465 FX_ARGB _endArgb; | 431 FX_ARGB m_argbArray[FX_SHADING_Steps]; |
| 466 FX_ARGB _argbArray[FX_SHADING_Steps]; | |
| 467 friend class CFX_Graphics; | 432 friend class CFX_Graphics; |
| 468 }; | 433 }; |
| 469 | 434 |
| 470 #endif // XFA_INCLUDE_FXGRAPHICS_FX_GRAPHICS_H_ | 435 #endif // XFA_INCLUDE_FXGRAPHICS_FX_GRAPHICS_H_ |
| OLD | NEW |