| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SampleCode.h" | 8 #include "SampleCode.h" |
| 9 #include "SkView.h" | 9 #include "SkView.h" |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "SkTypeface.h" | 23 #include "SkTypeface.h" |
| 24 #include "SkXfermode.h" | 24 #include "SkXfermode.h" |
| 25 | 25 |
| 26 #include "SkStream.h" | 26 #include "SkStream.h" |
| 27 #include "SkXMLParser.h" | 27 #include "SkXMLParser.h" |
| 28 #include "SkColorPriv.h" | 28 #include "SkColorPriv.h" |
| 29 #include "SkImageDecoder.h" | 29 #include "SkImageDecoder.h" |
| 30 | 30 |
| 31 static SkRandom gRand; | 31 static SkRandom gRand; |
| 32 | 32 |
| 33 static void test_chromium_9005() { | |
| 34 SkBitmap bm; | |
| 35 bm.allocN32Pixels(800, 600); | |
| 36 | |
| 37 SkCanvas canvas(bm); | |
| 38 | |
| 39 SkPoint pt0 = { 799.33374f, 1.2360189f }; | |
| 40 SkPoint pt1 = { 808.49969f, -7.4338055f }; | |
| 41 | |
| 42 SkPaint paint; | |
| 43 paint.setAntiAlias(true); | |
| 44 canvas.drawLine(pt0.fX, pt0.fY, pt1.fX, pt1.fY, paint); | |
| 45 } | |
| 46 | |
| 47 static void generate_pts(SkPoint pts[], int count, int w, int h) { | 33 static void generate_pts(SkPoint pts[], int count, int w, int h) { |
| 48 for (int i = 0; i < count; i++) { | 34 for (int i = 0; i < count; i++) { |
| 49 pts[i].set(gRand.nextUScalar1() * 3 * w - SkIntToScalar(w), | 35 pts[i].set(gRand.nextUScalar1() * 3 * w - SkIntToScalar(w), |
| 50 gRand.nextUScalar1() * 3 * h - SkIntToScalar(h)); | 36 gRand.nextUScalar1() * 3 * h - SkIntToScalar(h)); |
| 51 } | 37 } |
| 52 } | 38 } |
| 53 | 39 |
| 54 static bool check_zeros(const SkPMColor pixels[], int count, int skip) { | 40 static bool check_zeros(const SkPMColor pixels[], int count, int skip) { |
| 55 for (int i = 0; i < count; i++) { | 41 for (int i = 0; i < count; i++) { |
| 56 if (*pixels) { | 42 if (*pixels) { |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 static int cycle_hairproc_index(int index) { | 170 static int cycle_hairproc_index(int index) { |
| 185 return (index + 1) % SK_ARRAY_COUNT(gProcs); | 171 return (index + 1) % SK_ARRAY_COUNT(gProcs); |
| 186 } | 172 } |
| 187 | 173 |
| 188 class HairlineView : public SampleView { | 174 class HairlineView : public SampleView { |
| 189 SkMSec fNow; | 175 SkMSec fNow; |
| 190 int fProcIndex; | 176 int fProcIndex; |
| 191 bool fDoAA; | 177 bool fDoAA; |
| 192 public: | 178 public: |
| 193 HairlineView() { | 179 HairlineView() { |
| 194 fCounter = 0; | |
| 195 fProcIndex = 0; | 180 fProcIndex = 0; |
| 196 fDoAA = true; | 181 fDoAA = true; |
| 197 fNow = 0; | 182 fNow = 0; |
| 198 } | 183 } |
| 199 | 184 |
| 200 protected: | 185 protected: |
| 201 // overrides from SkEventSink | 186 // overrides from SkEventSink |
| 202 virtual bool onQuery(SkEvent* evt) { | 187 bool onQuery(SkEvent* evt) SK_OVERRIDE { |
| 203 if (SampleCode::TitleQ(*evt)) { | 188 if (SampleCode::TitleQ(*evt)) { |
| 204 SkString str; | 189 SkString str; |
| 205 str.printf("Hair-%s", gProcs[fProcIndex].fName); | 190 str.printf("Hair-%s", gProcs[fProcIndex].fName); |
| 206 SampleCode::TitleR(evt, str.c_str()); | 191 SampleCode::TitleR(evt, str.c_str()); |
| 207 return true; | 192 return true; |
| 208 } | 193 } |
| 209 return this->INHERITED::onQuery(evt); | 194 return this->INHERITED::onQuery(evt); |
| 210 } | 195 } |
| 211 | 196 |
| 212 void show_bitmaps(SkCanvas* canvas, const SkBitmap& b0, const SkBitmap& b1, | 197 void show_bitmaps(SkCanvas* canvas, const SkBitmap& b0, const SkBitmap& b1, |
| 213 const SkIRect& inset) { | 198 const SkIRect& inset) { |
| 214 canvas->drawBitmap(b0, 0, 0, NULL); | 199 canvas->drawBitmap(b0, 0, 0, NULL); |
| 215 canvas->drawBitmap(b1, SkIntToScalar(b0.width()), 0, NULL); | 200 canvas->drawBitmap(b1, SkIntToScalar(b0.width()), 0, NULL); |
| 216 } | 201 } |
| 217 | 202 |
| 218 int fCounter; | 203 void onDrawContent(SkCanvas* canvas) SK_OVERRIDE { |
| 219 | |
| 220 virtual void onDrawContent(SkCanvas* canvas) { | |
| 221 gRand.setSeed(fNow); | 204 gRand.setSeed(fNow); |
| 222 | 205 |
| 223 if (false) { // avoid bit rot, suppress warning | |
| 224 test_chromium_9005(); | |
| 225 } | |
| 226 | |
| 227 SkBitmap bm, bm2; | 206 SkBitmap bm, bm2; |
| 228 bm.allocN32Pixels(WIDTH + MARGIN*2, HEIGHT + MARGIN*2); | 207 bm.allocN32Pixels(WIDTH + MARGIN*2, HEIGHT + MARGIN*2); |
| 229 // this will erase our margin, which we want to always stay 0 | 208 // this will erase our margin, which we want to always stay 0 |
| 230 bm.eraseColor(SK_ColorTRANSPARENT); | 209 bm.eraseColor(SK_ColorTRANSPARENT); |
| 231 | 210 |
| 232 bm2.installPixels(SkImageInfo::MakeN32Premul(WIDTH, HEIGHT), | 211 bm2.installPixels(SkImageInfo::MakeN32Premul(WIDTH, HEIGHT), |
| 233 bm.getAddr32(MARGIN, MARGIN), bm.rowBytes()); | 212 bm.getAddr32(MARGIN, MARGIN), bm.rowBytes()); |
| 234 | 213 |
| 235 SkCanvas c2(bm2); | 214 SkCanvas c2(bm2); |
| 236 SkPaint paint; | 215 SkPaint paint; |
| 237 paint.setAntiAlias(fDoAA); | 216 paint.setAntiAlias(fDoAA); |
| 238 paint.setStyle(SkPaint::kStroke_Style); | 217 paint.setStyle(SkPaint::kStroke_Style); |
| 239 | 218 |
| 240 bm2.eraseColor(SK_ColorTRANSPARENT); | 219 bm2.eraseColor(SK_ColorTRANSPARENT); |
| 241 gProcs[fProcIndex].fProc(&c2, paint, bm); | 220 gProcs[fProcIndex].fProc(&c2, paint, bm); |
| 242 canvas->drawBitmap(bm2, SkIntToScalar(10), SkIntToScalar(10), NULL); | 221 canvas->drawBitmap(bm2, SkIntToScalar(10), SkIntToScalar(10), NULL); |
| 243 | |
| 244 SkMSec now = SampleCode::GetAnimTime(); | |
| 245 if (fNow != now) { | |
| 246 fNow = now; | |
| 247 fCounter += 1; | |
| 248 fDoAA = !fDoAA; | |
| 249 if (fCounter > 50) { | |
| 250 fProcIndex = cycle_hairproc_index(fProcIndex); | |
| 251 // todo: signal that we want to rebuild our TITLE | |
| 252 fCounter = 0; | |
| 253 } | |
| 254 this->inval(NULL); | |
| 255 } | |
| 256 } | 222 } |
| 257 | 223 |
| 258 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, | 224 bool onAnimatePulse(SkMSec curr, SkMSec prev) SK_OVERRIDE { |
| 259 unsigned modi) { | 225 if (fDoAA) { |
| 226 fProcIndex = cycle_hairproc_index(fProcIndex); |
| 227 // todo: signal that we want to rebuild our TITLE |
| 228 } |
| 229 fDoAA = !fDoAA; |
| 230 return true; |
| 231 } |
| 232 |
| 233 SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) SK_
OVERRIDE { |
| 260 fDoAA = !fDoAA; | 234 fDoAA = !fDoAA; |
| 261 this->inval(NULL); | 235 this->inval(NULL); |
| 262 return this->INHERITED::onFindClickHandler(x, y, modi); | 236 return this->INHERITED::onFindClickHandler(x, y, modi); |
| 263 } | 237 } |
| 264 | 238 |
| 265 | 239 |
| 266 private: | 240 private: |
| 267 typedef SampleView INHERITED; | 241 typedef SampleView INHERITED; |
| 268 }; | 242 }; |
| 269 | 243 |
| 270 ////////////////////////////////////////////////////////////////////////////// | 244 ////////////////////////////////////////////////////////////////////////////// |
| 271 | 245 |
| 272 static SkView* MyFactory() { return new HairlineView; } | 246 static SkView* MyFactory() { return new HairlineView; } |
| 273 static SkViewRegister reg(MyFactory); | 247 static SkViewRegister reg(MyFactory); |
| OLD | NEW |