1 2 /* 3 * Copyright 2011 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 #include "gm.h" 9 #include "SkColorPriv.h" 10 #include "SkShader.h" 11 #include "SkCanvas.h" 12 #include "SkUtils.h" 13 14 namespace skiagm { 15 make_bitmap()16static SkBitmap make_bitmap() { 17 SkBitmap bm; 18 19 SkColorTable* ctable = new SkColorTable(1); 20 SkPMColor* c = ctable->lockColors(); 21 c[0] = SkPackARGB32(0x80, 0x80, 0, 0); 22 ctable->unlockColors(true); 23 24 bm.setConfig(SkBitmap::kIndex8_Config, 1, 1); 25 bm.allocPixels(ctable); 26 ctable->unref(); 27 28 bm.lockPixels(); 29 *bm.getAddr8(0, 0) = 0; 30 bm.unlockPixels(); 31 return bm; 32 } 33 34 class TinyBitmapGM : public GM { 35 public: TinyBitmapGM()36 TinyBitmapGM() { 37 this->setBGColor(0xFFDDDDDD); 38 } 39 40 protected: onShortName()41 SkString onShortName() { 42 return SkString("tinybitmap"); 43 } 44 onISize()45 virtual SkISize onISize() { return make_isize(100, 100); } 46 onDraw(SkCanvas * canvas)47 virtual void onDraw(SkCanvas* canvas) { 48 SkBitmap bm = make_bitmap(); 49 SkShader* s = 50 SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, 51 SkShader::kMirror_TileMode); 52 SkPaint paint; 53 paint.setAlpha(0x80); 54 paint.setShader(s)->unref(); 55 canvas->drawPaint(paint); 56 } 57 58 private: 59 typedef GM INHERITED; 60 }; 61 62 ////////////////////////////////////////////////////////////////////////////// 63 MyFactory(void *)64static GM* MyFactory(void*) { return new TinyBitmapGM; } 65 static GMRegistry reg(MyFactory); 66 67 } 68