aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/cel_decoder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pink/cel_decoder.cpp')
-rw-r--r--engines/pink/cel_decoder.cpp60
1 files changed, 13 insertions, 47 deletions
diff --git a/engines/pink/cel_decoder.cpp b/engines/pink/cel_decoder.cpp
index 0bdba49a31..fc8918e23e 100644
--- a/engines/pink/cel_decoder.cpp
+++ b/engines/pink/cel_decoder.cpp
@@ -53,20 +53,6 @@ bool CelDecoder::loadStream(Common::SeekableReadStream *stream) {
return true;
}
-int32 CelDecoder::getX(){
- CelVideoTrack *track = (CelVideoTrack*) getTrack(0);
- if (!track)
- return -1;
- return track->getX();
-}
-
-int32 CelDecoder::getY() {
- CelVideoTrack *track = (CelVideoTrack*) getTrack(0);
- if (!track)
- return -1;
- return track->getY();
-}
-
uint16 CelDecoder::getTransparentColourIndex() {
CelVideoTrack *track = (CelVideoTrack*) getTrack(0);
@@ -89,21 +75,6 @@ Common::Point CelDecoder::getCenter() {
return track->getCenter();
}
-Common::Rect &CelDecoder::getRectangle() {
- CelVideoTrack *track = (CelVideoTrack*) getTrack(0);
- return track->getRect();
-}
-
-void CelDecoder::setX(int32 x) {
- CelVideoTrack *track = (CelVideoTrack*) getTrack(0);
- track->setX(x);
-}
-
-void CelDecoder::setY(int32 y) {
- CelVideoTrack *track = (CelVideoTrack*) getTrack(0);
- track->setY(y);
-}
-
void CelDecoder::skipFrame() {
CelVideoTrack *track = (CelVideoTrack*) getTrack(0);
track->skipFrame();
@@ -139,7 +110,6 @@ void CelDecoder::CelVideoTrack::readPrefixChunk() {
_fileStream->skip(subchunkSize - 6);
break;
}
- _rect = Common::Rect::center(_center.x, _center.y, _surface->w, _surface->h);
}
void CelDecoder::CelVideoTrack::readHeader() {
@@ -157,14 +127,6 @@ void CelDecoder::CelVideoTrack::readHeader() {
_fileStream->seek(_offsetFrame1);
}
-int32 CelDecoder::CelVideoTrack::getX() const {
- return (_center.x - getWidth() / 2) < 0 ? 0 : _center.x - getWidth() / 2;
-}
-
-int32 CelDecoder::CelVideoTrack::getY() const {
- return (_center.y - getHeight() / 2) < 0 ? 0 : _center.y - getHeight() / 2;
-}
-
uint16 CelDecoder::CelVideoTrack::getTransparentColourIndex() {
return _transparentColourIndex;
}
@@ -177,10 +139,6 @@ Common::Point CelDecoder::CelVideoTrack::getCenter() {
return _center;
}
-Common::Rect &CelDecoder::CelVideoTrack::getRect() {
- return _rect;
-}
-
#define FRAME_TYPE 0xF1FA
void CelDecoder::CelVideoTrack::skipFrame() {
@@ -240,12 +198,20 @@ const Graphics::Surface *CelDecoder::CelVideoTrack::decodeNextFrame() {
return _surface;
}
-void CelDecoder::CelVideoTrack::setX(int32 x) {
- _center.x = x ;//+ getWidth() / 2;
-}
+bool CelDecoder::CelVideoTrack::rewind() {
+ // this method is overriden for 2 reasons:
+ // 1) bug in Flic rewind(curFrame)
+ // 2) I changed behaviour of endOfTrack
+ _nextFrameStartTime = 0;
+
+ if (getCurFrame() >= getFrameCount() - 1 && _fileStream->pos() < _fileStream->size())
+ _atRingFrame = true;
+ else
+ _fileStream->seek(_offsetFrame1);
-void CelDecoder::CelVideoTrack::setY(int32 y) {
- _center.y = y;//+ getHeight() / 2;
+ _curFrame = -1;
+ _frameDelay = _startFrameDelay;
+ return true;
}
} // End of namepsace Pink