1 // This is core/vil/vil_crop.cxx
2 //:
3 // \file
4 // \author Ian Scott.
5 //
6 //-----------------------------------------------------------------------------
7
8 #include "vil_crop.h"
9 #include <cassert>
10 #ifdef _MSC_VER
11 # include "vcl_msvc_warnings.h"
12 #endif
13 #include "vil/vil_exception.h"
14
15
16 vil_image_resource_sptr
vil_crop(const vil_image_resource_sptr & src,unsigned i0,unsigned n_i,unsigned j0,unsigned n_j)17 vil_crop(const vil_image_resource_sptr & src, unsigned i0, unsigned n_i, unsigned j0, unsigned n_j)
18 {
19 return new vil_crop_image_resource(src, i0, n_i, j0, n_j);
20 }
21
22
vil_crop_image_resource(vil_image_resource_sptr const & gi,unsigned i0,unsigned n_i,unsigned j0,unsigned n_j)23 vil_crop_image_resource::vil_crop_image_resource(vil_image_resource_sptr const & gi,
24 unsigned i0,
25 unsigned n_i,
26 unsigned j0,
27 unsigned n_j)
28 : src_(gi)
29 , i0_(i0)
30 , ni_(n_i)
31 , j0_(j0)
32 , nj_(n_j)
33 {
34 assert(i0 + n_i <= src_->ni() && j0 + n_j <= src_->nj());
35 }
36
37 vil_image_view_base_sptr
get_copy_view(unsigned i0,unsigned n_i,unsigned j0,unsigned n_j) const38 vil_crop_image_resource::get_copy_view(unsigned i0, unsigned n_i, unsigned j0, unsigned n_j) const
39 {
40 if (i0 + n_i > ni() || j0 + n_j > nj())
41 {
42 vil_exception_warning(vil_exception_out_of_bounds("vil_crop_image_resource::get_copy_view"));
43 return nullptr;
44 }
45 return src_->get_copy_view(i0 + i0_, n_i, j0 + j0_, n_j);
46 }
47
48 vil_image_view_base_sptr
get_view(unsigned i0,unsigned n_i,unsigned j0,unsigned n_j) const49 vil_crop_image_resource::get_view(unsigned i0, unsigned n_i, unsigned j0, unsigned n_j) const
50 {
51 if (i0 + n_i > ni() || j0 + n_j > nj())
52 {
53 vil_exception_warning(vil_exception_out_of_bounds("vil_crop_image_resource::get_view"));
54 return nullptr;
55 }
56 return src_->get_view(i0 + i0_, n_i, j0 + j0_, n_j);
57 }
58