aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-05-04 14:34:56 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-05-04 14:34:56 +0000
commit7a253379e7c420002c0fa93ac05a1bffbb5d557d (patch)
treeaede44adb12681975dcb321b3763cb207d6119de
parent64e3eb24e52a84613ff8c1da5dac6f4b5ba38320 (diff)
new samples
git-svn-id: http://skia.googlecode.com/svn/trunk@1239 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--samplecode/SampleClamp.cpp61
-rw-r--r--samplecode/SampleDash.cpp88
2 files changed, 149 insertions, 0 deletions
diff --git a/samplecode/SampleClamp.cpp b/samplecode/SampleClamp.cpp
new file mode 100644
index 0000000000..88c1b9179b
--- /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 0000000000..4cef07f208
--- /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);
+