00001
00002 #ifndef vil1_gen_file_format_h_
00003 #define vil1_gen_file_format_h_
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00016 #pragma interface
00017 #endif
00018
00019 #include <vcl_string.h>
00020 #include <vil1/vil1_file_format.h>
00021 #include <vil1/vil1_image_impl.h>
00022
00023
00024
00025
00026 class vil1_gen_file_format : public vil1_file_format
00027 {
00028 public:
00029 virtual char const* tag() const;
00030 virtual vil1_image_impl* make_input_image(vil1_stream* vs);
00031 virtual vil1_image_impl* make_output_image(vil1_stream* , int ,
00032 int ,
00033 int ,
00034 int ,
00035 int ,
00036 vil1_component_format ) { return 0; }
00037 };
00038
00039 enum vil1_gen_type
00040 {
00041 vil1_gen_gray,
00042 vil1_gen_rgb
00043 };
00044
00045
00046 class vil1_gen_generic_image : public vil1_image_impl
00047 {
00048 int width_;
00049 int height_;
00050 int components_;
00051 int bits_per_component_;
00052 int type_;
00053 int params_[4];
00054
00055 friend class vil1_gen_file_format;
00056 void init(vcl_string const & s);
00057
00058 public:
00059 vil1_gen_generic_image(vcl_string const & s) { init(s); }
00060 vil1_gen_generic_image(vcl_string const & s,
00061 int planes,
00062 int width,
00063 int height,
00064 int components,
00065 int bits_per_component,
00066 vil1_component_format format);
00067 ~vil1_gen_generic_image() {}
00068
00069
00070 virtual int planes() const { return 1; }
00071 virtual int width() const { return width_; }
00072 virtual int height() const { return height_; }
00073 virtual int components() const { return components_; }
00074
00075 virtual int bits_per_component() const { return bits_per_component_; }
00076 virtual enum vil1_component_format component_format() const { return VIL1_COMPONENT_FORMAT_UNSIGNED_INT; }
00077
00078
00079 virtual bool get_section(void* buf, int x0, int y0, int width, int height) const;
00080
00081 virtual bool put_section(void const* buf, int x0, int y0, int width, int height);
00082
00083 char const* file_format() const;
00084 bool get_property(char const *tag, void *prop = 0) const;
00085 vil1_image get_plane(unsigned int p) const;
00086 };
00087
00088 #endif // vil1_gen_file_format_h_