From 37b8c5d83da69a13ce155c040a90cc6a850dc456 Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Fri, 13 Jul 2012 22:19:04 +0200 Subject: Plotter refactor: removed one plotter abraction layer. --- atari/bitmap.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'atari/bitmap.h') diff --git a/atari/bitmap.h b/atari/bitmap.h index f917f5560..7002a14ee 100755 --- a/atari/bitmap.h +++ b/atari/bitmap.h @@ -19,10 +19,35 @@ #ifndef NS_ATARI_BITMAP_H #define NS_ATARI_BITMAP_H +#include + +/* Flags for init_mfdb function: */ +#define MFDB_FLAG_STAND 0x01 +#define MFDB_FLAG_ZEROMEM 0x02 +#define MFDB_FLAG_NOALLOC 0x04 + #define BITMAP_SHRINK 0 #define BITMAP_GROW 1024 /* Don't realloc when bitmap size shrinks */ #define BITMAP_CLEAR 2048 /* Zero bitmap memory */ + +/* + calculates MFDB compatible rowstride (in number of bits) +*/ +#define MFDB_STRIDE( w ) (((w & 15) != 0) ? (w | 15)+1 : w) + + +/* +Calculate size of an mfdb, + + params: + + bpp: Bits per pixel, + stride: Word aligned rowstride (width) as returned by MFDB_STRIDE, + h: Height in pixels +*/ +#define MFDB_SIZE( bpp, stride, h ) ( ((stride >> 3) * h) * bpp ) + struct bitmap { int width; int height; @@ -41,5 +66,14 @@ void * bitmap_create_ex( int w, int h, short bpp, int rowstride, unsigned int st void bitmap_to_mfdb(void * bitmap, MFDB * out); void * bitmap_realloc( int w, int h, short bpp, int rowstride, unsigned int state, void * bmp ); size_t bitmap_buffer_size( void * bitmap ) ; +/* + setup an MFDB struct and allocate memory for it when it is needed. + If bpp == 0, this function assumes that the MFDB shall point to the screen + and will not allocate any memory (mfdb.fd_addr == 0). + The function will return 0 when the memory allocation fails + ( out of memory), otherwise it returns the size of the mfdb.fd_addr + as number of bytes. +*/ +int init_mfdb(int bpp, int w, int h, uint32_t flags, MFDB * out ); #endif -- cgit v1.2.3