Home | History | Annotate | Download | only in model
      1 /*
      2  * Copyright 2016 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 
      8 #ifndef SkSVGRect_DEFINED
      9 #define SkSVGRect_DEFINED
     10 
     11 #include "SkSVGShape.h"
     12 #include "SkSVGTypes.h"
     13 
     14 class SkRRect;
     15 
     16 class SkSVGRect final : public SkSVGShape {
     17 public:
     18     ~SkSVGRect() override = default;
     19     static sk_sp<SkSVGRect> Make() { return sk_sp<SkSVGRect>(new SkSVGRect()); }
     20 
     21     void setX(const SkSVGLength&);
     22     void setY(const SkSVGLength&);
     23     void setWidth(const SkSVGLength&);
     24     void setHeight(const SkSVGLength&);
     25     void setRx(const SkSVGLength&);
     26     void setRy(const SkSVGLength&);
     27 
     28 protected:
     29     void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override;
     30 
     31     void onDraw(SkCanvas*, const SkSVGLengthContext&, const SkPaint&,
     32                 SkPath::FillType) const override;
     33 
     34     SkPath onAsPath(const SkSVGRenderContext&) const override;
     35 
     36 private:
     37     SkSVGRect();
     38 
     39     SkRRect resolve(const SkSVGLengthContext&) const;
     40 
     41     SkSVGLength fX      = SkSVGLength(0);
     42     SkSVGLength fY      = SkSVGLength(0);
     43     SkSVGLength fWidth  = SkSVGLength(0);
     44     SkSVGLength fHeight = SkSVGLength(0);
     45 
     46     // The x radius for rounded rects.
     47     SkSVGLength fRx     = SkSVGLength(0);
     48     // The y radius for rounded rects.
     49     SkSVGLength fRy     = SkSVGLength(0);
     50 
     51     typedef SkSVGShape INHERITED;
     52 };
     53 
     54 #endif // SkSVGRect_DEFINED
     55