Index: xfa/include/fxgraphics/fx_graphics.h |
diff --git a/xfa/include/fxgraphics/fx_graphics.h b/xfa/include/fxgraphics/fx_graphics.h |
index c22d00995eee7e0b6ca41f0e285058d1b2778ddc..c2d22719d9f98137529f25cf8f197d7225230308 100644 |
--- a/xfa/include/fxgraphics/fx_graphics.h |
+++ b/xfa/include/fxgraphics/fx_graphics.h |
@@ -101,115 +101,96 @@ class CFX_DIBitmap; |
class CFX_Font; |
class CFX_WideString; |
class CFX_PathGenerator; |
-class CAGG_Graphics; |
class CFX_Graphics; |
class CFX_Color; |
class CFX_Path; |
class CFX_Pattern; |
class CFX_Shading; |
+ |
+class CAGG_Graphics { |
+ public: |
+ CAGG_Graphics(); |
+ virtual ~CAGG_Graphics(); |
+ |
+ FX_ERR Create(CFX_Graphics* owner, |
+ int32_t width, |
+ int32_t height, |
+ FXDIB_Format format); |
+ |
+ private: |
+ CFX_Graphics* m_owner; |
+}; |
+ |
class CFX_Graphics { |
public: |
CFX_Graphics(); |
+ virtual ~CFX_Graphics(); |
FX_ERR Create(CFX_RenderDevice* renderDevice, FX_BOOL isAntialiasing = TRUE); |
- |
FX_ERR Create(int32_t width, |
int32_t height, |
FXDIB_Format format, |
FX_BOOL isNative = TRUE, |
FX_BOOL isAntialiasing = TRUE); |
- virtual ~CFX_Graphics(); |
- |
FX_ERR GetDeviceCap(const int32_t capID, FX_DeviceCap& capVal); |
FX_ERR IsPrinterDevice(FX_BOOL& isPrinter); |
FX_ERR EnableAntialiasing(FX_BOOL isAntialiasing); |
FX_ERR SaveGraphState(); |
- |
FX_ERR RestoreGraphState(); |
- FX_ERR GetLineCap(CFX_GraphStateData::LineCap& lineCap); |
+ FX_ERR GetLineCap(CFX_GraphStateData::LineCap& lineCap) const; |
+ FX_ERR GetDashCount(int32_t& dashCount) const; |
+ FX_ERR GetLineDash(FX_FLOAT& dashPhase, FX_FLOAT* dashArray) const; |
+ FX_ERR GetLineJoin(CFX_GraphStateData::LineJoin& lineJoin) const; |
+ FX_ERR GetMiterLimit(FX_FLOAT& miterLimit) const; |
+ FX_ERR GetLineWidth(FX_FLOAT& lineWidth) const; |
+ FX_ERR GetStrokeAlignment(FX_StrokeAlignment& strokeAlignment) const; |
+ FX_ERR GetClipRect(CFX_RectF& rect) const; |
+ CFX_Matrix* GetMatrix(); |
+ CFX_RenderDevice* GetRenderDevice(); |
FX_ERR SetLineCap(CFX_GraphStateData::LineCap lineCap); |
- |
- FX_ERR GetDashCount(int32_t& dashCount); |
- |
- FX_ERR GetLineDash(FX_FLOAT& dashPhase, FX_FLOAT* dashArray); |
- |
FX_ERR SetLineDash(FX_FLOAT dashPhase, |
FX_FLOAT* dashArray, |
int32_t dashCount); |
- |
FX_ERR SetLineDash(FX_DashStyle dashStyle); |
- |
- FX_ERR GetLineJoin(CFX_GraphStateData::LineJoin& lineJoin); |
- |
FX_ERR SetLineJoin(CFX_GraphStateData::LineJoin lineJoin); |
- |
- FX_ERR GetMiterLimit(FX_FLOAT& miterLimit); |
- |
FX_ERR SetMiterLimit(FX_FLOAT miterLimit); |
- |
- FX_ERR GetLineWidth(FX_FLOAT& lineWidth); |
- |
FX_ERR SetLineWidth(FX_FLOAT lineWidth, FX_BOOL isActOnDash = FALSE); |
- |
- FX_ERR GetStrokeAlignment(FX_StrokeAlignment& strokeAlignment); |
- |
FX_ERR SetStrokeAlignment(FX_StrokeAlignment strokeAlignment); |
- |
FX_ERR SetStrokeColor(CFX_Color* color); |
- |
FX_ERR SetFillColor(CFX_Color* color); |
+ FX_ERR SetClipRect(const CFX_RectF& rect); |
+ FX_ERR SetFont(CFX_Font* font); |
+ FX_ERR SetFontSize(const FX_FLOAT size); |
+ FX_ERR SetFontHScale(const FX_FLOAT scale); |
+ FX_ERR SetCharSpacing(const FX_FLOAT spacing); |
+ FX_ERR SetTextDrawingMode(const int32_t mode); |
FX_ERR StrokePath(CFX_Path* path, CFX_Matrix* matrix = NULL); |
- |
FX_ERR FillPath(CFX_Path* path, |
FX_FillMode fillMode = FXFILL_WINDING, |
CFX_Matrix* matrix = NULL); |
- |
FX_ERR ClipPath(CFX_Path* path, |
FX_FillMode fillMode = FXFILL_WINDING, |
CFX_Matrix* matrix = NULL); |
- |
FX_ERR DrawImage(CFX_DIBSource* source, |
const CFX_PointF& point, |
CFX_Matrix* matrix = NULL); |
- |
FX_ERR StretchImage(CFX_DIBSource* source, |
const CFX_RectF& rect, |
CFX_Matrix* matrix = NULL); |
- |
FX_ERR ConcatMatrix(const CFX_Matrix* matrix); |
- |
- CFX_Matrix* GetMatrix(); |
- |
- FX_ERR GetClipRect(CFX_RectF& rect); |
- |
- FX_ERR SetClipRect(const CFX_RectF& rect); |
- |
FX_ERR ClearClip(); |
- |
- FX_ERR SetFont(CFX_Font* font); |
- |
- FX_ERR SetFontSize(const FX_FLOAT size); |
- |
- FX_ERR SetFontHScale(const FX_FLOAT scale); |
- |
- FX_ERR SetCharSpacing(const FX_FLOAT spacing); |
- |
- FX_ERR SetTextDrawingMode(const int32_t mode); |
- |
FX_ERR ShowText(const CFX_PointF& point, |
const CFX_WideString& text, |
CFX_Matrix* matrix = NULL); |
- |
FX_ERR CalcTextRect(CFX_RectF& rect, |
const CFX_WideString& text, |
FX_BOOL isMultiline = FALSE, |
CFX_Matrix* matrix = NULL); |
- |
FX_ERR Transfer(CFX_Graphics* graphics, const CFX_Matrix* matrix); |
FX_ERR Transfer(CFX_Graphics* graphics, |
FX_FLOAT srcLeft, |
@@ -217,44 +198,36 @@ class CFX_Graphics { |
const CFX_RectF& dstRect, |
const CFX_Matrix* matrix); |
- CFX_RenderDevice* GetRenderDevice(); |
- |
FX_ERR InverseRect(const CFX_RectF& rect); |
FX_ERR XorDIBitmap(const CFX_DIBitmap* srcBitmap, const CFX_RectF& rect); |
FX_ERR EqvDIBitmap(const CFX_DIBitmap* srcBitmap, const CFX_RectF& rect); |
private: |
FX_ERR RenderDeviceSetLineDash(FX_DashStyle dashStyle); |
- |
FX_ERR RenderDeviceStrokePath(CFX_Path* path, CFX_Matrix* matrix); |
- |
FX_ERR RenderDeviceFillPath(CFX_Path* path, |
FX_FillMode fillMode, |
CFX_Matrix* matrix); |
- |
FX_ERR RenderDeviceDrawImage(CFX_DIBSource* source, |
const CFX_PointF& point, |
CFX_Matrix* matrix); |
- |
FX_ERR RenderDeviceStretchImage(CFX_DIBSource* source, |
const CFX_RectF& rect, |
CFX_Matrix* matrix); |
- |
FX_ERR RenderDeviceShowText(const CFX_PointF& point, |
const CFX_WideString& text, |
CFX_Matrix* matrix); |
FX_ERR StrokePathWithPattern(CFX_Path* path, CFX_Matrix* matrix); |
- |
FX_ERR StrokePathWithShading(CFX_Path* path, CFX_Matrix* matrix); |
FX_ERR FillPathWithPattern(CFX_Path* path, |
FX_FillMode fillMode, |
CFX_Matrix* matrix); |
- |
FX_ERR FillPathWithShading(CFX_Path* path, |
FX_FillMode fillMode, |
CFX_Matrix* matrix); |
+ |
FX_ERR SetDIBitsWithMatrix(CFX_DIBSource* source, CFX_Matrix* matrix); |
FX_ERR CalcTextInfo(const CFX_WideString& text, |
FX_DWORD* charCodes, |
@@ -262,57 +235,64 @@ class CFX_Graphics { |
CFX_RectF& rect); |
protected: |
- int32_t _type; |
+ int32_t m_type; |
private: |
struct TInfo { |
- CFX_GraphStateData _graphState; |
- FX_BOOL _isAntialiasing; |
- FX_StrokeAlignment _strokeAlignment; |
- CFX_Matrix _CTM; |
- FX_BOOL _isActOnDash; |
- CFX_Color* _strokeColor; |
- CFX_Color* _fillColor; |
- CFX_Font* _font; |
- FX_FLOAT _fontSize; |
- FX_FLOAT _fontHScale; |
- FX_FLOAT _fontSpacing; |
- } _info; |
- CFX_RenderDevice* _renderDevice; |
- CFX_PtrArray _infoStack; |
- CAGG_Graphics* _aggGraphics; |
+ TInfo() |
+ : isAntialiasing(TRUE), |
+ strokeAlignment(FX_STROKEALIGNMENT_Center), |
+ isActOnDash(FALSE), |
+ strokeColor(nullptr), |
+ fillColor(nullptr), |
+ font(nullptr), |
+ fontSize(40.0), |
+ fontHScale(1.0), |
+ fontSpacing(0.0) {} |
+ explicit TInfo(const TInfo& info); |
+ TInfo& operator=(const TInfo& other); |
+ |
+ CFX_GraphStateData graphState; |
+ FX_BOOL isAntialiasing; |
+ FX_StrokeAlignment strokeAlignment; |
+ CFX_Matrix CTM; |
+ FX_BOOL isActOnDash; |
+ CFX_Color* strokeColor; |
+ CFX_Color* fillColor; |
+ CFX_Font* font; |
+ FX_FLOAT fontSize; |
+ FX_FLOAT fontHScale; |
+ FX_FLOAT fontSpacing; |
+ } m_info; |
+ CFX_RenderDevice* m_renderDevice; |
+ CFX_PtrArray m_infoStack; |
+ CAGG_Graphics* m_aggGraphics; |
friend class CAGG_Graphics; |
}; |
+ |
class CFX_Path { |
public: |
CFX_Path(); |
- |
- FX_ERR Create(); |
- |
virtual ~CFX_Path(); |
+ FX_ERR Create(); |
FX_ERR MoveTo(FX_FLOAT x, FX_FLOAT y); |
- |
FX_ERR LineTo(FX_FLOAT x, FX_FLOAT y); |
- |
FX_ERR BezierTo(FX_FLOAT ctrlX1, |
FX_FLOAT ctrlY1, |
FX_FLOAT ctrlX2, |
FX_FLOAT ctrlY2, |
FX_FLOAT toX, |
FX_FLOAT toY); |
- |
FX_ERR ArcTo(FX_FLOAT left, |
FX_FLOAT top, |
FX_FLOAT width, |
FX_FLOAT height, |
FX_FLOAT startAngle, |
FX_FLOAT sweepAngle); |
- |
FX_ERR Close(); |
FX_ERR AddLine(FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2); |
- |
FX_ERR AddBezier(FX_FLOAT startX, |
FX_FLOAT startY, |
FX_FLOAT ctrlX1, |
@@ -321,116 +301,105 @@ class CFX_Path { |
FX_FLOAT ctrlY2, |
FX_FLOAT endX, |
FX_FLOAT endY); |
- |
FX_ERR AddRectangle(FX_FLOAT left, |
FX_FLOAT top, |
FX_FLOAT width, |
FX_FLOAT height); |
- |
FX_ERR AddEllipse(FX_FLOAT left, |
FX_FLOAT top, |
FX_FLOAT width, |
FX_FLOAT height); |
- |
FX_ERR AddEllipse(const CFX_RectF& rect); |
- |
FX_ERR AddArc(FX_FLOAT left, |
FX_FLOAT top, |
FX_FLOAT width, |
FX_FLOAT height, |
FX_FLOAT startAngle, |
FX_FLOAT sweepAngle); |
- |
FX_ERR AddPie(FX_FLOAT left, |
FX_FLOAT top, |
FX_FLOAT width, |
FX_FLOAT height, |
FX_FLOAT startAngle, |
FX_FLOAT sweepAngle); |
- |
FX_ERR AddSubpath(CFX_Path* path); |
- |
FX_ERR Clear(); |
FX_BOOL IsEmpty(); |
- |
CFX_PathData* GetPathData(); |
private: |
- CFX_PathGenerator* _generator; |
+ CFX_PathGenerator* m_generator; |
}; |
+ |
class CFX_Color { |
public: |
CFX_Color(); |
- |
+ // TODO(weili): Remove implicit conversions. Make this explicit. |
CFX_Color(const FX_ARGB argb); |
- |
- CFX_Color(CFX_Pattern* pattern, const FX_ARGB argb = 0x0); |
- |
- CFX_Color(CFX_Shading* shading); |
- |
+ explicit CFX_Color(CFX_Pattern* pattern, const FX_ARGB argb = 0x0); |
+ explicit CFX_Color(CFX_Shading* shading); |
virtual ~CFX_Color(); |
FX_ERR Set(const FX_ARGB argb); |
- |
FX_ERR Set(CFX_Pattern* pattern, const FX_ARGB argb = 0x0); |
- |
FX_ERR Set(CFX_Shading* shading); |
private: |
- int32_t _type; |
+ int32_t m_type; |
union { |
struct { |
- FX_ARGB _argb; |
- CFX_Pattern* _pattern; |
- }; |
- CFX_Shading* _shading; |
+ FX_ARGB argb; |
+ CFX_Pattern* pattern; |
+ } m_info; |
+ CFX_Shading* m_shading; |
}; |
friend class CFX_Graphics; |
}; |
+ |
class CFX_Pattern { |
public: |
CFX_Pattern(); |
+ virtual ~CFX_Pattern(); |
FX_ERR Create(CFX_DIBitmap* bitmap, |
const FX_FLOAT xStep, |
const FX_FLOAT yStep, |
CFX_Matrix* matrix = NULL); |
- |
FX_ERR Create(FX_HatchStyle hatchStyle, |
const FX_ARGB foreArgb, |
const FX_ARGB backArgb, |
CFX_Matrix* matrix = NULL); |
- virtual ~CFX_Pattern(); |
- |
private: |
- int32_t _type; |
- CFX_Matrix _matrix; |
+ int32_t m_type; |
+ CFX_Matrix m_matrix; |
union { |
struct { |
- CFX_RectF _rect; |
- FX_FLOAT _xStep; |
- FX_FLOAT _yStep; |
- FX_BOOL _isColored; |
- }; |
+ CFX_RectF rect; |
+ FX_FLOAT xStep; |
+ FX_FLOAT yStep; |
+ FX_BOOL isColored; |
+ } m_rectInfo; |
struct { |
- CFX_DIBitmap* _bitmap; |
- FX_FLOAT _x1Step; |
- FX_FLOAT _y1Step; |
- }; |
+ CFX_DIBitmap* bitmap; |
+ FX_FLOAT x1Step; |
+ FX_FLOAT y1Step; |
+ } m_bitmapInfo; |
struct { |
- FX_HatchStyle _hatchStyle; |
- FX_ARGB _foreArgb; |
- FX_ARGB _backArgb; |
- }; |
+ FX_HatchStyle hatchStyle; |
+ FX_ARGB foreArgb; |
+ FX_ARGB backArgb; |
+ } m_hatchInfo; |
}; |
friend class CFX_Graphics; |
}; |
+ |
class CFX_Shading { |
public: |
CFX_Shading(); |
+ virtual ~CFX_Shading(); |
FX_ERR CreateAxial(const CFX_PointF& beginPoint, |
const CFX_PointF& endPoint, |
@@ -438,7 +407,6 @@ class CFX_Shading { |
FX_BOOL isExtendedEnd, |
const FX_ARGB beginArgb, |
const FX_ARGB endArgb); |
- |
FX_ERR CreateRadial(const CFX_PointF& beginPoint, |
const CFX_PointF& endPoint, |
const FX_FLOAT beginRadius, |
@@ -448,22 +416,19 @@ class CFX_Shading { |
const FX_ARGB beginArgb, |
const FX_ARGB endArgb); |
- virtual ~CFX_Shading(); |
- |
private: |
FX_ERR InitArgbArray(); |
- private: |
- int32_t _type; |
- CFX_PointF _beginPoint; |
- CFX_PointF _endPoint; |
- FX_FLOAT _beginRadius; |
- FX_FLOAT _endRadius; |
- FX_BOOL _isExtendedBegin; |
- FX_BOOL _isExtendedEnd; |
- FX_ARGB _beginArgb; |
- FX_ARGB _endArgb; |
- FX_ARGB _argbArray[FX_SHADING_Steps]; |
+ int32_t m_type; |
+ CFX_PointF m_beginPoint; |
+ CFX_PointF m_endPoint; |
+ FX_FLOAT m_beginRadius; |
+ FX_FLOAT m_endRadius; |
+ FX_BOOL m_isExtendedBegin; |
+ FX_BOOL m_isExtendedEnd; |
+ FX_ARGB m_beginArgb; |
+ FX_ARGB m_endArgb; |
+ FX_ARGB m_argbArray[FX_SHADING_Steps]; |
friend class CFX_Graphics; |
}; |