1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2015 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "include/core/SkBitmap.h" 9cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 10cb93a386Sopenharmony_ci#include "src/core/SkImagePriv.h" 11cb93a386Sopenharmony_ci#include "tests/Test.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_cistatic const int gWidth = 20; 14cb93a386Sopenharmony_cistatic const int gHeight = 20; 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ci// Tests that SkNewImageFromBitmap obeys pixelref origin. 17cb93a386Sopenharmony_ciDEF_TEST(SkImageFromBitmap_extractSubset, reporter) { 18cb93a386Sopenharmony_ci sk_sp<SkImage> image; 19cb93a386Sopenharmony_ci { 20cb93a386Sopenharmony_ci SkBitmap srcBitmap; 21cb93a386Sopenharmony_ci srcBitmap.allocN32Pixels(gWidth, gHeight); 22cb93a386Sopenharmony_ci srcBitmap.eraseColor(SK_ColorRED); 23cb93a386Sopenharmony_ci SkCanvas canvas(srcBitmap); 24cb93a386Sopenharmony_ci SkIRect r = SkIRect::MakeXYWH(5, 5, gWidth - 5, gWidth - 5); 25cb93a386Sopenharmony_ci SkPaint p; 26cb93a386Sopenharmony_ci p.setColor(SK_ColorGREEN); 27cb93a386Sopenharmony_ci canvas.drawIRect(r, p); 28cb93a386Sopenharmony_ci SkBitmap dstBitmap; 29cb93a386Sopenharmony_ci srcBitmap.extractSubset(&dstBitmap, r); 30cb93a386Sopenharmony_ci image = dstBitmap.asImage(); 31cb93a386Sopenharmony_ci } 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ci SkBitmap tgt; 34cb93a386Sopenharmony_ci tgt.allocN32Pixels(gWidth, gHeight); 35cb93a386Sopenharmony_ci SkCanvas canvas(tgt); 36cb93a386Sopenharmony_ci canvas.clear(SK_ColorTRANSPARENT); 37cb93a386Sopenharmony_ci canvas.drawImage(image, 0, 0); 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci uint32_t pixel = 0; 40cb93a386Sopenharmony_ci SkImageInfo info = SkImageInfo::Make(1, 1, kBGRA_8888_SkColorType, kUnpremul_SkAlphaType); 41cb93a386Sopenharmony_ci tgt.readPixels(info, &pixel, 4, 0, 0); 42cb93a386Sopenharmony_ci REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 43cb93a386Sopenharmony_ci tgt.readPixels(info, &pixel, 4, gWidth - 6, gWidth - 6); 44cb93a386Sopenharmony_ci REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 45cb93a386Sopenharmony_ci 46cb93a386Sopenharmony_ci tgt.readPixels(info, &pixel, 4, gWidth - 5, gWidth - 5); 47cb93a386Sopenharmony_ci REPORTER_ASSERT(reporter, pixel == SK_ColorTRANSPARENT); 48cb93a386Sopenharmony_ci} 49