1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 81936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com#include "gm.h" 91936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com#include "SkColorPriv.h" 101936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com#include "SkShader.h" 111936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com#include "SkCanvas.h" 121936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com#include "SkUtils.h" 131936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 141936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.comnamespace skiagm { 151936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 161936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.comstatic SkBitmap make_bitmap() { 170a6151d66cc32d91eca037c91e557158cf8a2be2reed@google.com const SkPMColor c[] = { SkPackARGB32(0x80, 0x80, 0, 0) }; 180a6151d66cc32d91eca037c91e557158cf8a2be2reed@google.com SkColorTable* ctable = new SkColorTable(c, SK_ARRAY_COUNT(c)); 1948d9ff5b3475ad4b345fae35e1ce36b34069691breed@google.com 200a6151d66cc32d91eca037c91e557158cf8a2be2reed@google.com SkBitmap bm; 21dac522589e9395b4654a1a708f1bd971f37f95a5commit-bot@chromium.org bm.allocPixels(SkImageInfo::Make(1, 1, kIndex_8_SkColorType, 22dac522589e9395b4654a1a708f1bd971f37f95a5commit-bot@chromium.org kPremul_SkAlphaType), 23dac522589e9395b4654a1a708f1bd971f37f95a5commit-bot@chromium.org NULL, ctable); 241936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com ctable->unref(); 251936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 261936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com bm.lockPixels(); 271936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com *bm.getAddr8(0, 0) = 0; 281936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com bm.unlockPixels(); 291936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com return bm; 301936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com} 311936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 321936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.comclass TinyBitmapGM : public GM { 331936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.compublic: 341936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com TinyBitmapGM() { 3548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com this->setBGColor(0xFFDDDDDD); 361936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com } 37ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com 381936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.comprotected: 391936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com SkString onShortName() { 401936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com return SkString("tinybitmap"); 411936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com } 421936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 43f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina virtual SkISize onISize() { return SkISize::Make(100, 100); } 441936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 451936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com virtual void onDraw(SkCanvas* canvas) { 467775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com SkBitmap bm = make_bitmap(); 47ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com SkShader* s = 487775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, 491936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com SkShader::kMirror_TileMode); 501936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com SkPaint paint; 511936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com paint.setAlpha(0x80); 521936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com paint.setShader(s)->unref(); 531936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com canvas->drawPaint(paint); 541936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com } 55ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com 561936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.comprivate: 571936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com typedef GM INHERITED; 581936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com}; 591936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 601936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com////////////////////////////////////////////////////////////////////////////// 611936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 621936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.comstatic GM* MyFactory(void*) { return new TinyBitmapGM; } 631936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.comstatic GMRegistry reg(MyFactory); 641936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com 651936f26a0fe6fcdbb384562d5d9e631c3ba85536bsalomon@google.com} 66