gfx/skia/trunk/include/xml/SkXMLWriter.h

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:8aabc1edef9f
1
2 /*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10 #ifndef SkXMLWriter_DEFINED
11 #define SkXMLWriter_DEFINED
12
13 #include "SkTDArray.h"
14 #include "SkString.h"
15 #include "SkDOM.h"
16
17 class SkWStream;
18 class SkXMLParser;
19
20 class SkXMLWriter {
21 public:
22 SkXMLWriter(bool doEscapeMarkup = true);
23 virtual ~SkXMLWriter();
24
25 void addS32Attribute(const char name[], int32_t value);
26 void addAttribute(const char name[], const char value[]);
27 void addAttributeLen(const char name[], const char value[], size_t length);
28 void addHexAttribute(const char name[], uint32_t value, int minDigits = 0);
29 void addScalarAttribute(const char name[], SkScalar value);
30 void endElement() { this->onEndElement(); }
31 void startElement(const char elem[]);
32 void startElementLen(const char elem[], size_t length);
33 void writeDOM(const SkDOM&, const SkDOM::Node*, bool skipRoot);
34 void flush();
35 virtual void writeHeader();
36
37 protected:
38 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 onEndElement() = 0;
41
42 struct Elem {
43 SkString fName;
44 bool fHasChildren;
45 };
46 void doEnd(Elem* elem);
47 bool doStart(const char name[], size_t length);
48 Elem* getEnd();
49 const char* getHeader();
50 SkTDArray<Elem*> fElems;
51
52 private:
53 bool fDoEscapeMarkup;
54 // illegal
55 SkXMLWriter& operator=(const SkXMLWriter&);
56 };
57
58 class SkXMLStreamWriter : public SkXMLWriter {
59 public:
60 SkXMLStreamWriter(SkWStream*);
61 virtual ~SkXMLStreamWriter();
62 virtual void writeHeader();
63 SkDEBUGCODE(static void UnitTest();)
64 protected:
65 virtual void onStartElementLen(const char elem[], size_t length);
66 virtual void onEndElement();
67 virtual void onAddAttributeLen(const char name[], const char value[], size_t length);
68 private:
69 SkWStream& fStream;
70 };
71
72 class SkXMLParserWriter : public SkXMLWriter {
73 public:
74 SkXMLParserWriter(SkXMLParser*);
75 virtual ~SkXMLParserWriter();
76 protected:
77 virtual void onStartElementLen(const char elem[], size_t length);
78 virtual void onEndElement();
79 virtual void onAddAttributeLen(const char name[], const char value[], size_t length);
80 private:
81 SkXMLParser& fParser;
82 };
83
84
85 #endif

mercurial