Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Side by Side Diff: include/core/SkColor.h

Issue 1642703003: starter procs for blending with pm4f (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: int to float Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkColor_DEFINED 8 #ifndef SkColor_DEFINED
9 #define SkColor_DEFINED 9 #define SkColor_DEFINED
10 10
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 */ 103 */
104 SK_API void SkRGBToHSV(U8CPU red, U8CPU green, U8CPU blue, SkScalar hsv[3]); 104 SK_API void SkRGBToHSV(U8CPU red, U8CPU green, U8CPU blue, SkScalar hsv[3]);
105 105
106 /** Convert the argb color to its HSV components. 106 /** Convert the argb color to its HSV components.
107 hsv[0] is Hue [0 .. 360) 107 hsv[0] is Hue [0 .. 360)
108 hsv[1] is Saturation [0...1] 108 hsv[1] is Saturation [0...1]
109 hsv[2] is Value [0...1] 109 hsv[2] is Value [0...1]
110 @param color the argb color to convert. Note: the alpha component is ignored . 110 @param color the argb color to convert. Note: the alpha component is ignored .
111 @param hsv 3 element array which holds the resulting HSV components. 111 @param hsv 3 element array which holds the resulting HSV components.
112 */ 112 */
113 static inline void SkColorToHSV(SkColor color, SkScalar hsv[3]) 113 static inline void SkColorToHSV(SkColor color, SkScalar hsv[3]) {
114 {
115 SkRGBToHSV(SkColorGetR(color), SkColorGetG(color), SkColorGetB(color), hsv); 114 SkRGBToHSV(SkColorGetR(color), SkColorGetG(color), SkColorGetB(color), hsv);
116 } 115 }
117 116
118 /** Convert HSV components to an ARGB color. The alpha component is passed throu gh unchanged. 117 /** Convert HSV components to an ARGB color. The alpha component is passed throu gh unchanged.
119 hsv[0] is Hue [0 .. 360) 118 hsv[0] is Hue [0 .. 360)
120 hsv[1] is Saturation [0...1] 119 hsv[1] is Saturation [0...1]
121 hsv[2] is Value [0...1] 120 hsv[2] is Value [0...1]
122 If hsv values are out of range, they are pinned. 121 If hsv values are out of range, they are pinned.
123 @param alpha the alpha component of the returned argb color. 122 @param alpha the alpha component of the returned argb color.
124 @param hsv 3 element array which holds the input HSV components. 123 @param hsv 3 element array which holds the input HSV components.
125 @return the resulting argb color 124 @return the resulting argb color
126 */ 125 */
127 SK_API SkColor SkHSVToColor(U8CPU alpha, const SkScalar hsv[3]); 126 SK_API SkColor SkHSVToColor(U8CPU alpha, const SkScalar hsv[3]);
128 127
129 /** Convert HSV components to an ARGB color. The alpha component set to 0xFF. 128 /** Convert HSV components to an ARGB color. The alpha component set to 0xFF.
130 hsv[0] is Hue [0 .. 360) 129 hsv[0] is Hue [0 .. 360)
131 hsv[1] is Saturation [0...1] 130 hsv[1] is Saturation [0...1]
132 hsv[2] is Value [0...1] 131 hsv[2] is Value [0...1]
133 If hsv values are out of range, they are pinned. 132 If hsv values are out of range, they are pinned.
134 @param hsv 3 element array which holds the input HSV components. 133 @param hsv 3 element array which holds the input HSV components.
135 @return the resulting argb color 134 @return the resulting argb color
136 */ 135 */
137 static inline SkColor SkHSVToColor(const SkScalar hsv[3]) 136 static inline SkColor SkHSVToColor(const SkScalar hsv[3]) {
138 {
139 return SkHSVToColor(0xFF, hsv); 137 return SkHSVToColor(0xFF, hsv);
140 } 138 }
141 139
142 //////////////////////////////////////////////////////////////////////// 140 ////////////////////////////////////////////////////////////////////////
143 141
144 /** 32 bit ARGB color value, premultiplied. The byte order for this value is 142 /** 32 bit ARGB color value, premultiplied. The byte order for this value is
145 configuration dependent, matching the format of kARGB32 bitmaps. This is dif ferent 143 configuration dependent, matching the format of kARGB32 bitmaps. This is dif ferent
146 from SkColor, which is nonpremultiplied, and is always in the same byte orde r. 144 from SkColor, which is nonpremultiplied, and is always in the same byte orde r.
147 */ 145 */
148 typedef uint32_t SkPMColor; 146 typedef uint32_t SkPMColor;
(...skipping 10 matching lines...) Expand all
159 /** Define a function pointer type for combining two premultiplied colors 157 /** Define a function pointer type for combining two premultiplied colors
160 */ 158 */
161 typedef SkPMColor (*SkXfermodeProc)(SkPMColor src, SkPMColor dst); 159 typedef SkPMColor (*SkXfermodeProc)(SkPMColor src, SkPMColor dst);
162 160
163 //////////////////////////////////////////////////////////////////////////////// /////////////////// 161 //////////////////////////////////////////////////////////////////////////////// ///////////////////
164 162
165 /* 163 /*
166 * The float values are 0...1 premultiplied 164 * The float values are 0...1 premultiplied
167 */ 165 */
168 struct SkPM4f { 166 struct SkPM4f {
167 enum {
168 A = SK_A32_SHIFT/8,
169 R = SK_R32_SHIFT/8,
170 G = SK_G32_SHIFT/8,
171 B = SK_B32_SHIFT/8,
172 };
mtklein 2016/01/29 15:23:00 +1
169 float fVec[4]; 173 float fVec[4];
170 174
171 float a() const { return fVec[SK_A32_SHIFT/8]; } 175 float a() const { return fVec[3]; }
mtklein 2016/01/29 15:23:00 Ahem, fVec[A];
reed1 2016/01/29 22:35:27 Doh
172 176
173 static SkPM4f FromPMColor(SkPMColor); 177 static SkPM4f FromPMColor(SkPMColor);
178
179 bool isUnit() const;
174 }; 180 };
175 181
176 /* 182 /*
177 * The float values are 0...1 unpremultiplied 183 * The float values are 0...1 unpremultiplied
178 */ 184 */
179 struct SkColor4f { 185 struct SkColor4f {
180 float fA; 186 float fA;
181 float fR; 187 float fR;
182 float fG; 188 float fG;
183 float fB; 189 float fB;
(...skipping 12 matching lines...) Expand all
196 static SkColor4f FromColor(SkColor); 202 static SkColor4f FromColor(SkColor);
197 203
198 SkColor4f pin() const { 204 SkColor4f pin() const {
199 return Pin(fA, fR, fG, fB); 205 return Pin(fA, fR, fG, fB);
200 } 206 }
201 207
202 SkPM4f premul() const; 208 SkPM4f premul() const;
203 }; 209 };
204 210
205 #endif 211 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698