24 #include <libopenraw++/rawdata.h>
25 #include <libopenraw++/rawfile.h>
33 CfaPattern cfa_pattern;
42 std::vector<uint16_t> slices;
47 cfa_pattern(OR_CFA_PATTERN_NONE),
55 void advance(
size_t s);
65 RawData::getAndExtractRawData(
const char* filename, uint32_t options,
78 err = OR_ERROR_CANT_OPEN;
86 d(new RawData::Private(this))
97 uint16_t RawData::min()
102 uint16_t RawData::max()
107 void RawData::setMin(uint16_t m)
112 void RawData::setMax(uint16_t m)
120 std::swap(this->d, with.d);
123 void * RawData::allocData(
const size_t s)
125 void * p = BitmapData::allocData(s);
126 d->pos = (uint8_t*)p;
135 if(d->slices.size()) {
143 void RawData::setSlices(
const std::vector<uint16_t> & slices)
154 void RawData::setCfaPattern(or_cfa_pattern t)
159 or_cfa_pattern RawData::cfaPattern()
161 return d->cfa_pattern;
164 void RawData::setCompression(uint32_t t)
169 uint32_t RawData::compression()
171 return d->compression;
178 assert(d->offset < d->data_size);
188 assert(d->offset <
size());
189 *(d->pos) = c & 0xff;
190 *(d->pos + 1) = (c >> 8) & 0xff;
191 d->advance(
sizeof(c));
202 void RawData::Private::nextRow()
204 uint32_t w =
self->x() * 2;
205 uint32_t row = offset / w;
213 offset = row * w + sliceOffset * 2;
214 pos = (uint8_t*)(self->data()) + offset;
218 void RawData::Private::nextSlice()
221 sliceOffset += slices[slice];
223 if(slices.size() > slice) {
224 sliceWidth = slices[slice];
232 void RawData::Private::advance(
size_t s)
234 if(offset + s - row_offset >= sliceWidth * 2) {
virtual void setDimensions(uint32_t x, uint32_t y)
::or_error getRawData(RawData &rawdata, uint32_t options)
RawData & append(uint16_t c)
virtual void setDimensions(uint32_t x, uint32_t y)
void swap(BitmapData &with)
static RawFile * newRawFile(const char *_filename, Type _typeHint=OR_RAWFILE_TYPE_UNKNOWN)