21 #include <libopenraw++/thumbnail.h>
22 #include <libopenraw++/rawdata.h>
29 #include "orfcontainer.h"
32 using namespace Debug;
38 {
"E-1 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
39 OR_TYPEID_OLYMPUS_E1) },
40 {
"E-10 " , OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
41 OR_TYPEID_OLYMPUS_E10) },
42 {
"E-3 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
43 OR_TYPEID_OLYMPUS_E3) },
44 {
"E-300 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
45 OR_TYPEID_OLYMPUS_E300) },
46 {
"E-330 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
47 OR_TYPEID_OLYMPUS_E330) },
48 {
"E-400 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
49 OR_TYPEID_OLYMPUS_E400) },
50 {
"E-410 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
51 OR_TYPEID_OLYMPUS_E410) },
52 {
"E-500 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
53 OR_TYPEID_OLYMPUS_E500) },
54 {
"E-510 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
55 OR_TYPEID_OLYMPUS_E510) },
56 {
"SP350" , OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
57 OR_TYPEID_OLYMPUS_SP350) },
58 {
"SP500UZ" , OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
59 OR_TYPEID_OLYMPUS_SP500) },
60 {
"SP510UZ" , OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
61 OR_TYPEID_OLYMPUS_SP510) },
62 {
"SP550UZ ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
63 OR_TYPEID_OLYMPUS_SP550) },
64 {
"E-P1 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
65 OR_TYPEID_OLYMPUS_EP1) },
66 {
"E-620 ", OR_MAKE_FILE_TYPEID(OR_TYPEID_VENDOR_OLYMPUS,
67 OR_TYPEID_OLYMPUS_E620) },
78 : IFDFile(s, OR_RAWFILE_TYPE_ORF, false)
88 IFDDir::Ref OrfFile::_locateCfaIfd()
98 IFDDir::Ref OrfFile::_locateMainIfd()
112 if(err == OR_ERROR_NONE) {
114 uint32_t x = data.x();
115 uint32_t y = data.y();
116 uint16_t compression = 0;
117 if(data.
size() < x * y * 2) {
119 data.setCompression(65535);
123 compression = data.compression();
125 switch(compression) {
127 if((options & OR_OPTIONS_DONT_DECOMPRESS) == 0) {
CIFF is the container for CRW files. It is an attempt from Canon to make this a standard. I guess it failed.
IFDFileContainer * m_container
IFDDir::Ref setDirectory(int dir)
virtual ::or_error _getRawData(RawData &data, uint32_t options)
void setDataType(DataType _type)
base virtual class for IO
::or_error _getRawDataFromDir(RawData &data, IFDDir::Ref &dir)