- Timestamp:
- 03/21/12 18:36:20 (14 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/src/osgPlugins/gif/ReaderWriterGIF.cpp
r12355 r13041 61 61 #define MY_GIF_DEBUG 1 62 62 63 // GifImageStream class 63 // GifImageStream class 64 64 class GifImageStream : public osg::ImageStream, public OpenThreads::Thread 65 65 { … … 68 68 osg::ImageStream(), 69 69 _multiplier(1.0), 70 _currentLength(0), 71 _length(0), 72 _frameNum(0), 73 _dataNum(0), 70 _currentLength(0), 71 _length(0), 72 _frameNum(0), 73 _dataNum(0), 74 74 _done(false) 75 75 { … … 78 78 79 79 virtual Object* clone() const { return new GifImageStream; } 80 virtual bool isSameKindAs( const Object* obj ) const 80 virtual bool isSameKindAs( const Object* obj ) const 81 81 { return dynamic_cast<const GifImageStream*>(obj) != NULL; } 82 82 virtual const char* className() const { return "GifImageStream"; } 83 83 84 virtual void play() 85 { 86 if (!isRunning()) 84 virtual void play() 85 { 86 if (!isRunning()) 87 87 start(); 88 _status=PLAYING; 88 _status=PLAYING; 89 89 } 90 90 … … 93 93 virtual void rewind() { setReferenceTime( 0.0 ); } 94 94 95 virtual void quit( bool waitForThreadToExit=true ) 95 virtual void quit( bool waitForThreadToExit=true ) 96 96 { 97 97 _done = true; … … 108 108 109 109 // Go to a specific position of stream 110 virtual void setReferenceTime( double time ) 110 virtual void setReferenceTime( double time ) 111 111 { 112 112 OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex); … … 131 131 132 132 // Speed up, slow down or back to normal (1.0) 133 virtual void setTimeMultiplier( double m ) 133 virtual void setTimeMultiplier( double m ) 134 134 { 135 135 OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex); … … 138 138 } 139 139 virtual double getTimeMultiplier() const { return _multiplier; } 140 140 141 141 // Not used in GIF animation 142 142 virtual void setVolume(float) {} … … 231 231 } 232 232 233 virtual ~GifImageStream() 233 virtual ~GifImageStream() 234 234 { 235 235 if( isRunning() ) … … 316 316 /* just in case */ 317 317 if (col >= colormapsize) col = 0; 318 318 319 319 if ( col == transparent ) 320 320 { 321 321 // keep pixels of last image if transparent mode is on 322 // this is necessary for GIF animating 322 // this is necessary for GIF animating 323 323 ptr += 3; 324 324 } … … 501 501 } 502 502 503 // Record gif image stream 503 // Record gif image stream 504 504 if ( *obj && obj ) 505 505 { … … 526 526 else transparent = -1; 527 527 528 delaytime = (extension[3]<<8)+extension[2]; // minimum unit 1/100s, so 8 here means 8/100s 528 delaytime = (extension[3]<<8)+extension[2]; // minimum unit 1/100s, so 8 here means 8/100s 529 529 } 530 530 while (extension != NULL) … … 565 565 { 566 566 public: 567 567 568 568 ReaderWriterGIF() 569 569 { 570 570 supportsExtension("gif","GIF Image format"); 571 571 } 572 572 573 573 virtual const char* className() const { return "GIF Image Reader"; } 574 574 … … 593 593 } 594 594 595 // Use GifImageStream to display animate GIFs 595 // Use GifImageStream to display animate GIFs 596 596 if ( gifStream ) 597 597 {
