3 #include "library/string.hpp"
9 dummyimage
[0] = dummyimage
[1] = 0;
12 gauge::gauge(const std::vector
<char>& dispdat
, size_t cells
)
14 dummyimage
[0] = dummyimage
[1] = 0;
15 if(dispdat
.size() < 2 * cells
)
16 (stringfmt() << "Entry pointer table incomplete").throwex();
17 data
.resize(dispdat
.size() - 2 * cells
);
18 memcpy(&data
[0], &dispdat
[2 * cells
], data
.size());
19 for(unsigned i
= 0; i
< cells
; i
++)
20 unpack_image(dispdat
, i
, cells
);
23 void gauge::unpack_image(const std::vector
<char>& dispdat
, size_t i
, size_t total
)
25 size_t offset
= combine(dispdat
[2 * i
+ 0], dispdat
[2 * i
+ 1]);
26 //Check that the offset is in-range.
27 if(data
.size() < offset
)
28 (stringfmt() << "Entry " << i
<< " points outside file").throwex();
29 if(data
.size() < offset
+ 4)
30 (stringfmt() << "Entry " << i
<< " header incomplete").throwex();
31 size_t imagesize
= (uint16_t)data
[offset
+ 2] * data
[offset
+ 3];
32 if(data
.size() < offset
+ 4 + imagesize
)
33 (stringfmt() << "Entry " << i
<< " bitmap incomplete").throwex();
34 ptr
.push_back(offset
);