Don't pass uniform arrays in GrGLNonlinearColorSpaceXformEffect
[platform/upstream/libSkiaSharp.git] / samplecode / SampleSVGFile.cpp
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 #include "SampleCode.h"
9 #include "SkCanvas.h"
10 #include "SkDOM.h"
11 #include "SkOSFile.h"
12 #include "SkOSPath.h"
13 #include "SkStream.h"
14 #include "SkSVGDOM.h"
15 #include "SkView.h"
16
17 namespace {
18
19 class SVGFileView : public SampleView {
20 public:
21     SVGFileView(const SkString& path)
22         : fPath(path), fLabel(SkStringPrintf("[%s]", SkOSPath::Basename(path.c_str()).c_str())) {}
23     ~SVGFileView() override = default;
24
25 protected:
26     void onOnceBeforeDraw() override {
27         SkFILEStream svgStream(fPath.c_str());
28         if (!svgStream.isValid()) {
29             SkDebugf("file not found: \"path\"\n", fPath.c_str());
30             return;
31         }
32
33         SkDOM xmlDom;
34         if (!xmlDom.build(svgStream)) {
35             SkDebugf("XML parsing failed: \"path\"\n", fPath.c_str());
36             return;
37         }
38
39         fDom = SkSVGDOM::MakeFromDOM(xmlDom);
40         if (fDom) {
41             fDom->setContainerSize(SkSize::Make(this->width(), this->height()));
42         }
43     }
44
45     void onDrawContent(SkCanvas* canvas) override {
46         if (fDom) {
47             fDom->render(canvas);
48         }
49     }
50
51     void onSizeChange() override {
52         if (fDom) {
53             fDom->setContainerSize(SkSize::Make(this->width(), this->height()));
54         }
55
56         this->INHERITED::onSizeChange();
57     }
58
59     bool onQuery(SkEvent* evt) override {
60         if (SampleCode::TitleQ(*evt)) {
61             SampleCode::TitleR(evt, fLabel.c_str());
62             return true;
63         }
64
65         return this->INHERITED::onQuery(evt);
66     }
67 private:
68     sk_sp<SkSVGDOM> fDom;
69     SkString        fPath;
70     SkString        fLabel;
71
72     typedef SampleView INHERITED;
73 };
74
75 } // anonymous namespace
76
77 SampleView* CreateSampleSVGFileView(const SkString& filename);
78 SampleView* CreateSampleSVGFileView(const SkString& filename) {
79     return new SVGFileView(filename);
80 }