1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**************************************************************************\ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Module Name: 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Image Attributes 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Abstract: 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Class for color adjustment object passed to Graphics.DrawImage 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov\**************************************************************************/ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _GDIPLUSIMAGEATTRIBUTES_H 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _GDIPLUSIMAGEATTRIBUTES_H 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass GpImageAttributes; 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// There are 5 possible sets of color adjustments: 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ColorAdjustDefault, 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ColorAdjustBitmap, 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ColorAdjustBrush, 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ColorAdjustPen, 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ColorAdjustText, 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Bitmaps, Brushes, Pens, and Text will all use any color adjustments 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// that have been set into the default ImageAttributes until their own 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// color adjustments have been set. So as soon as any "Set" method is 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// called for Bitmaps, Brushes, Pens, or Text, then they start from 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// scratch with only the color adjustments that have been set for them. 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Calling Reset removes any individual color adjustments for a type 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// and makes it revert back to using all the default color adjustments 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// (if any). The SetToIdentity method is a way to force a type to 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// have no color adjustments at all, regardless of what previous adjustments 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// have been set for the defaults or for that type. 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass ImageAttributes : public GdiplusBase 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Graphics; 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class TextureBrush; 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ImageAttributes() 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr = NULL; 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateImageAttributes(&nativeImageAttr); 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~ImageAttributes() 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DllExports::GdipDisposeImageAttributes(nativeImageAttr); 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ImageAttributes* Clone() const 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpImageAttributes* clone; 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipCloneImageAttributes( 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &clone)); 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return new ImageAttributes(clone, lastResult); 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Set to identity, regardless of what the default color adjustment is. 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetToIdentity( 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesToIdentity( 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type)); 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Remove any individual color adjustments, and go back to using the default 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Reset( 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipResetImageAttributes( 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type)); 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetColorMatrix( 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const ColorMatrix *colorMatrix, 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorMatrixFlags mode = ColorMatrixFlagsDefault, 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesColorMatrix( 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE, 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov colorMatrix, 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL, 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mode)); 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearColorMatrix( 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesColorMatrix( 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE, 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL, 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL, 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ColorMatrixFlagsDefault)); 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetColorMatrices( 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const ColorMatrix *colorMatrix, 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const ColorMatrix *grayMatrix, 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorMatrixFlags mode = ColorMatrixFlagsDefault, 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesColorMatrix( 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE, 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov colorMatrix, 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov grayMatrix, 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mode)); 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearColorMatrices( 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesColorMatrix( 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE, 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL, 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL, 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ColorMatrixFlagsDefault)); 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetThreshold( 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL threshold, 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesThreshold( 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE, 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov threshold)); 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearThreshold( 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesThreshold( 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE, 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 0.0)); 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetGamma( 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL gamma, 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesGamma( 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE, 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gamma)); 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearGamma( 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesGamma( 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE, 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 0.0)); 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetNoOp( 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesNoOp( 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE)); 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearNoOp( 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesNoOp( 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE)); 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetColorKey( 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& colorLow, 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& colorHigh, 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesColorKeys( 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE, 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov colorLow.GetValue(), 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov colorHigh.GetValue())); 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearColorKey( 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesColorKeys( 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE, 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL, 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL)); 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetOutputChannel( 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorChannelFlags channelFlags, 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesOutputChannel( 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE, 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov channelFlags)); 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearOutputChannel( 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesOutputChannel( 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE, 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ColorChannelFlagsLast)); 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetOutputChannelColorProfile( 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR *colorProfileFilename, 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile( 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE, 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov colorProfileFilename)); 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearOutputChannelColorProfile( 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile( 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE, 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL)); 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetRemapTable( 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT mapSize, 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const ColorMap *map, 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesRemapTable( 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TRUE, 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mapSize, 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov map)); 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearRemapTable( 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType type = ColorAdjustTypeDefault 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesRemapTable( 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov type, 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FALSE, 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 0, 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL)); 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetBrushRemapTable(IN UINT mapSize, 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const ColorMap *map) 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return this->SetRemapTable(mapSize, map, ColorAdjustTypeBrush); 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ClearBrushRemapTable() 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return this->ClearRemapTable(ColorAdjustTypeBrush); 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetWrapMode(IN WrapMode wrap, 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color = Color(), 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL clamp = FALSE) 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ARGB argb = color.GetValue(); 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetImageAttributesWrapMode( 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, wrap, argb, clamp)); 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #ifndef DCR_USE_NEW_145139 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetICMMode(IN BOOL on) 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov on; 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // This is not implemented. 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // The supported method for doing ICM conversion from the embedded 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // ICC profile is to use the Bitmap constructor from a file or stream 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // and specify TRUE for the useIcm parameter. This will cause the 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // image to be ICM converted when it's loaded from the file/stream 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // if the profile exists. 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(NotImplemented); 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// DllExports::GdipSetImageAttributesICMMode(nativeImageAttr, on) 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #endif 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // The flags of the palette are ignored. 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetAdjustedPalette(IN OUT ColorPalette* colorPalette, 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN ColorAdjustType colorAdjustType) const 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetImageAttributesAdjustedPalette( 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeImageAttr, colorPalette, colorAdjustType)); 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status lastStatus = lastResult; 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = Ok; 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return lastStatus; 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ImageAttributes(const ImageAttributes &); 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ImageAttributes& operator=(const ImageAttributes &); 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ImageAttributes(GpImageAttributes* imageAttr, Status status) 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeImageAttr(imageAttr); 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = status; 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov VOID SetNativeImageAttr(GpImageAttributes* nativeImageAttr) 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->nativeImageAttr = nativeImageAttr; 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (status != Ok) 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (lastResult = status); 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpImageAttributes* nativeImageAttr; 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 398