1 #Topic Color4f 2 #Alias Color4f_Reference ## 3 4 #Struct SkPM4f 5 ## 6 7 #Struct SkRGBA4f 8 9 #Code 10 #Populate 11 ## 12 13 Each component is stored as a 32-bit single precision floating point float value. 14 All values are allowed, but only the range from zero to one is meaningful. 15 16 Components are independent of the others if defined with kUnpremul_SkAlphaType; 17 fA Alpha is may be greater or smaller than fG green, fB blue, or fR red. 18 SkColor4f is shorthand for Unpremultiplied SkRGBA4f. 19 20 Components are connected if defined with kPremul_SkAlphaType; 21 fA Alpha is equal to or larger than fG green, fB blue, and fR red. The values 22 stored in fG, fB, and fR combine the color component with the Alpha component. 23 24 Values smaller than zero or larger than one are allowed. Values out of range 25 may be used with Blend_Mode so that the final component is in range. 26 27 #Member float fR 28 #Line # red component ## 29 Single 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 ## 34 Single 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 ## 39 Single 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 ## 44 Single 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 53 Compares 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 64 colorRed == 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 77 Compares SkRGBA4f with other, and returns true if all components are not 78 equivalent. 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 89 colorGray != 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 100 Multiplies 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 115 Multiplies 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 138 Returns 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 148 red=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 163 Returns 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 174 red=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 186 Returns SkRGBA4f component by index, zero through three. index out of range 187 triggers 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 202 Returns writable component reference by index, zero through three. index out of range 203 triggers 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 225 Returns true if Alpha component is one. Color has no transparency regardless of 226 whether color is Premultiplied or Unpremultiplied. Triggers a debugging assert 227 if 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 static SkRGBA4f FromColor(SkColor color) 241 #In Utility_Functions 242 #Line # sets components from Color ## 243 #Populate 244 245 #Example 246 uint8_t red = 77, green = 101, blue = 153, alpha = 43; 247 SkColor argb = SkColorSetARGB(alpha, red, green, blue); 248 SkColor4f color4f = SkColor4f::FromColor(argb); 249 SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color4f.fR, color4f.fG, color4f.fB, color4f.fA); 250 SkColor fromColor4f = color4f.toSkColor(); 251 SkDebugf("red=%d green=%d blue=%d alpha=%d\n", SkColorGetR(fromColor4f), 252 SkColorGetG(fromColor4f), SkColorGetB(fromColor4f), SkColorGetA(fromColor4f)); 253 #StdOut 254 red=0.301961 green=0.396078 blue=0.6 alpha=0.168627 255 red=77 green=101 blue=153 alpha=43 256 ## 257 ## 258 259 #SeeAlso toSkColor 260 261 #Method ## 262 263 # ------------------------------------------------------------------------------ 264 265 #Method SkColor toSkColor() const 266 #In Utility_Functions 267 #Line # returns closest Color ## 268 269 Converts to closest SkColor. 270 271 #Return closest Color ## 272 273 #Example 274 float red = 0.07, green = 0.13, blue = 0.32, alpha = 0.17; 275 SkColor4f color4f = { red, green, blue, alpha }; 276 SkColor argb = color4f.toSkColor(); 277 SkDebugf("red=%d green=%d blue=%d alpha=%d\n", SkColorGetR(argb), 278 SkColorGetG(argb), SkColorGetB(argb), SkColorGetA(argb)); 279 SkColor4f fromSkColor = SkColor4f::FromColor(argb); 280 SkDebugf("red=%g green=%g blue=%g alpha=%g\n", fromSkColor.fR, fromSkColor.fG, 281 fromSkColor.fB, fromSkColor.fA); 282 #StdOut 283 red=18 green=33 blue=82 alpha=43 284 red=0.0705882 green=0.129412 blue=0.321569 alpha=0.168627 285 ## 286 ## 287 288 #SeeAlso FromColor 289 290 #Method ## 291 292 # ------------------------------------------------------------------------------ 293 294 #Method static SkRGBA4f FromPMColor(SkPMColor) 295 #In Utility_Functions 296 #Line # converts from Premultiplied Color ## 297 298 Converts from Premultiplied integer components to Unpremultiplied float 299 components. 300 301 #Param SkPMColor Premultiplied color ## 302 303 #Return Unpremultiplied color ## 304 305 #NoExample 306 ## 307 308 #SeeAlso FromColor 309 310 #Method ## 311 312 # ------------------------------------------------------------------------------ 313 314 #Method SkRGBA4f<kPremul_SkAlphaType> premul() const 315 #In Utility 316 #Line # returns Premultiplied color ## 317 318 Returns SkColor4f with all components premultiplied by Alpha. 319 320 #Return Premultiplied color ## 321 322 #NoExample 323 ## 324 325 #SeeAlso unpremul 326 327 #Method ## 328 329 #Method SkRGBA4f<kUnpremul_SkAlphaType> unpremul() const 330 #In Utility 331 #Line # returns Unpremultiplied color ## 332 333 Returns SkRGBA4f with all components independent of Alpha. 334 335 #Return Unpremultiplied color ## 336 337 #NoExample 338 ## 339 340 #SeeAlso premul 341 342 #Method ## 343 344 #Method uint32_t toBytes_RGBA() const 345 #In Utility 346 #Line # returns kRGBA_8888_SkColorType color ## 347 348 Produces bytes in RGBA order. Component values are not affected by color Alpha. 349 350 #Return color ## 351 352 #NoExample 353 ## 354 355 #Method ## 356 357 #Method static SkRGBA4f FromBytes_RGBA(uint32_t color) 358 #In Utility 359 #Line # sets kRGBA_8888_SkColorType color ## 360 361 Returns from color kRGBA_8888_SkColorType order. Component values are 362 not affected by color Alpha. 363 364 #Param color Premultiplied or Unpremultiplied ## 365 #Return color ## 366 367 #NoExample 368 ## 369 370 #Method ## 371 372 #Method SkRGBA4f makeOpaque() const 373 #In Utility 374 #Line # returns color without transparency ## 375 376 Returns color with Alpha set to one. 377 378 #Return color ## 379 380 #NoExample 381 ## 382 383 #Method ## 384 385 #Struct ## 386 387 #Typedef SkRGBA4f SkColor4f 388 #Line # defines Unpremultiplied Color using floats ## 389 390 #Code 391 using SkColor4f = SkRGBA4f<kUnpremul_SkAlphaType>; 392 ## 393 394 ## 395 396 #Topic Color4f ## 397