diff options
author | James Brown | 2004-11-11 13:37:35 +0000 |
---|---|---|
committer | James Brown | 2004-11-11 13:37:35 +0000 |
commit | 1f7ccd02938a1e418bf83ed44014631187df7fcb (patch) | |
tree | 4520666f4533c081d991932bdb6cb81ae9f0fe7c /kyra/wsamovie.h | |
parent | e67ffaaff0c95a25580db000e4fc1cc9ae81940c (diff) | |
download | scummvm-rg350-1f7ccd02938a1e418bf83ed44014631187df7fcb.tar.gz scummvm-rg350-1f7ccd02938a1e418bf83ed44014631187df7fcb.tar.bz2 scummvm-rg350-1f7ccd02938a1e418bf83ed44014631187df7fcb.zip |
Bring kyra up-to-date with patch 1051358
svn-id: r15786
Diffstat (limited to 'kyra/wsamovie.h')
-rw-r--r-- | kyra/wsamovie.h | 69 |
1 files changed, 61 insertions, 8 deletions
diff --git a/kyra/wsamovie.h b/kyra/wsamovie.h index 2f23a5c4c2..62b7b8489d 100644 --- a/kyra/wsamovie.h +++ b/kyra/wsamovie.h @@ -31,30 +31,42 @@ namespace Kyra { public: - virtual ~Movie() {} + virtual ~Movie() { _transparency = -1; _ownPalette = 0; _frameCount = 0; } + virtual void renderFrame(uint8* plane, uint16 planepitch, uint16 planeheight, uint16 frame) = 0; virtual const uint8* loadFrame(uint16 frame, uint16* width = 0, uint16* height = 0) = 0; virtual uint16 countFrames(void) { return _frameCount; } + // could be deleted(not imdiantly maybe it's needed sometime) + virtual void transparency(int16 color) { _transparency = color; } + virtual void position(uint16 x, uint16 y) = 0; + virtual bool hasPalette(void) { return (_ownPalette != 0); } virtual Palette* palette(void) { return _ownPalette; } + + virtual bool looping(void) { return false; } + virtual uint32 frameChange(void) { return 100; } + virtual void setImageBackground(uint8* plane, uint16 planepitch, uint16 height) {}; protected: + int16 _transparency; uint16 _frameCount; Palette* _ownPalette; }; // movie format for Kyrandia 1 - // there is also a new WSA Format for Kyrandia 2 - // which i will implement in future class WSAMovieV1 : public Movie { public: - WSAMovieV1(uint8* data, uint32 size); + WSAMovieV1(uint8* data, uint32 size, uint8 gameid); ~WSAMovieV1(); + void renderFrame(uint8* plane, uint16 planepitch, uint16 planeheight, uint16 frame); const uint8* loadFrame(uint16 frame, uint16* width, uint16* height); + void setImageBackground(uint8* plane, uint16 planepitch, uint16 height); + + void position(uint16 x, uint16 y) { _wsaHeader._xPos = x; _wsaHeader._yPos = y; } protected: uint8* _buffer; @@ -62,19 +74,60 @@ namespace Kyra { #pragma START_PACK_STRUCTS struct WSAHeader { uint16 _numFrames; // All right + uint16 _width; // All right + uint16 _height; // All right + uint8 _xPos; // is wrong + uint8 _yPos; // is wrong + uint16 _delta; // should be right + uint16 _type; // should be right + } GCC_PACK _wsaHeader; +#pragma END_PACK_STRUCTS + + uint32* _offsetTable; + + uint8* _currentFrame; + uint16 _prefetchedFrame; + + uint8* _background; // only a pointer to the screen + uint16 _backWidth, _backHeight; + }; + + // movie format for Kyrandia 2+ + class WSAMovieV2 : public Movie { + + public: + WSAMovieV2(uint8* data, uint32 size); + ~WSAMovieV2(); + + void renderFrame(uint8* plane, uint16 planepitch, uint16 planeheight, uint16 frame); + const uint8* loadFrame(uint16 frame, uint16* width, uint16* height); + void setImageBackground(uint8* plane, uint16 planepitch, uint16 height); + + void position(uint16 x, uint16 y) { _wsaHeader._xPos = x; _wsaHeader._yPos = y; } + bool looping(void) { return _looping; } + protected: + + uint8* _buffer; + + struct WSAHeader { + uint16 _numFrames; // All right uint16 _width; // should be right uint16 _height; // should be right - uint8 _xPos; // could be wrong - uint8 _yPos; // could be wrong + uint16 _xPos; // could be wrong + uint16 _yPos; // could be wrong uint16 _delta; // could be wrong uint16 _type; // should be right } GCC_PACK _wsaHeader; -#pragma END_PACK_STRUCTS - + uint32* _offsetTable; uint8* _currentFrame; uint16 _prefetchedFrame; + + uint8* _background; // only a pointer to the screen + uint16 _backWidth, _backHeight; + + bool _looping; }; } // end of namespace Kyra |