Main Page
Namespaces
Classes
Files
File List
File Members
MWAWPict.hxx
Go to the documentation of this file.
1
/* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
2
3
/* libmwaw
4
* Version: MPL 2.0 / LGPLv2+
5
*
6
* The contents of this file are subject to the Mozilla Public License Version
7
* 2.0 (the "License"); you may not use this file except in compliance with
8
* the License or as specified alternatively below. You may obtain a copy of
9
* the License at http://www.mozilla.org/MPL/
10
*
11
* Software distributed under the License is distributed on an "AS IS" basis,
12
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
* for the specific language governing rights and limitations under the
14
* License.
15
*
16
* Major Contributor(s):
17
* Copyright (C) 2002 William Lachance (wrlach@gmail.com)
18
* Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
19
* Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
20
* Copyright (C) 2006, 2007 Andrew Ziem
21
* Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
22
*
23
*
24
* All Rights Reserved.
25
*
26
* For minor contributions see the git repository.
27
*
28
* Alternatively, the contents of this file may be used under the terms of
29
* the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
30
* in which case the provisions of the LGPLv2+ are applicable
31
* instead of those above.
32
*/
33
34
/*
35
* This header contains code specific to manage basic picture (line, rectangle, ...)
36
*
37
* Note: generic class for all sort of pict
38
* - PictBitmap: regroup some classes used to store bitmap
39
* - PictData: regroup the data which can be read via a librevenge::RVNGBinaryData
40
*/
41
42
#ifndef MWAW_PICT
43
# define MWAW_PICT
44
45
# include <ostream>
46
# include <vector>
47
48
# include "
libmwaw_internal.hxx
"
49
51
class
MWAWPict
52
{
53
public
:
55
virtual
~MWAWPict
() {}
56
63
enum
Type
{
PictData
,
Bitmap
,
Unknown
};
65
virtual
Type
getType
()
const
= 0;
66
73
enum
ReadResult
{
MWAW_R_BAD
=0,
MWAW_R_OK
,
MWAW_R_OK_EMPTY
,
MWAW_R_MAYBE
};
74
76
MWAWBox2f
getBdBox
()
const
77
{
78
MWAWBox2f
res(
m_bdbox
);
79
res.
extend
(
m_bdBoxExt
);
80
return
res;
81
}
82
84
void
setBdBox
(
MWAWBox2f
const
&box)
85
{
86
m_bdbox
= box;
87
}
88
93
virtual
bool
getBinary
(
MWAWEmbeddedObject
&)
const
94
{
95
return
false
;
96
}
97
101
virtual
int
cmp
(
MWAWPict
const
&a)
const
102
{
103
// first compare the bdbox
104
int
diff =
m_bdbox
.
cmp
(a.
m_bdbox
);
105
if
(diff)
return
diff;
106
// the type
107
diff =
getType
() - a.
getType
();
108
if
(diff)
return
(diff < 0) ? -1 : 1;
109
110
return
0;
111
}
112
protected
:
114
static
MWAWBox2f
getBdBox
(
int
numPt,
MWAWVec2f
const
*pt)
115
{
116
if
(numPt <= 0) {
117
return
MWAWBox2f
();
118
}
119
120
float
minV[2], maxV[2];
121
for
(
int
c = 0; c < 2; c++) minV[c] = maxV[c] = pt[0][c];
122
123
for
(
int
i = 1; i < numPt; i++) {
124
for
(
int
c = 0; c < 2; c++) {
125
float
v = pt[i][c];
126
if
(v < minV[c]) minV[c] = v;
127
else
if
(v > maxV[c]) maxV[c] = v;
128
}
129
}
130
131
return
MWAWBox2f
(
MWAWVec2f
(minV[0], minV[1]),
MWAWVec2f
(maxV[0], maxV[1]));
132
}
133
134
// a function to extend the bdbox
135
137
void
extendBDBox
(
float
val)
138
{
139
m_bdBoxExt
= val;
140
}
141
143
MWAWPict
() :
m_bdbox
(),
m_bdBoxExt
(0.0) {}
145
explicit
MWAWPict
(
MWAWPict
const
&p) :
m_bdbox
(),
m_bdBoxExt
(0.0)
146
{
147
*
this
=p;
148
}
150
MWAWPict
&
operator=
(
MWAWPict
const
&p)
151
{
152
if
(&p ==
this
)
return
*
this
;
153
m_bdbox
= p.
m_bdbox
;
154
m_bdBoxExt
= p.
m_bdBoxExt
;
155
return
*
this
;
156
}
157
158
private
:
160
MWAWBox2f
m_bdbox
;
162
float
m_bdBoxExt
;
163
};
164
165
#endif
166
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
Generated on Tue Mar 1 2016 23:42:50 for libmwaw by
doxygen
1.8.4