123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*
- * Copyright 2015 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "gm/gm.h"
- #include "include/core/SkCanvas.h"
- #include "include/core/SkPaint.h"
- #include "include/core/SkPath.h"
- #include "include/core/SkScalar.h"
- #include "include/core/SkSize.h"
- #include "include/core/SkString.h"
- #include "include/private/SkTArray.h"
- namespace skiagm {
- // this GM tests hairlines which fill nearly the entire render target
- class StLouisArchGM : public GM {
- protected:
- SkString onShortName() override {
- return SkString("stlouisarch");
- }
- SkISize onISize() override { return SkISize::Make((int)kWidth, (int)kHeight); }
- void onOnceBeforeDraw() override {
- {
- SkPath* bigQuad = &fPaths.push_back();
- bigQuad->moveTo(0, 0);
- bigQuad->quadTo(kWidth/2, kHeight, kWidth, 0);
- }
- {
- SkPath* degenBigQuad = &fPaths.push_back();
- SkScalar yPos = kHeight / 2 + 10;
- degenBigQuad->moveTo(0, yPos);
- degenBigQuad->quadTo(0, yPos, kWidth, yPos);
- }
- {
- SkPath* bigCubic = &fPaths.push_back();
- bigCubic->moveTo(0, 0);
- bigCubic->cubicTo(0, kHeight,
- kWidth, kHeight,
- kWidth, 0);
- }
- {
- SkPath* degenBigCubic = &fPaths.push_back();
- SkScalar yPos = kHeight / 2;
- degenBigCubic->moveTo(0, yPos);
- degenBigCubic->cubicTo(0, yPos,
- 0, yPos,
- kWidth, yPos);
- }
- {
- SkPath* bigConic = &fPaths.push_back();
- bigConic->moveTo(0, 0);
- bigConic->conicTo(kWidth/2, kHeight, kWidth, 0, .5);
- }
- {
- SkPath* degenBigConic = &fPaths.push_back();
- SkScalar yPos = kHeight / 2 - 10;
- degenBigConic->moveTo(0, yPos);
- degenBigConic->conicTo(0, yPos, kWidth, yPos, .5);
- }
- }
- void onDraw(SkCanvas* canvas) override {
- canvas->save();
- canvas->scale(1, -1);
- canvas->translate(0, -kHeight);
- for (int p = 0; p < fPaths.count(); ++p) {
- SkPaint paint;
- paint.setARGB(0xff, 0, 0, 0);
- paint.setAntiAlias(true);
- paint.setStyle(SkPaint::kStroke_Style);
- paint.setStrokeWidth(0);
- canvas->drawPath(fPaths[p], paint);
- }
- canvas->restore();
- }
- const SkScalar kWidth = 256;
- const SkScalar kHeight = 256;
- private:
- SkTArray<SkPath> fPaths;
- typedef GM INHERITED;
- };
- //////////////////////////////////////////////////////////////////////////////
- DEF_GM( return new StLouisArchGM; )
- }
|