offset
Prototype
template<class Raster>
offset_raster_view<Raster> offset(Raster raster, int row_offset, int col_offset, const typename traits<Raster>::value_type& pad_value); 
where offset_raster_view is defined by a typedef:
template<class Raster>
using offset_raster_view = typename padded_raster_view<typename traits<Raster> >::sub_raster
Description
The offset function takes a raster as input and returns a raster of the same dimensions and with the same values but offset by a fixed number of rows and columns. For those cells where there is no offset coordinate is outside the input raster a pad_value will be used.
Definition
<pronto/raster/offset_raster_view.h> (open in Github)
Requirements on types
Raster must implement the RasterView concept.
Preconditions
raster must be initialized.
Complexity
O(1)
Example of use
//example_offset.cpp
#include <pronto/raster/io.h>
#include <pronto/raster/offset_raster_view.h>
#include <pronto/raster/plot_raster.h>
namespace pr = pronto::raster;
int main()
{
  auto raster = pr::create_temp<int>(5, 6);
  auto i = 0;
  for (auto&& v : raster) {
    i = (i + 3) % 7;
    v = i;
  }
  
  auto off = pr::offset(raster, 2, 3, -1);
  plot_raster(raster);
  plot_raster(off);
  return 0;
}
Output:
Rows: 5, Cols: 6, Value type: int
3       6       2       5       1       4
0       3       6       2       5       1
4       0       3       6       2       5
1       4       0       3       6       2
5       1       4       0       3       6
Rows: 5, Cols: 6, Value type: int
6       2       5       -1      -1      -1
3       6       2       -1      -1      -1
0       3       6       -1      -1      -1
-1      -1      -1      -1      -1      -1
-1      -1      -1      -1      -1      -1
Notes
The offset function is readily implemented in terms of the pad function and sub_raster member function.