- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

VSDFieldList.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* libvisio
3 * Version: MPL 1.1 / GPLv2+ / LGPLv2+
4 *
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License or as specified alternatively below. You may obtain a copy of
8 * the License at http://www.mozilla.org/MPL/
9 *
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
13 * License.
14 *
15 * Major Contributor(s):
16 * Copyright (C) 2011 Fridrich Strba <fridrich.strba@bluewin.ch>
17 * Copyright (C) 2011 Eilidh McAdam <tibbylickle@gmail.com>
18 *
19 *
20 * All Rights Reserved.
21 *
22 * For minor contributions see the git repository.
23 *
24 * Alternatively, the contents of this file may be used under the terms of
25 * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
26 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
27 * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
28 * instead of those above.
29 */
30
31 #ifndef __VSDFIELDLIST_H__
32 #define __VSDFIELDLIST_H__
33
34 #include <vector>
35 #include <map>
36 #include <libwpd/libwpd.h>
37 #include "VSDDocumentStructure.h"
38 #include "VSDTypes.h"
39
40 namespace libvisio
41 {
42
43 class VSDCollector;
44
45 class VSDFieldListElement
46 {
47 public:
48 VSDFieldListElement() {}
49 virtual ~VSDFieldListElement() {}
50 virtual void handle(VSDCollector *collector) const = 0;
51 virtual VSDFieldListElement *clone() = 0;
52 virtual WPXString getString(const std::map<unsigned, WPXString> &) = 0;
53 virtual void setNameId(int) = 0;
54 virtual void setFormat(unsigned short) = 0;
55 virtual void setValue(double) = 0;
56 };
57
58 class VSDTextField : public VSDFieldListElement
59 {
60 public:
61 VSDTextField(unsigned id, unsigned level, int nameId, int formatStringId)
62 : m_id(id),
63 m_level(level),
64 m_nameId(nameId),
65 m_formatStringId(formatStringId) {}
66 ~VSDTextField() {}
67 void handle(VSDCollector *collector) const;
68 VSDFieldListElement *clone();
69 WPXString getString(const std::map<unsigned, WPXString> &strVec);
70 void setNameId(int nameId);
71 void setFormat(unsigned short) {}
72 void setValue(double) {}
73 private:
74 unsigned m_id, m_level;
75 int m_nameId, m_formatStringId;
76 };
77
78 class VSDNumericField : public VSDFieldListElement
79 {
80 public:
81 VSDNumericField(unsigned id, unsigned level, unsigned short format, double number, int formatStringId)
82 : m_id(id),
83 m_level(level),
84 m_format(format),
85 m_number(number),
86 m_formatStringId(formatStringId) {}
87 ~VSDNumericField() {}
88 void handle(VSDCollector *collector) const;
89 VSDFieldListElement *clone();
90 WPXString getString(const std::map<unsigned, WPXString> &);
91 void setNameId(int) {}
92 void setFormat(unsigned short format);
93 void setValue(double number);
94 private:
95 WPXString datetimeToString(const char *format, double datetime);
96 unsigned m_id, m_level;
97 unsigned short m_format;
98 double m_number;
99 int m_formatStringId;
100 };
101
102 class VSDFieldList
103 {
104 public:
105 VSDFieldList();
106 VSDFieldList(const VSDFieldList &fieldList);
107 ~VSDFieldList();
108 VSDFieldList &operator=(const VSDFieldList &fieldList);
109 void setElementsOrder(const std::vector<unsigned> &m_elementsOrder);
110 void addFieldList(unsigned id, unsigned level);
111 void addTextField(unsigned id, unsigned level, int nameId, int formatStringId);
112 void addNumericField(unsigned id, unsigned level, unsigned short format, double number, int formatStringId);
113 void addClonedField(unsigned id);
114 void handle(VSDCollector *collector) const;
115 void clear();
116 unsigned long size() const
117 {
118 return (unsigned long)m_elements.size();
119 }
120 bool empty() const
121 {
122 return (m_elements.empty());
123 }
124 VSDFieldListElement *getElement(unsigned index);
125 private:
126 std::map<unsigned, VSDFieldListElement *> m_elements;
127 std::vector<unsigned> m_elementsOrder;
128 unsigned m_id, m_level;
129 };
130
131 } // namespace libvisio
132
133 #endif // __VSDFIELDLIST_H__
134 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libvisio::VSDFieldList::addFieldList
void addFieldList(unsigned id, unsigned level)
Definition: VSDFieldList.cpp:232
libvisio::VSDTextField::m_level
unsigned m_level
Definition: VSDFieldList.h:74
libvisio::VSDNumericField::~VSDNumericField
~VSDNumericField()
Definition: VSDFieldList.h:87
libvisio::VSDFieldList::addTextField
void addTextField(unsigned id, unsigned level, int nameId, int formatStringId)
Definition: VSDFieldList.cpp:238
libvisio::VSDFieldList::handle
void handle(VSDCollector *collector) const
Definition: VSDFieldList.cpp:248
libvisio::VSDFieldListElement::setValue
virtual void setValue(double)=0
VSDDocumentStructure.h
libvisio::VSDFieldList::m_id
unsigned m_id
Definition: VSDFieldList.h:128
libvisio::VSDFieldListElement::setFormat
virtual void setFormat(unsigned short)=0
libvisio::VSDFieldListElement::VSDFieldListElement
VSDFieldListElement()
Definition: VSDFieldList.h:48
libvisio::VSDFieldList::addNumericField
void addNumericField(unsigned id, unsigned level, unsigned short format, double number, int formatStringId)
Definition: VSDFieldList.cpp:243
libvisio::VSDFieldList::~VSDFieldList
~VSDFieldList()
Definition: VSDFieldList.cpp:220
libvisio::VSDFieldListElement
Definition: VSDFieldList.h:45
libvisio::VSDNumericField::clone
VSDFieldListElement * clone()
Definition: VSDFieldList.cpp:65
libvisio::VSDNumericField::getString
WPXString getString(const std::map< unsigned, WPXString > &)
Definition: VSDFieldList.cpp:86
libvisio::VSDFieldList::getElement
VSDFieldListElement * getElement(unsigned index)
Definition: VSDFieldList.cpp:279
libvisio::VSDTextField::setNameId
void setNameId(int nameId)
Definition: VSDFieldList.cpp:54
libvisio::VSDTextField::clone
VSDFieldListElement * clone()
Definition: VSDFieldList.cpp:40
libvisio::VSDTextField::VSDTextField
VSDTextField(unsigned id, unsigned level, int nameId, int formatStringId)
Definition: VSDFieldList.h:61
libvisio::VSDNumericField::datetimeToString
WPXString datetimeToString(const char *format, double datetime)
Definition: VSDFieldList.cpp:72
libvisio::VSDTextField::handle
void handle(VSDCollector *collector) const
Definition: VSDFieldList.cpp:35
libvisio::VSDFieldList::operator=
VSDFieldList & operator=(const VSDFieldList &fieldList)
Definition: VSDFieldList.cpp:205
libvisio::VSDNumericField::m_format
unsigned short m_format
Definition: VSDFieldList.h:97
libvisio::VSDFieldList::addClonedField
void addClonedField(unsigned id)
libvisio::VSDNumericField::setFormat
void setFormat(unsigned short format)
Definition: VSDFieldList.cpp:176
libvisio::VSDNumericField::m_formatStringId
int m_formatStringId
Definition: VSDFieldList.h:99
libvisio::VSDCollector
Definition: VSDCollector.h:41
libvisio::VSDFieldList
Definition: VSDFieldList.h:102
libvisio::VSDFieldListElement::setNameId
virtual void setNameId(int)=0
libvisio::VSDFieldListElement::handle
virtual void handle(VSDCollector *collector) const =0
libvisio::VSDTextField::setFormat
void setFormat(unsigned short)
Definition: VSDFieldList.h:71
libvisio::VSDTextField::m_nameId
int m_nameId
Definition: VSDFieldList.h:75
libvisio::VSDNumericField::VSDNumericField
VSDNumericField(unsigned id, unsigned level, unsigned short format, double number, int formatStringId)
Definition: VSDFieldList.h:81
libvisio::VSDFieldListElement::getString
virtual WPXString getString(const std::map< unsigned, WPXString > &)=0
VSDTypes.h
libvisio::VSDTextField
Definition: VSDFieldList.h:58
libvisio::VSDNumericField::m_number
double m_number
Definition: VSDFieldList.h:98
libvisio::VSDFieldList::clear
void clear()
Definition: VSDFieldList.cpp:271
libvisio::VSDFieldListElement::clone
virtual VSDFieldListElement * clone()=0
libvisio::VSDTextField::getString
WPXString getString(const std::map< unsigned, WPXString > &strVec)
Definition: VSDFieldList.cpp:45
libvisio::VSDNumericField::setNameId
void setNameId(int)
Definition: VSDFieldList.h:91
libvisio::VSDNumericField::m_level
unsigned m_level
Definition: VSDFieldList.h:96
libvisio::VSDFieldList::empty
bool empty() const
Definition: VSDFieldList.h:120
libvisio::VSDFieldList::size
unsigned long size() const
Definition: VSDFieldList.h:116
libvisio::VSDTextField::m_formatStringId
int m_formatStringId
Definition: VSDFieldList.h:75
libvisio::VSDNumericField::setValue
void setValue(double number)
Definition: VSDFieldList.cpp:180
libvisio::VSDNumericField::handle
void handle(VSDCollector *collector) const
Definition: VSDFieldList.cpp:60
libvisio::VSDFieldList::VSDFieldList
VSDFieldList()
Definition: VSDFieldList.cpp:186
libvisio::VSDNumericField
Definition: VSDFieldList.h:78
libvisio::VSDNumericField::m_id
unsigned m_id
Definition: VSDFieldList.h:96
libvisio::VSDFieldList::setElementsOrder
void setElementsOrder(const std::vector< unsigned > &m_elementsOrder)
Definition: VSDFieldList.cpp:225
libvisio::VSDTextField::setValue
void setValue(double)
Definition: VSDFieldList.h:72
libvisio::VSDTextField::m_id
unsigned m_id
Definition: VSDFieldList.h:74
libvisio::VSDFieldListElement::~VSDFieldListElement
virtual ~VSDFieldListElement()
Definition: VSDFieldList.h:49
libvisio::VSDTextField::~VSDTextField
~VSDTextField()
Definition: VSDFieldList.h:66
libvisio::VSDFieldList::m_elements
std::map< unsigned, VSDFieldListElement * > m_elements
Definition: VSDFieldList.h:126
libvisio::VSDFieldList::m_level
unsigned m_level
Definition: VSDFieldList.h:128
libvisio::VSDFieldList::m_elementsOrder
std::vector< unsigned > m_elementsOrder
Definition: VSDFieldList.h:127