• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()16 static 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 *)64 static GM* MyFactory(void*) { return new TinyBitmapGM; }
65 static GMRegistry reg(MyFactory);
66 
67 }
68