Changeset 214 in flair-src for trunk/lib/FlairCore/src/Matrix.cpp


Ignore:
Timestamp:
02/07/18 17:49:27 (4 years ago)
Author:
Sanahuja Guillaume
Message:

matrix

File:
1 edited

Legend:

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

    r213 r214  
    1919#include <typeinfo>
    2020#include <string.h>
    21 
    22 //#include <iostream>
    2321
    2422using std::string;
     
    3735    this->col = col;
    3836    if (row >= matrix->Rows() || col >= matrix->Cols()) {
    39       matrix->Err("index (%i,%i) out of bound (%i,%i)\n", row, col,
     37      matrix->Err("index (%i,%i) out of bound, max (%i,%i)\n", row, col,
    4038                  matrix->Rows() - 1, matrix->Cols() - 1);
    4139      size = 0;
     
    7169      } break;
    7270      }
     71    } else if (typeid(matrix->GetDataType().GetElementDataType()) ==
     72               typeid(UnsignedIntegerType)) {
     73      switch (matrix->GetDataType().GetElementDataType().GetSize()) {
     74      case 1: {
     75        uint8_t uint8Value = matrix->Value(row, col);
     76        memcpy(dst, &uint8Value, 1);
     77      } break;
     78      case 2: {
     79        uint16_t uint16Value = matrix->Value(row, col);
     80        memcpy(dst, &uint16Value, 2);
     81      } break;
     82      }
    7383    }
    7484  }
     
    133143  if (row >= (uint32_t)pimpl_->descriptor->Rows() ||
    134144      col >= (uint32_t)pimpl_->descriptor->Cols()) {
    135     Warn("index (%i,%i) out of bound (%i,%i)\n", row, col,
     145    Warn("index (%i,%i) out of bound, max (%i,%i)\n", row, col,
    136146         pimpl_->descriptor->Rows() - 1, pimpl_->descriptor->Cols() - 1);
    137147    return 0;
     
    139149
    140150  GetMutex();
    141   value = pimpl_->datas[row][col];
     151  value = pimpl_->ValueNoMutex(row, col);
    142152  ReleaseMutex();
    143153
     
    148158  if (row >= (uint32_t)pimpl_->descriptor->Rows() ||
    149159      col >= (uint32_t)pimpl_->descriptor->Cols()) {
    150     Warn("index (%i,%i) out of bound (%i,%i)\n", row, col,
     160    Warn("index (%i,%i) out of bound, max (%i,%i)\n", row, col,
    151161         pimpl_->descriptor->Rows() - 1, pimpl_->descriptor->Cols() - 1);
    152162    return 0;
    153163  }
    154164
    155   return pimpl_->datas[row][col];
     165  return pimpl_->ValueNoMutex(row, col);
    156166}
    157167
     
    159169  if (row >= (uint32_t)pimpl_->descriptor->Rows() ||
    160170      col >= (uint32_t)pimpl_->descriptor->Cols()) {
    161     Warn("index (%i,%i) out of bound (%i,%i)\n", row, col,
     171    Warn("index (%i,%i) out of bound, max (%i,%i)\n", row, col,
    162172         pimpl_->descriptor->Rows() - 1, pimpl_->descriptor->Cols() - 1);
    163173  } else {
    164174    GetMutex();
    165     pimpl_->datas[row][col]=value;
     175    pimpl_->SetValueNoMutex(row, col,value);
    166176    ReleaseMutex();
    167177  }
     
    171181  if (row >= (uint32_t)pimpl_->descriptor->Rows() ||
    172182      col >= (uint32_t)pimpl_->descriptor->Cols()) {
    173     Warn("index (%i,%i) out of bound (%i,%i)\n", row, col,
     183    Warn("index (%i,%i) out of bound, max (%i,%i)\n", row, col,
    174184         pimpl_->descriptor->Rows() - 1, pimpl_->descriptor->Cols() - 1);
    175185  } else {
    176     pimpl_->datas[row][col]=value;
     186    pimpl_->SetValueNoMutex(row, col,value);
    177187  }
    178188}
     
    180190void Matrix::CopyDatas(char *dst) const {
    181191  GetMutex();
    182   // printf("%f %x %i\n",cvGetReal2D(pimpl_->mat,0,0),dst,Size());
    183192  memcpy(dst, pimpl_->datas, dataType.GetSize());
    184193  ReleaseMutex();
Note: See TracChangeset for help on using the changeset viewer.