From 7f16a46079af20c1d1602ae591c805da5df8aace Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 24 Dec 1997 14:19:54 +0000 Subject: [PATCH] Aggiunte funzione per istanziare una XI_BITMAP dalle risorse git-svn-id: svn://10.65.10.50/trunk@5790 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- xi/xibitmap.c | 20 ++++++++++++++++++++ xi/xiport.c | 23 +++++++++++++++++++++++ xi/xiport.h | 1 + 3 files changed, 44 insertions(+) diff --git a/xi/xibitmap.c b/xi/xibitmap.c index 95a9dc709..a4d3bc82e 100755 --- a/xi/xibitmap.c +++ b/xi/xibitmap.c @@ -39,6 +39,26 @@ xi_bitmap_create( char *filename, XI_BITMAP_MODE mode ) return bitmap; } +XI_BITMAP * +xi_bitmap_create_res( short id, XI_BITMAP_MODE mode ) +{ + XI_BITMAP *bitmap; + + bitmap = XinMemoryZeroAlloc( sizeof( XI_BITMAP ) ); + if ( id != 0 ) + { + bitmap->xin_bitmap = XinBitmapReadRes( id ); + if ( bitmap->xin_bitmap == NULL ) + { + XinMemoryFree( bitmap ); + return NULL; + } + } + bitmap->mode = mode; + bitmap->ref_count = 1; + return bitmap; +} + XI_BITMAP * xi_bitmap_copy( XI_BITMAP * bitmap ) { diff --git a/xi/xiport.c b/xi/xiport.c index 26c2fa14d..33a45af3d 100755 --- a/xi/xiport.c +++ b/xi/xiport.c @@ -5054,6 +5054,29 @@ XinBitmapRead( char *filename ) /*START*/ } +/*START*/ +/* +this function allocates, and reads a bitmap from the resource file. +*/ +XinBitmap * +XinBitmapReadRes( short id) +{ +/*END*/ + XVT_IMAGE image; + XinBitmap *bitmap; + + if ( ( image = xvt_res_get_image( id ) ) == NULL ) + return NULL; + bitmap = XinMemoryAlloc( sizeof( XinBitmap ) ); + bitmap->image = image; + if ( xin_palette == NULL ) + xin_palette = xvt_palet_create( XVT_PALETTE_USER, NULL ); + xvt_palet_add_colors_from_image( xin_palette, bitmap->image ); + xvt_vobj_set_palet( SCREEN_WIN, xin_palette ); + return bitmap; +/*START*/ +} + /* this function returns the width and height of the specified bitmap. diff --git a/xi/xiport.h b/xi/xiport.h index 8909a4ac7..1b927b8e8 100755 --- a/xi/xiport.h +++ b/xi/xiport.h @@ -818,6 +818,7 @@ extern "C" /* Bitmaps */ void XinBitmapDestroy( XinBitmap * bitmap ); XinBitmap *XinBitmapRead( char *filename ); + XinBitmap *XinBitmapReadRes( short id ); void XinBitmapSizeGet( XinBitmap * bitmap, short *pwidth, short *pheight ); /* Printing */