[Scummvm-cvs-logs] CVS: scummvm/sword2/driver animation.cpp,1.30,1.31 animation.h,1.24,1.25

Max Horn fingolfin at users.sourceforge.net
Sun Mar 21 17:39:04 CET 2004


Update of /cvsroot/scummvm/scummvm/sword2/driver
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13283/sword2/driver

Modified Files:
	animation.cpp animation.h 
Log Message:
move commong code into separate source file (more could be done, but it's a start)

Index: animation.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/driver/animation.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- animation.cpp	21 Mar 2004 18:49:04 -0000	1.30
+++ animation.cpp	22 Mar 2004 01:28:45 -0000	1.31
@@ -32,29 +32,13 @@
 #include "sword2/driver/menu.h"
 #include "sword2/driver/render.h"
 
-#define MOVIE_WIDTH		640
-#define MOVIE_HEIGHT	480
-
 namespace Sword2 {
 
 AnimationState::AnimationState(Sword2Engine *vm)
-	: _vm(vm), _snd(_vm->_mixer), _sys(_vm->_system) {
+	: BaseAnimationState(_vm->_mixer, _vm->_system, 640, 480), _vm(vm) {
 }
 
 AnimationState::~AnimationState() {
-#ifdef USE_MPEG2
-	_snd->stopHandle(bgSound);
-	if (decoder)
-		mpeg2_close(decoder);
-	delete mpgfile;
-	delete sndfile;
-#ifndef BACKEND_8BIT
-	_sys->hide_overlay();
-	free(overlay);
-#endif
-	if (bgSoundStream)
-		delete bgSoundStream;
-#endif
 }
 
 bool AnimationState::init(const char *name) {
@@ -163,70 +147,6 @@
 
 
 #ifdef BACKEND_8BIT
-/**
- * Build 'Best-Match' RGB lookup table
- */
-void AnimationState::buildLookup(int p, int lines) {
-	int y, cb;
-	int r, g, b, ii;
-
-	if (p >= maxPalnum)
-		return;
-  
-	if (p != curpal) {
-		curpal = p;
-		cr = 0;
-		pos = 0;
-	}
-
-	if (cr > BITDEPTH)
-		return;
-
-	for (ii = 0; ii < lines; ii++) {
-		r = (-16 * 256 + (int) (256 * 1.596) * ((cr << SHIFT) - 128)) / 256;
-		for (cb = 0; cb <= BITDEPTH; cb++) {
-			g = (-16 * 256 - (int) (0.813 * 256) * ((cr << SHIFT) - 128) - (int) (0.391 * 256) * ((cb << SHIFT) - 128)) / 256;
-			b = (-16 * 256 + (int) (2.018 * 256) * ((cb << SHIFT) - 128)) / 256;
-
-			for (y = 0; y <= BITDEPTH; y++) {
-				int idx, bst = 0;
-				int dis = 2 * SQR(r - palettes[p].pal[0]) + 4 * SQR(g - palettes[p].pal[1]) + SQR(b - palettes[p].pal[2]);
-
-				for (idx = 1; idx < 256; idx++) {
-					long d2 = 2 * SQR(r - palettes[p].pal[4 * idx]) + 4 * SQR(g - palettes[p].pal[4 * idx + 1]) + SQR(b - palettes[p].pal[4 * idx + 2]);
-					if (d2 < dis) {
-						bst = idx;
-						dis = d2;
-					}
-				}
-				lut2[pos++] = bst;
-	
-				r += (1 << SHIFT);
-				g += (1 << SHIFT);
-				b += (1 << SHIFT);
-			}
-			r -= (BITDEPTH+1)*(1 << SHIFT);
-		}
-		cr++;
-		if (cr > BITDEPTH)
-			return;
-	}
-}
-
-bool AnimationState::checkPaletteSwitch() {
-	// if we have reached the last image with this palette, switch to new one
-	if (framenum == palettes[palnum].end) {
-		unsigned char *l = lut2;
-		palnum++;
-		setPalette(palettes[palnum].pal);
-		lutcalcnum = (BITDEPTH + palettes[palnum].end - (framenum + 1) + 2) / (palettes[palnum].end - (framenum + 1) + 2);
-		lut2 = lut;
-		lut = l;
-		return true;
-	}
-
-	return false;
-}
 
 void AnimationState::setPalette(byte *pal) {
 	_vm->_graphics->setPalette(0, 256, pal, RDPAL_INSTANT);
@@ -234,64 +154,6 @@
 
 #else
 
-OverlayColor *AnimationState::lookup = 0;
-
-void AnimationState::buildLookup() {
-	if (lookup)
-		return;
-
-	lookup = (OverlayColor *)calloc((BITDEPTH+1) * (BITDEPTH+1) * 256, sizeof(OverlayColor));
-
-	int y, cb, cr;
-	int r, g, b;
-	int pos = 0;
-
-	for (cr = 0; cr <= BITDEPTH; cr++) {
-		for (cb = 0; cb <= BITDEPTH; cb++) {
-			for (y = 0; y < 256; y++) {
-				r = ((y - 16) * 256 + (int) (256 * 1.596) * ((cr << SHIFT) - 128)) / 256;
-				g = ((y - 16) * 256 - (int) (0.813 * 256) * ((cr << SHIFT) - 128) - (int) (0.391 * 256) * ((cb << SHIFT) - 128)) / 256;
-				b = ((y - 16) * 256 + (int) (2.018 * 256) * ((cb << SHIFT) - 128)) / 256;
-
-				if (r < 0) r = 0;
-				else if (r > 255) r = 255;
-				if (g < 0) g = 0;
-				else if (g > 255) g = 255;
-				if (b < 0) b = 0;
-				else if (b > 255) b = 255;
-
-				lookup[pos++] = _sys->RGBToColor(r, g, b);
-			}
-		}
-	}
-}
-
-void AnimationState::plotYUV(OverlayColor *lut, int width, int height, byte *const *dat) {
-
-	OverlayColor *ptr = overlay + (MOVIE_HEIGHT - height) / 2 * MOVIE_WIDTH + (MOVIE_WIDTH - width) / 2;
-
-	int x, y;
-
-	int ypos = 0;
-	int cpos = 0;
-	int linepos = 0;
-
-	for (y = 0; y < height; y += 2) {
-		for (x = 0; x < width; x += 2) {
-			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * (BITDEPTH+1)) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * 256;
-			cpos++;
-
-			ptr[linepos               ] = lut[i + dat[0][        ypos  ]];
-			ptr[RENDERWIDE + linepos++] = lut[i + dat[0][width + ypos++]];
-			ptr[linepos               ] = lut[i + dat[0][        ypos  ]];
-			ptr[RENDERWIDE + linepos++] = lut[i + dat[0][width + ypos++]];
-
-		}
-		linepos += (2 * MOVIE_WIDTH - width);
-		ypos += width;
-	}
-}
-
 void AnimationState::drawTextObject(SpriteInfo *s, uint8 *src) {
 	OverlayColor *dst = overlay + RENDERWIDE * (s->y) + s->x;
 
@@ -666,7 +528,7 @@
 		memset(_vm->_graphics->_buffer, 0, _vm->_graphics->_screenWide * MENUDEEP);
 
 		uint8 msg[] = "Cutscene - Narration Only: Press ESC to exit, or visit www.scummvm.org to download cutscene videos";
-		Memory *data = _vm->_fontRenderer->makeTextSprite(msg, MOVIE_WIDTH, 255, _vm->_speechFontId);
+		Memory *data = _vm->_fontRenderer->makeTextSprite(msg, RENDERWIDE, 255, _vm->_speechFontId);
 		FrameHeader *frame = (FrameHeader *) data->ad;
 		SpriteInfo msgSprite;
 		uint8 *msgSurface;

Index: animation.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/driver/animation.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- animation.h	21 Mar 2004 21:20:25 -0000	1.24
+++ animation.h	22 Mar 2004 01:28:45 -0000	1.25
@@ -29,66 +29,11 @@
 
 namespace Sword2 {
 
-#ifdef BACKEND_8BIT
-#define SQR(x) ((x) * (x))
-#define SHIFT 3
-#else
-#define SHIFT 1
-#endif
-
-#define BITDEPTH (1 << (8 - SHIFT))
-#define ROUNDADD (1 << (SHIFT - 1))
-
-#define BUFFER_SIZE 4096
-
-class AnimationState {
+class AnimationState : public ::Graphics::BaseAnimationState {
 private:
 	Sword2Engine *_vm;
-	SoundMixer *_snd;
-	OSystem *_sys;
-
-	uint framenum;
-	uint frameskipped;
-	int ticks;
-
-#ifdef USE_MPEG2
-	mpeg2dec_t *decoder;
-	const mpeg2_info_t *info;
-#endif
-
-	File *mpgfile;
-	File *sndfile;
-
-	byte buffer[BUFFER_SIZE];
-
-	PlayingSoundHandle bgSound;
-	AudioStream *bgSoundStream;
-
-#ifdef BACKEND_8BIT
-	int palnum;
-	int maxPalnum;
-
-	byte lookup[2][(BITDEPTH+1) * (BITDEPTH+1) * (BITDEPTH+1)];
-	byte *lut;
-	byte *lut2;
-	int lutcalcnum;
-
-	int curpal;
-	int cr;
-	int pos;
-
-	struct {
-		uint cnt;
-		uint end;
-		byte pal[4 * 256];
-	} palettes[50];
-#else
-	static OverlayColor *lookup;
-	OverlayColor *overlay;
-#endif
 
 public:
-
 	AnimationState(Sword2Engine *vm);
 	~AnimationState();
 
@@ -104,12 +49,7 @@
 private:
 
 #ifdef BACKEND_8BIT
-	void buildLookup(int p, int lines);
-	bool checkPaletteSwitch();
 	void setPalette(byte *pal);
-#else
-	void buildLookup(void);
-	void plotYUV(OverlayColor *lut, int width, int height, byte *const *dat);
 #endif
 };
 





More information about the Scummvm-git-logs mailing list