Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 1 | #Topic Color4f |
Cary Clark | 137b874 | 2018-05-30 09:21:49 -0400 | [diff] [blame] | 2 | #Alias Color4f_Reference ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 3 | |
| 4 | #Struct SkColor4f |
| 5 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 6 | Each component is stored as a 32-bit single precision floating point float value. |
| 7 | All values are allowed, but only the range from zero to one is meaningful. |
| 8 | |
| 9 | Each component is independent of the others; fA Alpha is not Premultiplied |
| 10 | with fG green, fB blue, or fR red. |
| 11 | |
| 12 | Values smaller than zero or larger than one are allowed. Values out of range |
| 13 | may be used with Blend_Mode so that the final component is in range. |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 14 | |
| 15 | #Subtopic Overview |
Cary Clark | 682c58d | 2018-05-16 07:07:07 -0400 | [diff] [blame] | 16 | #Populate |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 17 | ## |
| 18 | |
| 19 | #Subtopic Operator |
| 20 | #Populate |
| 21 | ## |
| 22 | |
| 23 | #Subtopic Member_Function |
| 24 | #Populate |
| 25 | ## |
| 26 | |
| 27 | #Member float fR |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 28 | #Line # red component ## |
| 29 | Single precision float for red ranges from no red (0.0) to full red (1.0). |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 30 | ## |
| 31 | |
| 32 | #Member float fG |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 33 | #Line # green component ## |
| 34 | Single precision float for green ranges from no green (0.0) to full green (1.0). |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 35 | ## |
| 36 | |
| 37 | #Member float fB |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 38 | #Line # blue component ## |
| 39 | Single precision float for blue ranges from no blue (0.0) to full blue (1.0). |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 40 | ## |
| 41 | |
| 42 | #Member float fA |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 43 | #Line # alpha component ## |
| 44 | Single precision float for Alpha ranges from no Alpha (0.0) to full Alpha (1.0). |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 45 | ## |
| 46 | |
| 47 | # ------------------------------------------------------------------------------ |
| 48 | |
| 49 | #Method bool operator==(const SkColor4f& other)_const |
| 50 | #In Operator |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 51 | #Line # compares Color4f for equality ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 52 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 53 | Compares Color4f with other, and returns true if all components are equivalent. |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 54 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 55 | #Param other Color4f to compare ## |
| 56 | |
| 57 | #Return true if Color4f equals other ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 58 | |
| 59 | #Example |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 60 | SkColor4f colorRed = { 1, 0, 0, 1 };
|
| 61 | SkColor4f colorNamedRed = SkColor4f::FromColor(SK_ColorRED);
|
| 62 | SkDebugf("colorRed %c= colorNamedRed", colorRed == colorNamedRed ? '=' : '!');
|
| 63 | #StdOut |
| 64 | colorRed == colorNamedRed |
| 65 | ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 66 | ## |
| 67 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 68 | #SeeAlso operator!=(const SkColor4f& other)_const |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 69 | |
| 70 | #Method ## |
| 71 | |
| 72 | # ------------------------------------------------------------------------------ |
| 73 | |
| 74 | #Method bool operator!=(const SkColor4f& other)_const |
| 75 | #In Operator |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 76 | #Line # compares colors for inequality ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 77 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 78 | Compares Color4f with other, and returns true if all components are not |
| 79 | equivalent. |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 80 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 81 | #Param other Color4f to compare ## |
| 82 | |
| 83 | #Return true if Color4f is not equal to other ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 84 | |
| 85 | #Example |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 86 | SkColor4f colorGray = { .5, .5, .5, 1 };
|
| 87 | SkColor4f colorNamedGray = SkColor4f::FromColor(SK_ColorGRAY);
|
| 88 | SkDebugf("colorGray %c= colorNamedGray ", colorGray != colorNamedGray ? '!' : '=');
|
| 89 | #StdOut |
| 90 | colorGray != colorNamedGray |
| 91 | ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 92 | ## |
| 93 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 94 | #SeeAlso operator==(const SkColor4f& other)_const |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 95 | |
| 96 | #Method ## |
| 97 | |
| 98 | # ------------------------------------------------------------------------------ |
| 99 | |
| 100 | #Method const float* vec() const |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 101 | #In Property |
| 102 | #Line # returns array of components ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 103 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 104 | Returns Color4f components as a read-only array. |
| 105 | |
| 106 | #Return components as read-only array ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 107 | |
| 108 | #Example |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 109 | SkColor4f color = SkColor4f::FromColor(0x884488CC);
|
| 110 | SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color.fR, color.fG, color.fB, color.fA);
|
| 111 | const float* array = color.vec();
|
| 112 | SkDebugf("[0]=%g [1]=%g [2]=%g [3]=%g\n", array[0], array[1], array[2], array[3]);
|
| 113 | #StdOut |
Cary Clark | 5b1f953 | 2018-08-28 14:53:37 -0400 | [diff] [blame^] | 114 | red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
|
| 115 | [0]=0.266667 [1]=0.533333 [2]=0.8 [3]=0.533333 |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 116 | ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 117 | ## |
| 118 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 119 | #SeeAlso SkColor4f |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 120 | |
| 121 | #Method ## |
| 122 | |
| 123 | # ------------------------------------------------------------------------------ |
| 124 | |
| 125 | #Method float* vec() |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 126 | #In Property |
| 127 | #Line # returns array of components ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 128 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 129 | Returns Color4f components as a writable array. |
| 130 | |
| 131 | #Return components as writable array ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 132 | |
| 133 | #Example |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 134 | SkColor4f color = SkColor4f::FromColor(0x884488CC);
|
| 135 | SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color.fR, color.fG, color.fB, color.fA);
|
| 136 | float* array = color.vec();
|
| 137 | array[3] = 1;
|
| 138 | SkDebugf("[0]=%g [1]=%g [2]=%g [3]=%g\n", array[0], array[1], array[2], array[3]); |
| 139 | #StdOut |
Cary Clark | 5b1f953 | 2018-08-28 14:53:37 -0400 | [diff] [blame^] | 140 | red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
|
| 141 | [0]=0.266667 [1]=0.533333 [2]=0.8 [3]=1 |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 142 | ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 143 | ## |
| 144 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 145 | #SeeAlso SkColor4f |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 146 | |
| 147 | #Method ## |
| 148 | |
| 149 | # ------------------------------------------------------------------------------ |
| 150 | |
| 151 | #Method static SkColor4f Pin(float r, float g, float b, float a) |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 152 | #In Utility |
| 153 | #Line # sets components to valid range ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 154 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 155 | Constructs and returns Color4f with each component pinned from zero to one. |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 156 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 157 | #Param r red component ## |
| 158 | #Param g green component ## |
| 159 | #Param b blue component ## |
| 160 | #Param a Alpha component ## |
| 161 | |
| 162 | #Return Color4f with valid components ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 163 | |
| 164 | #Example |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 165 | #Height 40 |
| 166 | uint32_t storage[8]; |
| 167 | SkImageInfo info = SkImageInfo::MakeN32Premul(8, 1); |
| 168 | SkPixmap pixmap(info, storage, info.minRowBytes()); |
| 169 | pixmap.erase(SK_ColorWHITE); |
| 170 | SkIRect bounds = {0, 0, 1, 1}; |
| 171 | SkColor4f colors[] = { SkColor4f::Pin(1.5, 0.45f, 0.0, 1), |
| 172 | SkColor4f::Pin(1, 0.45f, -0.25, 1), |
| 173 | {1.5, 0.45f, 0.0, 1}, |
| 174 | {1, 0.45f, -0.25, 1}, |
| 175 | }; |
| 176 | for (auto color4f : colors) { |
| 177 | pixmap.erase(color4f, &bounds); |
| 178 | bounds.offset(2, 0); |
| 179 | } |
| 180 | SkBitmap bitmap; |
| 181 | canvas->scale(20, 20); |
| 182 | bitmap.installPixels(pixmap); |
| 183 | canvas->drawBitmap(bitmap, 0, 0); |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 184 | ## |
| 185 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 186 | #SeeAlso pin() FromColor |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 187 | |
| 188 | #Method ## |
| 189 | |
| 190 | # ------------------------------------------------------------------------------ |
| 191 | |
| 192 | #Method static SkColor4f FromColor(SkColor) |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 193 | #In Utility |
| 194 | #Line # sets components from Color ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 195 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 196 | Converts to closest Color4f. |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 197 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 198 | #Param SkColor Color with Alpha, red, blue, and green components ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 199 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 200 | #Return Color4f equivalent ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 201 | |
| 202 | #Example |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 203 | uint8_t red = 77, green = 101, blue = 153, alpha = 43;
|
| 204 | SkColor argb = SkColorSetARGB(alpha, red, green, blue);
|
| 205 | SkColor4f color4f = SkColor4f::FromColor(argb);
|
| 206 | SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color4f.fR, color4f.fG, color4f.fB, color4f.fA);
|
| 207 | SkColor fromColor4f = color4f.toSkColor();
|
| 208 | SkDebugf("red=%d green=%d blue=%d alpha=%d\n", SkColorGetR(fromColor4f),
|
| 209 | SkColorGetG(fromColor4f), SkColorGetB(fromColor4f), SkColorGetA(fromColor4f)); |
| 210 | #StdOut |
Cary Clark | 5b1f953 | 2018-08-28 14:53:37 -0400 | [diff] [blame^] | 211 | red=0.301961 green=0.396078 blue=0.6 alpha=0.168627
|
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 212 | red=77 green=101 blue=153 alpha=43 |
| 213 | ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 214 | ## |
| 215 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 216 | #SeeAlso toSkColor |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 217 | |
| 218 | #Method ## |
| 219 | |
| 220 | # ------------------------------------------------------------------------------ |
| 221 | |
| 222 | #Method SkColor toSkColor() const |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 223 | #In Utility |
| 224 | #Line # returns closest Color ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 225 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 226 | Converts to closest SkColor. |
| 227 | |
| 228 | #Return closest Color ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 229 | |
| 230 | #Example |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 231 | float red = 0.07, green = 0.13, blue = 0.32, alpha = 0.17;
|
| 232 | SkColor4f color4f = { red, green, blue, alpha };
|
| 233 | SkColor argb = color4f.toSkColor();
|
| 234 | SkDebugf("red=%d green=%d blue=%d alpha=%d\n", SkColorGetR(argb),
|
| 235 | SkColorGetG(argb), SkColorGetB(argb), SkColorGetA(argb)); |
| 236 | SkColor4f fromSkColor = SkColor4f::FromColor(argb);
|
| 237 | SkDebugf("red=%g green=%g blue=%g alpha=%g\n", fromSkColor.fR, fromSkColor.fG,
|
| 238 | fromSkColor.fB, fromSkColor.fA);
|
| 239 | #StdOut
|
Cary Clark | 5b1f953 | 2018-08-28 14:53:37 -0400 | [diff] [blame^] | 240 | red=18 green=33 blue=82 alpha=43
|
| 241 | red=0.0705882 green=0.129412 blue=0.321569 alpha=0.168627
|
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 242 | ##
|
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 243 | ## |
| 244 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 245 | #SeeAlso FromColor |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 246 | |
| 247 | #Method ## |
| 248 | |
| 249 | # ------------------------------------------------------------------------------ |
| 250 | |
| 251 | #Method SkColor4f pin() const |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 252 | #In Utility |
| 253 | #Line # sets components to valid range ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 254 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 255 | Returns Color4f with all components in the range from zero to one. |
| 256 | |
| 257 | #Return Color4f with valid components ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 258 | |
| 259 | #Example |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 260 | #Height 40 |
| 261 | uint32_t storage[8]; |
| 262 | SkImageInfo info = SkImageInfo::MakeN32Premul(8, 1); |
| 263 | SkPixmap pixmap(info, storage, info.minRowBytes()); |
| 264 | pixmap.erase(SK_ColorWHITE); |
| 265 | SkIRect bounds = {0, 0, 1, 1}; |
| 266 | SkColor4f colors[] = { {1.5, 0.45f, 0.0, 1}, |
| 267 | {1, 0.45f, -0.25, 1}, |
| 268 | }; |
| 269 | for (auto color4f : colors) { |
| 270 | pixmap.erase(color4f, &bounds); |
| 271 | bounds.offset(2, 0); |
| 272 | pixmap.erase(color4f.pin(), &bounds); |
| 273 | bounds.offset(2, 0); |
| 274 | } |
| 275 | SkBitmap bitmap; |
| 276 | canvas->scale(20, 20); |
| 277 | bitmap.installPixels(pixmap); |
| 278 | canvas->drawBitmap(bitmap, 0, 0); |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 279 | ## |
| 280 | |
Cary Clark | ffb3d68 | 2018-05-17 12:17:28 -0400 | [diff] [blame] | 281 | #SeeAlso Pin |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 282 | |
| 283 | #Method ## |
| 284 | |
| 285 | # ------------------------------------------------------------------------------ |
| 286 | |
| 287 | #Method SkPM4f premul() const |
Cary Clark | b94f6da | 2018-06-08 11:54:32 -0400 | [diff] [blame] | 288 | #In Utility |
| 289 | #Line # returns Premultiplied color; internal use only ## |
| 290 | #Private |
| 291 | Internal use only. |
| 292 | ## |
| 293 | #Return Premultiplied color ## |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 294 | #Method ## |
| 295 | |
| 296 | #Struct SkColor4f ## |
| 297 | |
Cary Clark | 682c58d | 2018-05-16 07:07:07 -0400 | [diff] [blame] | 298 | #Struct SkPM4f |
Cary Clark | b94f6da | 2018-06-08 11:54:32 -0400 | [diff] [blame] | 299 | #Private |
| 300 | Internal use only. |
| 301 | ## |
Cary Clark | 682c58d | 2018-05-16 07:07:07 -0400 | [diff] [blame] | 302 | ## |
| 303 | |
Cary Clark | 2d4bf5f | 2018-04-16 08:37:38 -0400 | [diff] [blame] | 304 | #Topic Color4f ## |