Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 GrInvariantOutput_DEFINED | 8 #ifndef GrInvariantOutput_DEFINED |
| 9 #define GrInvariantOutput_DEFINED | 9 #define GrInvariantOutput_DEFINED |
| 10 | 10 |
| 11 #include "GrColor.h" | 11 #include "GrColor.h" |
| 12 | 12 |
| 13 struct GrInitInvariantOutput { | |
| 14 GrInitInvariantOutput() | |
| 15 : fValidFlags(0) | |
| 16 , fColor(0) | |
| 17 , fIsSingleComponent(false) {} | |
| 18 | |
| 19 void setKnownComponents(GrColor color) { | |
| 20 fColor = color; | |
| 21 fValidFlags = kRGBA_GrColorComponentFlags; | |
|
bsalomon
2014/12/09 20:39:50
fSingleComponent = (true if all the values the sam
| |
| 22 } | |
| 23 | |
| 24 void setKnownAlpha(uint8_t alpha) { | |
| 25 fColor |= (fColor >> GrColor_SHIFT_A) | alpha; | |
|
bsalomon
2014/12/09 20:39:50
fColor = (alpha << SHIFT_A);
right?
| |
| 26 fValidFlags |= kA_GrColorComponentFlag; | |
|
bsalomon
2014/12/09 20:39:50
= not |=, right?
| |
| 27 } | |
|
bsalomon
2014/12/09 20:39:50
fSingleComponent = true;
| |
| 28 | |
| 29 void setUnknownAlpha() { | |
| 30 fValidFlags &= ~kA_GrColorComponentFlag; | |
|
bsalomon
2014/12/09 20:39:50
fValidFlags = 0;
fSingleComponent = true;
| |
| 31 } | |
| 32 | |
| 33 void setUnknown() { | |
| 34 fValidFlags = 0; | |
|
bsalomon
2014/12/09 20:39:50
fSingleComponent = false;
Should we make the name
| |
| 35 } | |
| 36 | |
| 37 void setOpaque() { | |
| 38 fColor |= (fColor >> GrColor_SHIFT_A) | 0xFF; | |
| 39 fValidFlags |= kA_GrColorComponentFlag; | |
|
bsalomon
2014/12/09 20:39:50
fSingleComponent = false
| |
| 40 } | |
| 41 | |
| 42 void setIsSingleComponent() { fIsSingleComponent = true; } | |
|
bsalomon
2014/12/09 20:39:50
Do we need this two helpers? seems always implied
| |
| 43 | |
| 44 void setHasFourComponents() { fIsSingleComponent = false; } | |
| 45 | |
| 46 uint32_t fValidFlags; | |
| 47 GrColor fColor; | |
| 48 bool fIsSingleComponent; | |
| 49 }; | |
| 50 | |
| 13 class GrInvariantOutput { | 51 class GrInvariantOutput { |
| 14 public: | 52 public: |
| 15 GrInvariantOutput(GrColor color, GrColorComponentFlags flags, bool isSingleC omponent) | 53 GrInvariantOutput(GrColor color, GrColorComponentFlags flags, bool isSingleC omponent) |
| 16 : fColor(color) | 54 : fColor(color) |
| 17 , fValidFlags(flags) | 55 , fValidFlags(flags) |
| 18 , fIsSingleComponent(isSingleComponent) | 56 , fIsSingleComponent(isSingleComponent) |
| 19 , fNonMulStageFound(false) | 57 , fNonMulStageFound(false) |
| 20 , fWillUseInputColor(true) | 58 , fWillUseInputColor(true) |
| 21 , fIsLCDCoverage(false) {} | 59 , fIsLCDCoverage(false) {} |
| 22 | 60 |
| 61 GrInvariantOutput(const GrInitInvariantOutput& io) | |
| 62 : fColor(io.fColor) | |
| 63 , fValidFlags(io.fValidFlags) | |
| 64 , fIsSingleComponent(io.fIsSingleComponent) | |
| 65 , fNonMulStageFound(false) | |
| 66 , fWillUseInputColor(false) {} | |
| 67 | |
| 23 virtual ~GrInvariantOutput() {} | 68 virtual ~GrInvariantOutput() {} |
| 24 | 69 |
| 25 enum ReadInput { | 70 enum ReadInput { |
| 26 kWill_ReadInput, | 71 kWill_ReadInput, |
| 27 kWillNot_ReadInput, | 72 kWillNot_ReadInput, |
| 28 }; | 73 }; |
| 29 | 74 |
| 30 void mulByUnknownOpaqueColor() { | 75 void mulByUnknownOpaqueColor() { |
| 31 if (this->isOpaque()) { | 76 if (this->isOpaque()) { |
| 32 fValidFlags = kA_GrColorComponentFlag; | 77 fValidFlags = kA_GrColorComponentFlag; |
| 33 fIsSingleComponent = false; | 78 fIsSingleComponent = false; |
| 34 } else { | 79 } else { |
| 35 // Since the current state is not opaque we no longer care if the co lor being | 80 // Since the current state is not opaque we no longer care if the co lor being |
| 36 // multiplied is opaque. | 81 // multiplied is opaque. |
| 37 this->mulByUnknownColor(); | 82 this->mulByUnknownColor(); |
| 38 } | 83 } |
| 39 } | 84 } |
| 40 | 85 |
| 41 void mulByUnknownColor() { | 86 void mulByUnknownColor() { |
| 42 if (this->hasZeroAlpha()) { | 87 if (this->hasZeroAlpha()) { |
| 43 this->internalSetToTransparentBlack(); | 88 this->internalSetToTransparentBlack(); |
| 44 } else { | 89 } else { |
| 45 this->internalSetToUnknown(); | 90 this->internalSetToUnknown(); |
| 46 } | 91 } |
| 47 } | 92 } |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 115 friend class GrProcOptInfo; | 160 friend class GrProcOptInfo; |
| 116 | 161 |
| 117 void reset(GrColor color, GrColorComponentFlags flags, bool isSingleComponen t) { | 162 void reset(GrColor color, GrColorComponentFlags flags, bool isSingleComponen t) { |
| 118 fColor = color; | 163 fColor = color; |
| 119 fValidFlags = flags; | 164 fValidFlags = flags; |
| 120 fIsSingleComponent = isSingleComponent; | 165 fIsSingleComponent = isSingleComponent; |
| 121 fNonMulStageFound = false; | 166 fNonMulStageFound = false; |
| 122 fWillUseInputColor = true; | 167 fWillUseInputColor = true; |
| 123 } | 168 } |
| 124 | 169 |
| 170 void reset(const GrInitInvariantOutput& io) { | |
| 171 fColor = io.fColor; | |
| 172 fValidFlags = io.fValidFlags; | |
| 173 fIsSingleComponent = io.fIsSingleComponent; | |
| 174 fNonMulStageFound = false; | |
| 175 fWillUseInputColor = true; | |
| 176 } | |
| 177 | |
| 125 void internalSetToTransparentBlack() { | 178 void internalSetToTransparentBlack() { |
| 126 fValidFlags = kRGBA_GrColorComponentFlags; | 179 fValidFlags = kRGBA_GrColorComponentFlags; |
| 127 fColor = 0; | 180 fColor = 0; |
| 128 fIsSingleComponent = true; | 181 fIsSingleComponent = true; |
| 129 } | 182 } |
| 130 | 183 |
| 131 void internalSetToUnknown() { | 184 void internalSetToUnknown() { |
| 132 fValidFlags = 0; | 185 fValidFlags = 0; |
| 133 fIsSingleComponent = false; | 186 fIsSingleComponent = false; |
| 134 } | 187 } |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 164 uint32_t fValidFlags; | 217 uint32_t fValidFlags; |
| 165 bool fIsSingleComponent; | 218 bool fIsSingleComponent; |
| 166 bool fNonMulStageFound; | 219 bool fNonMulStageFound; |
| 167 bool fWillUseInputColor; | 220 bool fWillUseInputColor; |
| 168 bool fIsLCDCoverage; // Temorary data member until texture pixel configs are updated | 221 bool fIsLCDCoverage; // Temorary data member until texture pixel configs are updated |
| 169 | 222 |
| 170 }; | 223 }; |
| 171 | 224 |
| 172 #endif | 225 #endif |
| 173 | 226 |
| OLD | NEW |