| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2015 Google Inc. | 3 * Copyright 2015 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 // This test only works with the GPU backend. | 9 // This test only works with the GPU backend. |
| 10 | 10 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 return SkISize::Make(50, 135); | 34 return SkISize::Make(50, 135); |
| 35 } | 35 } |
| 36 | 36 |
| 37 void onOnceBeforeDraw() override { | 37 void onOnceBeforeDraw() override { |
| 38 // We create an RGB bitmap and then extract YUV bmps where the U and V b
itmaps are | 38 // We create an RGB bitmap and then extract YUV bmps where the U and V b
itmaps are |
| 39 // subsampled by 2 in both dimensions. | 39 // subsampled by 2 in both dimensions. |
| 40 SkPaint paint; | 40 SkPaint paint; |
| 41 static const SkColor kColors[] = | 41 static const SkColor kColors[] = |
| 42 { SK_ColorBLUE, SK_ColorYELLOW, SK_ColorGREEN, SK_ColorWHITE }; | 42 { SK_ColorBLUE, SK_ColorYELLOW, SK_ColorGREEN, SK_ColorWHITE }; |
| 43 paint.setShader(SkGradientShader::CreateRadial(SkPoint::Make(0,0), kBmpS
ize / 2.f, kColors, | 43 paint.setShader(SkGradientShader::CreateRadial(SkPoint::Make(0,0), kBmpS
ize / 2.f, kColors, |
| 44 NULL, SK_ARRAY_COUNT(kCol
ors), | 44 nullptr, SK_ARRAY_COUNT(k
Colors), |
| 45 SkShader::kMirror_TileMod
e))->unref(); | 45 SkShader::kMirror_TileMod
e))->unref(); |
| 46 SkBitmap rgbBmp; | 46 SkBitmap rgbBmp; |
| 47 rgbBmp.allocN32Pixels(kBmpSize, kBmpSize, true); | 47 rgbBmp.allocN32Pixels(kBmpSize, kBmpSize, true); |
| 48 SkCanvas canvas(rgbBmp); | 48 SkCanvas canvas(rgbBmp); |
| 49 canvas.drawPaint(paint); | 49 canvas.drawPaint(paint); |
| 50 SkPMColor* rgbColors = static_cast<SkPMColor*>(rgbBmp.getPixels()); | 50 SkPMColor* rgbColors = static_cast<SkPMColor*>(rgbBmp.getPixels()); |
| 51 | 51 |
| 52 SkImageInfo yinfo = SkImageInfo::MakeA8(kBmpSize, kBmpSize); | 52 SkImageInfo yinfo = SkImageInfo::MakeA8(kBmpSize, kBmpSize); |
| 53 fYUVBmps[0].allocPixels(yinfo); | 53 fYUVBmps[0].allocPixels(yinfo); |
| 54 SkImageInfo uinfo = SkImageInfo::MakeA8(kBmpSize / 2, kBmpSize / 2); | 54 SkImageInfo uinfo = SkImageInfo::MakeA8(kBmpSize / 2, kBmpSize / 2); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 yuvIDs, sizes, | 149 yuvIDs, sizes, |
| 150 kTopLeft_GrSurfaceO
rigin)); | 150 kTopLeft_GrSurfaceO
rigin)); |
| 151 } | 151 } |
| 152 this->deleteYUVTextures(context, yuvIDs); | 152 this->deleteYUVTextures(context, yuvIDs); |
| 153 for (int i = 0; i < images.count(); ++ i) { | 153 for (int i = 0; i < images.count(); ++ i) { |
| 154 SkScalar y = (i + 1) * kPad + i * fYUVBmps[0].height(); | 154 SkScalar y = (i + 1) * kPad + i * fYUVBmps[0].height(); |
| 155 SkScalar x = kPad; | 155 SkScalar x = kPad; |
| 156 | 156 |
| 157 canvas->drawImage(images[i], x, y); | 157 canvas->drawImage(images[i], x, y); |
| 158 images[i]->unref(); | 158 images[i]->unref(); |
| 159 images[i] = NULL; | 159 images[i] = nullptr; |
| 160 } | 160 } |
| 161 } | 161 } |
| 162 | 162 |
| 163 private: | 163 private: |
| 164 SkAutoTUnref<SkImage> fRGBImage; | 164 SkAutoTUnref<SkImage> fRGBImage; |
| 165 SkBitmap fYUVBmps[3]; | 165 SkBitmap fYUVBmps[3]; |
| 166 | 166 |
| 167 static const int kBmpSize = 32; | 167 static const int kBmpSize = 32; |
| 168 | 168 |
| 169 typedef GM INHERITED; | 169 typedef GM INHERITED; |
| 170 }; | 170 }; |
| 171 | 171 |
| 172 DEF_GM(return new ImageFromYUVTextures;) | 172 DEF_GM(return new ImageFromYUVTextures;) |
| 173 } | 173 } |
| 174 | 174 |
| 175 #endif | 175 #endif |
| OLD | NEW |