diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2024-11-14 19:35:45 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2024-11-14 19:35:45 +0100 |
commit | df5520aa2dae5b3ce7abf8733dcdd152898af163 (patch) | |
tree | 00d3047bfb14f682bfb5a21010c731ed649bfed7 /app/wlib/gtklib/bitmap.c | |
parent | df247efec654e512242e4f4f1b0212034f9e01fe (diff) | |
parent | ec3c0f6f6e7153fa797dc57a0e95779cbc63a23b (diff) |
Merge branch 'release/debian/1_5.3.0GA-1'debian/1_5.3.0GA-1
Diffstat (limited to 'app/wlib/gtklib/bitmap.c')
-rw-r--r-- | app/wlib/gtklib/bitmap.c | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/app/wlib/gtklib/bitmap.c b/app/wlib/gtklib/bitmap.c index eb5ef94..b1ff2ed 100644 --- a/app/wlib/gtklib/bitmap.c +++ b/app/wlib/gtklib/bitmap.c @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include <stdlib.h> @@ -46,54 +46,57 @@ struct wBitmap_t { */ wControl_p -wBitmapCreate( wWin_p parent, wPos_t x, wPos_t y, long options, wIcon_p iconP ) +wBitmapCreate( wWin_p parent, wWinPix_t x, wWinPix_t y, long options, + const struct wIcon_t * iconP ) { wBitmap_p bt; GdkPixbuf *pixbuf; GtkWidget *image; - + bt = wlibAlloc( parent, B_BITMAP, x, y, NULL, sizeof *bt, NULL ); bt->w = iconP->w; bt->h = iconP->h; bt->option = options; - + /* - * Depending on the platform, parent->widget->window might still be null + * Depending on the platform, parent->widget->window might still be null * at this point. The window allocation should be forced before creating * the pixmap. */ - if ( gtk_widget_get_window( parent->widget ) == NULL ) - gtk_widget_realize( parent->widget ); /* force allocation, if pending */ - + if ( gtk_widget_get_window( parent->widget ) == NULL ) { + gtk_widget_realize( parent->widget ); /* force allocation, if pending */ + } + /* create the bitmap from supplied xpm data */ pixbuf = gdk_pixbuf_new_from_xpm_data( (const char **)iconP->bits ); g_object_ref_sink(pixbuf); image = gtk_image_new_from_pixbuf( pixbuf ); gtk_widget_show( image ); g_object_unref( (gpointer)pixbuf ); - + bt->widget = gtk_fixed_new(); gtk_widget_show( bt->widget ); gtk_container_add( GTK_CONTAINER(bt->widget), image ); - + wlibComputePos( (wControl_p)bt ); wlibControlGetSize( (wControl_p)bt ); gtk_fixed_put( GTK_FIXED( parent->widget ), bt->widget, bt->realX, bt->realY ); - + return( (wControl_p)bt ); } /** * Create a two-tone icon - * + * * \param w IN width of icon * \param h IN height of icon * \param bits IN bitmap - * \param color IN color + * \param color IN color * \returns icon handle */ -wIcon_p wIconCreateBitMap( wPos_t w, wPos_t h, const char * bits, wDrawColor color ) +wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits, + wDrawColor color ) { wIcon_p ip; ip = (wIcon_p)malloc( sizeof *ip ); @@ -101,7 +104,10 @@ wIcon_p wIconCreateBitMap( wPos_t w, wPos_t h, const char * bits, wDrawColor col ip->w = w; ip->h = h; ip->color = color; - ip->bits = bits; + // Copy bits + int nBytes = ( ( w + 7 ) / 8 ) * h; + ip->bits = (char*)malloc( nBytes ); + memcpy( (void*)ip->bits, bits, nBytes ); return ip; } @@ -125,7 +131,7 @@ wIcon_p wIconCreatePixMap( char *pm[] ) /** * Set the color a two-tone icon - * + * * \param ip IN icon handle * \param color IN color to use */ |