00001 #ifndef __J2K__PositionTracker_CPP__
00002 #define __J2K__PositionTracker_CPP__
00003
00004 #include <j2k/nto/PositionTracker.hpp>
00005 #include <j2k/nto/FileReader.hpp>
00006 #include <j2k/nto/Track.hpp>
00007
00008 PositionTracker::PositionTracker( const char* n = "circle.trk" )
00009 {
00010 reader = new FileReader( n );
00011 reader->load();
00012 reader->find();
00013 track = reader->getTracks();
00014 size = reader->getSize();
00015
00016 track_init_t init = reader->getInit();
00017
00018 start_bit = init.start_bit;
00019 end_bit = init.end_bit;
00020
00021 assert( size == end_bit+1 );
00022 }
00023
00024
00025 PositionTracker::~PositionTracker()
00026 {
00027 track = NULL;
00028 if ( reader ) delete reader;
00029 }
00030
00031 long PositionTracker::getLeft( size_t track_id, size_t index ) const
00032 {
00033 assert( track_id >= start_bit );
00034 assert( track_id <= end_bit );
00035 return track[ track_id ]->getLeft( index );
00036 }
00037
00038 long PositionTracker::getRight( size_t track_id, size_t index ) const
00039 {
00040 assert( track_id >= start_bit );
00041 assert( track_id <= end_bit );
00042 return track[ track_id ]->getRight( index );
00043 }
00044
00045 long PositionTracker::getLeftEmpty( size_t track_id ) const
00046 {
00047 assert( track_id >= start_bit );
00048 assert( track_id <= end_bit );
00049 return track[ track_id ]->getLeftEmpty( track );
00050 }
00051
00052 long PositionTracker::getRightEmpty( size_t track_id ) const
00053 {
00054 assert( track_id >= start_bit );
00055 assert( track_id <= end_bit );
00056 return track[ track_id ]->getLeftEmpty( track );
00057 }
00058
00059
00060 Track* PositionTracker::getTrack( size_t track_id )
00061 {
00062 assert( track_id >= start_bit );
00063 assert( track_id <= end_bit );
00064 return track[ track_id ];
00065 }
00066
00067 #endif
00068