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

Side by Side Diff: src/codec/SkSwizzler.h

Issue 1557403002: Delete reallyHasAlpha() from SkCodec (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Rebase Created 4 years, 11 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 | « src/codec/SkSampler.h ('k') | src/codec/SkSwizzler.cpp » ('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 2015 Google Inc. 2 * Copyright 2015 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 SkSwizzler_DEFINED 8 #ifndef SkSwizzler_DEFINED
9 #define SkSwizzler_DEFINED 9 #define SkSwizzler_DEFINED
10 10
(...skipping 20 matching lines...) Expand all
31 kRGBX, 31 kRGBX,
32 kBGRX, 32 kBGRX,
33 kRGBA, 33 kRGBA,
34 kBGRA, 34 kBGRA,
35 kRGB_565, 35 kRGB_565,
36 kCMYK, 36 kCMYK,
37 }; 37 };
38 38
39 /* 39 /*
40 * 40 *
41 * Result code for the alpha components of a row.
42 *
43 */
44 typedef uint16_t ResultAlpha;
45 static const ResultAlpha kOpaque_ResultAlpha = 0xFFFF;
46 static const ResultAlpha kTransparent_ResultAlpha = 0x0000;
47
48 /*
49 *
50 * Checks if the result of decoding a row indicates that the row was
51 * transparent.
52 *
53 */
54 static bool IsTransparent(ResultAlpha r) {
55 return kTransparent_ResultAlpha == r;
56 }
57
58 /*
59 *
60 * Checks if the result of decoding a row indicates that the row was
61 * opaque.
62 *
63 */
64 static bool IsOpaque(ResultAlpha r) {
65 return kOpaque_ResultAlpha == r;
66 }
67
68 /*
69 *
70 * Constructs the proper result code based on accumulated alpha masks
71 *
72 */
73 static ResultAlpha GetResult(uint8_t zeroAlpha, uint8_t maxAlpha);
74
75 /*
76 *
77 * Returns bits per pixel for source config 41 * Returns bits per pixel for source config
78 * 42 *
79 */ 43 */
80 static int BitsPerPixel(SrcConfig sc) { 44 static int BitsPerPixel(SrcConfig sc) {
81 switch (sc) { 45 switch (sc) {
82 case kBit: 46 case kBit:
83 case kIndex1: 47 case kIndex1:
84 return 1; 48 return 1;
85 case kIndex2: 49 case kIndex2:
86 return 2; 50 return 2;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 106
143 /** 107 /**
144 * Swizzle a line. Generally this will be called height times, once 108 * Swizzle a line. Generally this will be called height times, once
145 * for each row of source. 109 * for each row of source.
146 * By allowing the caller to pass in the dst pointer, we give the caller 110 * By allowing the caller to pass in the dst pointer, we give the caller
147 * flexibility to use the swizzler even when the encoded data does not 111 * flexibility to use the swizzler even when the encoded data does not
148 * store the rows in order. This also improves usability for scaled and 112 * store the rows in order. This also improves usability for scaled and
149 * subset decodes. 113 * subset decodes.
150 * @param dst Where we write the output. 114 * @param dst Where we write the output.
151 * @param src The next row of the source data. 115 * @param src The next row of the source data.
152 * @return A result code describing if the row was fully opaque, fully
153 * transparent, or neither
154 */ 116 */
155 ResultAlpha swizzle(void* dst, const uint8_t* SK_RESTRICT src); 117 void swizzle(void* dst, const uint8_t* SK_RESTRICT src);
156 118
157 /** 119 /**
158 * Implement fill using a custom width. 120 * Implement fill using a custom width.
159 */ 121 */
160 void fill(const SkImageInfo& info, void* dst, size_t rowBytes, uint32_t colo rOrIndex, 122 void fill(const SkImageInfo& info, void* dst, size_t rowBytes, uint32_t colo rOrIndex,
161 SkCodec::ZeroInitialized zeroInit) override { 123 SkCodec::ZeroInitialized zeroInit) override {
162 const SkImageInfo fillInfo = info.makeWH(fAllocatedWidth, info.height()) ; 124 const SkImageInfo fillInfo = info.makeWH(fAllocatedWidth, info.height()) ;
163 SkSampler::Fill(fillInfo, dst, rowBytes, colorOrIndex, zeroInit); 125 SkSampler::Fill(fillInfo, dst, rowBytes, colorOrIndex, zeroInit);
164 } 126 }
165 127
(...skipping 14 matching lines...) Expand all
180 * @param dstRow Row in which to write the resulting pixels. 142 * @param dstRow Row in which to write the resulting pixels.
181 * @param src Row of src data, in format specified by SrcConfig 143 * @param src Row of src data, in format specified by SrcConfig
182 * @param dstWidth Width in pixels of the destination 144 * @param dstWidth Width in pixels of the destination
183 * @param bpp if bitsPerPixel % 8 == 0, deltaSrc is bytesPerPixel 145 * @param bpp if bitsPerPixel % 8 == 0, deltaSrc is bytesPerPixel
184 * else, deltaSrc is bitsPerPixel 146 * else, deltaSrc is bitsPerPixel
185 * @param deltaSrc bpp * sampleX 147 * @param deltaSrc bpp * sampleX
186 * @param ctable Colors (used for kIndex source). 148 * @param ctable Colors (used for kIndex source).
187 * @param offset The offset before the first pixel to sample. 149 * @param offset The offset before the first pixel to sample.
188 Is in bytes or bits based on what deltaSrc is in. 150 Is in bytes or bits based on what deltaSrc is in.
189 */ 151 */
190 typedef ResultAlpha (*RowProc)(void* SK_RESTRICT dstRow, 152 typedef void (*RowProc)(void* SK_RESTRICT dstRow,
191 const uint8_t* SK_RESTRICT src, 153 const uint8_t* SK_RESTRICT src,
192 int dstWidth, int bpp, int deltaSrc, int offs et, 154 int dstWidth, int bpp, int deltaSrc, int offset,
193 const SkPMColor ctable[]); 155 const SkPMColor ctable[]);
194 156
195 const RowProc fRowProc; 157 const RowProc fRowProc;
196 const SkPMColor* fColorTable; // Unowned pointer 158 const SkPMColor* fColorTable; // Unowned pointer
197 159
198 // Subset Swizzles 160 // Subset Swizzles
199 // There are two types of subset swizzles that we support. We do not 161 // There are two types of subset swizzles that we support. We do not
200 // support both at the same time. 162 // support both at the same time.
201 // TODO: If we want to support partial scanlines for gifs (which may 163 // TODO: If we want to support partial scanlines for gifs (which may
202 // use frame subsets), we will need to support both subsetting 164 // use frame subsets), we will need to support both subsetting
203 // modes at the same time. 165 // modes at the same time.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 // fBPP is bitsPerPixel 241 // fBPP is bitsPerPixel
280 const int fDstBPP; // Bytes per pixel for the destination color type 242 const int fDstBPP; // Bytes per pixel for the destination color type
281 243
282 SkSwizzler(RowProc proc, const SkPMColor* ctable, int srcOffset, int srcWidt h, int dstOffset, 244 SkSwizzler(RowProc proc, const SkPMColor* ctable, int srcOffset, int srcWidt h, int dstOffset,
283 int dstWidth, int srcBPP, int dstBPP); 245 int dstWidth, int srcBPP, int dstBPP);
284 246
285 int onSetSampleX(int) override; 247 int onSetSampleX(int) override;
286 248
287 }; 249 };
288 #endif // SkSwizzler_DEFINED 250 #endif // SkSwizzler_DEFINED
OLDNEW
« no previous file with comments | « src/codec/SkSampler.h ('k') | src/codec/SkSwizzler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698