| 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;
|
| };
|
|
|
|
|