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
/*
3
* This file is part of the libvisio project.
4
*
5
* This Source Code Form is subject to the terms of the Mozilla Public
6
* License, v. 2.0. If a copy of the MPL was not distributed with this
7
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
*/
9
10
#ifndef __VSDFIELDLIST_H__
11
#define __VSDFIELDLIST_H__
12
13
#include <vector>
14
#include <map>
15
#include <librevenge/librevenge.h>
16
#include "
VSDDocumentStructure.h
"
17
#include "
VSDTypes.h
"
18
19
namespace
libvisio
20
{
21
22
class
VSDCollector;
23
24
class
VSDFieldListElement
25
{
26
public
:
27
VSDFieldListElement
() {}
28
virtual
~VSDFieldListElement
() {}
29
virtual
void
handle
(
VSDCollector
*collector)
const
= 0;
30
virtual
VSDFieldListElement
*
clone
() = 0;
31
virtual
librevenge::RVNGString
getString
(
const
std::map<unsigned, librevenge::RVNGString> &) = 0;
32
virtual
void
setNameId
(
int
) = 0;
33
virtual
void
setFormat
(
unsigned
short
) = 0;
34
virtual
void
setValue
(
double
) = 0;
35
};
36
37
class
VSDTextField
:
public
VSDFieldListElement
38
{
39
public
:
40
VSDTextField
(
unsigned
id
,
unsigned
level,
int
nameId,
int
formatStringId)
41
:
m_id
(id),
42
m_level
(level),
43
m_nameId
(nameId),
44
m_formatStringId
(formatStringId) {}
45
~VSDTextField
() {}
46
void
handle
(
VSDCollector
*collector)
const
;
47
VSDFieldListElement
*
clone
();
48
librevenge::RVNGString
getString
(
const
std::map<unsigned, librevenge::RVNGString> &strVec);
49
void
setNameId
(
int
nameId);
50
void
setFormat
(
unsigned
short
) {}
51
void
setValue
(
double
) {}
52
private
:
53
unsigned
m_id
,
m_level
;
54
int
m_nameId
,
m_formatStringId
;
55
};
56
57
class
VSDNumericField
:
public
VSDFieldListElement
58
{
59
public
:
60
VSDNumericField
(
unsigned
id
,
unsigned
level,
unsigned
short
format,
double
number,
int
formatStringId)
61
:
m_id
(id),
62
m_level
(level),
63
m_format
(format),
64
m_number
(number),
65
m_formatStringId
(formatStringId) {}
66
~VSDNumericField
() {}
67
void
handle
(
VSDCollector
*collector)
const
;
68
VSDFieldListElement
*
clone
();
69
librevenge::RVNGString
getString
(
const
std::map<unsigned, librevenge::RVNGString> &);
70
void
setNameId
(
int
) {}
71
void
setFormat
(
unsigned
short
format);
72
void
setValue
(
double
number);
73
private
:
74
librevenge::RVNGString
datetimeToString
(
const
char
*format,
double
datetime);
75
unsigned
m_id
,
m_level
;
76
unsigned
short
m_format
;
77
double
m_number
;
78
int
m_formatStringId
;
79
};
80
81
class
VSDFieldList
82
{
83
public
:
84
VSDFieldList
();
85
VSDFieldList
(
const
VSDFieldList
&fieldList);
86
~VSDFieldList
();
87
VSDFieldList
&
operator=
(
const
VSDFieldList
&fieldList);
88
void
setElementsOrder
(
const
std::vector<unsigned> &
m_elementsOrder
);
89
void
addFieldList
(
unsigned
id
,
unsigned
level);
90
void
addTextField
(
unsigned
id
,
unsigned
level,
int
nameId,
int
formatStringId);
91
void
addNumericField
(
unsigned
id
,
unsigned
level,
unsigned
short
format,
double
number,
int
formatStringId);
92
void
addClonedField
(
unsigned
id
);
93
void
handle
(
VSDCollector
*collector)
const
;
94
void
clear
();