| Index: gm/meshgradient.cpp
|
| diff --git a/gm/patch.cpp b/gm/meshgradient.cpp
|
| similarity index 56%
|
| copy from gm/patch.cpp
|
| copy to gm/meshgradient.cpp
|
| index 3f1e07910be6ea21407018c8a2bb5134ea03e77c..128cd08b17b7748de7c4ce14db6828f8e7489f83 100644
|
| --- a/gm/patch.cpp
|
| +++ b/gm/meshgradient.cpp
|
| @@ -14,18 +14,19 @@
|
|
|
| #include "GrContext.h"
|
| #include "GrTest.h"
|
| -#include "SkPatch.h"
|
| +
|
| +#include "../src/effects/gradients/SkMeshGradient.h"
|
|
|
| static void draw_control_points(SkCanvas* canvas, const SkPatch& patch) {
|
| //draw control points
|
| SkPaint paint;
|
| - SkPoint bottom[SkPatch::kNumPtsCubic];
|
| + SkPoint bottom[4];
|
| patch.getBottomPoints(bottom);
|
| - SkPoint top[SkPatch::kNumPtsCubic];
|
| + SkPoint top[4];
|
| patch.getTopPoints(top);
|
| - SkPoint left[SkPatch::kNumPtsCubic];
|
| + SkPoint left[4];
|
| patch.getLeftPoints(left);
|
| - SkPoint right[SkPatch::kNumPtsCubic];
|
| + SkPoint right[4];
|
| patch.getRightPoints(right);
|
|
|
| paint.setColor(SK_ColorBLACK);
|
| @@ -61,18 +62,18 @@ static void draw_control_points(SkCanvas* canvas, const SkPatch& patch) {
|
|
|
| namespace skiagm {
|
| /**
|
| - * This GM draws a SkPatch.
|
| + * This GM draws a mesh gradient.
|
| */
|
| -class SkPatchGM : public GM {
|
| +class SkMeshGradientGM : public GM {
|
|
|
| public:
|
| - SkPatchGM() {
|
| + SkMeshGradientGM() {
|
| this->setBGColor(0xFFFFFFFF);
|
| }
|
|
|
| protected:
|
| virtual SkString onShortName() SK_OVERRIDE {
|
| - return SkString("patch_primitive");
|
| + return SkString("mesh_gradient");
|
| }
|
|
|
| virtual SkISize onISize() SK_OVERRIDE {
|
| @@ -82,59 +83,55 @@ protected:
|
| virtual uint32_t onGetFlags() const SK_OVERRIDE {
|
| return kSkipTiled_Flag;
|
| }
|
| -
|
| +
|
| virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
|
| -
|
| +
|
| SkPaint paint;
|
|
|
| - // The order of the colors and points is clockwise starting at upper-left corner.
|
| - SkColor colors[SkPatch::kNumColors] = {
|
| - SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorCYAN
|
| + SkPoint vertices[] = {
|
| + {50,50}, {150,50}, {250,50},
|
| + {50,150}, {160,140}, {250,150},
|
| + {50,250}, {170,460}, {250,250}
|
| };
|
| - SkPoint points[SkPatch::kNumCtrlPts] = {
|
| - //top points
|
| - {50,50},{75,20},{125,80}, {150,50},
|
| - //right points
|
| - {120,75},{180,125},
|
| - //bottom points
|
| - {150,150},{125,120},{75,180},{50,150},
|
| - //left points
|
| - {20,125},{80,75}
|
| +
|
| + SkColor cornerColors[] = {
|
| + SK_ColorBLUE, SK_ColorRED, SK_ColorBLUE,
|
| + SK_ColorRED, SK_ColorBLUE, SK_ColorRED,
|
| + SK_ColorBLUE, SK_ColorRED, SK_ColorBLUE
|
| };
|
|
|
| - SkPatch patch(points, colors);
|
| - static const SkScalar kScale = 0.5f;
|
| - canvas->translate(100, 100);
|
| - canvas->save();
|
| - for (SkScalar x = 0; x < 4; x++) {
|
| - canvas->save();
|
| - canvas->scale(kScale * (x + 1), kScale * (x + 1));
|
| - canvas->translate(x * 100, 0);
|
| - canvas->drawPatch(patch, paint);
|
| - draw_control_points(canvas, patch);
|
| - canvas->restore();
|
| - }
|
| + SkPoint hrzCtrl[] = {
|
| + {75,80},{125,20},{175,50},{225,50},
|
| + {75,180},{125,120},{175,150},{225,150},
|
| + {75,250},{125,250},{175,250},{225,250}
|
| + };
|
| +
|
| + SkPoint vrtCtrl[] = {
|
| + {50,75},{150,75},{250,75},
|
| + {50,125},{150,125},{250,125},
|
| + {50,175},{150,175},{250,175},
|
| + {50,225},{150,225},{250,225}
|
| + };
|
|
|
| - canvas->translate(0, 270);
|
| + canvas->scale(5, 5);
|
| + SkMeshGradient grad(2, 2, vertices, hrzCtrl, vrtCtrl, cornerColors);
|
|
|
| - static const SkScalar kSkew = 0.2f;
|
| - for (SkScalar x = 0; x < 4; x++) {
|
| - canvas->save();
|
| - canvas->scale(kScale * (x + 1), kScale * (x + 1));
|
| - canvas->translate(x * 100, 0);
|
| - canvas->skew(kSkew * (x + 1), kSkew * (x + 1));
|
| - canvas->drawPatch(patch, paint);
|
| - draw_control_points(canvas, patch);
|
| - canvas->restore();
|
| + grad.draw(canvas, paint);
|
| + SkISize dims = grad.getDimensions();
|
| + for (int y = 0; y < dims.height(); y++) {
|
| + for (int x = 0; x < dims.width(); x++) {
|
| + SkPatch patch;
|
| + grad.getPatchAt(x, y, &patch);
|
| + draw_control_points(canvas, patch);
|
| + }
|
| }
|
| - canvas->restore();
|
| }
|
|
|
| private:
|
| typedef GM INHERITED;
|
| };
|
|
|
| -DEF_GM(return SkNEW(SkPatchGM); )
|
| +DEF_GM(return SkNEW(SkMeshGradientGM); )
|
|
|
| }
|
|
|
|
|