OLD | NEW |
---|---|
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 #include "gm.h" | 8 #include "gm.h" |
9 | 9 |
10 #include "Resources.h" | 10 #include "Resources.h" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
77 textPaint); | 77 textPaint); |
78 canvas->drawText(dstText.c_str(), dstText.size(), 0, sz + 3 * textPaint. getFontSpacing(), | 78 canvas->drawText(dstText.c_str(), dstText.size(), 0, sz + 3 * textPaint. getFontSpacing(), |
79 textPaint); | 79 textPaint); |
80 advance(); | 80 advance(); |
81 }; | 81 }; |
82 | 82 |
83 // Necessary for certain Xfermode tests to work (ie some of them output whit e @ 50% alpha): | 83 // Necessary for certain Xfermode tests to work (ie some of them output whit e @ 50% alpha): |
84 canvas->clear(SK_ColorBLACK); | 84 canvas->clear(SK_ColorBLACK); |
85 | 85 |
86 // *Everything* should be perceptually 50% grey. Only the first rectangle | 86 // *Everything* should be perceptually 50% grey. Only the first rectangle |
87 // is guaranteed to draw that way, though. | 87 // is guaranteed to draw that way, though. |
robertphillips
2016/04/26 21:27:53
Doesn't it match this save ?
| |
88 canvas->save(); | 88 canvas->save(); |
89 | 89 |
90 // Black/white dither, pixel perfect. This is ground truth. | 90 // Black/white dither, pixel perfect. This is ground truth. |
91 p.setShader(SkShader::MakeBitmapShader(ditherBmp, rpt, rpt)); | 91 p.setShader(SkShader::MakeBitmapShader(ditherBmp, rpt, rpt)); |
92 p.setFilterQuality(SkFilterQuality::kNone_SkFilterQuality); | 92 p.setFilterQuality(SkFilterQuality::kNone_SkFilterQuality); |
93 nextRect("Dither", "Reference"); | 93 nextRect("Dither", "Reference"); |
94 | 94 |
95 // Black/white dither, sampled at half-texel offset. Tests bilerp. | 95 // Black/white dither, sampled at half-texel offset. Tests bilerp. |
96 // NOTE: We need to apply a non-identity scale and/or rotation to trick | 96 // NOTE: We need to apply a non-identity scale and/or rotation to trick |
97 // the raster pipeline into *not* snapping to nearest. | 97 // the raster pipeline into *not* snapping to nearest. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
132 p.setShader(SkShader::MakeBitmapShader(linearGreyBmp, rpt, rpt)); | 132 p.setShader(SkShader::MakeBitmapShader(linearGreyBmp, rpt, rpt)); |
133 p.setFilterQuality(SkFilterQuality::kMedium_SkFilterQuality); | 133 p.setFilterQuality(SkFilterQuality::kMedium_SkFilterQuality); |
134 nextRect("Lnr BMP", "Shader"); | 134 nextRect("Lnr BMP", "Shader"); |
135 | 135 |
136 // Bitmap wrapped in a shader (sRGB): | 136 // Bitmap wrapped in a shader (sRGB): |
137 p.setShader(SkShader::MakeBitmapShader(srgbGreyBmp, rpt, rpt)); | 137 p.setShader(SkShader::MakeBitmapShader(srgbGreyBmp, rpt, rpt)); |
138 p.setFilterQuality(SkFilterQuality::kMedium_SkFilterQuality); | 138 p.setFilterQuality(SkFilterQuality::kMedium_SkFilterQuality); |
139 nextRect("sRGB BMP", "Shader"); | 139 nextRect("sRGB BMP", "Shader"); |
140 | 140 |
141 // Carriage return. | 141 // Carriage return. |
142 canvas->restore(); | 142 canvas->restore(); |
Brian Osman
2016/04/26 21:31:20
Nope, this one does.
| |
143 canvas->translate(0, 2 * sz); | 143 canvas->translate(0, 2 * sz); |
144 | 144 |
145 const U8CPU sqrtHalf = 0xB4; | 145 const U8CPU sqrtHalf = 0xB4; |
146 const SkColor sqrtHalfAlpha = SkColorSetARGB(sqrtHalf, 0, 0, 0); | 146 const SkColor sqrtHalfAlpha = SkColorSetARGB(sqrtHalf, 0, 0, 0); |
147 const SkColor sqrtHalfWhite = SkColorSetARGB(0xFF, sqrtHalf, sqrtHalf, sqrtH alf); | 147 const SkColor sqrtHalfWhite = SkColorSetARGB(0xFF, sqrtHalf, sqrtHalf, sqrtH alf); |
148 | 148 |
149 // Xfermode tests, all done off-screen so certain modes work... | 149 // Xfermode tests, all done off-screen so certain modes work... |
150 | 150 |
151 canvas->saveLayer(nullptr, nullptr); | 151 canvas->saveLayer(nullptr, nullptr); |
152 | 152 |
153 nextXferRect(0x7fffffff, SkXfermode::kSrcOver_Mode, SK_ColorBLACK); | 153 nextXferRect(0x7fffffff, SkXfermode::kSrcOver_Mode, SK_ColorBLACK); |
154 nextXferRect(0x7f000000, SkXfermode::kSrcOver_Mode, SK_ColorWHITE); | 154 nextXferRect(0x7f000000, SkXfermode::kSrcOver_Mode, SK_ColorWHITE); |
155 | 155 |
156 nextXferRect(SK_ColorBLACK, SkXfermode::kDstOver_Mode, 0x7fffffff); | 156 nextXferRect(SK_ColorBLACK, SkXfermode::kDstOver_Mode, 0x7fffffff); |
157 nextXferRect(SK_ColorWHITE, SkXfermode::kSrcIn_Mode, 0x7fff00ff); | 157 nextXferRect(SK_ColorWHITE, SkXfermode::kSrcIn_Mode, 0x7fff00ff); |
158 nextXferRect(0x7fff00ff, SkXfermode::kDstIn_Mode, SK_ColorWHITE); | 158 nextXferRect(0x7fff00ff, SkXfermode::kDstIn_Mode, SK_ColorWHITE); |
159 nextXferRect(sqrtHalfWhite, SkXfermode::kSrcIn_Mode, sqrtHalfAlpha); | 159 nextXferRect(sqrtHalfWhite, SkXfermode::kSrcIn_Mode, sqrtHalfAlpha); |
160 nextXferRect(sqrtHalfAlpha, SkXfermode::kDstIn_Mode, sqrtHalfWhite); | 160 nextXferRect(sqrtHalfAlpha, SkXfermode::kDstIn_Mode, sqrtHalfWhite); |
161 | 161 |
162 nextXferRect(0xff3f3f3f, SkXfermode::kPlus_Mode, 0xff3f3f3f); | 162 nextXferRect(0xff3f3f3f, SkXfermode::kPlus_Mode, 0xff3f3f3f); |
163 nextXferRect(sqrtHalfWhite, SkXfermode::kModulate_Mode, sqrtHalfWhite); | 163 nextXferRect(sqrtHalfWhite, SkXfermode::kModulate_Mode, sqrtHalfWhite); |
164 | 164 |
165 canvas->restore(); | 165 canvas->restore(); |
166 | |
167 canvas->restore(); | |
168 } | 166 } |
OLD | NEW |