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

Side by Side Diff: include/codec/SkEncodedInfo.h

Issue 1835083002: Support RGBA/BGRA swizzles using SkEncodedInfo (Closed) Base URL: https://skia.googlesource.com/skia.git@skencodedinfo
Patch Set: Fix bugs Created 4 years, 8 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
« no previous file with comments | « dm/DMSrcSink.cpp ('k') | src/codec/SkBmpRLECodec.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
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 SkEncodedInfo_DEFINED 8 #ifndef SkEncodedInfo_DEFINED
9 #define SkEncodedInfo_DEFINED 9 #define SkEncodedInfo_DEFINED
10 10
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 SkASSERT(kOpaque_Alpha == alpha); 103 SkASSERT(kOpaque_Alpha == alpha);
104 SkASSERT(bitsPerComponent >= 8); 104 SkASSERT(bitsPerComponent >= 8);
105 break; 105 break;
106 case kYUV_Color: 106 case kYUV_Color:
107 case kInvertedCMYK_Color: 107 case kInvertedCMYK_Color:
108 case kYCCK_Color: 108 case kYCCK_Color:
109 SkASSERT(kOpaque_Alpha == alpha); 109 SkASSERT(kOpaque_Alpha == alpha);
110 SkASSERT(8 == bitsPerComponent); 110 SkASSERT(8 == bitsPerComponent);
111 break; 111 break;
112 case kRGBA_Color: 112 case kRGBA_Color:
113 SkASSERT(kOpaque_Alpha != alpha);
114 SkASSERT(bitsPerComponent >= 8); 113 SkASSERT(bitsPerComponent >= 8);
115 break; 114 break;
116 case kBGRA_Color: 115 case kBGRA_Color:
117 case kYUVA_Color: 116 case kYUVA_Color:
118 SkASSERT(kOpaque_Alpha != alpha);
119 SkASSERT(8 == bitsPerComponent); 117 SkASSERT(8 == bitsPerComponent);
120 break; 118 break;
121 default: 119 default:
122 SkASSERT(false); 120 SkASSERT(false);
123 break; 121 break;
124 } 122 }
125 123
126 return SkEncodedInfo(width, height, color, alpha, bitsPerComponent); 124 return SkEncodedInfo(width, height, color, alpha, bitsPerComponent);
127 } 125 }
128 126
(...skipping 29 matching lines...) Expand all
158 SkASSERT(kOpaque_Alpha != fAlpha); 156 SkASSERT(kOpaque_Alpha != fAlpha);
159 return SkImageInfo::Make(fWidth, fHeight, kN32_SkColorType, kUnp remul_SkAlphaType); 157 return SkImageInfo::Make(fWidth, fHeight, kN32_SkColorType, kUnp remul_SkAlphaType);
160 default: 158 default:
161 SkASSERT(false); 159 SkASSERT(false);
162 return SkImageInfo::MakeUnknown(); 160 return SkImageInfo::MakeUnknown();
163 } 161 }
164 } 162 }
165 163
166 int width() const { return fWidth; } 164 int width() const { return fWidth; }
167 int height() const { return fHeight; } 165 int height() const { return fHeight; }
166 Color color() const { return fColor; }
167 Alpha alpha() const { return fAlpha; }
168 uint8_t bitsPerComponent() const { return fBitsPerComponent; }
169
170 SkEncodedInfo makeColor(Color color) const {
171 return SkEncodedInfo::Make(fWidth, fHeight, color, fAlpha, fBitsPerCompo nent);
172 }
173
174 uint8_t bitsPerPixel() const {
175 switch (fColor) {
176 case kGray_Color:
177 return fBitsPerComponent;
178 case kGrayAlpha_Color:
179 return 2 * fBitsPerComponent;
180 case kPalette_Color:
181 return fBitsPerComponent;
182 case kRGB_Color:
183 case kBGR_Color:
184 case kYUV_Color:
185 return 3 * fBitsPerComponent;
186 case kRGBA_Color:
187 case kBGRA_Color:
188 case kBGRX_Color:
189 case kYUVA_Color:
190 case kInvertedCMYK_Color:
191 case kYCCK_Color:
192 return 4 * fBitsPerComponent;
193 default:
194 SkASSERT(false);
195 return 0;
196 }
197 }
198
199 uint8_t bytesPerPixel() const {
200 SkASSERT(SkIsAlign8(this->bitsPerPixel()));
201 return this->bitsPerPixel() >> 3;
202 }
168 203
169 SkEncodedInfo() 204 SkEncodedInfo()
170 : fWidth(0) 205 : fWidth(0)
171 , fHeight(0) 206 , fHeight(0)
172 , fColor(kUnknown_Color) 207 , fColor(kUnknown_Color)
173 , fAlpha(kUnknown_Alpha) 208 , fAlpha(kUnknown_Alpha)
174 , fBitsPerComponent(0) 209 , fBitsPerComponent(0)
175 {} 210 {}
176 211
177 private: 212 private:
178 213
179 SkEncodedInfo(int width, int height, Color color, Alpha alpha, uint8_t bitsP erComponent) 214 SkEncodedInfo(int width, int height, Color color, Alpha alpha, uint8_t bitsP erComponent)
180 : fWidth(width) 215 : fWidth(width)
181 , fHeight(height) 216 , fHeight(height)
182 , fColor(color) 217 , fColor(color)
183 , fAlpha(alpha) 218 , fAlpha(alpha)
184 , fBitsPerComponent(bitsPerComponent) 219 , fBitsPerComponent(bitsPerComponent)
185 {} 220 {}
186 221
187 int fWidth; 222 int fWidth;
188 int fHeight; 223 int fHeight;
189 Color fColor; 224 Color fColor;
190 Alpha fAlpha; 225 Alpha fAlpha;
191 uint8_t fBitsPerComponent; 226 uint8_t fBitsPerComponent;
192 }; 227 };
193 228
194 #endif 229 #endif
OLDNEW
« no previous file with comments | « dm/DMSrcSink.cpp ('k') | src/codec/SkBmpRLECodec.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698