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 SkSVGSVG_DEFINED 9#define SkSVGSVG_DEFINED 10 11#include "SkSVGContainer.h" 12#include "SkSVGTypes.h" 13#include "SkTLazy.h" 14 15class SkSVGLengthContext; 16 17class SkSVGSVG : public SkSVGContainer { 18public: 19 ~SkSVGSVG() override = default; 20 21 static sk_sp<SkSVGSVG> Make() { return sk_sp<SkSVGSVG>(new SkSVGSVG()); } 22 23 void setX(const SkSVGLength&); 24 void setY(const SkSVGLength&); 25 void setWidth(const SkSVGLength&); 26 void setHeight(const SkSVGLength&); 27 void setViewBox(const SkSVGViewBoxType&); 28 29 SkSize intrinsicSize(const SkSVGLengthContext&) const; 30 31protected: 32 bool onPrepareToRender(SkSVGRenderContext*) const override; 33 34 void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override; 35 36private: 37 SkSVGSVG(); 38 39 SkSVGLength fX = SkSVGLength(0); 40 SkSVGLength fY = SkSVGLength(0); 41 SkSVGLength fWidth = SkSVGLength(100, SkSVGLength::Unit::kPercentage); 42 SkSVGLength fHeight = SkSVGLength(100, SkSVGLength::Unit::kPercentage); 43 44 SkTLazy<SkSVGViewBoxType> fViewBox; 45 46 typedef SkSVGContainer INHERITED; 47}; 48 49#endif // SkSVGSVG_DEFINED 50