libopenraw
raffile.hpp
1/* -*- Mode: C++ ; tab-width:4; c-basic-offset:4 -*- */
2/*
3 * libopenraw - raffile.h
4 *
5 * Copyright (C) 2011-2017 Hubert Figuière
6 *
7 * This library is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public License
9 * as published by the Free Software Foundation, either version 3 of
10 * the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library. If not, see
19 * <http://www.gnu.org/licenses/>.
20 */
21
22#ifndef OR_INTERNALS_RAFFILE_H_
23#define OR_INTERNALS_RAFFILE_H_
24
25#include <stdint.h>
26#include <vector>
27
28#include <libopenraw/consts.h>
29
30#include "rawfile.hpp"
31#include "rawcontainer.hpp"
32#include "io/stream.hpp"
33
34#define RAF_MAGIC "FUJIFILMCCD-RAW "
35#define RAF_MAGIC_LEN 16
36
37namespace OpenRaw {
38
39class RawData;
40class MetaValue;
41
42namespace Internals {
43
44class RafContainer;
45
46class RafFile : public OpenRaw::RawFile {
47public:
48 static RawFile *factory(const IO::Stream::Ptr &s);
49 RafFile(const IO::Stream::Ptr &s);
50 virtual ~RafFile();
51
52 RafFile(const RafFile &) = delete;
53 RafFile &operator=(const RafFile &) = delete;
54
55protected:
56 virtual ::or_error _enumThumbnailSizes(std::vector<uint32_t> &list) override;
57
58 virtual RawContainer *getContainer() const override;
59
60 virtual ::or_error _getRawData(RawData &data, uint32_t options) override;
61
62 virtual MetaValue *_getMetaValue(int32_t /*meta_index*/) override;
63
64 virtual void _identifyId() override;
65
66private:
67 bool isXTrans(RawFile::TypeId type) const;
68
69 IO::Stream::Ptr m_io;
70 RafContainer *m_container;
71 // uint32_t m_x;
72 // uint32_t m_y;
73
74 static const RawFile::camera_ids_t s_def[];
75};
76}
77}
78
79#endif
virtual ::or_error _getRawData(RawData &data, uint32_t options) override
Definition: raffile.cpp:395
virtual RawContainer * getContainer() const override
Definition: raffile.cpp:359
virtual ::or_error _enumThumbnailSizes(std::vector< uint32_t > &list) override
Definition: raffile.cpp:293
Type type() const
Definition: rawfile.cpp:330
CIFF is the container for CRW files. It is an attempt from Canon to make this a standard....
Definition: arwfile.cpp:30