c9b49fe8d5
NOTRY=true TBR=brianosman@google.com Docs-Preview: https://skia.org/?cl=156300 Bug: skia: Change-Id: I7e4f8079b5c30dfaf08cf719a5d90a0eff64906b Reviewed-on: https://skia-review.googlesource.com/156300 Commit-Queue: Cary Clark <caryclark@skia.org> Auto-Submit: Cary Clark <caryclark@skia.org> Reviewed-by: Cary Clark <caryclark@skia.org>
335 lines
8.4 KiB
Plaintext
335 lines
8.4 KiB
Plaintext
#Topic Color4f
|
|
#Alias Color4f_Reference ##
|
|
|
|
#Struct SkColor4f
|
|
|
|
Each component is stored as a 32-bit single precision floating point float value.
|
|
All values are allowed, but only the range from zero to one is meaningful.
|
|
|
|
Each component is independent of the others; fA Alpha is not Premultiplied
|
|
with fG green, fB blue, or fR red.
|
|
|
|
Values smaller than zero or larger than one are allowed. Values out of range
|
|
may be used with Blend_Mode so that the final component is in range.
|
|
|
|
#Subtopic Overview
|
|
#Populate
|
|
##
|
|
|
|
#Subtopic Operator
|
|
#Populate
|
|
##
|
|
|
|
#Subtopic Member_Function
|
|
#Populate
|
|
##
|
|
|
|
#Member float fR
|
|
#Line # red component ##
|
|
Single precision float for red ranges from no red (0.0) to full red (1.0).
|
|
##
|
|
|
|
#Member float fG
|
|
#Line # green component ##
|
|
Single precision float for green ranges from no green (0.0) to full green (1.0).
|
|
##
|
|
|
|
#Member float fB
|
|
#Line # blue component ##
|
|
Single precision float for blue ranges from no blue (0.0) to full blue (1.0).
|
|
##
|
|
|
|
#Member float fA
|
|
#Line # alpha component ##
|
|
Single precision float for Alpha ranges from no Alpha (0.0) to full Alpha (1.0).
|
|
##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method bool operator==(const SkColor4f& other)_const
|
|
#In Operator
|
|
#Line # compares Color4f for equality ##
|
|
|
|
Compares Color4f with other, and returns true if all components are equivalent.
|
|
|
|
#Param other Color4f to compare ##
|
|
|
|
#Return true if Color4f equals other ##
|
|
|
|
#Example
|
|
SkColor4f colorRed = { 1, 0, 0, 1 };
|
|
SkColor4f colorNamedRed = SkColor4f::FromColor(SK_ColorRED);
|
|
SkDebugf("colorRed %c= colorNamedRed", colorRed == colorNamedRed ? '=' : '!');
|
|
#StdOut
|
|
colorRed == colorNamedRed
|
|
##
|
|
##
|
|
|
|
#SeeAlso operator!=(const SkColor4f& other)_const
|
|
|
|
#Method ##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method bool operator!=(const SkColor4f& other)_const
|
|
#In Operator
|
|
#Line # compares colors for inequality ##
|
|
|
|
Compares Color4f with other, and returns true if all components are not
|
|
equivalent.
|
|
|
|
#Param other Color4f to compare ##
|
|
|
|
#Return true if Color4f is not equal to other ##
|
|
|
|
#Example
|
|
SkColor4f colorGray = { .5, .5, .5, 1 };
|
|
SkColor4f colorNamedGray = SkColor4f::FromColor(SK_ColorGRAY);
|
|
SkDebugf("colorGray %c= colorNamedGray ", colorGray != colorNamedGray ? '!' : '=');
|
|
#StdOut
|
|
colorGray != colorNamedGray
|
|
##
|
|
##
|
|
|
|
#SeeAlso operator==(const SkColor4f& other)_const
|
|
|
|
#Method ##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method const float* vec() const
|
|
#In Property
|
|
#Line # returns array of components ##
|
|
|
|
Returns Color4f components as a read-only array.
|
|
|
|
#Return components as read-only array ##
|
|
|
|
#Example
|
|
SkColor4f color = SkColor4f::FromColor(0x884488CC);
|
|
SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color.fR, color.fG, color.fB, color.fA);
|
|
const float* array = color.vec();
|
|
SkDebugf("[0]=%g [1]=%g [2]=%g [3]=%g\n", array[0], array[1], array[2], array[3]);
|
|
#StdOut
|
|
red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
|
|
[0]=0.266667 [1]=0.533333 [2]=0.8 [3]=0.533333
|
|
##
|
|
##
|
|
|
|
#SeeAlso SkColor4f
|
|
|
|
#Method ##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method float* vec()
|
|
#In Property
|
|
#Line # returns array of components ##
|
|
|
|
Returns Color4f components as a writable array.
|
|
|
|
#Return components as writable array ##
|
|
|
|
#Example
|
|
SkColor4f color = SkColor4f::FromColor(0x884488CC);
|
|
SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color.fR, color.fG, color.fB, color.fA);
|
|
float* array = color.vec();
|
|
array[3] = 1;
|
|
SkDebugf("[0]=%g [1]=%g [2]=%g [3]=%g\n", array[0], array[1], array[2], array[3]);
|
|
#StdOut
|
|
red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
|
|
[0]=0.266667 [1]=0.533333 [2]=0.8 [3]=1
|
|
##
|
|
##
|
|
|
|
#SeeAlso SkColor4f
|
|
|
|
#Method ##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method static SkColor4f Pin(float r, float g, float b, float a)
|
|
#In Utility
|
|
#Line # sets components to valid range ##
|
|
|
|
Constructs and returns Color4f with each component pinned from zero to one.
|
|
|
|
#Param r red component ##
|
|
#Param g green component ##
|
|
#Param b blue component ##
|
|
#Param a Alpha component ##
|
|
|
|
#Return Color4f with valid components ##
|
|
|
|
#Example
|
|
#Height 40
|
|
uint32_t storage[8];
|
|
SkImageInfo info = SkImageInfo::MakeN32Premul(8, 1);
|
|
SkPixmap pixmap(info, storage, info.minRowBytes());
|
|
pixmap.erase(SK_ColorWHITE);
|
|
SkIRect bounds = {0, 0, 1, 1};
|
|
SkColor4f colors[] = { SkColor4f::Pin(1.5, 0.45f, 0.0, 1),
|
|
SkColor4f::Pin(1, 0.45f, -0.25, 1),
|
|
{1.5, 0.45f, 0.0, 1},
|
|
{1, 0.45f, -0.25, 1},
|
|
};
|
|
for (auto color4f : colors) {
|
|
pixmap.erase(color4f, &bounds);
|
|
bounds.offset(2, 0);
|
|
}
|
|
SkBitmap bitmap;
|
|
canvas->scale(20, 20);
|
|
bitmap.installPixels(pixmap);
|
|
canvas->drawBitmap(bitmap, 0, 0);
|
|
##
|
|
|
|
#SeeAlso pin() FromColor
|
|
|
|
#Method ##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method static SkColor4f FromColor(SkColor)
|
|
#In Utility
|
|
#Line # sets components from Color ##
|
|
|
|
Converts to closest Color4f.
|
|
|
|
#Param SkColor Color with Alpha, red, blue, and green components ##
|
|
|
|
#Return Color4f equivalent ##
|
|
|
|
#Example
|
|
uint8_t red = 77, green = 101, blue = 153, alpha = 43;
|
|
SkColor argb = SkColorSetARGB(alpha, red, green, blue);
|
|
SkColor4f color4f = SkColor4f::FromColor(argb);
|
|
SkDebugf("red=%g green=%g blue=%g alpha=%g\n", color4f.fR, color4f.fG, color4f.fB, color4f.fA);
|
|
SkColor fromColor4f = color4f.toSkColor();
|
|
SkDebugf("red=%d green=%d blue=%d alpha=%d\n", SkColorGetR(fromColor4f),
|
|
SkColorGetG(fromColor4f), SkColorGetB(fromColor4f), SkColorGetA(fromColor4f));
|
|
#StdOut
|
|
red=0.301961 green=0.396078 blue=0.6 alpha=0.168627
|
|
red=77 green=101 blue=153 alpha=43
|
|
##
|
|
##
|
|
|
|
#SeeAlso toSkColor
|
|
|
|
#Method ##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method SkColor toSkColor() const
|
|
#In Utility
|
|
#Line # returns closest Color ##
|
|
|
|
Converts to closest SkColor.
|
|
|
|
#Return closest Color ##
|
|
|
|
#Example
|
|
float red = 0.07, green = 0.13, blue = 0.32, alpha = 0.17;
|
|
SkColor4f color4f = { red, green, blue, alpha };
|
|
SkColor argb = color4f.toSkColor();
|
|
SkDebugf("red=%d green=%d blue=%d alpha=%d\n", SkColorGetR(argb),
|
|
SkColorGetG(argb), SkColorGetB(argb), SkColorGetA(argb));
|
|
SkColor4f fromSkColor = SkColor4f::FromColor(argb);
|
|
SkDebugf("red=%g green=%g blue=%g alpha=%g\n", fromSkColor.fR, fromSkColor.fG,
|
|
fromSkColor.fB, fromSkColor.fA);
|
|
#StdOut
|
|
red=18 green=33 blue=82 alpha=43
|
|
red=0.0705882 green=0.129412 blue=0.321569 alpha=0.168627
|
|
##
|
|
##
|
|
|
|
#SeeAlso FromColor
|
|
|
|
#Method ##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method SkColor4f pin() const
|
|
#In Utility
|
|
#Line # sets components to valid range ##
|
|
|
|
Returns Color4f with all components in the range from zero to one.
|
|
|
|
#Return Color4f with valid components ##
|
|
|
|
#Example
|
|
#Height 40
|
|
uint32_t storage[8];
|
|
SkImageInfo info = SkImageInfo::MakeN32Premul(8, 1);
|
|
SkPixmap pixmap(info, storage, info.minRowBytes());
|
|
pixmap.erase(SK_ColorWHITE);
|
|
SkIRect bounds = {0, 0, 1, 1};
|
|
SkColor4f colors[] = { {1.5, 0.45f, 0.0, 1},
|
|
{1, 0.45f, -0.25, 1},
|
|
};
|
|
for (auto color4f : colors) {
|
|
pixmap.erase(color4f, &bounds);
|
|
bounds.offset(2, 0);
|
|
pixmap.erase(color4f.pin(), &bounds);
|
|
bounds.offset(2, 0);
|
|
}
|
|
SkBitmap bitmap;
|
|
canvas->scale(20, 20);
|
|
bitmap.installPixels(pixmap);
|
|
canvas->drawBitmap(bitmap, 0, 0);
|
|
##
|
|
|
|
#SeeAlso Pin
|
|
|
|
#Method ##
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
#Method SkColor4f premul() const
|
|
#In Utility
|
|
#Line # returns Premultiplied color ##
|
|
|
|
Returns SkColor4f with all components premultiplied by Alpha.
|
|
|
|
#Return Premultiplied color ##
|
|
|
|
#NoExample
|
|
##
|
|
|
|
#SeeAlso unpremul
|
|
|
|
#Method ##
|
|
|
|
#Method SkColor4f unpremul() const
|
|
#In Utility
|
|
#Line # returns Unpremultiplied color ##
|
|
|
|
Returns SkColor4f with all components independent of Alpha.
|
|
|
|
#Return Unpremultiplied color ##
|
|
|
|
#NoExample
|
|
##
|
|
|
|
#SeeAlso premul
|
|
|
|
#Method ##
|
|
|
|
#Method SkPM4f toPM4f() const
|
|
#Line # is for internal use only ##
|
|
|
|
#Private
|
|
Internal use only.
|
|
##
|
|
#Return premultiplied color ##
|
|
#Method ##
|
|
|
|
#Struct SkColor4f ##
|
|
|
|
#Struct SkPM4f
|
|
#Private
|
|
Internal use only.
|
|
##
|
|
##
|
|
|
|
#Topic Color4f ##
|