vil_iris.h
Go to the documentation of this file.
1 // This is core/vil/file_formats/vil_iris.h
2 #ifndef vil_iris_file_format_h_
3 #define vil_iris_file_format_h_
4 //:
5 // \file
6 // \author Joris Schouteden, ESAT, KULeuven
7 // \date 17 Feb 2000
8 //
9 // \verbatim
10 // Modifications
11 // 17-Feb-2000 JS - Initial version, copied from IrisRGBImage.C
12 // Jul-2000 Peter Vanroose - bug fixed in write_header() by adding extra argument to constructor to pass imagename_ member
13 // 3-Oct-2001 Peter Vanroose - Implemented get_property("top_row_first")
14 // 5-Jun-2003 Peter Vanroose - bug fix in get_section & put_section: storage is planar, not RGB
15 // 16-Jun-2003 Peter Vanroose - ported from vil1
16 // 17-Jun-2003 Peter Vanroose - bug fix: data is big-endian; byte-swap added
17 //\endverbatim
18 
19 #include <vil/vil_file_format.h>
20 #include <vil/vil_image_resource.h>
21 #include <vil/vil_stream.h>
22 
23 //: Loader for RGB files (sgi iris)
25 {
26  public:
27  char const* tag() const override;
30  unsigned int ni, unsigned int nj, unsigned int planes,
31  vil_pixel_format format) override;
32 };
33 
34 //: Generic image implementation for iris (SGI) RGB files
36 {
37  unsigned long *starttab_;
38  unsigned long *lengthtab_;
39 
40  bool read_header();
41  bool write_header();
42 
43  friend class vil_iris_file_format;
44  public:
45 
46  vil_iris_generic_image(vil_stream* is, char const* imagename = "");
48  unsigned int ni, unsigned int nj, unsigned int planes,
49  vil_pixel_format format);
50  ~vil_iris_generic_image() override;
51 
52  //: Dimensions. Planes x ni(width) x nj(height).
53  unsigned int ni() const override { return ni_; }
54  unsigned int nj() const override { return nj_; }
55  unsigned int nplanes() const override { return nplanes_; }
56 
57  enum vil_pixel_format pixel_format() const override { return format_; }
58 
59  vil_image_view_base_sptr get_copy_view( unsigned int x0, unsigned int ni, unsigned int y0, unsigned int nj) const override;
60  bool put_view( vil_image_view_base const& buf, unsigned int x0, unsigned int y0) override;
61 
62  char const* file_format() const override;
63  bool get_property(char const *tag, void *prop = nullptr) const override;
64 
65  protected:
67 
68  int magic_;
69 
70  unsigned int ni_;
71  unsigned int nj_;
72  unsigned int nplanes_;
74 
75  int pixmin_;
76  int pixmax_;
77  int storage_;
79  int colormap_;
80  char imagename_[81];
82 
83  bool read_offset_tables();
84 
85  // Read a Run-Length encoded section
86  vil_image_view_base_sptr get_section_rle( unsigned int x0, unsigned int ni, unsigned int y0, unsigned int nj) const;
87 
88  // Read a plain section
89  vil_image_view_base_sptr get_section_verbatim( unsigned int x0, unsigned int ni, unsigned int y0, unsigned int nj) const;
90 };
91 
92 #endif // vil_iris_file_format_h_
Stream interface for VIL image loaders.
An abstract base class of smart pointers to actual image data in memory.
vil_pixel_format
Describes the type of the concrete data.
unsigned int nj_
Definition: vil_iris.h:71
bool get_property(char const *tag, void *prop=nullptr) const override
Extra property information.
Definition: vil_iris.cxx:95
unsigned int nplanes_
Definition: vil_iris.h:72
unsigned int nplanes() const override
Dimensions: Planes x ni x nj.
Definition: vil_iris.h:55
Base class for image formats.
unsigned int ni() const override
Dimensions. Planes x ni(width) x nj(height).
Definition: vil_iris.h:53
vil_image_view_base_sptr get_section_verbatim(unsigned int x0, unsigned int ni, unsigned int y0, unsigned int nj) const
Definition: vil_iris.cxx:271
Stream interface for VIL image loaders.
Definition: vil_stream.h:21
~vil_iris_generic_image() override
Definition: vil_iris.cxx:127
Generic image implementation for iris (SGI) RGB files.
Definition: vil_iris.h:35
vil_streampos start_of_data_
Definition: vil_iris.h:81
bool put_view(vil_image_view_base const &buf, unsigned int x0, unsigned int y0) override
Definition: vil_iris.cxx:351
Abstract representation of an image source or image destination.
unsigned long * starttab_
Definition: vil_iris.h:37
enum vil_pixel_format format_
Definition: vil_iris.h:73
vil_image_view_base_sptr get_section_rle(unsigned int x0, unsigned int ni, unsigned int y0, unsigned int nj) const
Definition: vil_iris.cxx:306
char const * file_format() const override
Return a string describing the file format.
Definition: vil_iris.cxx:101
vil_image_view_base_sptr get_copy_view() const
Create a read/write view of a copy of all the data.
vil_image_resource_sptr make_input_image(vil_stream *vs) override
Attempt to make a generic_image which will read from vil_stream vs.
Definition: vil_iris.cxx:41
vil_image_resource_sptr make_output_image(vil_stream *vs, unsigned int ni, unsigned int nj, unsigned int planes, vil_pixel_format format) override
Definition: vil_iris.cxx:73
vxl_int_32 vil_streampos
Definition: vil_stream.h:16
Loader for RGB files (sgi iris).
Definition: vil_iris.h:24
Representation of a generic image source or destination.
unsigned int nj() const override
Dimensions: Planes x ni x nj.
Definition: vil_iris.h:54
vil_iris_generic_image(vil_stream *is, char const *imagename="")
Definition: vil_iris.cxx:87
Base class for image formats.
unsigned int ni_
Definition: vil_iris.h:70
enum vil_pixel_format pixel_format() const override
Pixel Format.
Definition: vil_iris.h:57
vil_stream * is_
Definition: vil_iris.h:66
unsigned long * lengthtab_
Definition: vil_iris.h:38
char const * tag() const override
Return a character string which uniquely identifies this format.
Definition: vil_iris.cxx:80