From: Benedikt Freisen Date: Wed, 16 Aug 2017 16:19:17 +0000 (+0000) Subject: [PSDK][GDIPLUS] Partly implement Pen X-Git-Tag: backups/GSoC_2017/rapps@75905~4^2~141 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=ee3e42bee0c3a48fb38b82705d7adaa6d43fd448 [PSDK][GDIPLUS] Partly implement Pen svn path=/trunk/; revision=75576 --- diff --git a/reactos/sdk/include/psdk/gdiplusmatrix.h b/reactos/sdk/include/psdk/gdiplusmatrix.h index 35eb6d360ea..7be9f4456cb 100644 --- a/reactos/sdk/include/psdk/gdiplusmatrix.h +++ b/reactos/sdk/include/psdk/gdiplusmatrix.h @@ -21,6 +21,7 @@ class Matrix : public GdiplusBase { + friend class Pen; friend class Region; public: diff --git a/reactos/sdk/include/psdk/gdipluspen.h b/reactos/sdk/include/psdk/gdipluspen.h index 2001fe3e6f3..a8b2e0612a0 100644 --- a/reactos/sdk/include/psdk/gdipluspen.h +++ b/reactos/sdk/include/psdk/gdipluspen.h @@ -57,17 +57,23 @@ public: Status GetColor(Color *color) { - return NotImplemented; + ARGB argb; + Status status = SetStatus(DllExports::GdipGetPenColor(pen, &argb)); + if (color) + color->SetValue(argb); + return status; } Status GetCompoundArray(REAL *compoundArray, INT count) { - return NotImplemented; + return NotImplemented; // FIXME: not available: SetStatus(DllExports::GdipGetPenCompoundArray(pen, count)); } INT GetCompoundArrayCount(VOID) { - return 0; + INT count; + SetStatus(DllExports::GdipGetPenCompoundCount(pen, &count)); + return count; } Status GetCustomEndCap(CustomLineCap *customCap) @@ -87,17 +93,21 @@ public: REAL GetDashOffset(VOID) { - return 0; + REAL offset; + SetStatus(DllExports::GdipGetPenDashOffset(pen, &offset)); + return offset; } Status GetDashPattern(REAL *dashArray, INT count) { - return NotImplemented; + return SetStatus(DllExports::GdipGetPenDashArray(pen, dashArray, count)); } INT GetDashPatternCount(VOID) { - return 0; + INT count; + SetStatus(DllExports::GdipGetPenDashCount(pen, &count)); + return count; } DashStyle GetDashStyle(VOID) @@ -122,7 +132,9 @@ public: REAL GetMiterLimit(VOID) { - return 0; + REAL miterLimit; + SetStatus(DllExports::GdipGetPenMiterLimit(pen, &miterLimit)); + return miterLimit; } PenType GetPenType(VOID) @@ -142,47 +154,49 @@ public: REAL GetWidth(VOID) { - return 0; + REAL width; + SetStatus(DllExports::GdipGetPenWidth(pen, &width)); + return width; } Status MultiplyTransform(Matrix *matrix, MatrixOrder order) { - return NotImplemented; + return NotImplemented; // FIXME: not available: SetStatus(DllExports::GdipMultiplyPenTransform(pen, matrix ? matrix->matrix : NULL, order)); } Status ResetTransform(VOID) { - return NotImplemented; + return SetStatus(DllExports::GdipResetPenTransform(pen)); } Status RotateTransform(REAL angle, MatrixOrder order) { - return NotImplemented; + return NotImplemented; // FIXME: not available: SetStatus(DllExports::GdipRotatePenTransform(pen, angle, order)); } Status ScaleTransform(REAL sx, REAL sy, MatrixOrder order) { - return NotImplemented; + return SetStatus(DllExports::GdipScalePenTransform(pen, sx, sy, order)); } Status SetAlignment(PenAlignment penAlignment) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenMode(pen, penAlignment)); } Status SetBrush(const Brush *brush) { - return NotImplemented; + return NotImplemented; // FIXME: Brush unimplemented SetStatus(DllExports::GdipSetPenBrushFill(pen, brush ? brush->brush : NULL)); } Status SetColor(const Color &color) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenColor(pen, color.GetValue())); } Status SetCompoundArray(const REAL *compoundArray, INT count) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenCompoundArray(pen, compoundArray, count)); } Status SetCustomEndCap(const CustomLineCap *customCap) @@ -197,22 +211,22 @@ public: Status SetDashCap(DashCap dashCap) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenDashCap197819(pen, dashCap)); } Status SetDashOffset(REAL dashOffset) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenDashOffset(pen, dashOffset)); } Status SetDashPattern(const REAL *dashArray, INT count) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenDashArray(pen, dashArray, count)); } Status SetDashStyle(DashStyle dashStyle) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenDashStyle(pen, dashStyle)); } Status SetEndCap(LineCap endCap) @@ -232,7 +246,7 @@ public: Status SetMiterLimit(REAL miterLimit) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenMiterLimit(pen, miterLimit)); } Status SetStartCap(LineCap startCap) @@ -242,17 +256,27 @@ public: Status SetTransform(const Matrix *matrix) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenTransform(pen, matrix ? matrix->matrix : NULL)); } Status SetWidth(REAL width) { - return NotImplemented; + return SetStatus(DllExports::GdipSetPenWidth(pen, width)); } private: - Status status; GpPen *pen; + +private: + mutable Status status; + + Status SetStatus(Status status) const + { + if (status == Ok) + return status; + this->status = status; + return status; + } }; #endif /* _GDIPLUSPEN_H */