Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(948)

Unified Diff: gm/techtalk1.cpp

Issue 1286133004: A bit of misc cleanup. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gm/system_preferences_mac.mm ('k') | gyp/common_conditions.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/techtalk1.cpp
diff --git a/gm/techtalk1.cpp b/gm/techtalk1.cpp
deleted file mode 100644
index f52e48b829329bac5dc7af39486eeeafdcd40a15..0000000000000000000000000000000000000000
--- a/gm/techtalk1.cpp
+++ /dev/null
@@ -1,393 +0,0 @@
-
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-#include "gm.h"
-
-#include "SkColorPriv.h"
-#include "SkGeometry.h"
-#include "SkShader.h"
-
-#define WIRE_FRAME_WIDTH 1.1f
-
-static void tesselate(const SkPath& src, SkPath* dst) {
- SkPath::Iter iter(src, true);
- SkPoint pts[4];
- SkPath::Verb verb;
- while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
- switch (verb) {
- case SkPath::kMove_Verb:
- dst->moveTo(pts[0]);
- break;
- case SkPath::kLine_Verb:
- dst->lineTo(pts[1]);
- break;
- case SkPath::kQuad_Verb: {
- SkPoint p;
- for (int i = 1; i <= 8; ++i) {
- SkEvalQuadAt(pts, i / 8.0f, &p, NULL);
- dst->lineTo(p);
- }
- } break;
- case SkPath::kCubic_Verb: {
- SkPoint p;
- for (int i = 1; i <= 8; ++i) {
- SkEvalCubicAt(pts, i / 8.0f, &p, NULL, NULL);
- dst->lineTo(p);
- }
- } break;
- }
- }
-}
-
-static void setFade(SkPaint* paint, bool showGL) {
- paint->setAlpha(showGL ? 0x66 : 0xFF);
-}
-
-static void setGLFrame(SkPaint* paint) {
- paint->setColor(0xFFFF0000);
- paint->setStyle(SkPaint::kStroke_Style);
- paint->setAntiAlias(true);
- paint->setStrokeWidth(WIRE_FRAME_WIDTH);
-}
-
-static void show_mesh(SkCanvas* canvas, const SkRect& r) {
- SkPaint paint;
- setGLFrame(&paint);
-
- canvas->drawRect(r, paint);
- canvas->drawLine(r.fLeft, r.fTop, r.fRight, r.fBottom, paint);
-}
-
-static void drawLine(SkCanvas* canvas, const SkPoint& p0, const SkPoint& p1,
- const SkPaint& paint) {
- canvas->drawLine(p0.fX, p0.fY, p1.fX, p1.fY, paint);
-}
-
-static void show_mesh(SkCanvas* canvas, const SkPoint pts[],
- const uint16_t indices[], int count) {
- SkPaint paint;
- setGLFrame(&paint);
-
- for (int i = 0; i < count - 2; ++i) {
- drawLine(canvas, pts[indices[i]], pts[indices[i+1]], paint);
- drawLine(canvas, pts[indices[i+1]], pts[indices[i+2]], paint);
- drawLine(canvas, pts[indices[i+2]], pts[indices[i]], paint);
- }
-}
-
-static void show_glframe(SkCanvas* canvas, const SkPath& path) {
- SkPaint paint;
- setGLFrame(&paint);
- canvas->drawPath(path, paint);
-}
-
-static void show_mesh_between(SkCanvas* canvas, const SkPath& p0, const SkPath& p1) {
- SkPath d0, d1;
- tesselate(p0, &d0);
- tesselate(p1, &d1);
-
- SkPoint pts0[256*2], pts1[256];
- int count = d0.getPoints(pts0, SK_ARRAY_COUNT(pts0));
- int count1 = d1.getPoints(pts1, SK_ARRAY_COUNT(pts1));
- SkASSERT(count == count1);
- memcpy(&pts0[count], pts1, count * sizeof(SkPoint));
-
- uint16_t indices[256*6];
- uint16_t* ndx = indices;
- for (int i = 0; i < count; ++i) {
- *ndx++ = i;
- *ndx++ = i + count;
- }
- *ndx++ = 0;
-
- show_mesh(canvas, pts0, indices, ndx - indices);
-}
-
-static void show_fan(SkCanvas* canvas, const SkPath& path, SkScalar cx, SkScalar cy) {
- SkPaint paint;
- setGLFrame(&paint);
-
- canvas->drawPath(path, paint);
-
- SkPoint pts[256];
- int count = path.getPoints(pts, SK_ARRAY_COUNT(pts));
- for (int i = 0; i < count; ++i) {
- canvas->drawLine(pts[i].fX, pts[i].fY, cx, cy, paint);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-typedef void (*DrawProc)(SkCanvas* canvas, bool showGL, int flags);
-
-static void draw_line(SkCanvas* canvas, bool showGL, int flags) {
- SkPaint paint;
- paint.setAntiAlias(true);
-
- if (showGL) {
- setGLFrame(&paint);
- }
- canvas->drawLine(50, 50, 400, 100, paint);
- paint.setColor(SK_ColorBLACK);
-
- canvas->rotate(40);
- setFade(&paint, showGL);
- paint.setStrokeWidth(40);
- canvas->drawLine(100, 50, 450, 50, paint);
- if (showGL) {
- show_mesh(canvas, SkRect::MakeLTRB(100, 50-20, 450, 50+20));
- }
-}
-
-static void draw_rect(SkCanvas* canvas, bool showGL, int flags) {
- SkPaint paint;
- paint.setAntiAlias(true);
-
- SkRect r = SkRect::MakeLTRB(50, 70, 250, 370);
-
- setFade(&paint, showGL);
- canvas->drawRect(r, paint);
- if (showGL) {
- show_mesh(canvas, r);
- }
-
- canvas->translate(320, 0);
-
- paint.setStyle(SkPaint::kStroke_Style);
- paint.setStrokeWidth(25);
- canvas->drawRect(r, paint);
- if (showGL) {
- SkScalar rad = paint.getStrokeWidth() / 2;
- SkPoint pts[8];
- r.outset(rad, rad);
- r.toQuad(&pts[0]);
- r.inset(rad*2, rad*2);
- r.toQuad(&pts[4]);
-
- const uint16_t indices[] = {
- 0, 4, 1, 5, 2, 6, 3, 7, 0, 4
- };
- show_mesh(canvas, pts, indices, SK_ARRAY_COUNT(indices));
- }
-}
-
-static void draw_oval(SkCanvas* canvas, bool showGL, int flags) {
- SkPaint paint;
- paint.setAntiAlias(true);
-
- SkRect r = SkRect::MakeLTRB(50, 70, 250, 370);
-
- setFade(&paint, showGL);
- canvas->drawOval(r, paint);
- if (showGL) {
- switch (flags) {
- case 0: {
- SkPath path;
- path.addOval(r);
- show_glframe(canvas, path);
- } break;
- case 1:
- case 3: {
- SkPath src, dst;
- src.addOval(r);
- tesselate(src, &dst);
- show_fan(canvas, dst, r.centerX(), r.centerY());
- } break;
- case 2: {
- SkPaint p(paint);
- show_mesh(canvas, r);
- setGLFrame(&p);
- paint.setStyle(SkPaint::kFill_Style);
- canvas->drawCircle(r.centerX(), r.centerY(), 3, p);
- } break;
- }
- }
-
- canvas->translate(320, 0);
-
- paint.setStyle(SkPaint::kStroke_Style);
- paint.setStrokeWidth(25);
- canvas->drawOval(r, paint);
- if (showGL) {
- switch (flags) {
- case 0: {
- SkPath path;
- SkScalar rad = paint.getStrokeWidth() / 2;
- r.outset(rad, rad);
- path.addOval(r);
- r.inset(rad*2, rad*2);
- path.addOval(r);
- show_glframe(canvas, path);
- } break;
- case 1: {
- SkPath path0, path1;
- SkScalar rad = paint.getStrokeWidth() / 2;
- r.outset(rad, rad);
- path0.addOval(r);
- r.inset(rad*2, rad*2);
- path1.addOval(r);
- show_mesh_between(canvas, path0, path1);
- } break;
- case 2: {
- SkPath path;
- path.addOval(r);
- show_glframe(canvas, path);
- SkScalar rad = paint.getStrokeWidth() / 2;
- r.outset(rad, rad);
- show_mesh(canvas, r);
- } break;
- case 3: {
- SkScalar rad = paint.getStrokeWidth() / 2;
- r.outset(rad, rad);
- SkPaint paint;
- paint.setAlpha(0x33);
- canvas->drawRect(r, paint);
- show_mesh(canvas, r);
- } break;
- }
- }
-}
-
-#include "SkImageDecoder.h"
-
-static void draw_image(SkCanvas* canvas, bool showGL, int flags) {
- SkPaint paint;
- paint.setAntiAlias(true);
- paint.setFilterBitmap(true);
- setFade(&paint, showGL);
-
- static SkBitmap* gBM;
- if (NULL == gBM) {
- gBM = new SkBitmap;
- SkImageDecoder::DecodeFile("/skimages/startrek.png", gBM);
- }
- SkRect r = SkRect::MakeWH(gBM->width(), gBM->height());
-
- canvas->save();
- canvas->translate(30, 30);
- canvas->scale(0.8f, 0.8f);
- canvas->drawBitmap(*gBM, 0, 0, &paint);
- if (showGL) {
- show_mesh(canvas, r);
- }
- canvas->restore();
-
- canvas->translate(210, 290);
- canvas->rotate(-35);
- canvas->drawBitmap(*gBM, 0, 0, &paint);
- if (showGL) {
- show_mesh(canvas, r);
- }
-}
-
-static void draw_text(SkCanvas* canvas, bool showGL, int flags) {
- SkPaint paint;
- paint.setAntiAlias(true);
- paint.setLCDRenderText(true);
- const char text[] = "Graphics at Google";
- size_t len = strlen(text);
- setFade(&paint, showGL);
-
- canvas->translate(40, 50);
- for (int i = 0; i < 10; ++i) {
- paint.setTextSize(12 + i * 3);
- canvas->drawText(text, len, 0, 0, paint);
- if (showGL) {
- SkRect bounds[256];
- SkScalar widths[256];
- int count = paint.getTextWidths(text, len, widths, bounds);
- SkScalar adv = 0;
- for (int j = 0; j < count; ++j) {
- bounds[j].offset(adv, 0);
- show_mesh(canvas, bounds[j]);
- adv += widths[j];
- }
- }
- canvas->translate(0, paint.getTextSize() * 3 / 2);
- }
-}
-
-static const struct {
- DrawProc fProc;
- const char* fName;
-} gRec[] = {
- { draw_line, "Lines" },
- { draw_rect, "Rects" },
- { draw_oval, "Ovals" },
- { draw_image, "Images" },
- { draw_text, "Text" },
-};
-
-class TalkGM : public skiagm::GM {
- DrawProc fProc;
- SkString fName;
- bool fShowGL;
- int fFlags;
-
-public:
- TalkGM(int index, bool showGL, int flags = 0) {
- fProc = gRec[index].fProc;
- fName.set(gRec[index].fName);
- if (showGL) {
- fName.append("-gl");
- }
- fShowGL = showGL;
- fFlags = flags;
- }
-
-protected:
- virtual SkString onShortName() {
- return fName;
- }
-
- virtual SkISize onISize() {
- return SkISize::Make(640, 480);
- }
-
- virtual void onDraw(SkCanvas* canvas) {
- SkISize size = canvas->getDeviceSize();
- SkRect dst = SkRect::MakeWH(size.width(), size.height());
- SkRect src = SkRect::MakeWH(640, 480);
- SkMatrix matrix;
- matrix.setRectToRect(src, dst, SkMatrix::kCenter_ScaleToFit);
-
- canvas->concat(matrix);
- fProc(canvas, fShowGL, fFlags);
- }
-
-private:
- typedef skiagm::GM INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-#define GM_CONCAT(X,Y) GM_CONCAT_IMPL(X,Y)
-#define GM_CONCAT_IMPL(X,Y) X##Y
-
-#define FACTORY_NAME GM_CONCAT(Factory, __LINE__)
-#define REGISTRY_NAME GM_CONCAT(gReg, __LINE__)
-
-#define ADD_GM(Class, args) \
- static skiagm::GM* FACTORY_NAME(void*) { return new Class args; } \
- static skiagm::GMRegistry REGISTRY_NAME(FACTORY_NAME);
-
-ADD_GM(TalkGM, (0, false))
-ADD_GM(TalkGM, (0, true))
-ADD_GM(TalkGM, (1, false))
-ADD_GM(TalkGM, (1, true))
-ADD_GM(TalkGM, (2, false))
-ADD_GM(TalkGM, (2, true))
-ADD_GM(TalkGM, (2, true, 1))
-ADD_GM(TalkGM, (2, true, 2))
-ADD_GM(TalkGM, (2, true, 3))
-ADD_GM(TalkGM, (3, false))
-ADD_GM(TalkGM, (3, true))
-ADD_GM(TalkGM, (4, false))
-ADD_GM(TalkGM, (4, true))
-
-//static GM* MyFactory(void*) { return new TalkGM(0, false); }
-//static GMRegistry reg(MyFactory);
« no previous file with comments | « gm/system_preferences_mac.mm ('k') | gyp/common_conditions.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698