18dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com/* 28dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com * Copyright 2013 Google Inc. 38dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com * 48dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com * Use of this source code is governed by a BSD-style license that can be 58dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com * found in the LICENSE file. 68dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com */ 78dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 88dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com#include "gm.h" 9bcbc1788b478b1e54079318ad073e8490aa66faetfarina 10bcbc1788b478b1e54079318ad073e8490aa66faetfarina#include "Resources.h" 118dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com#include "SkCanvas.h" 128dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com#include "SkImageDecoder.h" 138dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com#include "SkOSFile.h" 148dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 158dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.comnamespace skiagm { 168dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 178dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com/** 188dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com * Test copying an image from 8888 to 4444. 198dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com */ 208dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.comclass CopyTo4444GM : public GM { 218dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.compublic: 228dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com CopyTo4444GM() {} 238dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 248dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.comprotected: 258dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com virtual SkString onShortName() { 268dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com return SkString("copyTo4444"); 278dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com } 288dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 298dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com virtual SkISize onISize() { 30f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina return SkISize::Make(1024, 512); 318dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com } 328dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 338dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com virtual void onDraw(SkCanvas* canvas) { 348dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com SkBitmap bm, bm4444; 35c846f4a96bcde1ffeaf17afc1469db6f2cbd1ad3tfarina SkString pngFilename = GetResourcePath("mandrill_512.png"); 36c846f4a96bcde1ffeaf17afc1469db6f2cbd1ad3tfarina if (!SkImageDecoder::DecodeFile(pngFilename.c_str(), &bm, kN32_SkColorType, 378dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com SkImageDecoder::kDecodePixels_Mode)) { 388dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com SkDebugf("Could not decode the file. Did you forget to set the " 398dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com "resourcePath?\n"); 408dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com return; 418dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com } 428dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com canvas->drawBitmap(bm, 0, 0); 438a2ad3cae710f05cca57e48dd1732d575dba2dc7commit-bot@chromium.org SkAssertResult(bm.copyTo(&bm4444, kARGB_4444_SkColorType)); 447bb36ab259cd856ec8f03d2d377a34899c0ae51fscroggo@google.com canvas->drawBitmap(bm4444, SkIntToScalar(bm.width()), 0); 458dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com } 468dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 478dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.comprivate: 488dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com typedef GM INHERITED; 498dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com}; 508dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 518dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com////////////////////////////////////////////////////////////////////////////// 528dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 538dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.comstatic GM* MyFactory(void*) { return new CopyTo4444GM; } 548dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.comstatic GMRegistry reg(MyFactory); 558dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com 568dc8bc55479eb7895b3f0cf4fb42d9d917b21ee1scroggo@google.com} 57