00001
00002 #ifndef vil3d_from_image_2d_h_
00003 #define vil3d_from_image_2d_h_
00004
00005 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00006 #pragma interface
00007 #endif
00008
00009
00010
00011
00012
00013 #include <vil/vil_image_view.h>
00014 #include <vil3d/vil3d_image_view.h>
00015 #include <vcl_cassert.h>
00016
00017
00018
00019
00020
00021
00022
00023
00024 template <class T>
00025 inline vil3d_image_view<T> vil3d_from_image_2d(const vil_image_view<T>& im)
00026 {
00027 if (im.is_contiguous())
00028 {
00029 vcl_ptrdiff_t kstep = im.ni()*im.nj();
00030 unsigned nk = 1;
00031 vcl_ptrdiff_t pstep = im.planestep();
00032
00033
00034 assert(pstep == kstep);
00035
00036 return vil3d_image_view<T>(im.memory_chunk(),
00037 im.top_left_ptr(),
00038 im.ni(), im.nj(), nk, im.nplanes(),
00039 im.istep(), im.jstep(), kstep, pstep);
00040 }
00041 else
00042 {
00043 return vil3d_image_view<T>();
00044 }
00045 }
00046
00047
00048 #endif // vil3d_from_image_2d_h_