source: proto/gml2svg/C/xerces/gml2svg_handler.hpp @ 2855

Last change on this file since 2855 was 2855, checked in by ksherdy, 7 years ago

Modified gml2svg app to support fine-grained application PMC events.

File size: 2.4 KB
Line 
1/*
2        sax2_gml2svg_handler.hpp
3    Copyright (C) 2007, 2008 Ken Herdy
4    Version 0.9
5    Licensed to the public under the Open Software License 3.0.
6*/ 
7
8
9#ifndef SAX2_GML2SVG_HANDLER_HPP_
10#define SAX2_GML2SVG_HANDLER_HPP_
11
12#include <perfsec.h>
13
14#include <cc.h>
15
16#include <xercesc/sax2/Attributes.hpp>
17#include <xercesc/sax2/DefaultHandler.hpp>
18#include <stdio.h>
19#include <vector>
20using namespace std;
21
22XERCES_CPP_NAMESPACE_USE
23
24class GML2SVGHandler: public DefaultHandler {
25public:
26   
27        GML2SVGHandler();
28        ~GML2SVGHandler();
29
30#ifdef CC_APP
31void SetPerfTimer(CC * timer) {
32        this->timer = timer;
33}
34
35void SetPerfElems(size_t elems) {
36        this->elems = elems;
37}
38#endif
39        void startDocument();
40       
41    void endDocument();
42       
43        void startElement(
44        const   XMLCh* const    uri,
45        const   XMLCh* const    localname,
46        const   XMLCh* const    qname,
47        const   Attributes&     attrs
48    );
49
50    void characters
51    (
52        const   XMLCh* const    chars
53        , const XMLSize_t length
54    ); 
55       
56    void endElement
57        (
58                const XMLCh* const uri,
59                const XMLCh* const localname,
60                const XMLCh* const qname
61        );     
62       
63    // Error Handler
64    void error(const SAXParseException& e);
65    void fatalError(const SAXParseException& e);
66    void warning(const SAXParseException& e);
67   
68    // Helpers
69    void setOutputBuffer(char * out);
70    int setParameters(const char * screen_width,
71                                         const char * screen_height, 
72                                         const char * bbox, 
73                                         const char * feature_lname,
74                                         const char * feature_id_lname,
75                                         const char * geometry_lname, 
76                                         const char * style_string);
77   
78private:
79       
80        // Private Helpers
81        void freeMembers();
82       
83        // IO members
84        char * _out_buf;
85        unsigned long int _out_buf_pos;
86
87        // Type cast constants
88        XMLCh * _xmlch_APP_NS_URI;
89        XMLCh * _xmlch_GML_NS_URI;
90        XMLCh * _xmlch_GML_COORDINATES_LNAME;
91        XMLCh * _xmlch_CS_LOCAL_NAME;
92        XMLCh * _xmlch_DECIMAL_LOCAL_NAME;
93        XMLCh * _xmlch_TS_LOCAL_NAME; 
94       
95        char * _width;
96        char * _height;
97        double _sum_y;
98        double _scale_x;
99        double _scale_y;
100        double _x1;
101        double _y1;
102        double _x2;
103        double _y2;
104
105        XMLCh * _xmlch_feature_lname;
106        XMLCh * _xmlch_feature_id_lname;
107        XMLCh * _xmlch_geometry_lname;
108       
109        char * _style_string;
110        char * _feature_id; 
111       
112        char _crt_decimal;
113        char _crt_cs;
114        char _crt_ts;           
115       
116        bool _in_feature;
117        bool _in_geometry;
118        bool _in_gml_coordinates;
119               
120        vector <char *> _coordinates_buffer;
121
122#ifdef CC_APP
123        CC * timer;
124        size_t elems;
125#endif
126       
127};
128
129#endif /*SAX2_GML2SVG_HANDLER_HPP_*/
Note: See TracBrowser for help on using the repository browser.