31 #include "../common/Translator.h" 
   75   const unsigned int blockXIndex, 
const unsigned int blockYIndex,
 
   80   if( bandIdx >= m_blocksUseCounters.size() )
 
   83     throw Exception(
TE_TR(
"Inalid band index") );
 
   85   if( blockYIndex >= m_blocksUseCounters[ bandIdx ].size() )
 
   88     throw Exception(
TE_TR(
"Inalid block Y index") );
 
   90   if( blockXIndex >= m_blocksUseCounters[ bandIdx ][ blockYIndex ].size() )
 
   93     throw Exception(
TE_TR(
"Inalid block X index") );
 
  100     while( m_blocksUseCounters[ bandIdx ][ blockYIndex ][ blockXIndex ] )
 
  102       m_condVar.wait( m_mutex );
 
  105     assert( m_blocksUseCounters[ bandIdx ][ blockYIndex ][ blockXIndex ] == 0 );
 
  107     m_blocksUseCounters[ bandIdx ][ blockYIndex ][ blockXIndex ] = 1;
 
  109     m_raster.getBand( bandIdx )->read( blockXIndex, blockYIndex, blkDataPtr );
 
  117     ++( m_blocksUseCounters[ bandIdx ][ blockYIndex ][ blockXIndex ] );
 
  119     m_raster.getBand( bandIdx )->read( blockXIndex, blockYIndex, blkDataPtr );
 
  128   const unsigned int blockXIndex, 
const unsigned int blockYIndex,
 
  133   if( bandIdx >= m_blocksUseCounters.size() )
 
  136     throw Exception(
TE_TR(
"Inalid band index") );
 
  138   if( blockYIndex >= m_blocksUseCounters[ bandIdx ].size() )
 
  141     throw Exception(
TE_TR(
"Inalid block Y index") );
 
  143   if( blockXIndex >= m_blocksUseCounters[ bandIdx ][ blockYIndex ].size() )
 
  146     throw Exception(
TE_TR(
"Inalid block X index") );
 
  149   if( m_blocksUseCounters[ bandIdx ][ blockYIndex ][ blockXIndex ] )
 
  154       m_raster.getBand( bandIdx )->write( blockXIndex, blockYIndex, blkDataPtr );
 
  157     --( m_blocksUseCounters[ bandIdx ][ blockYIndex ][ blockXIndex ] );
 
  162   m_condVar.notify_all();
 
It describes one band (or dimension) of a raster. 
 
bool acquireBlock(const unsigned int bandIdx, const unsigned int blockXIndex, const unsigned int blockYIndex, void *blkDataPtr)
Acquire a raster data block. 
 
int m_nblocksx
The number of blocks in x. 
 
virtual const Band * getBand(std::size_t i) const =0
Returns the raster i-th band. 
 
int m_nblocksy
The number of blocks in y. 
 
#define TE_TR(message)
It marks a string in order to get translated. 
 
te::common::AccessPolicy getAccessPolicy() const 
Returns the raster access policy. 
 
AccessPolicy
Supported data access policies (can be used as bitfield). 
 
An exception class for the Raster module. 
 
RasterSynchronizer(Raster &raster, const te::common::AccessPolicy policy)
Constructor. 
 
An abstract class for raster data strucutures. 
 
BandProperty * getProperty()
Returns the band property. 
 
An access synchronizer to be used in SynchronizedRaster raster instances. 
 
virtual std::size_t getNumberOfBands() const =0
Returns the number of bands (dimension of cells attribute values) in the raster. 
 
It gives access to values in one band (dimension) of a raster. 
 
te::common::AccessPolicy m_policy
The access policy used on the given input raster. 
 
BlocksUseCounterT m_blocksUseCounters
blocks use counter. 
 
bool releaseBlock(const unsigned int bandIdx, const unsigned int blockXIndex, const unsigned int blockYIndex, void *blkDataPtr)
Release a raster data block.