Home | History | Annotate | Download | only in gm
      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 
     16 static SkBitmap make_bitmap() {
     17     const SkPMColor c[] = { SkPackARGB32(0x80, 0x80, 0, 0) };
     18     SkColorTable* ctable = new SkColorTable(c, SK_ARRAY_COUNT(c));
     19 
     20     SkBitmap bm;
     21     bm.allocPixels(SkImageInfo::Make(1, 1, kIndex_8_SkColorType,
     22                                      kPremul_SkAlphaType),
     23                    NULL, ctable);
     24     ctable->unref();
     25 
     26     bm.lockPixels();
     27     *bm.getAddr8(0, 0) = 0;
     28     bm.unlockPixels();
     29     return bm;
     30 }
     31 
     32 class TinyBitmapGM : public GM {
     33 public:
     34     TinyBitmapGM() {
     35         this->setBGColor(0xFFDDDDDD);
     36     }
     37 
     38 protected:
     39     SkString onShortName() {
     40         return SkString("tinybitmap");
     41     }
     42 
     43     virtual SkISize onISize() { return SkISize::Make(100, 100); }
     44 
     45     virtual void onDraw(SkCanvas* canvas) {
     46         SkBitmap bm = make_bitmap();
     47         SkShader* s =
     48             SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode,
     49                                          SkShader::kMirror_TileMode);
     50         SkPaint paint;
     51         paint.setAlpha(0x80);
     52         paint.setShader(s)->unref();
     53         canvas->drawPaint(paint);
     54     }
     55 
     56 private:
     57     typedef GM INHERITED;
     58 };
     59 
     60 //////////////////////////////////////////////////////////////////////////////
     61 
     62 static GM* MyFactory(void*) { return new TinyBitmapGM; }
     63 static GMRegistry reg(MyFactory);
     64 
     65 }
     66