Home | History | Annotate | Download | only in samplecode
      1 /*
      2  * Copyright 2011 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 #include "Sample.h"
      8 #include "SkCanvas.h"
      9 #include "SkPaint.h"
     10 
     11 class StrokeRectSample : public Sample {
     12 public:
     13     StrokeRectSample() {}
     14 
     15 protected:
     16     virtual bool onQuery(Sample::Event* evt) {
     17         if (Sample::TitleQ(*evt)) {
     18             Sample::TitleR(evt, "Stroke Rects");
     19             return true;
     20         }
     21         return this->INHERITED::onQuery(evt);
     22     }
     23 
     24     virtual void onDrawContent(SkCanvas* canvas) {
     25         SkPaint paint;
     26         paint.setAntiAlias(true);
     27         paint.setStyle(SkPaint::kStroke_Style);
     28         paint.setStrokeWidth(SkIntToScalar(20));
     29 
     30         SkPaint hair;
     31         hair.setStyle(SkPaint::kStroke_Style);
     32         hair.setColor(SK_ColorRED);
     33 
     34         static const SkISize gSize[] = {
     35             {   100,   50 },
     36             {   100,    0 },
     37             {     0,   50 },
     38             {     0,    0 }
     39         };
     40 
     41         static const SkPaint::Join gJoin[] = {
     42             SkPaint::kMiter_Join,
     43             SkPaint::kRound_Join,
     44             SkPaint::kBevel_Join
     45         };
     46 
     47         canvas->translate(paint.getStrokeWidth(), paint.getStrokeWidth());
     48         for (size_t i = 0; i < SK_ARRAY_COUNT(gJoin); ++i) {
     49             paint.setStrokeJoin(gJoin[i]);
     50 
     51             canvas->save();
     52             for (size_t j = 0; j < SK_ARRAY_COUNT(gSize); ++j) {
     53                 SkRect r = SkRect::MakeWH(SkIntToScalar(gSize[j].fWidth),
     54                                           SkIntToScalar(gSize[j].fHeight));
     55                 canvas->drawRect(r, paint);
     56                 canvas->drawRect(r, hair);
     57                 canvas->translate(0, SkIntToScalar(100));
     58             }
     59             canvas->restore();
     60             canvas->translate(SkIntToScalar(150), 0);
     61         }
     62     }
     63 
     64 private:
     65     typedef Sample INHERITED;
     66 };
     67 
     68 ///////////////////////////////////////////////////////////////////////////////
     69 
     70 DEF_SAMPLE( return new StrokeRectSample(); )
     71