Changeset 15 in flair-src for trunk/lib/FlairCore/src/cvmatrix.cpp


Ignore:
Timestamp:
04/08/16 15:40:57 (6 years ago)
Author:
Bayard Gildas
Message:

sources reformatted with flair-format-dir script

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/FlairCore/src/cvmatrix.cpp

    r2 r15  
    2424using std::string;
    2525
    26 namespace flair { namespace core {
    27     /*! \class cvmatrixElement
    28     */
    29     class cvmatrixElement: public IODataElement {
    30     public:
    31         cvmatrixElement(const cvmatrix *matrix,string name,uint32_t row, uint32_t col):IODataElement(matrix,name) {
    32             this->matrix=matrix;
    33             this->row=row;
    34             this->col=col;
    35             if(row>=matrix->Rows() || col>=matrix->Cols()) {
    36                 matrix->Err("index (%i,%i) out of bound (%i,%i)\n",row,col,matrix->Rows()-1,matrix->Cols()-1);
    37                 size=0;
    38             } else {
    39                 try {
    40                     ScalarType const &scalarType=dynamic_cast<ScalarType const &>(matrix->GetDataType().GetElementDataType());
    41                     size=scalarType.GetSize();
    42                 } catch (std::bad_cast e) {
    43                     matrix->Err("type not handled\n");
    44                     size=0;
    45                 }
    46             }
    47         }
     26namespace flair {
     27namespace core {
     28/*! \class cvmatrixElement
     29*/
     30class cvmatrixElement : public IODataElement {
     31public:
     32  cvmatrixElement(const cvmatrix *matrix, string name, uint32_t row,
     33                  uint32_t col)
     34      : IODataElement(matrix, name) {
     35    this->matrix = matrix;
     36    this->row = row;
     37    this->col = col;
     38    if (row >= matrix->Rows() || col >= matrix->Cols()) {
     39      matrix->Err("index (%i,%i) out of bound (%i,%i)\n", row, col,
     40                  matrix->Rows() - 1, matrix->Cols() - 1);
     41      size = 0;
     42    } else {
     43      try {
     44        ScalarType const &scalarType = dynamic_cast<ScalarType const &>(
     45            matrix->GetDataType().GetElementDataType());
     46        size = scalarType.GetSize();
     47      } catch (std::bad_cast e) {
     48        matrix->Err("type not handled\n");
     49        size = 0;
     50      }
     51    }
     52  }
    4853
    49         ~cvmatrixElement() {
    50         }
     54  ~cvmatrixElement() {}
    5155
    52         void CopyData(char* dst) const {
    53             if (typeid(matrix->GetDataType().GetElementDataType())==typeid(FloatType)) {
    54                 float value=matrix->Value(row,col);
    55                 memcpy(dst,&value,sizeof(value));
    56             } else if (typeid(matrix->GetDataType().GetElementDataType())==typeid(SignedIntegerType)) {
    57                 switch(matrix->GetDataType().GetElementDataType().GetSize()) {
    58                 case 1: {
    59                         int8_t int8Value=matrix->Value(row,col);
    60                         memcpy(dst,&int8Value,1);
    61                     }
    62                     break;
    63                 case 2: {
    64                         int16_t int16Value=matrix->Value(row,col);
    65                         memcpy(dst,&int16Value,2);
    66                     }
    67                     break;
    68                 }
    69             }
    70         }
     56  void CopyData(char *dst) const {
     57    if (typeid(matrix->GetDataType().GetElementDataType()) ==
     58        typeid(FloatType)) {
     59      float value = matrix->Value(row, col);
     60      memcpy(dst, &value, sizeof(value));
     61    } else if (typeid(matrix->GetDataType().GetElementDataType()) ==
     62               typeid(SignedIntegerType)) {
     63      switch (matrix->GetDataType().GetElementDataType().GetSize()) {
     64      case 1: {
     65        int8_t int8Value = matrix->Value(row, col);
     66        memcpy(dst, &int8Value, 1);
     67      } break;
     68      case 2: {
     69        int16_t int16Value = matrix->Value(row, col);
     70        memcpy(dst, &int16Value, 2);
     71      } break;
     72      }
     73    }
     74  }
    7175
    72         DataType const &GetDataType(void) const {
    73             return matrix->GetDataType().GetElementDataType();
    74         }
     76  DataType const &GetDataType(void) const {
     77    return matrix->GetDataType().GetElementDataType();
     78  }
    7579
    76     private:
    77         const cvmatrix *matrix;
    78         uint32_t row,col;
     80private:
     81  const cvmatrix *matrix;
     82  uint32_t row, col;
     83};
    7984
    80     };
     85cvmatrix::cvmatrix(const Object *parent, uint32_t rows, uint32_t cols,
     86                   ScalarType const &elementDataType, string name, uint32_t n)
     87    : io_data(parent, name, n), dataType(rows, cols, elementDataType) {
     88  pimpl_ = new cvmatrix_impl(this, rows, cols, elementDataType, n);
    8189
    82 cvmatrix::cvmatrix(const Object* parent,uint32_t rows, uint32_t cols, ScalarType const &elementDataType,string name,uint32_t n): io_data(parent,name,n),dataType(rows,cols,elementDataType) {
    83     pimpl_=new cvmatrix_impl(this,rows,cols,elementDataType,n);
    84 
    85     for(uint32_t i=0;i<rows;i++) {
    86         for(uint32_t j=0;j<cols;j++) {
    87             AppendLogDescription(pimpl_->descriptor->ElementName(i,j),elementDataType);
    88             SetValue(i,j,0);
    89         }
     90  for (uint32_t i = 0; i < rows; i++) {
     91    for (uint32_t j = 0; j < cols; j++) {
     92      AppendLogDescription(pimpl_->descriptor->ElementName(i, j),
     93                           elementDataType);
     94      SetValue(i, j, 0);
    9095    }
     96  }
    9197}
    9298
    93 cvmatrix::cvmatrix(const Object* parent,const cvmatrix_descriptor *descriptor, ScalarType const &elementDataType,string name,uint32_t n): io_data(parent,name,n),dataType(descriptor->Rows(),descriptor->Cols(),elementDataType) {
    94     pimpl_=new cvmatrix_impl(this,descriptor,elementDataType,n);
     99cvmatrix::cvmatrix(const Object *parent, const cvmatrix_descriptor *descriptor,
     100                   ScalarType const &elementDataType, string name, uint32_t n)
     101    : io_data(parent, name, n),
     102      dataType(descriptor->Rows(), descriptor->Cols(), elementDataType) {
     103  pimpl_ = new cvmatrix_impl(this, descriptor, elementDataType, n);
    95104
    96     for(uint32_t i=0;i<descriptor->Rows();i++) {
    97         for(uint32_t j=0;j<descriptor->Cols();j++) {
    98             AppendLogDescription(descriptor->ElementName(i,j),elementDataType);
    99             SetValue(i,j,0);
    100         }
     105  for (uint32_t i = 0; i < descriptor->Rows(); i++) {
     106    for (uint32_t j = 0; j < descriptor->Cols(); j++) {
     107      AppendLogDescription(descriptor->ElementName(i, j), elementDataType);
     108      SetValue(i, j, 0);
    101109    }
     110  }
    102111}
    103112
    104 cvmatrix::~cvmatrix() {
    105     delete pimpl_;
     113cvmatrix::~cvmatrix() { delete pimpl_; }
     114
     115IODataElement *cvmatrix::Element(uint32_t row, uint32_t col) const {
     116  return new cvmatrixElement(this, Name(row, col), row, col);
    106117}
    107118
    108 IODataElement* cvmatrix::Element(uint32_t row, uint32_t col) const {
    109     return new cvmatrixElement(this,Name(row,col),row,col);
    110 }
    111 
    112 IODataElement* cvmatrix::Element(uint32_t index) const {
    113     if(Rows()==1) {
    114         return new cvmatrixElement(this,Name(0,index),0,index);
    115     } else if(Cols()==1) {
    116         return new cvmatrixElement(this,Name(index,0),index,0);
    117     } else {
    118         Err("matrix is not 1D\n");
    119         return nullptr;
    120     }
     119IODataElement *cvmatrix::Element(uint32_t index) const {
     120  if (Rows() == 1) {
     121    return new cvmatrixElement(this, Name(0, index), 0, index);
     122  } else if (Cols() == 1) {
     123    return new cvmatrixElement(this, Name(index, 0), index, 0);
     124  } else {
     125    Err("matrix is not 1D\n");
     126    return nullptr;
     127  }
    121128}
    122129
    123130float cvmatrix::Value(uint32_t row, uint32_t col) const {
    124     float value;
     131  float value;
    125132
    126     if(row>=(uint32_t)pimpl_->mat->rows || col>=(uint32_t)pimpl_->mat->cols) {
    127         Warn("index (%i,%i) out of bound (%i,%i)\n",row,col,pimpl_->mat->rows-1,pimpl_->mat->cols-1);
    128         return 0;
    129     }
     133  if (row >= (uint32_t)pimpl_->mat->rows ||
     134      col >= (uint32_t)pimpl_->mat->cols) {
     135    Warn("index (%i,%i) out of bound (%i,%i)\n", row, col,
     136         pimpl_->mat->rows - 1, pimpl_->mat->cols - 1);
     137    return 0;
     138  }
    130139
    131     GetMutex();
    132     value=cvGetReal2D(pimpl_->mat,row,col);
    133     ReleaseMutex();
     140  GetMutex();
     141  value = cvGetReal2D(pimpl_->mat, row, col);
     142  ReleaseMutex();
    134143
    135     return value;
     144  return value;
    136145}
    137146
    138147float cvmatrix::ValueNoMutex(uint32_t row, uint32_t col) const {
    139     if(row>=(uint32_t)pimpl_->mat->rows || col>=(uint32_t)pimpl_->mat->cols) {
    140         Warn("index (%i,%i) out of bound (%i,%i)\n",row,col,pimpl_->mat->rows-1,pimpl_->mat->cols-1);
    141         return 0;
    142     }
     148  if (row >= (uint32_t)pimpl_->mat->rows ||
     149      col >= (uint32_t)pimpl_->mat->cols) {
     150    Warn("index (%i,%i) out of bound (%i,%i)\n", row, col,
     151         pimpl_->mat->rows - 1, pimpl_->mat->cols - 1);
     152    return 0;
     153  }
    143154
    144     return cvGetReal2D(pimpl_->mat,row,col);
     155  return cvGetReal2D(pimpl_->mat, row, col);
    145156}
    146157
    147 void cvmatrix::SetValue(uint32_t row, uint32_t col,float value) {
    148     if(row>=(uint32_t)pimpl_->mat->rows || col>=(uint32_t)pimpl_->mat->cols) {
    149         Warn("index (%i,%i) out of bound (%i,%i)\n",row,col,pimpl_->mat->rows-1,pimpl_->mat->cols-1);
    150     } else {
    151         GetMutex();
    152         cvSetReal2D(pimpl_->mat,row,col,value);
    153         ReleaseMutex();
    154     }
     158void cvmatrix::SetValue(uint32_t row, uint32_t col, float value) {
     159  if (row >= (uint32_t)pimpl_->mat->rows ||
     160      col >= (uint32_t)pimpl_->mat->cols) {
     161    Warn("index (%i,%i) out of bound (%i,%i)\n", row, col,
     162         pimpl_->mat->rows - 1, pimpl_->mat->cols - 1);
     163  } else {
     164    GetMutex();
     165    cvSetReal2D(pimpl_->mat, row, col, value);
     166    ReleaseMutex();
     167  }
    155168}
    156169
    157 void cvmatrix::SetValueNoMutex(uint32_t row, uint32_t col,float value) {
    158     if(row>=(uint32_t)pimpl_->mat->rows || col>=(uint32_t)pimpl_->mat->cols) {
    159         Warn("index (%i,%i) out of bound (%i,%i)\n",row,col,pimpl_->mat->rows-1,pimpl_->mat->cols-1);
    160     } else {
    161         cvSetReal2D(pimpl_->mat,row,col,value);
    162     }
     170void cvmatrix::SetValueNoMutex(uint32_t row, uint32_t col, float value) {
     171  if (row >= (uint32_t)pimpl_->mat->rows ||
     172      col >= (uint32_t)pimpl_->mat->cols) {
     173    Warn("index (%i,%i) out of bound (%i,%i)\n", row, col,
     174         pimpl_->mat->rows - 1, pimpl_->mat->cols - 1);
     175  } else {
     176    cvSetReal2D(pimpl_->mat, row, col, value);
     177  }
    163178}
    164179
    165 CvMat* cvmatrix::getCvMat(void) const {
    166     return pimpl_->mat;
     180CvMat *cvmatrix::getCvMat(void) const { return pimpl_->mat; }
     181
     182void cvmatrix::CopyDatas(char *dst) const {
     183  GetMutex();
     184  // printf("%f %x %i\n",cvGetReal2D(pimpl_->mat,0,0),dst,Size());
     185  memcpy(dst, pimpl_->mat->data.ptr, dataType.GetSize());
     186  ReleaseMutex();
    167187}
    168188
    169 void cvmatrix::CopyDatas(char* dst) const {
    170     GetMutex();
    171     //printf("%f %x %i\n",cvGetReal2D(pimpl_->mat,0,0),dst,Size());
    172     memcpy(dst,pimpl_->mat->data.ptr,dataType.GetSize());
    173     ReleaseMutex();
    174 }
     189uint32_t cvmatrix::Rows(void) const { return pimpl_->mat->rows; }
    175190
    176 uint32_t cvmatrix::Rows(void) const {
    177     return pimpl_->mat->rows;
    178 }
    179 
    180 uint32_t cvmatrix::Cols(void) const {
    181     return pimpl_->mat->cols;
    182 }
     191uint32_t cvmatrix::Cols(void) const { return pimpl_->mat->cols; }
    183192
    184193string cvmatrix::Name(uint32_t row, uint32_t col) const {
    185     return pimpl_->descriptor->ElementName(row,col);
     194  return pimpl_->descriptor->ElementName(row, col);
    186195}
    187 
    188196
    189197} // end namespace core
Note: See TracChangeset for help on using the changeset viewer.