blob: 08b8a5acd4c5a16be6631ed34740449a4b520c17 [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001#include "SampleCode.h"
2#include "SkView.h"
3#include "SkCanvas.h"
4#include "SkGradientShader.h"
5#include "SkGraphics.h"
6#include "SkImageDecoder.h"
7#include "SkPath.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +00008#include "SkRegion.h"
9#include "SkShader.h"
10#include "SkUtils.h"
11#include "SkXfermode.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +000012#include "SkColorPriv.h"
13#include "SkColorFilter.h"
14#include "SkTime.h"
15#include "SkTypeface.h"
16
reed@android.com8a1c16f2008-12-17 15:59:43 +000017#include "SkOSFile.h"
18#include "SkStream.h"
19
reed@google.com3cec4d72011-07-06 13:59:47 +000020#include "SkGpuDevice.h"
21
22static SkDevice* make_bitmap(SkBitmap* bitmap, GrContext* ctx) {
23 SkCanvas canvas;
24
25 if (ctx) {
26 SkDevice* dev = new SkGpuDevice(ctx, SkBitmap::kARGB_8888_Config, 64, 64);
27 canvas.setDevice(dev)->unref();
28 *bitmap = dev->accessBitmap(false);
29 } else {
30 bitmap->setConfig(SkBitmap::kARGB_8888_Config, 64, 64);
31 bitmap->allocPixels();
32 canvas.setBitmapDevice(*bitmap);
33 }
34
reed@android.comfead49e2009-10-15 18:51:46 +000035 canvas.drawColor(SK_ColorRED);
36 SkPaint paint;
37 paint.setAntiAlias(true);
senorblanco@chromium.org64cc5792011-05-19 19:58:58 +000038 const SkPoint pts[] = { { 0, 0 }, { 64, 64 } };
reed@android.comfead49e2009-10-15 18:51:46 +000039 const SkColor colors[] = { SK_ColorWHITE, SK_ColorBLUE };
40 paint.setShader(SkGradientShader::CreateLinear(pts, colors, NULL, 2,
reed@google.com3cec4d72011-07-06 13:59:47 +000041 SkShader::kClamp_TileMode))->unref();
reed@android.comfead49e2009-10-15 18:51:46 +000042 canvas.drawCircle(32, 32, 32, paint);
reed@android.comfead49e2009-10-15 18:51:46 +000043}
reed@android.com8a1c16f2008-12-17 15:59:43 +000044
reed@google.comf2183392011-04-22 14:10:48 +000045class BitmapRectView : public SampleView {
reed@android.com8a1c16f2008-12-17 15:59:43 +000046public:
reed@android.com8a1c16f2008-12-17 15:59:43 +000047 BitmapRectView() {
reed@google.comf2183392011-04-22 14:10:48 +000048 this->setBGColor(SK_ColorGRAY);
reed@android.com8a1c16f2008-12-17 15:59:43 +000049 }
50
51protected:
52 // overrides from SkEventSink
reed@android.comfead49e2009-10-15 18:51:46 +000053 virtual bool onQuery(SkEvent* evt) {
54 if (SampleCode::TitleQ(*evt)) {
55 SampleCode::TitleR(evt, "BitmapRect");
reed@android.com8a1c16f2008-12-17 15:59:43 +000056 return true;
57 }
58 return this->INHERITED::onQuery(evt);
59 }
60
reed@google.comf2183392011-04-22 14:10:48 +000061 virtual void onDrawContent(SkCanvas* canvas) {
reed@android.comfead49e2009-10-15 18:51:46 +000062 const SkIRect src[] = {
63 { 0, 0, 32, 32 },
reed@android.com87899992009-10-16 14:48:38 +000064 { 0, 0, 80, 80 },
reed@android.comfead49e2009-10-15 18:51:46 +000065 { 32, 32, 96, 96 },
66 { -32, -32, 32, 32, }
67 };
68
reed@android.com8a1c16f2008-12-17 15:59:43 +000069 SkPaint paint;
reed@android.comfead49e2009-10-15 18:51:46 +000070 paint.setStyle(SkPaint::kStroke_Style);
71 paint.setColor(SK_ColorGREEN);
72
reed@google.com3cec4d72011-07-06 13:59:47 +000073 SkBitmap bitmap;
74 make_bitmap(&bitmap, NULL /*SampleCode::GetGr()*/);
75
reed@android.comfead49e2009-10-15 18:51:46 +000076 SkRect dstR = { 0, 200, 128, 380 };
77
78 canvas->translate(16, 40);
79 for (size_t i = 0; i < SK_ARRAY_COUNT(src); i++) {
reed@android.com87899992009-10-16 14:48:38 +000080 SkRect srcR;
81 srcR.set(src[i]);
reed@android.comf2b98d62010-12-20 18:26:13 +000082
reed@google.com3cec4d72011-07-06 13:59:47 +000083 canvas->drawBitmap(bitmap, 0, 0, &paint);
84 canvas->drawBitmapRect(bitmap, &src[i], dstR, &paint);
reed@android.comfead49e2009-10-15 18:51:46 +000085
reed@android.comfead49e2009-10-15 18:51:46 +000086 canvas->drawRect(dstR, paint);
reed@android.comf2b98d62010-12-20 18:26:13 +000087 canvas->drawRect(srcR, paint);
reed@android.comfead49e2009-10-15 18:51:46 +000088
89 canvas->translate(160, 0);
90 }
reed@android.com8a1c16f2008-12-17 15:59:43 +000091 }
92
93private:
94 typedef SkView INHERITED;
95};
96
97//////////////////////////////////////////////////////////////////////////////
98
99static SkView* MyFactory() { return new BitmapRectView; }
100static SkViewRegister reg(MyFactory);
101