| Index: gm/emptypath.cpp
 | 
| diff --git a/gm/emptypath.cpp b/gm/emptypath.cpp
 | 
| index df314a356d9da18a4954646a4b738fce184ee8dc..77670becef3e8f1dbf1be8f08f694a8444b99a4f 100644
 | 
| --- a/gm/emptypath.cpp
 | 
| +++ b/gm/emptypath.cpp
 | 
| @@ -1,133 +1,133 @@
 | 
| -
 | 
| -/*
 | 
| - * Copyright 2011 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 "SkCanvas.h"
 | 
| -#include "SkPaint.h"
 | 
| -#include "SkRandom.h"
 | 
| -
 | 
| -namespace skiagm {
 | 
| -
 | 
| -class EmptyPathGM : public GM {
 | 
| -public:
 | 
| -    EmptyPathGM() {}
 | 
| -
 | 
| -protected:
 | 
| -    SkString onShortName() {
 | 
| -        return SkString("emptypath");
 | 
| -    }
 | 
| -
 | 
| -    SkISize onISize() { return make_isize(600, 280); }
 | 
| -
 | 
| -    void drawEmpty(SkCanvas* canvas,
 | 
| -                    SkColor color,
 | 
| -                    const SkRect& clip,
 | 
| -                    SkPaint::Style style,
 | 
| -                    SkPath::FillType fill) {
 | 
| -        SkPath path;
 | 
| -        path.setFillType(fill);
 | 
| -        SkPaint paint;
 | 
| -        paint.setColor(color);
 | 
| -        paint.setStyle(style);
 | 
| -        canvas->save();
 | 
| -        canvas->clipRect(clip);
 | 
| -        canvas->drawPath(path, paint);
 | 
| -        canvas->restore();
 | 
| -    }
 | 
| -
 | 
| -    virtual void onDraw(SkCanvas* canvas) {
 | 
| -        struct FillAndName {
 | 
| -            SkPath::FillType fFill;
 | 
| -            const char*      fName;
 | 
| -        };
 | 
| -        static const FillAndName gFills[] = {
 | 
| -            {SkPath::kWinding_FillType, "Winding"},
 | 
| -            {SkPath::kEvenOdd_FillType, "Even / Odd"},
 | 
| -            {SkPath::kInverseWinding_FillType, "Inverse Winding"},
 | 
| -            {SkPath::kInverseEvenOdd_FillType, "Inverse Even / Odd"},
 | 
| -        };
 | 
| -        struct StyleAndName {
 | 
| -            SkPaint::Style fStyle;
 | 
| -            const char*    fName;
 | 
| -        };
 | 
| -        static const StyleAndName gStyles[] = {
 | 
| -            {SkPaint::kFill_Style, "Fill"},
 | 
| -            {SkPaint::kStroke_Style, "Stroke"},
 | 
| -            {SkPaint::kStrokeAndFill_Style, "Stroke And Fill"},
 | 
| -        };
 | 
| -
 | 
| -        SkPaint titlePaint;
 | 
| -        titlePaint.setColor(SK_ColorBLACK);
 | 
| -        titlePaint.setAntiAlias(true);
 | 
| -        titlePaint.setLCDRenderText(true);
 | 
| -        titlePaint.setTextSize(15 * SK_Scalar1);
 | 
| -        const char title[] = "Empty Paths Drawn Into Rectangle Clips With "
 | 
| -                             "Indicated Style and Fill";
 | 
| -        canvas->drawText(title, strlen(title),
 | 
| -                            20 * SK_Scalar1,
 | 
| -                            20 * SK_Scalar1,
 | 
| -                            titlePaint);
 | 
| -
 | 
| -        SkRandom rand;
 | 
| -        SkRect rect = SkRect::MakeWH(100*SK_Scalar1, 30*SK_Scalar1);
 | 
| -        int i = 0;
 | 
| -        canvas->save();
 | 
| -        canvas->translate(10 * SK_Scalar1, 0);
 | 
| -        canvas->save();
 | 
| -        for (size_t style = 0; style < SK_ARRAY_COUNT(gStyles); ++style) {
 | 
| -            for (size_t fill = 0; fill < SK_ARRAY_COUNT(gFills); ++fill) {
 | 
| -                if (0 == i % 4) {
 | 
| -                    canvas->restore();
 | 
| -                    canvas->translate(0, rect.height() + 40 * SK_Scalar1);
 | 
| -                    canvas->save();
 | 
| -                } else {
 | 
| -                    canvas->translate(rect.width() + 40 * SK_Scalar1, 0);
 | 
| -                }
 | 
| -                ++i;
 | 
| -
 | 
| -
 | 
| -                SkColor color = rand.nextU();
 | 
| -                color = 0xff000000| color; // force solid
 | 
| -                this->drawEmpty(canvas, color, rect,
 | 
| -                                gStyles[style].fStyle, gFills[fill].fFill);
 | 
| -
 | 
| -                SkPaint rectPaint;
 | 
| -                rectPaint.setColor(SK_ColorBLACK);
 | 
| -                rectPaint.setStyle(SkPaint::kStroke_Style);
 | 
| -                rectPaint.setStrokeWidth(-1);
 | 
| -                rectPaint.setAntiAlias(true);
 | 
| -                canvas->drawRect(rect, rectPaint);
 | 
| -
 | 
| -                SkPaint labelPaint;
 | 
| -                labelPaint.setColor(color);
 | 
| -                labelPaint.setAntiAlias(true);
 | 
| -                labelPaint.setLCDRenderText(true);
 | 
| -                labelPaint.setTextSize(12 * SK_Scalar1);
 | 
| -                canvas->drawText(gStyles[style].fName,
 | 
| -                                 strlen(gStyles[style].fName),
 | 
| -                                 0, rect.height() + 15 * SK_Scalar1,
 | 
| -                                 labelPaint);
 | 
| -                canvas->drawText(gFills[fill].fName,
 | 
| -                                 strlen(gFills[fill].fName),
 | 
| -                                 0, rect.height() + 28 * SK_Scalar1,
 | 
| -                                 labelPaint);
 | 
| -            }
 | 
| -        }
 | 
| -        canvas->restore();
 | 
| -        canvas->restore();
 | 
| -    }
 | 
| -
 | 
| -private:
 | 
| -    typedef GM INHERITED;
 | 
| -};
 | 
| -
 | 
| -//////////////////////////////////////////////////////////////////////////////
 | 
| -
 | 
| -static GM* MyFactory(void*) { return new EmptyPathGM; }
 | 
| -static GMRegistry reg(MyFactory);
 | 
| -
 | 
| -}
 | 
| +
 | 
| +/*
 | 
| + * Copyright 2011 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 "SkCanvas.h"
 | 
| +#include "SkPaint.h"
 | 
| +#include "SkRandom.h"
 | 
| +
 | 
| +namespace skiagm {
 | 
| +
 | 
| +class EmptyPathGM : public GM {
 | 
| +public:
 | 
| +    EmptyPathGM() {}
 | 
| +
 | 
| +protected:
 | 
| +    SkString onShortName() {
 | 
| +        return SkString("emptypath");
 | 
| +    }
 | 
| +
 | 
| +    SkISize onISize() { return make_isize(600, 280); }
 | 
| +
 | 
| +    void drawEmpty(SkCanvas* canvas,
 | 
| +                    SkColor color,
 | 
| +                    const SkRect& clip,
 | 
| +                    SkPaint::Style style,
 | 
| +                    SkPath::FillType fill) {
 | 
| +        SkPath path;
 | 
| +        path.setFillType(fill);
 | 
| +        SkPaint paint;
 | 
| +        paint.setColor(color);
 | 
| +        paint.setStyle(style);
 | 
| +        canvas->save();
 | 
| +        canvas->clipRect(clip);
 | 
| +        canvas->drawPath(path, paint);
 | 
| +        canvas->restore();
 | 
| +    }
 | 
| +
 | 
| +    virtual void onDraw(SkCanvas* canvas) {
 | 
| +        struct FillAndName {
 | 
| +            SkPath::FillType fFill;
 | 
| +            const char*      fName;
 | 
| +        };
 | 
| +        static const FillAndName gFills[] = {
 | 
| +            {SkPath::kWinding_FillType, "Winding"},
 | 
| +            {SkPath::kEvenOdd_FillType, "Even / Odd"},
 | 
| +            {SkPath::kInverseWinding_FillType, "Inverse Winding"},
 | 
| +            {SkPath::kInverseEvenOdd_FillType, "Inverse Even / Odd"},
 | 
| +        };
 | 
| +        struct StyleAndName {
 | 
| +            SkPaint::Style fStyle;
 | 
| +            const char*    fName;
 | 
| +        };
 | 
| +        static const StyleAndName gStyles[] = {
 | 
| +            {SkPaint::kFill_Style, "Fill"},
 | 
| +            {SkPaint::kStroke_Style, "Stroke"},
 | 
| +            {SkPaint::kStrokeAndFill_Style, "Stroke And Fill"},
 | 
| +        };
 | 
| +
 | 
| +        SkPaint titlePaint;
 | 
| +        titlePaint.setColor(SK_ColorBLACK);
 | 
| +        titlePaint.setAntiAlias(true);
 | 
| +        titlePaint.setLCDRenderText(true);
 | 
| +        titlePaint.setTextSize(15 * SK_Scalar1);
 | 
| +        const char title[] = "Empty Paths Drawn Into Rectangle Clips With "
 | 
| +                             "Indicated Style and Fill";
 | 
| +        canvas->drawText(title, strlen(title),
 | 
| +                            20 * SK_Scalar1,
 | 
| +                            20 * SK_Scalar1,
 | 
| +                            titlePaint);
 | 
| +
 | 
| +        SkLCGRandom rand;
 | 
| +        SkRect rect = SkRect::MakeWH(100*SK_Scalar1, 30*SK_Scalar1);
 | 
| +        int i = 0;
 | 
| +        canvas->save();
 | 
| +        canvas->translate(10 * SK_Scalar1, 0);
 | 
| +        canvas->save();
 | 
| +        for (size_t style = 0; style < SK_ARRAY_COUNT(gStyles); ++style) {
 | 
| +            for (size_t fill = 0; fill < SK_ARRAY_COUNT(gFills); ++fill) {
 | 
| +                if (0 == i % 4) {
 | 
| +                    canvas->restore();
 | 
| +                    canvas->translate(0, rect.height() + 40 * SK_Scalar1);
 | 
| +                    canvas->save();
 | 
| +                } else {
 | 
| +                    canvas->translate(rect.width() + 40 * SK_Scalar1, 0);
 | 
| +                }
 | 
| +                ++i;
 | 
| +
 | 
| +
 | 
| +                SkColor color = rand.nextU();
 | 
| +                color = 0xff000000| color; // force solid
 | 
| +                this->drawEmpty(canvas, color, rect,
 | 
| +                                gStyles[style].fStyle, gFills[fill].fFill);
 | 
| +
 | 
| +                SkPaint rectPaint;
 | 
| +                rectPaint.setColor(SK_ColorBLACK);
 | 
| +                rectPaint.setStyle(SkPaint::kStroke_Style);
 | 
| +                rectPaint.setStrokeWidth(-1);
 | 
| +                rectPaint.setAntiAlias(true);
 | 
| +                canvas->drawRect(rect, rectPaint);
 | 
| +
 | 
| +                SkPaint labelPaint;
 | 
| +                labelPaint.setColor(color);
 | 
| +                labelPaint.setAntiAlias(true);
 | 
| +                labelPaint.setLCDRenderText(true);
 | 
| +                labelPaint.setTextSize(12 * SK_Scalar1);
 | 
| +                canvas->drawText(gStyles[style].fName,
 | 
| +                                 strlen(gStyles[style].fName),
 | 
| +                                 0, rect.height() + 15 * SK_Scalar1,
 | 
| +                                 labelPaint);
 | 
| +                canvas->drawText(gFills[fill].fName,
 | 
| +                                 strlen(gFills[fill].fName),
 | 
| +                                 0, rect.height() + 28 * SK_Scalar1,
 | 
| +                                 labelPaint);
 | 
| +            }
 | 
| +        }
 | 
| +        canvas->restore();
 | 
| +        canvas->restore();
 | 
| +    }
 | 
| +
 | 
| +private:
 | 
| +    typedef GM INHERITED;
 | 
| +};
 | 
| +
 | 
| +//////////////////////////////////////////////////////////////////////////////
 | 
| +
 | 
| +static GM* MyFactory(void*) { return new EmptyPathGM; }
 | 
| +static GMRegistry reg(MyFactory);
 | 
| +
 | 
| +}
 | 
| 
 |