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