cgv
cgv::data::data_view Class Reference

#include <data_view.h>

Inheritance diagram for cgv::data::data_view:
cgv::data::data_view_impl< data_view, unsigned char * > cgv::data::data_view_base

Public Member Functions

 data_view ()
 construct an empty data view without format and with empty data pointer*‍/
 
 ~data_view ()
 destruct view and delete data pointer if it is owned by the view
 
 data_view (const data_format *_format)
 
 data_view (const data_format *_format, void *_data_ptr)
 
 data_view (const data_format *_format, unsigned char *_data_ptr, bool manage_ptr)
 
data_viewoperator= (const data_view &dv)
 
void set_ptr (unsigned char *ptr, bool manage_ptr)
 
void set_ptr (void *ptr)
 
template<typename T >
bool set (int ci, const T &v)
 write access to the i-th component, return whether write was successful
 
void reflect_horizontally ()
 reflect 2D data view at horizontal axis More...
 
bool empty () const
 return whether the data pointer is a null pointer
 
cgv::type::func::transfer_const< unsigned char *, S * >::type get_ptr () const
 return a data pointer to type S
 
cgv::type::func::transfer_const< unsigned char *, S * >::type get_ptr (int i) const
 return a pointer to type S for i-th data entry
 
cgv::type::func::transfer_const< unsigned char *, S * >::type get_ptr (int i, int j) const
 return a pointer to type S for (i,j)-th data entry
 
cgv::type::func::transfer_const< unsigned char *, S * >::type get_ptr (int i, int j, int k) const
 return a pointer to type S for (i,j,k)-th data entry
 
cgv::type::func::transfer_const< unsigned char *, S * >::type get_ptr (int i, int j, int k, int l) const
 return a pointer to type S for (i,j,k,l)-th data entry
 
get (int ci) const
 constant access to the ci-th component
 
get (int ci, int i) const
 constant access to the ci-th component of i-th data entry
 
get (int ci, int i, int j) const
 constant access to the ci-th component of (i,j)-th data entry
 
get (int ci, int i, int j, int k) const
 constant access to the ci-th component of (i,j,k)-th data entry
 
get (int ci, int i, int j, int k, int l) const
 constant access to the ci-th component of (i,j,k,l)-th data entry
 
data_view operator() (unsigned int i) const
 access to i-th data entry
 
data_view operator() (unsigned int i, unsigned int j) const
 access to entry at (i,j)
 
data_view operator() (unsigned int i, unsigned int j, unsigned int k) const
 access to entry at (i,j,k)
 
data_view operator() (unsigned int i, unsigned int j, unsigned int k, unsigned int l) const
 access to entry at (i,j,k,l)
 
data_view permute (const std::string &permutation) const
 
data_view transpose () const
 transpose is equivalent to permute("ji")
 
cgv::type::func::transfer_const< unsigned char *, S * >::type step_i (S *ptr, int n=1) const
 return a pointer that points to the n-th next location if index i is increase by n
 
cgv::type::func::transfer_const< unsigned char *, S * >::type step_j (S *ptr, int n=1) const
 return a pointer that points to the n-th next location if index j is increase by n
 
cgv::type::func::transfer_const< unsigned char *, S * >::type step_k (S *ptr, int n=1) const
 return a pointer that points to the n-th next location if index k is increase by n
 
cgv::type::func::transfer_const< unsigned char *, S * >::type step_l (S *ptr, int n=1) const
 return a pointer that points to the n-th next location if index l is increase by n
 
void manage_format (bool enable=true)
 whether to manage the data format pointer
 
const data_formatget_format () const
 return the component format
 
void set_format (const data_format *_format)
 set a new data format
 
unsigned int get_dim () const
 return the dimension of the data view, which is less or equal to the dimension of the data format
 
unsigned int get_step_size (unsigned int dim) const
 return the step size in bytes in the i-th dimension
 

Static Public Member Functions

static bool compose (data_view &composed_dv, const std::vector< data_view > &dvs)
 combine multiple n-dimensional data views with the same format into a (n+1)-dimensional data view by appending them
 
static bool combine_components (data_view &dv, const std::vector< data_view >::iterator first, const std::vector< data_view >::iterator last)
 combine n data views each with one component channel into a single data view with n component channels, the format of the input data views needs to match
 

Protected Member Functions

 data_view (const data_format *_format, unsigned char *_data_ptr, unsigned int _dim, const unsigned int *_step_sizes)
 use base class for construction and don't manage data pointer
 

Protected Attributes

bool owns_ptr
 a flag telling whether the data ptr is owned by the view
 
unsigned char * data_ptr
 data pointer of type unsigned char or const unsigned char
 
bool owns_format
 whether to own the data format
 

Friends

class data_view_impl< data_view, unsigned char * >
 declare base as friend
 

Detailed Description

the data view gives access to a data array of one, two, three or four dimensions. Each data entry can consist of several components as defined in the referenced component format. It allows to permute the dimensions, construct views of lower dimension with the ()-operators defined in the data_view_impl and to access the data components with the get- and set-method of data_view_impl. It keeps a flag that tells whether the data pointer belongs to the data view and therefore needs to be deleted on destruction.

Constructor & Destructor Documentation

◆ data_view() [1/3]

cgv::data::data_view::data_view ( const data_format _format)

construct a data view from the given format. Allocate a new data pointer with the new [] operator of type (unsigned char) and own the pointer. The data_view will view the complete data set as defined in the format.

◆ data_view() [2/3]

cgv::data::data_view::data_view ( const data_format _format,
void *  _data_ptr 
)

construct a data view from the given format, viewing the complete data set. The passed pointer will not be owned by the view.

◆ data_view() [3/3]

cgv::data::data_view::data_view ( const data_format _format,
unsigned char *  _data_ptr,
bool  manage_ptr 
)

construct a data view from the given format, viewing the complete data set. The passed pointer will be owned by the view if the manage_ptr flag is true. In this case the pointer is deleted on destruction with the delete [] operator of type (unsigned char*).

Member Function Documentation

◆ operator=()

data_view & cgv::data::data_view::operator= ( const data_view dv)

the assignment operator takes over the data format and data pointers in case they are managed by the source data view

◆ permute()

data_view cgv::data::data_view_impl< data_view , unsigned char * >::permute ( const std::string &  permutation) const
inherited

permute the order of the indices, where the permutation argument "kji" implies that after the permutation the operator (i,j,k) returns the same as the operator (k,j,i) before the call to permute. The permutation string must have at least two entries. If it has n entries it must contain each of the first n letters of "ijkl" exactly once, i.e. "ik" would be invalid, whereas "ikj" is a valid permutation.

◆ reflect_horizontally()

void cgv::data::data_view::reflect_horizontally ( )

reflect 2D data view at horizontal axis

reflect image at horizontal axis

◆ set_ptr() [1/2]

void cgv::data::data_view::set_ptr ( unsigned char *  ptr,
bool  manage_ptr 
)

set a different data pointer that will be deleted with the delete [] operator of type (unsigned char*) on destruction if the manage_ptr flag is true

◆ set_ptr() [2/2]

void cgv::data::data_view::set_ptr ( void *  ptr)

set a different data pointer that is not owned by the data view and will not be deleted on destruction.


The documentation for this class was generated from the following files: