SamplePoints.cpp revision ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976e
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc.
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SampleCode.h"
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkView.h"
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkCanvas.h"
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "Sk64.h"
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkGradientShader.h"
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkGraphics.h"
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkImageDecoder.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkKernel33MaskFilter.h"
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkPath.h"
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRandom.h"
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRegion.h"
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkShader.h"
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkUtils.h"
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorPriv.h"
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorFilter.h"
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTime.h"
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTypeface.h"
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkXfermode.h"
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkStream.h"
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkXMLParser.h"
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
30f21833999d90ad9c8c584cff3238797b39cfc00breed@google.comclass PointsView : public SampleView {
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic:
32a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com	PointsView() {}
33a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    // overrides from SkEventSink
36a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com    virtual bool onQuery(SkEvent* evt) {
37a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com        if (SampleCode::TitleQ(*evt)) {
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            SampleCode::TitleR(evt, "Points");
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            return true;
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        }
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        return this->INHERITED::onQuery(evt);
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
44a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com    static void fill_pts(SkPoint pts[], size_t n, SkRandom* rand) {
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        for (size_t i = 0; i < n; i++)
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            pts[i].set(rand->nextUScalar1() * 640, rand->nextUScalar1() * 480);
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
48a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com
49f21833999d90ad9c8c584cff3238797b39cfc00breed@google.com    virtual void onDrawContent(SkCanvas* canvas) {
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        canvas->translate(SK_Scalar1, SK_Scalar1);
51a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkRandom rand;
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkPaint  p0, p1, p2, p3;
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        const size_t n = 99;
55a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        p0.setColor(SK_ColorRED);
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        p1.setColor(SK_ColorGREEN);
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        p2.setColor(SK_ColorBLUE);
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        p3.setColor(SK_ColorWHITE);
60a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        p0.setStrokeWidth(SkIntToScalar(4));
62b4f404ac4195e5b1f49e49c591bd69f98b246f9breed@android.com        p2.setStrokeCap(SkPaint::kRound_Cap);
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        p2.setStrokeWidth(SkIntToScalar(6));
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkPoint* pts = new SkPoint[n];
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        fill_pts(pts, n, &rand);
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
68a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com        canvas->drawPoints(SkCanvas::kPolygon_PointMode, n, pts, p0);
69a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com        canvas->drawPoints(SkCanvas::kLines_PointMode, n, pts, p1);
70a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com        canvas->drawPoints(SkCanvas::kPoints_PointMode, n, pts, p2);
71a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com        canvas->drawPoints(SkCanvas::kPoints_PointMode, n, pts, p3);
72a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        delete[] pts;
748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
75a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
78f21833999d90ad9c8c584cff3238797b39cfc00breed@google.com    typedef SampleView INHERITED;
798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////////////
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkView* MyFactory() { return new PointsView; }
848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkViewRegister reg(MyFactory);
858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
86