From 9520ad67fe1435a56078dee76d6f47245b204ad7 Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Sun, 10 Apr 2011 21:47:59 +0000 Subject: cleanupd & comments, fixed clipping of mfdb's svn path=/trunk/netsurf/; revision=12180 --- atari/plot/plotter.c | 59 ++---------------------- atari/plot/plotter.h | 118 ++++++++++++++++++++++------------------------- atari/plot/plotter_vdi.c | 65 ++++++++++++-------------- 3 files changed, 87 insertions(+), 155 deletions(-) (limited to 'atari/plot') diff --git a/atari/plot/plotter.c b/atari/plot/plotter.c index 1532bde4d..9436dbc36 100755 --- a/atari/plot/plotter.c +++ b/atari/plot/plotter.c @@ -40,47 +40,6 @@ #include "atari/misc.h" #include "atari/osspec.h" - -unsigned char rgb_web_pal[216][3] = { - {0x00,0x00,0x00}, {0x33,0x00,0x00}, {0x66,0x00,0x00}, {0x99,0x00,0x00}, {0xcc,0x00,0x00}, {0xff,0x00,0x00}, - {0x00,0x33,0x00}, {0x33,0x33,0x00}, {0x66,0x33,0x00}, {0x99,0x33,0x00}, {0xcc,0x33,0x00}, {0xff,0x33,0x00}, - {0x00,0x66,0x00}, {0x33,0x66,0x00}, {0x66,0x66,0x00}, {0x99,0x66,0x00}, {0xcc,0x66,0x00}, {0xff,0x66,0x00}, - {0x00,0x99,0x00}, {0x33,0x99,0x00}, {0x66,0x99,0x00}, {0x99,0x99,0x00}, {0xcc,0x99,0x00}, {0xff,0x99,0x00}, - {0x00,0xcc,0x00}, {0x33,0xcc,0x00}, {0x66,0xcc,0x00}, {0x99,0xcc,0x00}, {0xcc,0xcc,0x00}, {0xff,0xcc,0x00}, - {0x00,0xff,0x00}, {0x33,0xff,0x00}, {0x66,0xff,0x00}, {0x99,0xff,0x00}, {0xcc,0xff,0x00}, {0xff,0xff,0x00}, - {0x00,0x00,0x33}, {0x33,0x00,0x33}, {0x66,0x00,0x33}, {0x99,0x00,0x33}, {0xcc,0x00,0x33}, {0xff,0x00,0x33}, - {0x00,0x33,0x33}, {0x33,0x33,0x33}, {0x66,0x33,0x33}, {0x99,0x33,0x33}, {0xcc,0x33,0x33}, {0xff,0x33,0x33}, - {0x00,0x66,0x33}, {0x33,0x66,0x33}, {0x66,0x66,0x33}, {0x99,0x66,0x33}, {0xcc,0x66,0x33}, {0xff,0x66,0x33}, - {0x00,0x99,0x33}, {0x33,0x99,0x33}, {0x66,0x99,0x33}, {0x99,0x99,0x33}, {0xcc,0x99,0x33}, {0xff,0x99,0x33}, - {0x00,0xcc,0x33}, {0x33,0xcc,0x33}, {0x66,0xcc,0x33}, {0x99,0xcc,0x33}, {0xcc,0xcc,0x33}, {0xff,0xcc,0x33}, - {0x00,0xff,0x33}, {0x33,0xff,0x33}, {0x66,0xff,0x33}, {0x99,0xff,0x33}, {0xcc,0xff,0x33}, {0xff,0xff,0x33}, - {0x00,0x00,0x66}, {0x33,0x00,0x66}, {0x66,0x00,0x66}, {0x99,0x00,0x66}, {0xcc,0x00,0x66}, {0xff,0x00,0x66}, - {0x00,0x33,0x66}, {0x33,0x33,0x66}, {0x66,0x33,0x66}, {0x99,0x33,0x66}, {0xcc,0x33,0x66}, {0xff,0x33,0x66}, - {0x00,0x66,0x66}, {0x33,0x66,0x66}, {0x66,0x66,0x66}, {0x99,0x66,0x66}, {0xcc,0x66,0x66}, {0xff,0x66,0x66}, - {0x00,0x99,0x66}, {0x33,0x99,0x66}, {0x66,0x99,0x66}, {0x99,0x99,0x66}, {0xcc,0x99,0x66}, {0xff,0x99,0x66}, - {0x00,0xcc,0x66}, {0x33,0xcc,0x66}, {0x66,0xcc,0x66}, {0x99,0xcc,0x66}, {0xcc,0xcc,0x66}, {0xff,0xcc,0x66}, - {0x00,0xff,0x66}, {0x33,0xff,0x66}, {0x66,0xff,0x66}, {0x99,0xff,0x66}, {0xcc,0xff,0x66}, {0xff,0xff,0x66}, - {0x00,0x00,0x99}, {0x33,0x00,0x99}, {0x66,0x00,0x99}, {0x99,0x00,0x99}, {0xcc,0x00,0x99}, {0xff,0x00,0x99}, - {0x00,0x33,0x99}, {0x33,0x33,0x99}, {0x66,0x33,0x99}, {0x99,0x33,0x99}, {0xcc,0x33,0x99}, {0xff,0x33,0x99}, - {0x00,0x66,0x99}, {0x33,0x66,0x99}, {0x66,0x66,0x99}, {0x99,0x66,0x99}, {0xcc,0x66,0x99}, {0xff,0x66,0x99}, - {0x00,0x99,0x99}, {0x33,0x99,0x99}, {0x66,0x99,0x99}, {0x99,0x99,0x99}, {0xcc,0x99,0x99}, {0xff,0x99,0x99}, - {0x00,0xcc,0x99}, {0x33,0xcc,0x99}, {0x66,0xcc,0x99}, {0x99,0xcc,0x99}, {0xcc,0xcc,0x99}, {0xff,0xcc,0x99}, - {0x00,0xff,0x99}, {0x33,0xff,0x99}, {0x66,0xff,0x99}, {0x99,0xff,0x99}, {0xcc,0xff,0x99}, {0xff,0xff,0x99}, - {0x00,0x00,0xcc}, {0x33,0x00,0xcc}, {0x66,0x00,0xcc}, {0x99,0x00,0xcc}, {0xcc,0x00,0xcc}, {0xff,0x00,0xcc}, - {0x00,0x33,0xcc}, {0x33,0x33,0xcc}, {0x66,0x33,0xcc}, {0x99,0x33,0xcc}, {0xcc,0x33,0xcc}, {0xff,0x33,0xcc}, - {0x00,0x66,0xcc}, {0x33,0x66,0xcc}, {0x66,0x66,0xcc}, {0x99,0x66,0xcc}, {0xcc,0x66,0xcc}, {0xff,0x66,0xcc}, - {0x00,0x99,0xcc}, {0x33,0x99,0xcc}, {0x66,0x99,0xcc}, {0x99,0x99,0xcc}, {0xcc,0x99,0xcc}, {0xff,0x99,0xcc}, - {0x00,0xcc,0xcc}, {0x33,0xcc,0xcc}, {0x66,0xcc,0xcc}, {0x99,0xcc,0xcc}, {0xcc,0xcc,0xcc}, {0xff,0xcc,0xcc}, - {0x00,0xff,0xcc}, {0x33,0xff,0xcc}, {0x66,0xff,0xcc}, {0x99,0xff,0xcc}, {0xcc,0xff,0xcc}, {0xff,0xff,0xcc}, - {0x00,0x00,0xff}, {0x33,0x00,0xff}, {0x66,0x00,0xff}, {0x99,0x00,0xff}, {0xcc,0x00,0xff}, {0xff,0x00,0xff}, - {0x00,0x33,0xff}, {0x33,0x33,0xff}, {0x66,0x33,0xff}, {0x99,0x33,0xff}, {0xcc,0x33,0xff}, {0xff,0x33,0xff}, - {0x00,0x66,0xff}, {0x33,0x66,0xff}, {0x66,0x66,0xff}, {0x99,0x66,0xff}, {0xcc,0x66,0xff}, {0xff,0x66,0xff}, - {0x00,0x99,0xff}, {0x33,0x99,0xff}, {0x66,0x99,0xff}, {0x99,0x99,0xff}, {0xcc,0x99,0xff}, {0xff,0x99,0xff}, - {0x00,0xcc,0xff}, {0x33,0xcc,0xff}, {0x66,0xcc,0xff}, {0x99,0xcc,0xff}, {0xcc,0xcc,0xff}, {0xff,0xcc,0xff}, - {0x00,0xff,0xff}, {0x33,0xff,0xff}, {0x66,0xff,0xff}, {0x99,0xff,0xff}, {0xcc,0xff,0xff}, {0xff,0xff,0xff} -}; - - unsigned short vdi_web_pal[216][3] = { {0x000,0x000,0x000}, {0x0c8,0x000,0x000}, {0x190,0x000,0x000}, {0x258,0x000,0x000}, {0x320,0x000,0x000}, {0x3e8,0x000,0x000}, {0x000,0x0c8,0x000}, {0x0c8,0x0c8,0x000}, {0x190,0x0c8,0x000}, {0x258,0x0c8,0x000}, {0x320,0x0c8,0x000}, {0x3e8,0x0c8,0x000}, @@ -217,15 +176,6 @@ struct s_vdi_sysinfo * read_vdi_sysinfo( short vdih, struct s_vdi_sysinfo * info case VDI_CLUT_HARDWARE: { - int i; - unsigned short *tmp_p; -/* it's possible to store the vdi painters: - tmp_p = (unsigned short *)&work_out[16]; - - for (i=0;i<256;i++) { - vdi_index[*tmp_p++] = i; - } -*/ } break; @@ -730,6 +680,7 @@ void plotter_get_clip_grect( GEM_PLOTTER self, GRECT * out ) void plotter_get_visible_grect( GEM_PLOTTER self, GRECT * out ) { + /*todo: !!! */ out->g_x = self->clipping.x0; out->g_y = self->clipping.y0; out->g_w = self->clipping.x1 - self->clipping.x0; @@ -748,7 +699,6 @@ int plotter_std_clip(GEM_PLOTTER self, const struct rect * clip) void plotter_vdi_clip( GEM_PLOTTER self, bool set) { - return; if( set == true ) { struct rect * c = &self->clipping; short vdiflags[58]; @@ -760,12 +710,11 @@ void plotter_vdi_clip( GEM_PLOTTER self, bool set) prev_vdi_clip[3] = vdiflags[48]; newclip[0] = CURFB(self).x + MAX(c->x0, 0); newclip[1] = CURFB(self).y + MAX(c->y0, 0); - newclip[2] = CURFB(self).x + MIN(CURFB(self).vis_w, c->x1 - c->x0)-1; - newclip[3] = CURFB(self).y + MIN(CURFB(self).vis_h, c->y1 - c->y0)-1; + newclip[2] = newclip[0] + MIN(CURFB(self).vis_w-c->x0, c->x1 - c->x0)-1; + newclip[3] = newclip[1] + MIN(CURFB(self).vis_h-c->y1, c->y1 - c->y0)-1; vs_clip( self->vdi_handle, 1, (short*)&newclip ); } else { - short set = 1; - vs_clip( self->vdi_handle, set, (short *)&prev_vdi_clip ); + vs_clip( self->vdi_handle, 1, (short *)&prev_vdi_clip ); } } diff --git a/atari/plot/plotter.h b/atari/plot/plotter.h index 394fdfb4f..3da927b60 100755 --- a/atari/plot/plotter.h +++ b/atari/plot/plotter.h @@ -48,23 +48,26 @@ #endif #define MAX_FRAMEBUFS 0x010 -#define C2P (1<<0) /* C2P convert buffer 1 to buffer 2 */ +#define C2P (1<<0) /* C2P convert buffer 1 to buffer 2 */ /* TODO: implement offscreen buffer switch */ + /* Plotter Flags: */ -#define PLOT_FLAG_OFFSCREEN 0x01 -#define PLOT_FLAG_LOCKED 0x02 -#define PLOT_FLAG_DITHER 0x04 -#define PLOT_FLAG_TRANS 0x08 +#define PLOT_FLAG_OFFSCREEN 0x01 /* offsreen plotter should set/accept this flag */ +#define PLOT_FLAG_LOCKED 0x02 /* plotter should set this flag during screen updates */ +#define PLOT_FLAG_DITHER 0x04 /* true if the plotter shall dither images */ +#define PLOT_FLAG_TRANS 0x08 /* true if the plotter supports transparent operations */ -#define MFDB_FLAG_STAND 0x01 +/* Flags for init_mfdb function: */ +#define MFDB_FLAG_STAND 0x01 #define MFDB_FLAG_ZEROMEM 0x02 #define MFDB_FLAG_NOALLOC 0x04 /* Error codes: */ -#define ERR_BUFFERSIZE_EXCEEDS_SCREEN 1 -#define ERR_NO_MEM 2 -#define ERR_PLOTTER_NOT_AVAILABLE 3 +#define ERR_BUFFERSIZE_EXCEEDS_SCREEN 1 /* The buffer allocated is larger than the screen */ +#define ERR_NO_MEM 2 /* Not enough memory for requested operation */ +#define ERR_PLOTTER_NOT_AVAILABLE 3 /* invalid plotter driver name passed */ +/* Error code translations: */ static const char * plot_error_codes[] = { "None", @@ -73,14 +76,13 @@ static const char * plot_error_codes[] = "ERR_PLOTTER_NOT_AVAILABLE" }; -/* Grapics & Font Plotter Objects: */ +/* Grapics & Font Plotter "Objects": */ typedef struct s_font_plotter * FONT_PLOTTER; typedef struct s_gem_plotter * GEM_PLOTTER; typedef struct s_font_plotter * GEM_FONT_PLOTTER; /* for public use ... */ /* declaration of font plotter member functions: (_fpmf_ prefix) */ - typedef int (*_fpmf_str_width)( FONT_PLOTTER self, const plot_font_style_t *fstyle, const char * str, size_t length, int * width); typedef int (*_fpmf_str_split)( FONT_PLOTTER self, const plot_font_style_t *fstyle, @@ -93,6 +95,7 @@ typedef int (*_fpmf_text)( FONT_PLOTTER self, int x, int y, const char *text, size_t length, const plot_font_style_t *fstyle); typedef int (*_fpmf_dtor)( FONT_PLOTTER self ); +/* prototype of the font plotter "object" */ struct s_font_plotter { char * name; @@ -112,30 +115,29 @@ struct s_font_plotter struct rect; struct s_vdi_sysinfo { - short vdi_handle; /* vdi handle */ - short scr_w; /* resolution horz. */ - short scr_h; /* resolution vert. */ - short scr_bpp; /* bits per pixel */ - int colors; /* 0=hiclor, 2=mono */ - unsigned long hicolors; /* if colors = 0 */ - short pixelsize; /* bytes per pixel */ - unsigned short pitch; /* row pitch */ - unsigned short vdiformat; /* pixel format */ - unsigned short clut; /* type of clut support */ - void * screen; /* pointer to screen, or NULL */ - unsigned long screensize; /* size of screen (in bytes) */ - unsigned long mask_r; /* color masks */ + short vdi_handle; /* vdi handle */ + short scr_w; /* resolution horz. */ + short scr_h; /* resolution vert. */ + short scr_bpp; /* bits per pixel */ + int colors; /* 0=hiclor, 2=mono */ + unsigned long hicolors; /* if colors = 0 */ + short pixelsize; /* bytes per pixel */ + unsigned short pitch; /* row pitch */ + unsigned short vdiformat; /* pixel format */ + unsigned short clut; /* type of clut support */ + void * screen; /* pointer to screen, or NULL */ + unsigned long screensize;/* size of screen (in bytes) */ + unsigned long mask_r; /* color masks */ unsigned long mask_g; unsigned long mask_b; unsigned long mask_a; - short maxintin; /* maximum pxy items */ - short maxpolycoords; /* max coords for p_line etc. */ - unsigned long EdDiVersion; /* EdDi Version or 0 */ - bool rasterscale; /* raster scaling support */ + short maxintin; /* maximum pxy items */ + short maxpolycoords; /* max coords for p_line etc. */ + unsigned long EdDiVersion;/* EdDi Version or 0 */ + bool rasterscale; /* raster scaling support */ }; - struct s_frame_buf { short x; @@ -178,7 +180,7 @@ typedef int (*_pmf_text)(GEM_PLOTTER self, int x, int y, const char *text, size_ typedef int (*_pmf_dtor)(GEM_PLOTTER self); - +/* this is the prototype of an plotter "object" */ struct s_gem_plotter { char * name; /* name that identifies the Plotter */ @@ -218,12 +220,14 @@ struct s_gem_plotter }; +/* these 2 structs hold info about an specific driver. */ +/* a table in plotter.c defines all the available plotters */ struct s_driver_table_entry { - char * name; - int (*ctor)( GEM_PLOTTER self ); - int flags; - int max_bpp; + char * name; /* name (unique) */ + int (*ctor)( GEM_PLOTTER self ); /* pointer to ctor of the plotter */ + int flags; /* a bitmask containing info about supported operations */ + int max_bpp; /* the maximum supported screen depth of the plotter */ }; struct s_font_driver_table_entry @@ -336,35 +340,8 @@ int plotter_std_clip(GEM_PLOTTER self, const struct rect * clip); */ void plotter_vdi_clip( GEM_PLOTTER self, bool set); + #define PLOTTER_IS_LOCKED(plotter) ( plotter->private_flags & PLOTTER_FLAG_LOCKED ) -#define FILL_PLOTTER_VTAB( p ) \ - p->dtor = dtor;\ - p->resize= resize;\ - p->move = move;\ - p->lock = lock;\ - p->unlock = unlock;\ - p->update_region = update_region;\ - p->update_screen_region = update_screen_region;\ - p->update_screen = update_screen;\ - p->put_pixel = put_pixel;\ - p->copy_rect = copy_rect; \ - p->clip = clip;\ - p->arc = arc;\ - p->disc = disc;\ - p->line = line;\ - p->rectangle = rectangle;\ - p->polygon = polygon;\ - p->path = path;\ - p->bitmap = bitmap;\ - p->text = text;\ - - -#define FILL_FONT_PLOTTER_VTAB( p ) \ - p->dtor = dtor;\ - p->str_width = str_width;\ - p->str_split = str_split;\ - p->pixel_position = pixel_position;\ - p->text = text;\ #define CURFB( p ) \ p->fbuf[p->cfbi] @@ -372,11 +349,24 @@ void plotter_vdi_clip( GEM_PLOTTER self, bool set); #define FIRSTFB( p ) \ p->fbuf[0] -#define OFFSET_WEB_PAL 16 +/* some Well known indexes into the VDI palette */ +/* common indexes into the VDI palette */ +/* (only used when running with 256 colors or less ) */ +#define OFFSET_WEB_PAL 16 #define OFFSET_CUST_PAL 232 -#define OFFSET_CUSTOM_COLOR 255 +#define OFFSET_CUSTOM_COLOR 255 /* this one is used by the TC renderer */ #define RGB_TO_VDI(c) rgb_to_666_index( (c&0xFF),(c&0xFF00)>>8,(c&0xFF0000)>>16)+OFFSET_WEB_PAL #define ABGR_TO_RGB(c) ( ((c&0xFF)<<16) | (c&0xFF00) | ((c&0xFF0000)>>16) ) << 8 + +/* calculate MFDB compatible rowstride (in number of bits) */ +#define MFDB_STRIDE( w ) (((w & 15) != 0) ? (w | 15)+1 : w) + +/* +Calculate size of an mfdb, params: + Bits per pixel, + Word aligned rowstride (width) as returned by MFDB_STRIDE, + height in pixels +*/ #define MFDB_SIZE( bpp, stride, h ) ( ((stride >> 3) * h) * bpp ) #endif diff --git a/atari/plot/plotter_vdi.c b/atari/plot/plotter_vdi.c index 4098e0e4e..819e9c593 100755 --- a/atari/plot/plotter_vdi.c +++ b/atari/plot/plotter_vdi.c @@ -80,15 +80,6 @@ static HermesHandle hermes_cnv_h; /* hermes converter instance handle */ static HermesHandle hermes_res_h; int32 * hermes_pal_p; -/* -static inline void vs_rgbcolor(short vdih, uint32_t cin ) -{ - unsigned short c[4]; - rgb_to_vdi1000( &cin, &c ); - vs_color( vdih, OFFSET_CUST_PAL, &c[0] ); -} -*/ - static inline void vsl_rgbcolor( short vdih, uint32_t cin ) { if( vdi_sysinfo.scr_bpp > 8 ) { @@ -194,7 +185,6 @@ int ctor_plotter_vdi(GEM_PLOTTER self ) } if( i >= OFFSET_CUST_PAL ) { /* here we could define 22 additional colors... */ - /* rgb_to_vdi1000( &rgb_font_pal[i-OFFSET_FONT_PAL], &pal[i] ); */ } vs_color( self->vdi_handle, i, &pal[i][0] ); } @@ -205,6 +195,7 @@ int ctor_plotter_vdi(GEM_PLOTTER self ) unsigned char * col; assert( Hermes_Init() ); +/* hermes_pal_h = Hermes_PaletteInstance(); hermes_pal_p = Hermes_PaletteGet(hermes_pal_h); assert(hermes_pal_p); @@ -221,10 +212,10 @@ int ctor_plotter_vdi(GEM_PLOTTER self ) col[1] = rgb_web_pal[i-OFFSET_WEB_PAL][1]; col[2] = rgb_web_pal[i-OFFSET_WEB_PAL][2]; } - /* font colors missing */ col[3] = 0; } Hermes_PaletteInvalidateCache(hermes_pal_h); +*/ unsigned long flags = ( self->flags & PLOT_FLAG_DITHER ) ? HERMES_CONVERT_DITHER : 0; hermes_cnv_h = Hermes_ConverterInstance( flags ); @@ -271,7 +262,7 @@ static int dtor( GEM_PLOTTER self ) /* close Hermes stuff: */ Hermes_ConverterReturn( hermes_cnv_h ); - Hermes_PaletteReturn( hermes_pal_h ); + /* Hermes_PaletteReturn( hermes_pal_h ); */ Hermes_Done(); if( self->priv_data != NULL ){ @@ -667,6 +658,7 @@ static int bitmap_resize( GEM_PLOTTER self, struct bitmap * img, int nw, int nh bitmap_destroy( img->resized ); img->resized = NULL; } else { + /* the bitmap is already resized */ return( 0 ); } } @@ -709,14 +701,6 @@ static int bitmap_resize( GEM_PLOTTER self, struct bitmap * img, int nw, int nh return( 0 ); } -/* -* Capture the screen at x,y location -* param self instance -* param x absolute screen coords -* param y absolute screen coords -* param w width -* param h height -*/ static struct bitmap * snapshot_create(GEM_PLOTTER self, int x, int y, int w, int h) { MFDB scr; @@ -836,7 +820,7 @@ static void snapshot_destroy( GEM_PLOTTER self ) } } -/* convert bitmap to framebuffer format */ +/* convert bitmap to the virutal (chunked) framebuffer format */ static int convert_bitmap( GEM_PLOTTER self, struct bitmap * img, int x, @@ -1020,20 +1004,16 @@ static int plot_mfdb (GEM_PLOTTER self, GRECT * loc, MFDB * insrc, uint32_t flag MFDB * src; short pxy[8]; short pxyclip[4]; - short c[2] = {OFFSET_CUSTOM_COLOR, WHITE}; - plotter_vdi_clip(self, true); + short c[2] = {OFFSET_CUSTOM_COLOR, WHITE}; + GRECT off; + plotter_get_clip_grect( self, &off ); + if( rc_intersect(loc, &off) == 0 ){ + return( 1 ); + } + init_mfdb( 0, loc->g_w, loc->g_h, 0, &screen ); - pxy[0] = 0; - pxy[1] = 0; - pxy[2] = loc->g_w -1; - pxy[3] = loc->g_h -1; - pxy[4] = CURFB(self).x + loc->g_x; - pxy[5] = CURFB(self).y + loc->g_y; - pxy[6] = pxy[4] + loc->g_w -1; - pxy[7] = pxy[5] + loc->g_h -1; - if( insrc->fd_stand ){ int size = init_mfdb( insrc->fd_nplanes, loc->g_w, loc->g_h, MFDB_FLAG_NOALLOC, @@ -1057,17 +1037,30 @@ static int plot_mfdb (GEM_PLOTTER self, GRECT * loc, MFDB * insrc, uint32_t flag src = insrc; } + pxy[0] = off.g_x - loc->g_x; + pxy[1] = off.g_y - loc->g_y; + pxy[2] = pxy[0] + off.g_w - 1; + pxy[3] = pxy[1] + off.g_h - 1; + pxy[4] = CURFB(self).x + off.g_x; + pxy[5] = CURFB(self).y + off.g_y; + pxy[6] = pxy[4] + off.g_w-1; + pxy[7] = pxy[5] + off.g_h-1; + + if( flags & PLOT_FLAG_TRANS && src->fd_nplanes == 1){ vrt_cpyfm( self->vdi_handle, MD_TRANS, (short*)pxy, src, &screen, (short*)&c ); } else { - + /* this method only plots transparent bitmaps, right now... */ } + + /* TODO: shrink conversion buffer? + no, it requires time. if( insrc->fd_stand ){ - // TODO: shrink conv buffer + } - - plotter_vdi_clip(self, false); + */ + return( 1 ); } -- cgit v1.2.3