summaryrefslogtreecommitdiffstats
path: root/winsup/w32api/include/gdiplus/gdiplusimageattributes.h
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/w32api/include/gdiplus/gdiplusimageattributes.h')
-rwxr-xr-xwinsup/w32api/include/gdiplus/gdiplusimageattributes.h236
1 files changed, 236 insertions, 0 deletions
diff --git a/winsup/w32api/include/gdiplus/gdiplusimageattributes.h b/winsup/w32api/include/gdiplus/gdiplusimageattributes.h
new file mode 100755
index 000000000..0f7db98b2
--- /dev/null
+++ b/winsup/w32api/include/gdiplus/gdiplusimageattributes.h
@@ -0,0 +1,236 @@
+/*
+ * gdiplusimageattributes.h
+ *
+ * GDI+ ImageAttributes class
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ * Created by Markus Koenig <markus@stber-koenig.de>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __GDIPLUS_IMAGEATTRIBUTES_H
+#define __GDIPLUS_IMAGEATTRIBUTES_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __cplusplus
+#error "A C++ compiler is required to include gdiplusimageattributes.h."
+#endif
+
+class ImageAttributes: public GdiplusBase
+{
+ friend class Graphics;
+ friend class TextureBrush;
+
+public:
+ ImageAttributes(): nativeImageAttributes(NULL), lastStatus(Ok)
+ {
+ lastStatus = DllExports::GdipCreateImageAttributes(
+ &nativeImageAttributes);
+ }
+ ~ImageAttributes()
+ {
+ DllExports::GdipDisposeImageAttributes(nativeImageAttributes);
+ }
+ ImageAttributes* Clone() const
+ {
+ GpImageAttributes *cloneImageAttributes = NULL;
+ Status status = updateStatus(DllExports::GdipCloneImageAttributes(
+ nativeImageAttributes, &cloneImageAttributes));
+ if (status == Ok) {
+ ImageAttributes *result = new ImageAttributes(
+ cloneImageAttributes, lastStatus);
+ if (!result) {
+ DllExports::GdipDisposeImageAttributes(cloneImageAttributes);
+ lastStatus = OutOfMemory;
+ }
+ return result;
+ } else {
+ return NULL;
+ }
+ }
+
+ Status ClearBrushRemapTable()
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
+ nativeImageAttributes, ColorAdjustTypeBrush,
+ FALSE, 0, NULL));
+ }
+ Status ClearColorKey(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesColorKeys(
+ nativeImageAttributes, type, FALSE, 0, 0));
+ }
+ Status ClearColorMatrices(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
+ nativeImageAttributes, type, FALSE,
+ NULL, NULL, ColorMatrixFlagsDefault));
+ }
+ Status ClearColorMatrix(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
+ nativeImageAttributes, type, FALSE,
+ NULL, NULL, ColorMatrixFlagsDefault));
+ }
+ Status ClearGamma(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesGamma(
+ nativeImageAttributes, type, FALSE, 1.0f));
+ }
+ Status ClearNoOp(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesNoOp(
+ nativeImageAttributes, type, FALSE));
+ }
+ Status ClearOutputChannel(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesOutputChannel(
+ nativeImageAttributes, type, FALSE,
+ ColorChannelFlagsC));
+ }
+ Status ClearOutputChannelColorProfile(
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile(
+ nativeImageAttributes, type, FALSE, NULL));
+ }
+ Status ClearRemapTable(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
+ nativeImageAttributes, type, FALSE, 0, NULL));
+ }
+ Status ClearThreshold(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesThreshold(
+ nativeImageAttributes, type, FALSE, 0.0));
+ }
+ Status GetAdjustedPalette(ColorPalette *colorPalette,
+ ColorAdjustType type) const
+ {
+ return updateStatus(DllExports::GdipGetImageAttributesAdjustedPalette(
+ nativeImageAttributes, colorPalette, type));
+ }
+ Status GetLastStatus() const
+ {
+ Status result = lastStatus;
+ lastStatus = Ok;
+ return result;
+ }
+ Status Reset(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipResetImageAttributes(
+ nativeImageAttributes, type));
+ }
+ Status SetBrushRemapTable(UINT mapSize, ColorMap *map)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
+ nativeImageAttributes, ColorAdjustTypeBrush,
+ TRUE, mapSize, map));
+ }
+ Status SetColorKey(const Color& colorLow, const Color& colorHigh,
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesColorKeys(
+ nativeImageAttributes, type, TRUE,
+ colorLow.GetValue(), colorHigh.GetValue()));
+ }
+ Status SetColorMatrices(const ColorMatrix *colorMatrix,
+ const ColorMatrix *grayMatrix,
+ ColorMatrixFlags mode = ColorMatrixFlagsDefault,
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
+ nativeImageAttributes, type, TRUE,
+ colorMatrix, grayMatrix, mode));
+ }
+ Status SetColorMatrix(const ColorMatrix *colorMatrix,
+ ColorMatrixFlags mode = ColorMatrixFlagsDefault,
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
+ nativeImageAttributes, type, TRUE,
+ colorMatrix, NULL, mode));
+ }
+ Status SetGamma(REAL gamma,
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesGamma(
+ nativeImageAttributes, type, TRUE, gamma));
+ }
+ Status SetNoOp(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesNoOp(
+ nativeImageAttributes, type, TRUE));
+ }
+ Status SetOutputChannel(ColorChannelFlags channelFlags,
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesOutputChannel(
+ nativeImageAttributes, type, TRUE,
+ channelFlags));
+ }
+ Status SetOutputChannelColorProfile(const WCHAR *colorProfileFilename,
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile(
+ nativeImageAttributes, type, TRUE,
+ colorProfileFilename));
+ }
+ Status SetRemapTable(UINT mapSize, const ColorMap *map,
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
+ nativeImageAttributes, type, TRUE,
+ mapSize, map));
+ }
+ Status SetThreshold(REAL threshold,
+ ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesThreshold(
+ nativeImageAttributes, type, TRUE, threshold));
+ }
+ Status SetToIdentity(ColorAdjustType type = ColorAdjustTypeDefault)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesToIdentity(
+ nativeImageAttributes, type));
+ }
+ Status SetWrapMode(WrapMode wrap, const Color& color = Color(),
+ BOOL clamp = FALSE)
+ {
+ return updateStatus(DllExports::GdipSetImageAttributesWrapMode(
+ nativeImageAttributes, wrap,
+ color.GetValue(), clamp));
+ }
+
+private:
+ ImageAttributes(GpImageAttributes *imageAttributes, Status status):
+ nativeImageAttributes(imageAttributes), lastStatus(status) {}
+ ImageAttributes(const ImageAttributes&);
+ ImageAttributes& operator=(const ImageAttributes&);
+
+ Status updateStatus(Status newStatus) const
+ {
+ if (newStatus != Ok) lastStatus = newStatus;
+ return newStatus;
+ }
+
+ GpImageAttributes *nativeImageAttributes;
+ mutable Status lastStatus;
+};
+
+
+#endif /* __GDIPLUS_IMAGEATTRIBUTES_H */