blob: 50a6d59e5e84ee109cbadc1e42d7fe294582f86f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
/*
* 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 SkSVGRenderContext_DEFINED
#define SkSVGRenderContext_DEFINED
#include "SkSize.h"
#include "SkPaint.h"
#include "SkTLazy.h"
class SkPaint;
class SkSVGLength;
class SkSVGLengthContext {
public:
SkSVGLengthContext(const SkSize& viewport) : fViewport(viewport) {}
enum class LengthType {
kHorizontal,
kVertical,
kOther,
};
void setViewPort(const SkSize& viewport) { fViewport = viewport; }
SkScalar resolve(const SkSVGLength&, LengthType) const;
private:
SkSize fViewport;
};
class SkSVGRenderContext {
public:
explicit SkSVGRenderContext(const SkSize& initialViewport);
SkSVGRenderContext(const SkSVGRenderContext&) = default;
SkSVGRenderContext& operator=(const SkSVGRenderContext&);
const SkSVGLengthContext& lengthContext() const { return fLengthContext; }
const SkPaint* fillPaint() const { return fFill.getMaybeNull(); }
const SkPaint* strokePaint() const { return fStroke.getMaybeNull(); }
void setFillColor(SkColor);
void setStrokeColor(SkColor);
private:
SkPaint& ensureFill();
SkPaint& ensureStroke();
SkSVGLengthContext fLengthContext;
SkTLazy<SkPaint> fFill;
SkTLazy<SkPaint> fStroke;
};
#endif // SkSVGRenderContext_DEFINED
|