skia2/experimental/svg/model/SkSVGAttribute.h
fmalita 397a517d1a [SVGDom] Add viewBox support
The main feature is <svg> viewBox and proper viewport support, but the CL
touches a few other things:

* refactor SkSVGRenderContext to auto-restore canvas state, and split the
  presentation bits into a separate CoW SkSVGPresentationContext

* introduce SkSVGNode::onPrepareToRender(), as a way for nodes to push their
  custom state before the actual onRender() call (instead of relying on
  non-virtual SkSVGNode to know about all possible state bits)

* add a "Type" suffix to SVG types, to disambiguate (e.g. SkSVGRectType vs.
  SkSVGRect)

R=robertphillips@google.com,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2222793002

Review-Url: https://codereview.chromium.org/2222793002
2016-08-08 11:38:55 -07:00

49 lines
832 B
C++

/*
* Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkSVGAttribute_DEFINED
#define SkSVGAttribute_DEFINED
#include "SkSVGTypes.h"
#include "SkTLazy.h"
class SkSVGRenderContext;
enum class SkSVGAttribute {
kD,
kFill,
kHeight,
kStroke,
kTransform,
kViewBox,
kWidth,
kX,
kY,
kUnknown,
};
class SkSVGPresentationAttributes {
public:
SkSVGPresentationAttributes();
void setFill(const SkSVGColorType&);
void setStroke(const SkSVGColorType&);
void applyTo(SkSVGRenderContext*) const;
private:
// Color only for now.
SkSVGColorType fFill;
SkSVGColorType fStroke;
unsigned fFillIsSet : 1;
unsigned fStrokeIsSet : 1;
};
#endif // SkSVGAttribute_DEFINED