From 7a253379e7c420002c0fa93ac05a1bffbb5d557d Mon Sep 17 00:00:00 2001 From: "reed@google.com" Date: Wed, 4 May 2011 14:34:56 +0000 Subject: [PATCH] new samples git-svn-id: http://skia.googlecode.com/svn/trunk@1239 2bbb7eff-a529-9590-31e7-b0007b416f81 --- samplecode/SampleClamp.cpp | 61 ++++++++++++++++++++++++++++++++ samplecode/SampleDash.cpp | 88 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 samplecode/SampleClamp.cpp create mode 100644 samplecode/SampleDash.cpp diff --git a/samplecode/SampleClamp.cpp b/samplecode/SampleClamp.cpp new file mode 100644 index 0000000..88c1b91 --- /dev/null +++ b/samplecode/SampleClamp.cpp @@ -0,0 +1,61 @@ +#include "SampleCode.h" +#include "SkView.h" +#include "SkCanvas.h" +#include "SkGraphics.h" +#include "SkRandom.h" +#include "SkGradientShader.h" +#include "SkPicture.h" + +static SkShader* make_linear() { + SkPoint pts[] = { 0, 0, SK_Scalar1/500, SK_Scalar1/500 }; + SkColor colors[] = { SK_ColorRED, SK_ColorBLUE }; + return SkGradientShader::CreateLinear(pts, colors, NULL, 2, + SkShader::kClamp_TileMode); +} + +class ClampView : public SampleView { + SkShader* fGrad; + +public: + ClampView() { + fGrad = make_linear(); + } + + virtual ~ClampView() { + fGrad->unref(); + } + +protected: + // overrides from SkEventSink + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "Clamp"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + virtual void onDrawContent(SkCanvas* canvas) { + SkPaint paint; + paint.setShader(fGrad); + +// canvas->translate(this->width()/2, this->height()/2); + canvas->translate(64, 64); + canvas->drawPaint(paint); + + SkPicture pic; + SkCanvas* c = pic.beginRecording(100, 100, 0); + SkCanvas::LayerIter layerIterator(c, false); + layerIterator.next(); + layerIterator.done(); + } + +private: + typedef SampleView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { return new ClampView; } +static SkViewRegister reg(MyFactory); + diff --git a/samplecode/SampleDash.cpp b/samplecode/SampleDash.cpp new file mode 100644 index 0000000..4cef07f --- /dev/null +++ b/samplecode/SampleDash.cpp @@ -0,0 +1,88 @@ +#include "SampleCode.h" +#include "SkView.h" +#include "SkCanvas.h" +#include "SkGraphics.h" +#include "SkRandom.h" +#include "SkDashPathEffect.h" +#include "SkShader.h" + +static void setBitmapDash(SkPaint* paint, int width) { + SkColor c = paint->getColor(); + + SkBitmap bm; + bm.setConfig(SkBitmap::kARGB_8888_Config, 2, 1); + bm.allocPixels(); + bm.lockPixels(); + *bm.getAddr32(0, 0) = SkPreMultiplyARGB(0xFF, SkColorGetR(c), + SkColorGetG(c), SkColorGetB(c)); + *bm.getAddr32(1, 0) = 0; + bm.unlockPixels(); + + SkMatrix matrix; + matrix.setScale(SkIntToScalar(width), SK_Scalar1); + + SkShader* s = SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, + SkShader::kClamp_TileMode); + s->setLocalMatrix(matrix); + + paint->setShader(s)->unref(); +} + +class DashView : public SampleView { +public: + DashView() { + this->setBGColor(0xFFDDDDDD); + } + +protected: + // overrides from SkEventSink + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "Dash"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + virtual void onDrawContent(SkCanvas* canvas) { + static const char* gStr[] = { + "11", + "44", + "112233", + "411327463524", + }; + + SkPaint paint; + paint.setStrokeWidth(SkIntToScalar(1)); + + SkScalar x0 = SkIntToScalar(10); + SkScalar y0 = SkIntToScalar(10); + SkScalar x1 = x0 + SkIntToScalar(1000); + for (size_t i = 0; i < SK_ARRAY_COUNT(gStr); i++) { + SkScalar interval[12]; + size_t len = SkMin32(strlen(gStr[i]), SK_ARRAY_COUNT(interval)); + for (size_t j = 0; j < len; j++) { + interval[j] = SkIntToScalar(gStr[i][j] - '0'); + } + + SkDashPathEffect dash(interval, len, 0); + paint.setPathEffect(&dash); + canvas->drawLine(x0, y0, x1, y0, paint); + paint.setPathEffect(NULL); + + y0 += paint.getStrokeWidth() * 3; + } + + setBitmapDash(&paint, 3); + canvas->drawLine(x0, y0, x1, y0, paint); + } + +private: + typedef SampleView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { return new DashView; } +static SkViewRegister reg(MyFactory); + -- 2.7.4