mirror of
https://github.com/reactos/reactos.git
synced 2024-08-25 04:38:43 +00:00
256 lines
7.5 KiB
C++
256 lines
7.5 KiB
C++
/*
|
|
* GdiPlusImageAttributes.h
|
|
*
|
|
* Windows GDI+
|
|
*
|
|
* This file is part of the w32api package.
|
|
*
|
|
* 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 _GDIPLUSIMAGEATTRIBUTES_H
|
|
#define _GDIPLUSIMAGEATTRIBUTES_H
|
|
|
|
class ImageAttributes : public GdiplusBase
|
|
{
|
|
public:
|
|
friend class TextureBrush;
|
|
|
|
ImageAttributes() : nativeImageAttr(NULL)
|
|
{
|
|
lastStatus = DllExports::GdipCreateImageAttributes(&nativeImageAttr);
|
|
}
|
|
|
|
~ImageAttributes()
|
|
{
|
|
DllExports::GdipDisposeImageAttributes(nativeImageAttr);
|
|
}
|
|
|
|
Status
|
|
ClearBrushRemapTable()
|
|
{
|
|
return ClearRemapTable(ColorAdjustTypeBrush);
|
|
}
|
|
|
|
Status
|
|
ClearColorKey(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesColorKeys(nativeImageAttr, type, FALSE, NULL, NULL));
|
|
}
|
|
|
|
Status
|
|
ClearColorMatrices(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesColorMatrix(
|
|
nativeImageAttr, type, FALSE, NULL, NULL, ColorMatrixFlagsDefault));
|
|
}
|
|
|
|
Status
|
|
ClearColorMatrix(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesColorMatrix(
|
|
nativeImageAttr, type, FALSE, NULL, NULL, ColorMatrixFlagsDefault));
|
|
}
|
|
|
|
Status
|
|
ClearGamma(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesGamma(nativeImageAttr, type, FALSE, 0.0));
|
|
}
|
|
|
|
Status
|
|
ClearNoOp(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesNoOp(nativeImageAttr, type, FALSE));
|
|
}
|
|
|
|
Status
|
|
ClearOutputChannel(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(
|
|
DllExports::GdipSetImageAttributesOutputChannel(nativeImageAttr, type, FALSE, ColorChannelFlagsLast));
|
|
}
|
|
|
|
Status
|
|
ClearOutputChannelColorProfile(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(
|
|
DllExports::GdipSetImageAttributesOutputChannelColorProfile(nativeImageAttr, type, FALSE, NULL));
|
|
}
|
|
|
|
Status
|
|
ClearRemapTable(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesRemapTable(nativeImageAttr, type, FALSE, 0, NULL));
|
|
}
|
|
|
|
Status
|
|
ClearThreshold(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesThreshold(nativeImageAttr, type, FALSE, 0.0));
|
|
}
|
|
|
|
ImageAttributes *
|
|
Clone()
|
|
{
|
|
GpImageAttributes *clone = NULL;
|
|
SetStatus(DllExports::GdipCloneImageAttributes(nativeImageAttr, &clone));
|
|
if (lastStatus != Ok)
|
|
return NULL;
|
|
|
|
ImageAttributes *newImageAttr = new ImageAttributes(clone, lastStatus);
|
|
if (newImageAttr == NULL)
|
|
SetStatus(DllExports::GdipDisposeImageAttributes(clone));
|
|
|
|
return newImageAttr;
|
|
}
|
|
|
|
Status
|
|
GetAdjustedPalette(ColorPalette *colorPalette, ColorAdjustType colorAdjustType)
|
|
{
|
|
return SetStatus(
|
|
DllExports::GdipGetImageAttributesAdjustedPalette(nativeImageAttr, colorPalette, colorAdjustType));
|
|
}
|
|
|
|
Status
|
|
GetLastStatus()
|
|
{
|
|
return lastStatus;
|
|
}
|
|
|
|
Status
|
|
Reset(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipResetImageAttributes(nativeImageAttr, type));
|
|
}
|
|
|
|
Status
|
|
SetBrushRemapTable(UINT mapSize, ColorMap *map)
|
|
{
|
|
return SetRemapTable(mapSize, map, ColorAdjustTypeBrush);
|
|
}
|
|
|
|
Status
|
|
SetColorKey(const Color &colorLow, const Color &colorHigh, ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesColorKeys(
|
|
nativeImageAttr, type, TRUE, colorLow.GetValue(), colorHigh.GetValue()));
|
|
}
|
|
|
|
Status
|
|
SetColorMatrices(
|
|
const ColorMatrix *colorMatrix,
|
|
const ColorMatrix *grayMatrix,
|
|
ColorMatrixFlags mode = ColorMatrixFlagsDefault,
|
|
ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(
|
|
DllExports::GdipSetImageAttributesColorMatrix(nativeImageAttr, type, TRUE, colorMatrix, grayMatrix, mode));
|
|
}
|
|
|
|
Status
|
|
SetColorMatrix(
|
|
const ColorMatrix *colorMatrix,
|
|
ColorMatrixFlags mode = ColorMatrixFlagsDefault,
|
|
ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(
|
|
DllExports::GdipSetImageAttributesColorMatrix(nativeImageAttr, type, TRUE, colorMatrix, NULL, mode));
|
|
}
|
|
|
|
Status
|
|
SetGamma(REAL gamma, ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesGamma(nativeImageAttr, type, TRUE, gamma));
|
|
}
|
|
|
|
Status
|
|
SetNoOp(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesNoOp(nativeImageAttr, type, TRUE));
|
|
}
|
|
|
|
Status
|
|
SetOutputChannel(ColorChannelFlags channelFlags, ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesOutputChannel(nativeImageAttr, type, TRUE, channelFlags));
|
|
}
|
|
|
|
Status
|
|
SetOutputChannelColorProfile(const WCHAR *colorProfileFilename, ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile(
|
|
nativeImageAttr, type, TRUE, colorProfileFilename));
|
|
}
|
|
|
|
Status
|
|
SetRemapTable(UINT mapSize, const ColorMap *map, ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesRemapTable(nativeImageAttr, type, TRUE, mapSize, map));
|
|
}
|
|
|
|
Status
|
|
SetThreshold(REAL threshold, ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesThreshold(nativeImageAttr, type, TRUE, threshold));
|
|
}
|
|
|
|
Status
|
|
SetToIdentity(ColorAdjustType type = ColorAdjustTypeDefault)
|
|
{
|
|
return SetStatus(DllExports::GdipSetImageAttributesToIdentity(nativeImageAttr, type));
|
|
}
|
|
|
|
Status
|
|
SetWrapMode(WrapMode wrap, const Color &color = Color(), BOOL clamp = FALSE)
|
|
{
|
|
ARGB argb = color.GetValue();
|
|
return SetStatus(DllExports::GdipSetImageAttributesWrapMode(nativeImageAttr, wrap, argb, clamp));
|
|
}
|
|
|
|
protected:
|
|
GpImageAttributes *nativeImageAttr;
|
|
mutable Status lastStatus;
|
|
|
|
ImageAttributes(GpImageAttributes *imageAttr, Status status) : nativeImageAttr(imageAttr), lastStatus(status)
|
|
{
|
|
}
|
|
|
|
VOID
|
|
SetNativeImageAttr(GpImageAttributes *imageAttr)
|
|
{
|
|
nativeImageAttr = imageAttr;
|
|
}
|
|
|
|
Status
|
|
SetStatus(Status status) const
|
|
{
|
|
if (status != Ok)
|
|
lastStatus = status;
|
|
return status;
|
|
}
|
|
|
|
private:
|
|
// ImageAttributes is not copyable
|
|
ImageAttributes(const ImageAttributes &);
|
|
ImageAttributes &
|
|
operator=(const ImageAttributes &);
|
|
|
|
// get native
|
|
friend inline GpImageAttributes *&
|
|
getNat(const ImageAttributes *ia)
|
|
{
|
|
return const_cast<ImageAttributes *>(ia)->nativeImageAttr;
|
|
}
|
|
};
|
|
|
|
#endif /* _GDIPLUSIMAGEATTRIBUTES_H */
|