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

Side by Side Diff: src/gpu/GrSwizzle.h

Issue 1617433002: Make swizzling in read/write pixel copy code more generic (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix loop in config conversion test create 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/gpu/GrGpu.h ('k') | src/gpu/effects/GrConfigConversionEffect.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 GrSwizzle_DEFINED 8 #ifndef GrSwizzle_DEFINED
9 #define GrSwizzle_DEFINED 9 #define GrSwizzle_DEFINED
10 10
11 #include "GrTypes.h"
12 #include "GrColor.h" 11 #include "GrColor.h"
12 #include "SkRandom.h"
13 13
14 /** Represents a rgba swizzle. It can be converted either into a string or a eig ht bit int. 14 /** Represents a rgba swizzle. It can be converted either into a string or a eig ht bit int.
15 Currently there is no way to specify an arbitrary swizzle, just some static swizzles and an 15 Currently there is no way to specify an arbitrary swizzle, just some static swizzles and an
16 assignment operator. That could be relaxed. */ 16 assignment operator. That could be relaxed. */
17 class GrSwizzle { 17 class GrSwizzle {
18 public: 18 public:
19 GrSwizzle() { *this = RGBA(); } 19 GrSwizzle() { *this = RGBA(); }
20 20
21 GrSwizzle(const GrSwizzle& that) { *this = that; } 21 GrSwizzle(const GrSwizzle& that) { *this = that; }
22 22
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 static const GrSwizzle& RRRR() { 77 static const GrSwizzle& RRRR() {
78 static GrSwizzle gRRRR("rrrr"); 78 static GrSwizzle gRRRR("rrrr");
79 return gRRRR; 79 return gRRRR;
80 } 80 }
81 81
82 static const GrSwizzle& BGRA() { 82 static const GrSwizzle& BGRA() {
83 static GrSwizzle gBGRA("bgra"); 83 static GrSwizzle gBGRA("bgra");
84 return gBGRA; 84 return gBGRA;
85 } 85 }
86 86
87 static const GrSwizzle& CreateRandom(SkRandom* random) {
88 switch (random->nextU() % 4) {
89 case 0:
90 return RGBA();
91 case 1:
92 return BGRA();
93 case 2:
94 return RRRR();
95 case 3:
96 return AAAA();
97 default:
98 SkFAIL("Mod is broken?!?");
99 return RGBA();
100 }
101 }
102
87 private: 103 private:
88 char fSwiz[5]; 104 char fSwiz[5];
89 uint8_t fKey; 105 uint8_t fKey;
90 106
91 static int CharToIdx(char c) { 107 static int CharToIdx(char c) {
92 switch (c) { 108 switch (c) {
93 case 'r': 109 case 'r':
94 return (GrColor_SHIFT_R / 8); 110 return (GrColor_SHIFT_R / 8);
95 case 'g': 111 case 'g':
96 return (GrColor_SHIFT_G / 8); 112 return (GrColor_SHIFT_G / 8);
(...skipping 30 matching lines...) Expand all
127 (CharToIdx(fSwiz[2]) << 4) | (CharToIdx(fSwiz[3]) << 6)); 143 (CharToIdx(fSwiz[2]) << 4) | (CharToIdx(fSwiz[3]) << 6));
128 } 144 }
129 145
130 uint32_t* asUIntPtr() { return SkTCast<uint32_t*>(fSwiz); } 146 uint32_t* asUIntPtr() { return SkTCast<uint32_t*>(fSwiz); }
131 uint32_t asUInt() const { return *SkTCast<const uint32_t*>(fSwiz); } 147 uint32_t asUInt() const { return *SkTCast<const uint32_t*>(fSwiz); }
132 148
133 GR_STATIC_ASSERT(sizeof(char[4]) == sizeof(uint32_t)); 149 GR_STATIC_ASSERT(sizeof(char[4]) == sizeof(uint32_t));
134 }; 150 };
135 151
136 #endif 152 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrGpu.h ('k') | src/gpu/effects/GrConfigConversionEffect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698