00001
00002 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00003 #pragma implementation
00004 #endif
00005
00006
00007
00008 #include "vil1_scale_intensities_image_impl.h"
00009 #include <vil1/vil1_scale_intensities_image.h>
00010 #include <vil1/vil1_pixel.h>
00011 #include <vil1/vil1_rgb.h>
00012 #include <vxl_config.h>
00013
00014 vil1_image vil1_scale_intensities_image_impl::get_plane(unsigned int p) const
00015 {
00016 vil1_image_impl *i = new vil1_scale_intensities_image_impl(base.get_plane(p), scale_, shift_);
00017 return i;
00018 }
00019
00020 bool vil1_scale_intensities_image_impl::put_section(void const * , int, int, int, int)
00021 {
00022 return false;
00023 }
00024
00025 bool vil1_scale_intensities_image_impl::get_section(void * buf, int x0, int y0, int w, int h) const
00026 {
00027 switch ( vil1_pixel_format(base) ) {
00028 case VIL1_BYTE:
00029 return vil1_scale_intensities_image(base, scale_, shift_, (vxl_byte*)buf, x0, y0, w, h);
00030 case VIL1_UINT16:
00031 return vil1_scale_intensities_image(base, scale_, shift_, (vxl_uint_16*)buf, x0, y0, w, h);
00032 case VIL1_RGB_BYTE:
00033 return vil1_scale_intensities_image(base, scale_, shift_, (vil1_rgb<vxl_byte>*)buf, x0, y0, w, h);
00034 case VIL1_FLOAT:
00035 return vil1_scale_intensities_image(base, scale_, shift_, (float*)buf, x0, y0, w, h);
00036 case VIL1_DOUBLE:
00037 return vil1_scale_intensities_image(base, scale_, shift_, (double*)buf, x0, y0, w, h);
00038 case VIL1_RGB_UINT16:
00039 return vil1_scale_intensities_image(base, scale_, shift_, (vil1_rgb<vxl_uint_16>*)buf, x0, y0, w, h);
00040 case VIL1_RGB_FLOAT:
00041 return vil1_scale_intensities_image(base, scale_, shift_, (vil1_rgb<float>*)buf, x0, y0, w, h);
00042 case VIL1_RGB_DOUBLE:
00043 return vil1_scale_intensities_image(base, scale_, shift_, (vil1_rgb<double>*)buf, x0, y0, w, h);
00044 default:
00045 vcl_cerr << __FILE__ ": not implemented for this pixel type\n";
00046 return false;
00047 }
00048 }