1 /*
2 * Copyright (C) 2007 Google (Evan Stade)
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 #include "windef.h"
20 #include "wingdi.h"
21
22 #include "objbase.h"
23
24 #include "gdiplus.h"
25 #include "gdiplus_private.h"
26 #include "wine/debug.h"
27
28 WINE_DEFAULT_DEBUG_CHANNEL(gdiplus);
29
30 GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes *imageattr,
31 GpImageAttributes **cloneImageattr)
32 {
33 GpStatus stat;
34
35 TRACE("(%p, %p)\n", imageattr, cloneImageattr);
36
37 if(!imageattr || !cloneImageattr)
38 return InvalidParameter;
39
40 stat = GdipCreateImageAttributes(cloneImageattr);
41
42 if (stat == Ok)
43 **cloneImageattr = *imageattr;
44
45 return stat;
46 }
47
48 GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes **imageattr)
49 {
50 if(!imageattr)
51 return InvalidParameter;
52
53 *imageattr = GdipAlloc(sizeof(GpImageAttributes));
54 if(!*imageattr) return OutOfMemory;
55
56 (*imageattr)->wrap = WrapModeClamp;
57
58 TRACE("<-- %p\n", *imageattr);
59
60 return Ok;
61 }
62
63 GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes *imageattr)
64 {
65 TRACE("(%p)\n", imageattr);
66
67 if(!imageattr)
68 return InvalidParameter;
69
70 GdipFree(imageattr);
71
72 return Ok;
73 }
74
75 GpStatus WINGDIPAPI GdipSetImageAttributesColorKeys(GpImageAttributes *imageattr,
76 ColorAdjustType type, BOOL enableFlag, ARGB colorLow, ARGB colorHigh)
77 {
78 TRACE("(%p,%u,%i,%08x,%08x)\n", imageattr, type, enableFlag, colorLow, colorHigh);
79
80 if(!imageattr || type >= ColorAdjustTypeCount)
81 return InvalidParameter;
82
83 imageattr->colorkeys[type].enabled = enableFlag;
84 imageattr->colorkeys[type].low = colorLow;
85 imageattr->colorkeys[type].high = colorHigh;
86
87 return Ok;
88 }
89
90 GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes *imageattr,
91 ColorAdjustType type, BOOL enableFlag, GDIPCONST ColorMatrix* colorMatrix,
92 GDIPCONST ColorMatrix* grayMatrix, ColorMatrixFlags flags)
93 {
94 TRACE("(%p,%u,%i,%p,%p,%u)\n", imageattr, type, enableFlag, colorMatrix,
95 grayMatrix, flags);
96
97 if(!imageattr || type >= ColorAdjustTypeCount || flags > ColorMatrixFlagsAltGray)
98 return InvalidParameter;
99
100 if (enableFlag)
101 {
102 if (!colorMatrix)
103 return InvalidParameter;
104
105 if (flags == ColorMatrixFlagsAltGray)
106 {
107 if (!grayMatrix)
108 return InvalidParameter;
109
110 imageattr->colormatrices[type].graymatrix = *grayMatrix;
111 }
112
113 imageattr->colormatrices[type].colormatrix = *colorMatrix;
114 imageattr->colormatrices[type].flags = flags;
115 }
116
117 imageattr->colormatrices[type].enabled = enableFlag;
118
119 return Ok;
120 }
121
122 GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes *imageAttr,
123 WrapMode wrap, ARGB argb, BOOL clamp)
124 {
125 TRACE("(%p,%u,%08x,%i)\n", imageAttr, wrap, argb, clamp);
126
127 if(!imageAttr || wrap > WrapModeClamp)
128 return InvalidParameter;
129
130 imageAttr->wrap = wrap;
131 imageAttr->outside_color = argb;
132 imageAttr->clamp = clamp;
133
134 return Ok;
135 }
136
137 GpStatus WINGDIPAPI GdipSetImageAttributesCachedBackground(GpImageAttributes *imageAttr,
138 BOOL enableFlag)
139 {
140 static int calls;
141
142 TRACE("(%p,%i)\n", imageAttr, enableFlag);
143
144 if(!(calls++))
145 FIXME("not implemented\n");
146
147 return NotImplemented;
148 }
149
150 GpStatus WINGDIPAPI GdipSetImageAttributesGamma(GpImageAttributes *imageAttr,
151 ColorAdjustType type, BOOL enableFlag, REAL gamma)
152 {
153 TRACE("(%p,%u,%i,%0.2f)\n", imageAttr, type, enableFlag, gamma);
154
155 if (!imageAttr || (enableFlag && gamma <= 0.0) || type >= ColorAdjustTypeCount)
156 return InvalidParameter;
157
158 imageAttr->gamma_enabled[type] = enableFlag;
159 imageAttr->gamma[type] = gamma;
160
161 return Ok;
162 }
163
164 GpStatus WINGDIPAPI GdipSetImageAttributesNoOp(GpImageAttributes *imageAttr,
165 ColorAdjustType type, BOOL enableFlag)
166 {
167 static int calls;
168
169 TRACE("(%p,%u,%i)\n", imageAttr, type, enableFlag);
170
171 if(!(calls++))
172 FIXME("not implemented\n");
173
174 return NotImplemented;
175 }
176
177 GpStatus WINGDIPAPI GdipSetImageAttributesOutputChannel(GpImageAttributes *imageAttr,
178 ColorAdjustType type, BOOL enableFlag, ColorChannelFlags channelFlags)
179 {
180 static int calls;
181
182 TRACE("(%p,%u,%i,%x)\n", imageAttr, type, enableFlag, channelFlags);
183
184 if(!(calls++))
185 FIXME("not implemented\n");
186
187 return NotImplemented;
188 }
189
190 GpStatus WINGDIPAPI GdipSetImageAttributesOutputChannelColorProfile(GpImageAttributes *imageAttr,
191 ColorAdjustType type, BOOL enableFlag,
192 GDIPCONST WCHAR *colorProfileFilename)
193 {
194 static int calls;
195
196 TRACE("(%p,%u,%i,%s)\n", imageAttr, type, enableFlag, debugstr_w(colorProfileFilename));
197
198 if(!(calls++))
199 FIXME("not implemented\n");
200
201 return NotImplemented;
202 }
203
204 GpStatus WINGDIPAPI GdipSetImageAttributesRemapTable(GpImageAttributes *imageAttr,
205 ColorAdjustType type, BOOL enableFlag, UINT mapSize,
206 GDIPCONST ColorMap *map)
207 {
208 TRACE("(%p,%u,%i,%u,%p)\n", imageAttr, type, enableFlag, mapSize, map);
209
210 if(!imageAttr || type >= ColorAdjustTypeCount)
211 return InvalidParameter;
212
213 if (enableFlag)
214 {
215 if(!map || !mapSize)
216 return InvalidParameter;
217
218 imageAttr->colorremaptables[type].mapsize = mapSize;
219 imageAttr->colorremaptables[type].colormap = map;
220 }
221
222 imageAttr->colorremaptables[type].enabled = enableFlag;
223
224 return Ok;
225 }
226
227 GpStatus WINGDIPAPI GdipSetImageAttributesThreshold(GpImageAttributes *imageAttr,
228 ColorAdjustType type, BOOL enableFlag, REAL threshold)
229 {
230 static int calls;
231
232 TRACE("(%p,%u,%i,%0.2f)\n", imageAttr, type, enableFlag, threshold);
233
234 if(!(calls++))
235 FIXME("not implemented\n");
236
237 return NotImplemented;
238 }
239
240 GpStatus WINGDIPAPI GdipSetImageAttributesToIdentity(GpImageAttributes *imageAttr,
241 ColorAdjustType type)
242 {
243 static int calls;
244
245 TRACE("(%p,%u)\n", imageAttr, type);
246
247 if(!(calls++))
248 FIXME("not implemented\n");
249
250 return NotImplemented;
251 }
252
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.