cgv
Loading...
Searching...
No Matches
image_reader.h
1#pragma once
2
3#include <cgv/base/base.h>
4#include <cgv/base/register.h>
5#include <cgv/data/data_view.h>
6
7#include "lib_begin.h"
8
9namespace cgv {
10 namespace media {
12 namespace image {
13
14class CGV_API image_reader;
15
18{
19public:
20 friend class image_reader;
22 virtual abst_image_reader* clone() const = 0;
24 virtual const std::string& get_last_error() const = 0;
26 virtual const char* get_supported_extensions() const = 0;
28 virtual bool open(const std::string& file_name, cgv::data::data_format& df, std::vector<cgv::data::data_format>* palette_formats) = 0;
30 virtual bool supports_per_line_read() const = 0;
32 virtual bool supports_multiple_images() const;
34 virtual unsigned get_nr_images() const;
36 virtual float get_image_duration() const;
38 virtual unsigned get_current_image() const;
40 virtual bool seek_image(unsigned idx);
42
44 virtual bool read_palette(unsigned int i, const cgv::data::data_view& dv);
46 virtual bool read_line(const cgv::data::data_format& df, const cgv::data::data_view& dv) = 0;
48
52 virtual bool read_image(const cgv::data::data_format& df, const cgv::data::data_view& dv) = 0;
54 virtual bool close() = 0;
55
56};
57
61class CGV_API image_reader : public cgv::base::base
62{
63protected:
67 std::vector<cgv::data::data_format>* palette_formats;
71 std::string last_error;
73 bool set_void(const std::string& property, const std::string& type, const void* value);
75 bool get_void(const std::string& property, const std::string& type, void* value);
76public:
82 image_reader(cgv::data::data_format& file_format, std::vector<cgv::data::data_format>* palette_formats = 0);
83 ~image_reader() {}
85 std::string get_type_name() const;
87 static const std::string& get_supported_extensions(char sep = ';');
89 static std::string construct_filter_string();
91 std::string get_property_declarations();
93 const std::string& get_last_error() const;
100 bool read_image(const std::string& file_name, cgv::data::data_view& dv, std::vector<cgv::data::data_view> *palettes = 0);
103 bool read_image(const std::string& file_name, const cgv::data::data_view& dv, const std::vector<cgv::data::data_view> *palettes = 0);
105 bool open(const std::string& file_name);
107 cgv::data::data_format* get_file_format() const;
109 bool supports_multiple_images() const;
111 unsigned get_nr_images() const;
113 float get_image_duration() const;
115 unsigned get_current_image() const;
117 bool seek_image(unsigned idx);
119
121 bool read_palette(unsigned int i, cgv::data::data_view& dv);
123
125 bool read_palette(unsigned int i, const cgv::data::data_view& dv);
127 bool supports_per_line_read() const;
132 bool read_line(cgv::data::data_view& dv);
134 bool read_line(const cgv::data::data_view& dv);
136
141 bool read_image(cgv::data::data_view& dv, std::vector<cgv::data::data_view> *palettes = 0);
143 bool read_image(const cgv::data::data_view& dv, const std::vector<cgv::data::data_view> *palettes = 0);
145 bool close();
146};
147
148 }
149 }
150}
151
152#include <cgv/config/lib_end.h>
base class for all classes that can be registered with support for dynamic properties (see also secti...
Definition base.h:75
A data_format describes a multidimensional data block of data entries.
Definition data_format.h:17
the data view gives access to a data array of one, two, three or four dimensions.
Definition data_view.h:153
abstract interface for image readers
virtual bool read_image(const cgv::data::data_format &df, const cgv::data::data_view &dv)=0
read an image into the given data pointer.
virtual bool open(const std::string &file_name, cgv::data::data_format &df, std::vector< cgv::data::data_format > *palette_formats)=0
open the file and read the image header in order to determine the data format
virtual bool supports_per_line_read() const =0
whether the reader supports per line reading (only valid after successful opening an image file
virtual abst_image_reader * clone() const =0
construct a copy of the reader
virtual const char * get_supported_extensions() const =0
return a string containing a colon separated list of extensions that can be read with this reader
virtual const std::string & get_last_error() const =0
return a reference to the last error message
virtual bool read_line(const cgv::data::data_format &df, const cgv::data::data_view &dv)=0
read the next line into the given data pointer, set data format if not yet specified and allocate the...
virtual bool close()=0
close the image file
the image reader chooses a specific reader automatically based on the extension of the given file nam...
std::string last_error
last error message in case no reader is available
std::vector< cgv::data::data_format > * palette_formats
store a pointer to the palette format vector
cgv::data::data_format * file_format_ptr
store the data format
abst_image_reader * rd
store a pointer to the chosen reader
the cgv namespace
Definition print.h:11
interfaces that add several listeners and objects.
Definition register.h:210