• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#Topic Color4f
2#Alias Color4f_Reference ##
3
4#Struct SkPM4f
5##
6
7#Struct SkRGBA4f
8
9#Code
10#Populate
11##
12
13Each component is stored as a 32-bit single precision floating point float value.
14All values are allowed, but only the range from zero to one is meaningful.
15
16Components are independent of the others if defined with kUnpremul_SkAlphaType;
17fA Alpha is may be greater or smaller than fG green, fB blue, or fR red.
18SkColor4f is shorthand for Unpremultiplied SkRGBA4f.
19
20Components are connected if defined with kPremul_SkAlphaType;
21fA Alpha is equal to or larger than fG green, fB blue, and fR red. The values
22stored in fG, fB, and fR combine the color component with the Alpha component.
23
24Values smaller than zero or larger than one are allowed. Values out of range
25may be used with Blend_Mode so that the final component is in range.
26
27#Member float  fR
28#Line # red component ##
29Single precision float for red ranges from no red (0.0) to full red (1.0).
30##
31
32#Member float  fG
33#Line # green component ##
34Single precision float for green ranges from no green (0.0) to full green (1.0).
35##
36
37#Member float  fB
38#Line # blue component ##
39Single precision float for blue ranges from no blue (0.0) to full blue (1.0).
40##
41
42#Member float  fA
43#Line # alpha component ##
44Single precision float for Alpha ranges from no Alpha (0.0) to full Alpha (1.0).
45##
46
47
48# ------------------------------------------------------------------------------
49
50#Method bool operator==(const SkRGBA4f& other) const
51#Line # compares SkRGBA4f for equality ##
52
53Compares SkRGBA4f with other, and returns true if all components are equivalent.
54
55#Param other  SkRGBA4f to compare ##
56
57#Return true if SkRGBA4f equals other ##
58
59#Example
60    SkColor4f colorRed = { 1, 0, 0, 1 };
61    SkColor4f colorNamedRed = SkColor4f::FromColor(SK_ColorRED);
62    SkDebugf("colorRed %c= colorNamedRed", colorRed == colorNamedRed ? '=' : '!');
63#StdOut
64colorRed == colorNamedRed
65##
66##
67
68#SeeAlso operator!=(const SkRGBA4f& other) const
69
70#Method ##
71
72# ------------------------------------------------------------------------------
73
74#Method bool operator!=(const SkRGBA4f& other) const
75#Line # compares SkRGBA4f for inequality ##
76
77Compares SkRGBA4f with other, and returns true if all components are not
78equivalent.
79
80#Param other  SkRGBA4f to compare ##
81
82#Return true if SkRGBA4f is not equal to other ##
83
84#Example
85    SkColor4f colorGray = { .5, .5, .5, 1 };
86    SkColor4f colorNamedGray = SkColor4f::FromColor(SK_ColorGRAY);
87    SkDebugf("colorGray %c= colorNamedGray ", colorGray != colorNamedGray ? '!' : '=');
88#StdOut
89colorGray != colorNamedGray
90##
91##
92
93#SeeAlso operator==(const SkRGBA4f& other) const
94
95#Method ##
96
97#Method SkRGBA4f operator*(float scale) const
98#Line # multiplies components by scale ##
99
100Multiplies each component by scale. Does not pin the result.
101
102#Param scale  component multiplier ##
103
104#Return scaled color ##
105
106#NoExample
107##
108
109#SeeAlso SkBlendMode::kMultiply
110
111#Method ##
112
113#Method SkRGBA4f operator*(const SkRGBA4f& scale) const
114
115Multiplies each component by scale component. Does not pin the result.
116
117#Param scale  SkRGBA4f component multipliers ##
118
119#Return scaled color ##
120
121#NoExample
122##
123
124#SeeAlso SkBlendMode::kMultiply
125
126#Method ##
127
128# ------------------------------------------------------------------------------
129
130#Subtopic Property_Functions
131#Line # member values ##
132#Subtopic Property_Functions ##
133
134#Method const float* vec() const
135#In Property_Functions
136#Line # returns array of components ##
137
138Returns SkRGBA4f components as a read-only array.
139
140#Return components as read-only array ##
141
142#Example
143    SkColor4f color = SkColor4f::FromColor(0x884488CC);
144    SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color.fR, color.fG, color.fB, color.fA);
145    const float* array = color.vec();
146    SkDebugf("[0]=%g [1]=%g [2]=%g [3]=%g\n", array[0], array[1], array[2], array[3]);
147#StdOut
148red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
149[0]=0.266667 [1]=0.533333 [2]=0.8 [3]=0.533333
150##
151##
152
153#SeeAlso SkColor4f
154
155#Method ##
156
157# ------------------------------------------------------------------------------
158
159#Method float* vec()
160#In Property_Functions
161#Line # returns array of components ##
162
163Returns SkRGBA4f components as a writable array.
164
165#Return components as writable array ##
166
167#Example
168    SkColor4f color = SkColor4f::FromColor(0x884488CC);
169    SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color.fR, color.fG, color.fB, color.fA);
170    float* array = color.vec();
171    array[3] = 1;
172    SkDebugf("[0]=%g [1]=%g [2]=%g [3]=%g\n", array[0], array[1], array[2], array[3]);
173#StdOut
174red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
175[0]=0.266667 [1]=0.533333 [2]=0.8 [3]=1
176##
177##
178
179#SeeAlso SkColor4f
180
181#Method ##
182
183#Method float operator[](int index) const
184#Line # returns component by index ##
185
186Returns SkRGBA4f component by index, zero through three. index out of range
187triggers an assert in debug builds.
188
189#Param index component, zero through three ##
190#Return component by index ##
191
192#NoExample
193##
194
195#SeeAlso vec
196
197#Method ##
198
199#Method float& operator[](int index)
200#Line # returns writable component reference ##
201
202Returns writable component reference by index, zero through three. index out of range
203triggers an assert in debug builds.
204
205#Param index component, zero through three ##
206#Return writable component reference by index ##
207
208#NoExample
209##
210
211#SeeAlso vec
212
213#Method ##
214
215# ------------------------------------------------------------------------------
216
217#Subtopic Utility_Functions
218#Line # less common functions ##
219#Subtopic Utility_Functions ##
220
221#Method bool isOpaque() const
222#In Utility_Functions
223#Line # returns if Alpha component is at maximum ##
224
225Returns true if Alpha component is one. Color has no transparency regardless of
226whether color is Premultiplied or Unpremultiplied. Triggers a debugging assert
227if Alpha not valid.
228
229#Return true if Alpha is one ##
230
231#NoExample
232##
233
234#SeeAlso vec SkColorGetA
235
236##
237
238# ------------------------------------------------------------------------------
239
240#Method bool fitsInBytes() const
241#In Utility_Functions
242#Line # returns if r,g,b are all in [0..1] ##
243
244Returns true if the Red, Green, and Blue component are all in [0..1].
245Asserts the Alpha is [0..1]
246
247#Return true Red, Green, and Blue component are all in [0..1] ##
248
249#NoExample
250##
251
252##
253
254# ------------------------------------------------------------------------------
255
256#Method static SkRGBA4f FromColor(SkColor color)
257#In Utility_Functions
258#Line # sets components from Color ##
259#Populate
260
261#Example
262    uint8_t red = 77, green = 101, blue = 153, alpha = 43;
263    SkColor argb = SkColorSetARGB(alpha, red, green, blue);
264    SkColor4f color4f = SkColor4f::FromColor(argb);
265    SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color4f.fR, color4f.fG, color4f.fB, color4f.fA);
266    SkColor fromColor4f = color4f.toSkColor();
267    SkDebugf("red=%d green=%d blue=%d alpha=%d\n", SkColorGetR(fromColor4f),
268             SkColorGetG(fromColor4f), SkColorGetB(fromColor4f), SkColorGetA(fromColor4f));
269#StdOut
270red=0.301961 green=0.396078 blue=0.6 alpha=0.168627
271red=77 green=101 blue=153 alpha=43
272##
273##
274
275#SeeAlso toSkColor
276
277#Method ##
278
279# ------------------------------------------------------------------------------
280
281#Method SkColor toSkColor() const
282#In Utility_Functions
283#Line # returns closest Color ##
284
285Converts to closest SkColor.
286
287#Return closest Color ##
288
289#Example
290    float red = 0.07, green = 0.13, blue = 0.32, alpha = 0.17;
291    SkColor4f color4f = { red, green, blue, alpha };
292    SkColor argb = color4f.toSkColor();
293    SkDebugf("red=%d green=%d blue=%d alpha=%d\n", SkColorGetR(argb),
294             SkColorGetG(argb), SkColorGetB(argb), SkColorGetA(argb));
295    SkColor4f fromSkColor = SkColor4f::FromColor(argb);
296    SkDebugf("red=%g green=%g blue=%g alpha=%g\n", fromSkColor.fR, fromSkColor.fG,
297                                                   fromSkColor.fB, fromSkColor.fA);
298#StdOut
299red=18 green=33 blue=82 alpha=43
300red=0.0705882 green=0.129412 blue=0.321569 alpha=0.168627
301##
302##
303
304#SeeAlso FromColor
305
306#Method ##
307
308# ------------------------------------------------------------------------------
309
310#Method static SkRGBA4f FromPMColor(SkPMColor)
311#In Utility_Functions
312#Line # converts from Premultiplied Color ##
313
314Converts from Premultiplied integer components to Unpremultiplied float
315components.
316
317#Param SkPMColor  Premultiplied color ##
318
319#Return Unpremultiplied color ##
320
321#NoExample
322##
323
324#SeeAlso FromColor
325
326#Method ##
327
328# ------------------------------------------------------------------------------
329
330#Method SkRGBA4f<kPremul_SkAlphaType> premul() const
331#In Utility
332#Line # returns Premultiplied color ##
333
334Returns SkColor4f with all components premultiplied by Alpha.
335
336#Return Premultiplied color ##
337
338#NoExample
339##
340
341#SeeAlso unpremul
342
343#Method ##
344
345#Method SkRGBA4f<kUnpremul_SkAlphaType> unpremul() const
346#In Utility
347#Line # returns Unpremultiplied color ##
348
349Returns SkRGBA4f with all components independent of Alpha.
350
351#Return Unpremultiplied color ##
352
353#NoExample
354##
355
356#SeeAlso premul
357
358#Method ##
359
360#Method uint32_t toBytes_RGBA() const
361#In Utility
362#Line # returns kRGBA_8888_SkColorType color ##
363
364Produces bytes in RGBA order. Component values are not affected by color Alpha.
365
366#Return color ##
367
368#NoExample
369##
370
371#Method ##
372
373#Method static SkRGBA4f FromBytes_RGBA(uint32_t color)
374#In Utility
375#Line # sets kRGBA_8888_SkColorType color ##
376
377Returns from color kRGBA_8888_SkColorType order. Component values are
378not affected by color Alpha.
379
380#Param color  Premultiplied or Unpremultiplied ##
381#Return color ##
382
383#NoExample
384##
385
386#Method ##
387
388#Method SkRGBA4f makeOpaque() const
389#In Utility
390#Line # returns color without transparency ##
391
392Returns color with Alpha set to one.
393
394#Return color ##
395
396#NoExample
397##
398
399#Method ##
400
401#Struct ##
402
403#Typedef SkRGBA4f SkColor4f
404#Line # defines Unpremultiplied Color using floats ##
405
406#Code
407using SkColor4f = SkRGBA4f<kUnpremul_SkAlphaType>;
408##
409
410##
411
412#Topic Color4f ##
413