Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: include/xml/SkXMLWriter.h

Issue 899683002: [SkSVGDevice] Initial text support (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: review tweak Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « experimental/svg/SkSVGDevice.cpp ('k') | src/animator/SkXMLAnimatorWriter.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkXMLWriter_DEFINED 10 #ifndef SkXMLWriter_DEFINED
11 #define SkXMLWriter_DEFINED 11 #define SkXMLWriter_DEFINED
12 12
13 #include "SkTDArray.h" 13 #include "SkTDArray.h"
14 #include "SkString.h" 14 #include "SkString.h"
15 #include "SkDOM.h" 15 #include "SkDOM.h"
16 16
17 class SkWStream; 17 class SkWStream;
18 class SkXMLParser; 18 class SkXMLParser;
19 19
20 class SkXMLWriter { 20 class SkXMLWriter {
21 public: 21 public:
22 SkXMLWriter(bool doEscapeMarkup = true); 22 SkXMLWriter(bool doEscapeMarkup = true);
23 virtual ~SkXMLWriter(); 23 virtual ~SkXMLWriter();
24 24
25 void addS32Attribute(const char name[], int32_t value); 25 void addS32Attribute(const char name[], int32_t value);
26 void addAttribute(const char name[], const char value[]); 26 void addAttribute(const char name[], const char value[]);
27 void addAttributeLen(const char name[], const char value[], size_t length ); 27 void addAttributeLen(const char name[], const char value[], size_t length );
28 void addHexAttribute(const char name[], uint32_t value, int minDigits = 0 ); 28 void addHexAttribute(const char name[], uint32_t value, int minDigits = 0 );
29 void addScalarAttribute(const char name[], SkScalar value); 29 void addScalarAttribute(const char name[], SkScalar value);
30 void addText(const SkString& text);
reed1 2015/02/04 01:05:23 addText(const char text[], size_t length) That wo
f(malita) 2015/02/04 01:35:25 Done. I dropped the 'length' param to avoid conver
30 void endElement() { this->onEndElement(); } 31 void endElement() { this->onEndElement(); }
31 void startElement(const char elem[]); 32 void startElement(const char elem[]);
32 void startElementLen(const char elem[], size_t length); 33 void startElementLen(const char elem[], size_t length);
33 void writeDOM(const SkDOM&, const SkDOM::Node*, bool skipRoot); 34 void writeDOM(const SkDOM&, const SkDOM::Node*, bool skipRoot);
34 void flush(); 35 void flush();
35 virtual void writeHeader(); 36 virtual void writeHeader();
36 37
37 protected: 38 protected:
38 virtual void onStartElementLen(const char elem[], size_t length) = 0; 39 virtual void onStartElementLen(const char elem[], size_t length) = 0;
39 virtual void onAddAttributeLen(const char name[], const char value[], size_t length) = 0; 40 virtual void onAddAttributeLen(const char name[], const char value[], size_t length) = 0;
41 virtual void onAddText(const SkString& text) = 0;
40 virtual void onEndElement() = 0; 42 virtual void onEndElement() = 0;
41 43
42 struct Elem { 44 struct Elem {
45 Elem(const char name[], size_t len)
46 : fName(name, len)
47 , fHasChildren(false)
48 , fHasText(false) {}
49
43 SkString fName; 50 SkString fName;
44 bool fHasChildren; 51 bool fHasChildren;
52 bool fHasText;
45 }; 53 };
46 void doEnd(Elem* elem); 54 void doEnd(Elem* elem);
47 bool doStart(const char name[], size_t length); 55 bool doStart(const char name[], size_t length);
48 Elem* getEnd(); 56 Elem* getEnd();
49 const char* getHeader(); 57 const char* getHeader();
50 SkTDArray<Elem*> fElems; 58 SkTDArray<Elem*> fElems;
51 59
52 private: 60 private:
53 bool fDoEscapeMarkup; 61 bool fDoEscapeMarkup;
54 // illegal 62 // illegal
55 SkXMLWriter& operator=(const SkXMLWriter&); 63 SkXMLWriter& operator=(const SkXMLWriter&);
56 }; 64 };
57 65
58 class SkXMLStreamWriter : public SkXMLWriter { 66 class SkXMLStreamWriter : public SkXMLWriter {
59 public: 67 public:
60 SkXMLStreamWriter(SkWStream*); 68 SkXMLStreamWriter(SkWStream*);
61 virtual ~SkXMLStreamWriter(); 69 virtual ~SkXMLStreamWriter();
62 virtual void writeHeader(); 70 virtual void writeHeader();
63 SkDEBUGCODE(static void UnitTest();) 71 SkDEBUGCODE(static void UnitTest();)
64 protected: 72 protected:
65 virtual void onStartElementLen(const char elem[], size_t length); 73 virtual void onStartElementLen(const char elem[], size_t length);
66 virtual void onEndElement(); 74 virtual void onEndElement();
67 virtual void onAddAttributeLen(const char name[], const char value[], size_t length); 75 virtual void onAddAttributeLen(const char name[], const char value[], size_t length);
76 virtual void onAddText(const SkString& text) SK_OVERRIDE;
77
68 private: 78 private:
69 SkWStream& fStream; 79 SkWStream& fStream;
70 }; 80 };
71 81
72 class SkXMLParserWriter : public SkXMLWriter { 82 class SkXMLParserWriter : public SkXMLWriter {
73 public: 83 public:
74 SkXMLParserWriter(SkXMLParser*); 84 SkXMLParserWriter(SkXMLParser*);
75 virtual ~SkXMLParserWriter(); 85 virtual ~SkXMLParserWriter();
76 protected: 86 protected:
77 virtual void onStartElementLen(const char elem[], size_t length); 87 virtual void onStartElementLen(const char elem[], size_t length);
78 virtual void onEndElement(); 88 virtual void onEndElement();
79 virtual void onAddAttributeLen(const char name[], const char value[], size_t length); 89 virtual void onAddAttributeLen(const char name[], const char value[], size_t length);
90 virtual void onAddText(const SkString& text) SK_OVERRIDE;
80 private: 91 private:
81 SkXMLParser& fParser; 92 SkXMLParser& fParser;
82 }; 93 };
83 94
84 95
85 #endif 96 #endif
OLDNEW
« no previous file with comments | « experimental/svg/SkSVGDevice.cpp ('k') | src/animator/SkXMLAnimatorWriter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698