blob: 2c1965835579c126628a6be16396b35c60d1612f [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 "Sk64.h"
5#include "SkGradientShader.h"
6#include "SkGraphics.h"
7#include "SkImageDecoder.h"
8#include "SkKernel33MaskFilter.h"
9#include "SkPath.h"
10#include "SkRandom.h"
11#include "SkRegion.h"
12#include "SkShader.h"
13#include "SkUtils.h"
14#include "SkShaderExtras.h"
15#include "SkColorPriv.h"
16#include "SkColorFilter.h"
17#include "SkTime.h"
18#include "SkTypeface.h"
19#include "SkXfermode.h"
20
21#include "SkStream.h"
22#include "SkXMLParser.h"
23
24static SkRandom gRand;
25
26static const struct {
27 const char* fName;
28 uint32_t fFlags;
29 bool fFlushCache;
30} gHints[] = {
31 { "Linear", SkPaint::kLinearText_Flag, false },
32 { "Normal", 0, true },
33 { "Subpixel", SkPaint::kSubpixelText_Flag, true }
34};
35
36#ifdef SK_DEBUG
37 #define REPEAT_COUNT 1
38#else
39 #define REPEAT_COUNT 5000
40#endif
41
42class PointsView : public SkView {
43 bool fAA;
44public:
45 PointsView() : fAA(false) {}
46
47protected:
48 // overrides from SkEventSink
49 virtual bool onQuery(SkEvent* evt)
50 {
51 if (SampleCode::TitleQ(*evt))
52 {
53 SampleCode::TitleR(evt, "Points");
54 return true;
55 }
56 return this->INHERITED::onQuery(evt);
57 }
58
59 void drawBG(SkCanvas* canvas)
60 {
61// canvas->drawColor(0xFFDDDDDD);
62 canvas->drawColor(SK_ColorWHITE);
63 // canvas->drawColor(SK_ColorBLACK);
64 }
65
66 static void fill_pts(SkPoint pts[], size_t n, SkRandom* rand)
67 {
68 for (size_t i = 0; i < n; i++)
69 pts[i].set(rand->nextUScalar1() * 640, rand->nextUScalar1() * 480);
70 }
71
72 virtual void onDraw(SkCanvas* canvas)
73 {
74 this->drawBG(canvas);
75
76 canvas->translate(SK_Scalar1, SK_Scalar1);
77
78 SkRandom rand;
79 SkPaint p0, p1, p2, p3;
80 const size_t n = 99;
81 const int TIMES = 1;
82
83 p0.setColor(SK_ColorRED);
84 p1.setColor(SK_ColorGREEN);
85 p2.setColor(SK_ColorBLUE);
86 p3.setColor(SK_ColorWHITE);
87
88 // fAA = !fAA;
89
90 p0.setAntiAlias(fAA);
91 p1.setAntiAlias(fAA);
92 p2.setAntiAlias(fAA);
93 p3.setAntiAlias(fAA);
94
95 p0.setStrokeWidth(SkIntToScalar(4));
96 p2.setStrokeWidth(SkIntToScalar(6));
97
98 SkPoint* pts = new SkPoint[n];
99 fill_pts(pts, n, &rand);
100
101// SkMSec now = SkTime::GetMSecs();
102 for (int times = 0; times < TIMES; times++)
103 {
104 canvas->drawPoints(SkCanvas::kPolygon_PointMode, n, pts, p0);
105 canvas->drawPoints(SkCanvas::kLines_PointMode, n, pts, p1);
106 canvas->drawPoints(SkCanvas::kPoints_PointMode, n, pts, p2);
107 canvas->drawPoints(SkCanvas::kPoints_PointMode, n, pts, p3);
108 }
109 // printf("----- msecs %d\n", SkTime::GetMSecs() - now);
110 delete[] pts;
111 }
112
113private:
114
115 typedef SkView INHERITED;
116};
117
118//////////////////////////////////////////////////////////////////////////////
119
120static SkView* MyFactory() { return new PointsView; }
121static SkViewRegister reg(MyFactory);
122