MWAWPictBitmap.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 /* This header contains code specific to some bitmap
35 */
36
37 #ifndef MWAW_PICT_BITMAP
38 # define MWAW_PICT_BITMAP
39
40
41 #include <vector>
42
43 #include "libmwaw_internal.hxx"
44 #include "MWAWDebug.hxx"
45 #include "MWAWPict.hxx"
46
48 //
49 // Some container
50 //
52
54 template <class T> class MWAWPictBitmapContainer
55 {
56 public:
58 explicit MWAWPictBitmapContainer(MWAWVec2i const &sz) : m_size(sz), m_data(0L)
59 {
60 if (m_size[0]*m_size[1] == 0) return;
61 m_data = new T[size_t(m_size[0]*m_size[1])];
62 std::uninitialized_fill_n(m_data, m_size[0] * m_size[1], T());
63 }
65 virtual ~MWAWPictBitmapContainer()
66 {
67 if (m_data) delete [] m_data;
68 }
69
71 bool ok() const
72 {
73 return (m_data != 0L);
74 }
75
77 int cmp(MWAWPictBitmapContainer<T> const &orig) const
78 {
79 int diff = m_size.cmpY(orig.m_size);
80 if (diff) return diff;
81 if (!m_data) return orig.m_data ? 1 : 0;
82 if (!orig.m_data) return -1;
83 for (int i=0; i < m_size[0]*m_size[1]; i++) {
84 if (m_data[i] < orig.m_data[i]) return -1;
85 if (m_data[i] > orig.m_data[i]) return 1;
86 }
87 return 0;
88 }
90 MWAWVec2i const &size() const
91 {
92 return m_size;
93 }
95 int numRows() const
96 {
97 return m_size[0];
98 }
100 int numColumns() const
101 {
102 return m_size[1];
103 }
104
106 T const &get(int i, int j) const
107 {
108 if (m_data == 0L || i<0 || i >= m_size[0] || j<0 || j >= m_size[1])
109 throw libmwaw::GenericException();
110 return m_data[i+m_size[0]*j];
111 }
113 T const *getRow(int j) const
114 {
115 if (m_data == 0L || j<0 || j >= m_size[1])
116 throw libmwaw::GenericException();
117 return m_data+m_size[0]*j;
118 }
119
121 void set(int i, int j, T const &v)
122 {
123 if (m_data == 0L || i<0 || i >= m_size[0] || j<0 || j >= m_size[1]) {
124 MWAW_DEBUG_MSG(("MWAWPictBitmapContainer::set: call with bad coordinate %d %d\n", i, j));
125 return;
126 }
127 m_data[i+j*m_size[0]] = v;
128 }
129
131 template <class U>
132 void setRow(int j, U const *val)
133 {
134 if (m_data == 0L || j<0 || j >= m_size[1]) {
135 MWAW_DEBUG_MSG(("MWAWPictBitmapContainer::setRow: call with bad coordinate %d\n", j));
136 return;
137 }
138 for (int i = 0, ind=j*m_size[0]; i < m_size[0]; i++, ind++) m_data[ind] = T(val[i]);
139 }
140
142 template <class U>
143 void setColumn(int i, U const *val)
144 {
145 if (m_data == 0L || i<0 || i >= m_size[0]) {
146 MWAW_DEBUG_MSG(("MWAWPictBitmapContainer::setColumn: call with bad coordinate %d\n", i));
147 return;
148 }
149 for (int j = 0, ind=i; j < m_size[1]; j++, ind+=m_size[0]) m_data[ind] = T(val[i]);
150 }
151
152 private:
153 MWAWPictBitmapContainer(MWAWPictBitmapContainer const &orig);
154 MWAWPictBitmapContainer &operator=(MWAWPictBitmapContainer const &orig);
155 protected:
157 MWAWVec2i m_size;
159 T *m_data;
160 };
161
163 class MWAWPictBitmapContainerBool : public MWAWPictBitmapContainer<bool>
164 {
165 public:
167 explicit MWAWPictBitmapContainerBool(MWAWVec2i const &sz) : MWAWPictBitmapContainer<bool>(sz) {}
169 ~MWAWPictBitmapContainerBool();
171 int cmp(MWAWPictBitmapContainerBool const &orig) const
172 {
173 int diff = m_size.cmpY(orig.m_size);
174 if (diff) return diff;
175 if (!m_data) return orig.m_data ? 1 : 0;
176 if (!orig.m_data) return -1;
177 for (int i=0; i < m_size[0]*m_size[1]; i++) {
178 if (m_data[i] == orig.m_data[i]) continue;
179 return m_data[i] ? 1 : -1;
180 }
181 return 0;
182 }
183
185 void setRowPacked(int j, unsigned char const *val, unsigned char const *end)
186 {
187 if (m_data == 0L || j<0 || j >= m_size[1] || val >= end) {
188 MWAW_DEBUG_MSG(("MWAWPictBitmapContainerBool::setRowPacked: call with bad coordinate %d\n", j));
189 return;
190 }
191 for (int i = 0, ind = j*m_size[0]; i < m_size[0];) {
192 unsigned char v = (val < end) ? *(val++) : 0;
193 unsigned char mask = 0x80;
194 for (int p = 0; p < 8 && i < m_size[0]; i++, p++, ind++) {
195 m_data[ind] = ((v&mask) != 0);
196 mask = static_cast<unsigned char>(mask >> 1);
197 }
198 }
199 }
200 };
201
203 class MWAWPictBitmap : public MWAWPict
204 {
205 public:
207 virtual ~MWAWPictBitmap();
208
210 enum SubType { BW, Indexed, Color };
212 virtual Type getType() const
213 {
214 return MWAWPict::Bitmap;
215 }
217 virtual SubType getSubType() const = 0;
218
220 virtual bool getBinary(MWAWEmbeddedObject &picture) const
221 {
222 if (!valid()) return false;
223
224 librevenge::RVNGBinaryData data;
225 createFileData(data);
226 picture=MWAWEmbeddedObject(data, "image/pict");
227 return true;
228 }
229
231 virtual bool valid() const
232 {
233 return false;
234 }
235
238 virtual int cmp(MWAWPict const &a) const
239 {
240 int diff = MWAWPict::cmp(a);
241 if (diff) return diff;
242 MWAWPictBitmap const &aPict = static_cast<MWAWPictBitmap const &>(a);
243
244 // the type
245 diff = getSubType() - aPict.getSubType();
246 if (diff) return (diff < 0) ? -1 : 1;
247
248 return 0;
249 }
250
251 protected:
253 virtual bool createFileData(librevenge::RVNGBinaryData &result) const = 0;
254
256 explicit MWAWPictBitmap(MWAWVec2i const &sz)
257 {
258 setBdBox(MWAWBox2f(MWAWVec2f(0,0), sz));
259 }
260 };
261
263 class MWAWPictBitmapBW : public MWAWPictBitmap
264 {
265 public:
267 virtual SubType getSubType() const
268 {
269 return BW;
270 }
271
274 virtual int cmp(MWAWPict const &a) const
275 {
276 int diff = MWAWPictBitmap::cmp(a);
277 if (diff) return diff;
278 MWAWPictBitmapBW const &aPict = static_cast<MWAWPictBitmapBW const &>(a);
279
280 return m_data.cmp(aPict.m_data);
281 }
282
284 virtual bool valid() const
285 {
286 return m_data.ok();
287 }
288
290 explicit MWAWPictBitmapBW(MWAWVec2i const &sz) : MWAWPictBitmap(sz), m_data(sz) { }
291
293 MWAWVec2i const &size() const
294 {
295 return m_data.size();
296 }
298 int numRows() const
299 {
300 return m_data.numRows();
301 }
303 int numColumns() const
304 {
305 return m_data.numColumns();
306 }
308 bool get(int i, int j) const
309 {
310 return m_data.get(i,j);
311 }
313 bool const *getRow(int j) const
314 {
315 return m_data.getRow(j);
316 }
318 void set(int i, int j, bool v)
319 {
320 m_data.set(i,j, v);
321 }
323 void setRow(int j, bool const *val)
324 {
325 m_data.setRow(j, val);
326 }
328 void setRowPacked(int j, unsigned char const *val, unsigned char const *end)
329 {
330 m_data.setRowPacked(j, val, end);
331 }
333 void setColumn(int i, bool const *val)
334 {
335 m_data.setColumn(i, val);
336 }
337
338 protected:
340 virtual bool createFileData(librevenge::RVNGBinaryData &result) const;
341
343 MWAWPictBitmapContainerBool m_data;
344 };
345
347 class MWAWPictBitmapIndexed : public MWAWPictBitmap
348 {
349 public:
351 virtual SubType getSubType() const
352 {
353 return Indexed;
354 }
355
358 virtual int cmp(MWAWPict const &a) const
359 {
360 int diff = MWAWPictBitmap::cmp(a);
361 if (diff) return diff;
362 MWAWPictBitmapIndexed const &aPict = static_cast<MWAWPictBitmapIndexed const &>(a);
363
364 diff=int(m_colors.size())-int(aPict.m_colors.size());
365 if (diff) return (diff < 0) ? -1 : 1;
366 for (size_t c=0; c < m_colors.size(); c++) {
367 if (m_colors[c] < aPict.m_colors[c])
368 return 1;
369 if (m_colors[c] > aPict.m_colors[c])
370 return -1;
371 }
372 return m_data.cmp(aPict.m_data);
373 }
374
376 virtual bool valid() const
377 {
378 return m_data.ok();
379 }
380
382 explicit MWAWPictBitmapIndexed(MWAWVec2i const &sz) : MWAWPictBitmap(sz), m_data(sz), m_colors() { }
383
385 MWAWVec2i const &size() const
386 {
387 return m_data.size();
388 }
390 int numRows() const
391 {
392 return m_data.numRows();
393 }
395 int numColumns() const
396 {
397 return m_data.numColumns();
398 }
400 int get(int i, int j) const
401 {
402 return m_data.get(i,j);
403 }
405 int const *getRow(int j) const
406 {
407 return m_data.getRow(j);
408 }
409
411 void set(int i, int j, int v)
412 {
413 m_data.set(i,j, v);
414 }
416 template <class U> void setRow(int j, U const *val)
417 {
418 m_data.setRow(j, val);
419 }
421 template <class U> void setColumn(int i, U const *val)
422 {
423 m_data.setColumn(i, val);
424 }
425
427 std::vector<MWAWColor> const &getColors() const
428 {
429 return m_colors;
430 }
432 void setColors(std::vector<MWAWColor> const &cols)
433 {
434 m_colors = cols;
435 }
436
437 protected:
439 virtual bool createFileData(librevenge::RVNGBinaryData &result) const;
440
442 MWAWPictBitmapContainer<int> m_data;
444 std::vector<MWAWColor> m_colors;
445 };
446
454 class MWAWPictBitmapColor : public MWAWPictBitmap
455 {
456 public:
458 virtual SubType getSubType() const
459 {
460 return Indexed;
461 }
462
465 virtual int cmp(MWAWPict const &a) const
466 {
467 int diff = MWAWPictBitmap::cmp(a);
468 if (diff) return diff;
469 MWAWPictBitmapColor const &aPict = static_cast<MWAWPictBitmapColor const &>(a);
470
471 return m_data.cmp(aPict.m_data);
472 }
473
475 virtual bool valid() const
476 {
477 return m_data.ok();
478 }
479
481 MWAWPictBitmapColor(MWAWVec2i const &sz, bool useAlphaChannel=false) : MWAWPictBitmap(sz), m_data(sz), m_hasAlpha(useAlphaChannel) { }
482
484 MWAWVec2i const &size() const
485 {
486 return m_data.size();
487 }
489 int numRows() const
490 {
491 return m_data.numRows();
492 }
494 int numColumns() const
495 {
496 return m_data.numColumns();
497 }
499 MWAWColor get(int i, int j) const
500 {
501 return m_data.get(i,j);
502 }
504 MWAWColor const *getRow(int j) const
505 {
506 return m_data.getRow(j);
507 }
508
510 void set(int i, int j, MWAWColor const &v)
511 {
512 m_data.set(i,j, v);
513 }
515 void setRow(int j, MWAWColor const *val)
516 {
517 m_data.setRow(j, val);
518 }
520 void setColumn(int i, MWAWColor const *val)
521 {
522 m_data.setColumn(i, val);
523 }
524
525 protected:
527 virtual bool createFileData(librevenge::RVNGBinaryData &result) const;
528
530 MWAWPictBitmapContainer<MWAWColor> m_data;
531
533 bool m_hasAlpha;
534 };
535 #endif
536 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MWAWPictBitmapBW::setColumn
void setColumn(int i, bool const *val)
sets all cell contents of a column
Definition: MWAWPictBitmap.hxx:333
MWAWPictBitmapColor::MWAWPictBitmapColor
MWAWPictBitmapColor(MWAWVec2i const &sz, bool useAlphaChannel=false)
the constructor
Definition: MWAWPictBitmap.hxx:481
MWAWPictBitmapContainer::m_data
T * m_data
the m_data placed by row ie. d_00, d_10, ... , d_{X-1}0, ..
Definition: MWAWPictBitmap.hxx:159
MWAWPictBitmapColor::getSubType
virtual SubType getSubType() const
return the picture subtype
Definition: MWAWPictBitmap.hxx:458
libmwaw_internal.hxx
MWAWPictBitmapIndexed::numRows
int numRows() const
the number of rows
Definition: MWAWPictBitmap.hxx:390
MWAWPictBitmapIndexed::getColors
std::vector< MWAWColor > const & getColors() const
returns the array of indexed colors
Definition: MWAWPictBitmap.hxx:427
MWAWPictBitmapBW::cmp
virtual int cmp(MWAWPict const &a) const
a virtual function used to obtain a strict order, must be redefined in the subs class ...
Definition: MWAWPictBitmap.hxx:274
MWAWPictBitmapContainer::m_size
MWAWVec2i m_size
the size
Definition: MWAWPictBitmap.hxx:157
MWAWPictBitmapContainer::numColumns
int numColumns() const
gets the number of column
Definition: MWAWPictBitmap.hxx:100
MWAWPictBitmapContainer::getRow
T const * getRow(int j) const
accessor of a row m_data
Definition: MWAWPictBitmap.hxx:113
MWAWPictBitmapIndexed::numColumns
int numColumns() const
the number of columns
Definition: MWAWPictBitmap.hxx:395
MWAWPictBitmapColor::numColumns
int numColumns() const
the number of columns
Definition: MWAWPictBitmap.hxx:494
MWAWPictBitmapContainer::setColumn
void setColumn(int i, U const *val)
sets a column of m_data
Definition: MWAWPictBitmap.hxx:143
MWAWPictBitmapContainer::setRow
void setRow(int j, U const *val)
sets a line of m_data
Definition: MWAWPictBitmap.hxx:132
MWAWPictBitmapColor::size
MWAWVec2i const & size() const
the picture size
Definition: MWAWPictBitmap.hxx:484
MWAWPictBitmapIndexed::setColumn
void setColumn(int i, U const *val)
sets all cell contents of a column
Definition: MWAWPictBitmap.hxx:421
MWAWPictBitmap::getType
virtual Type getType() const
returns the picture type
Definition: MWAWPictBitmap.hxx:212
MWAWPictBitmapColor::setRow
void setRow(int j, MWAWColor const *val)
sets all cell contents of a row
Definition: MWAWPictBitmap.hxx:515
MWAWPictBitmap::getSubType
virtual SubType getSubType() const =0
returns the picture subtype
MWAWPictBitmapBW::getRow
bool const * getRow(int j) const
returns the cells content of a row
Definition: MWAWPictBitmap.hxx:313
MWAWPictBitmapContainer::numRows
int numRows() const
gets the number of row
Definition: MWAWPictBitmap.hxx:95
MWAWColor
the class to store a color
Definition: libmwaw_internal.hxx:196
MWAWPictBitmapBW::numRows
int numRows() const
the number of rows
Definition: MWAWPictBitmap.hxx:298
MWAWPictBitmapColor
a bitmap of MWAWColor to store true color bitmap
Definition: MWAWPictBitmap.hxx:454
MWAWPictBitmapContainer
a template class to store a 2D array of m_data
Definition: MWAWPictBitmap.hxx:54
MWAWPictBitmapBW::setRow
void setRow(int j, bool const *val)
sets all cell contents of a row
Definition: MWAWPictBitmap.hxx:323
MWAWPictBitmapBW::numColumns
int numColumns() const
the number of columns
Definition: MWAWPictBitmap.hxx:303
MWAW_DEBUG_MSG
#define MWAW_DEBUG_MSG(M)
Definition: libmwaw_internal.hxx:141
MWAWPictBitmapBW::valid
virtual bool valid() const
returns true if the picture is valid
Definition: MWAWPictBitmap.hxx:284
MWAWPict.hxx
MWAWPictBitmapBW
a bitmap of bool to store black-white bitmap
Definition: MWAWPictBitmap.hxx:263
MWAWPictBitmapContainer::size
MWAWVec2i const & size() const
return the array size
Definition: MWAWPictBitmap.hxx:90
libmwaw::GenericException
Definition: libmwaw_internal.hxx:159
MWAWPictBitmapIndexed::MWAWPictBitmapIndexed
MWAWPictBitmapIndexed(MWAWVec2i const &sz)
the constructor
Definition: MWAWPictBitmap.hxx:382
MWAWPictBitmapBW::getSubType
virtual SubType getSubType() const
returns the picture subtype
Definition: MWAWPictBitmap.hxx:267
MWAWVec2f
MWAWVec2< float > MWAWVec2f
MWAWVec2 of float.
Definition: libmwaw_internal.hxx:799
MWAWPictBitmap::SubType
SubType
the picture subtype: blackwhite, indexed, color
Definition: MWAWPictBitmap.hxx:210
MWAWPictBitmapContainerBool
a bool container with a function to put packed row
Definition: MWAWPictBitmap.hxx:163
MWAWPict::cmp
virtual int cmp(MWAWPict const &a) const
a virtual function used to obtain a strict order, must be redefined in the subs class ...
Definition: MWAWPict.hxx:101
MWAWPictBitmapColor::m_hasAlpha
bool m_hasAlpha
true if the bitmap has alpha color
Definition: MWAWPictBitmap.hxx:533
MWAWPictBitmapContainer::ok
bool ok() const
returns ok, if the m_data is allocated
Definition: MWAWPictBitmap.hxx:71
MWAWPictBitmapIndexed
a bitmap of int to store indexed bitmap
Definition: MWAWPictBitmap.hxx:347
MWAWPictBitmapIndexed::getRow
int const * getRow(int j) const
returns the cells content of a row
Definition: MWAWPictBitmap.hxx:405
MWAWPictBitmap::MWAWPictBitmap
MWAWPictBitmap(MWAWVec2i const &sz)
protected constructor: use check to construct a picture
Definition: MWAWPictBitmap.hxx:256
MWAWPictBitmapIndexed::setColors
void setColors(std::vector< MWAWColor > const &cols)
sets the array of indexed colors
Definition: MWAWPictBitmap.hxx:432
MWAWPictBitmapContainer::MWAWPictBitmapContainer
MWAWPictBitmapContainer(MWAWVec2i const &sz)
constructor given size
Definition: MWAWPictBitmap.hxx:58
MWAWPictBitmapIndexed::getSubType
virtual SubType getSubType() const
return the picture subtype
Definition: MWAWPictBitmap.hxx:351
MWAWPictBitmapIndexed::m_data
MWAWPictBitmapContainer< int > m_data
the m_data
Definition: MWAWPictBitmap.hxx:442
MWAWPict::Type
Type
the different picture types:
Definition: MWAWPict.hxx:63
MWAWEmbeddedObject
small class use to define a embedded object
Definition: libmwaw_internal.hxx:439
MWAWPictBitmap::getBinary
virtual bool getBinary(MWAWEmbeddedObject &picture) const
returns the final picture
Definition: MWAWPictBitmap.hxx:220
MWAWPictBitmapContainer::operator=
MWAWPictBitmapContainer & operator=(MWAWPictBitmapContainer const &orig)
MWAWPictBitmapIndexed::size
MWAWVec2i const & size() const
the picture size
Definition: MWAWPictBitmap.hxx:385
MWAWPictBitmapIndexed::setRow
void setRow(int j, U const *val)
sets all cell contents of a row
Definition: MWAWPictBitmap.hxx:416
MWAWDebug.hxx
MWAWPictBitmapContainer::~MWAWPictBitmapContainer
virtual ~MWAWPictBitmapContainer()
destructor
Definition: MWAWPictBitmap.hxx:65
MWAWBox2f
MWAWBox2< float > MWAWBox2f
MWAWBox2 of float.
Definition: libmwaw_internal.hxx:1148
MWAWPictBitmapContainerBool::cmp
int cmp(MWAWPictBitmapContainerBool const &orig) const
a comparison operator
Definition: MWAWPictBitmap.hxx:171
MWAWPictBitmap
Generic class used to construct bitmap.
Definition: MWAWPictBitmap.hxx:203
MWAWPictBitmapIndexed::valid
virtual bool valid() const
returns true if the picture is valid
Definition: MWAWPictBitmap.hxx:376
MWAWPictBitmapBW::MWAWPictBitmapBW
MWAWPictBitmapBW(MWAWVec2i const &sz)
the constructor
Definition: MWAWPictBitmap.hxx:290
MWAWPictBitmapColor::getRow
MWAWColor const * getRow(int j) const
returns the cells content of a row
Definition: MWAWPictBitmap.hxx:504
MWAWPictBitmapBW::setRowPacked
void setRowPacked(int j, unsigned char const *val, unsigned char const *end)
sets all cell contents of a row given packed m_data
Definition: MWAWPictBitmap.hxx:328
MWAWVec2::cmpY
int cmpY(MWAWVec2< T > const &p) const
a comparison function: which first compares y then x
Definition: libmwaw_internal.hxx:743
MWAWPictBitmapColor::valid
virtual bool valid() const
returns true if the picture is valid
Definition: MWAWPictBitmap.hxx:475
MWAWPictBitmapColor::setColumn
void setColumn(int i, MWAWColor const *val)
sets all cell contents of a column
Definition: MWAWPictBitmap.hxx:520
MWAWPictBitmapColor::numRows
int numRows() const
the number of rows
Definition: MWAWPictBitmap.hxx:489
MWAWPict::Bitmap
Definition: MWAWPict.hxx:63
MWAWPictBitmapColor::cmp
virtual int cmp(MWAWPict const &a) const
a virtual function used to obtain a strict order, must be redefined in the subs class ...
Definition: MWAWPictBitmap.hxx:465
MWAWPictBitmapIndexed::m_colors
std::vector< MWAWColor > m_colors
the colors
Definition: MWAWPictBitmap.hxx:444
MWAWPictBitmapContainer::cmp
int cmp(MWAWPictBitmapContainer< T > const &orig) const
a comparison operator
Definition: MWAWPictBitmap.hxx:77
MWAWPictBitmapContainerBool::MWAWPictBitmapContainerBool
MWAWPictBitmapContainerBool(MWAWVec2i const &sz)
constructor
Definition: MWAWPictBitmap.hxx:167
MWAWPictBitmapColor::m_data
MWAWPictBitmapContainer< MWAWColor > m_data
the data
Definition: MWAWPictBitmap.hxx:530
MWAWPictBitmap::cmp
virtual int cmp(MWAWPict const &a) const
a virtual function used to obtain a strict order, must be redefined in the subs class ...
Definition: MWAWPictBitmap.hxx:238
MWAWPict
Generic function used to define/store a picture.
Definition: MWAWPict.hxx:51
MWAWVec2< int >
MWAWPictBitmapBW::size
MWAWVec2i const & size() const
the picture size
Definition: MWAWPictBitmap.hxx:293
MWAWPictBitmap::valid
virtual bool valid() const
returns true if the picture is valid
Definition: MWAWPictBitmap.hxx:231
MWAWPictBitmapContainerBool::setRowPacked
void setRowPacked(int j, unsigned char const *val, unsigned char const *end)
allows to use packed m_data
Definition: MWAWPictBitmap.hxx:185
MWAWPictBitmapBW::m_data
MWAWPictBitmapContainerBool m_data
the data
Definition: MWAWPictBitmap.hxx:343
MWAWPictBitmapIndexed::cmp
virtual int cmp(MWAWPict const &a) const
a virtual function used to obtain a strict order, must be redefined in the subs class ...
Definition: MWAWPictBitmap.hxx:358