src/blitter/32bpp_anim.hpp
author rubidium
Wed, 07 May 2008 21:09:51 +0000
branchnoai
changeset 10455 22c441f5adf9
parent 9703 d2a6acdbd665
child 11126 72d4c9314c72
permissions -rw-r--r--
(svn r12997) [NoAI] -Sync: with trunk r12895:12996.
9629
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
     1
/* $Id$ */
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
     2
10455
22c441f5adf9 (svn r12997) [NoAI] -Sync: with trunk r12895:12996.
rubidium
parents: 9703
diff changeset
     3
/** @file 32bpp_anim.hpp A 32 bpp blitter with animation support. */
9629
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
     4
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
     5
#ifndef BLITTER_32BPP_ANIM_HPP
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
     6
#define BLITTER_32BPP_ANIM_HPP
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
     7
9703
d2a6acdbd665 (svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents: 9629
diff changeset
     8
#include "32bpp_optimized.hpp"
9629
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
     9
#include "factory.hpp"
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    10
9703
d2a6acdbd665 (svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents: 9629
diff changeset
    11
class Blitter_32bppAnim : public Blitter_32bppOptimized {
9629
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    12
private:
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    13
	uint8 *anim_buf; ///< In this buffer we keep track of the 8bpp indexes so we can do palette animation
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    14
	int anim_buf_width;
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    15
	int anim_buf_height;
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    16
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    17
public:
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    18
	Blitter_32bppAnim() :
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    19
		anim_buf(NULL),
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    20
		anim_buf_width(0),
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    21
		anim_buf_height(0)
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    22
	{}
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    23
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    24
	/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    25
	/* virtual */ void DrawColorMappingRect(void *dst, int width, int height, int pal);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    26
	/* virtual */ void SetPixel(void *video, int x, int y, uint8 color);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    27
	/* virtual */ void SetPixelIfEmpty(void *video, int x, int y, uint8 color);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    28
	/* virtual */ void DrawRect(void *video, int width, int height, uint8 color);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    29
	/* virtual */ void CopyFromBuffer(void *video, const void *src, int width, int height);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    30
	/* virtual */ void CopyToBuffer(const void *video, void *dst, int width, int height);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    31
	/* virtual */ void ScrollBuffer(void *video, int &left, int &top, int &width, int &height, int scroll_x, int scroll_y);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    32
	/* virtual */ int BufferSize(int width, int height);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    33
	/* virtual */ void PaletteAnimate(uint start, uint count);
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    34
	/* virtual */ Blitter::PaletteAnimation UsePaletteAnimation();
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    35
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    36
	/* virtual */ const char *GetName() { return "32bpp-anim"; }
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    37
};
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    38
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    39
class FBlitter_32bppAnim: public BlitterFactory<FBlitter_32bppAnim> {
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    40
public:
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    41
	/* virtual */ const char *GetName() { return "32bpp-anim"; }
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    42
	/* virtual */ const char *GetDescription() { return "32bpp Animation Blitter (palette animation)"; }
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    43
	/* virtual */ Blitter *CreateInstance() { return new Blitter_32bppAnim(); }
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    44
};
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    45
66dde6412125 (svn r10350) [NoAI] -Sync with trunk r10194:10349
glx
parents:
diff changeset
    46
#endif /* BLITTER_32BPP_ANIM_HPP */