sven

Artifact [99b5b2cb82]
Login

Artifact [99b5b2cb82]

Artifact 99b5b2cb8258253a644919d44d7ce13b62da2b10:


#include <gdk/gdkx.h>
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "sven.h"
/*Start Greate Image*/
#include "../images/sven_icons.h"

typedef struct {
	const guint id;
	const guint8 *data;
} Tpixmap;

static Tpixmap tp[] = {
	{1,key_bindings},
	{2,mouse},
	{3,plugins},
	{4,messagebox_info},
	{5,wind_pic},
	{6,configure_pic},
	{7,topleft},
	{8,top},
	{9,topright},
	{10,bottomleft},
	{11,bottom},
	{12,bottomright},
	{13,left},
	{14,centre},
	{15,right},
	{16,confgktosd},
	{17,keyboardim},
	{18,cdaudio},
	{19,klipper_dock},
	{20,locale_im},
	{21,terminal},
	{22,vol},
	{23,vol_down},
	{24,vol_up},
	{25,vol_mute},
};
/* This is an internally used function to create pixmaps. */
GdkPixbuf *create_pixbuf_type(gint type, int width, int height)
{
	gint i;
	GdkPixbuf *pixbuf;

		for (i=0;i<(sizeof(tp)/sizeof(Tpixmap));i++) {
			if (tp[i].id == type) {
				break;
			}
		}
		if (i >= sizeof(tp)/sizeof(Tpixmap)) {
			DEBUG_MSG(_("new_pixmap, requested unknown type %d\n"), type);
			i = sizeof(tp)/sizeof(Tpixmap)-1;
		}
		pixbuf = gdk_pixbuf_new_from_inline(-1,tp[i].data,FALSE,NULL);
		    g_assert (pixbuf);

    if ((width > 0 && height > 0)
	|| (gdk_pixbuf_get_width (pixbuf) != width
	    && gdk_pixbuf_get_height (pixbuf) != height))
    {
	GdkPixbuf *scaled;

	scaled =
	    gdk_pixbuf_scale_simple (pixbuf,
				     width >
				     0 ? width : gdk_pixbuf_get_width (pixbuf),
				     height >
				     0 ? height :
				     gdk_pixbuf_get_height (pixbuf),
				     GDK_INTERP_BILINEAR);
	g_object_unref(pixbuf);
	pixbuf=scaled;
    }
	return pixbuf;
}

GtkWidget *create_pixmap_type(gint type, int width, int height) 
{
	GtkWidget *wid;
	gint i;
	GdkPixbuf *pixbuf;

		for (i=0;i<(sizeof(tp)/sizeof(Tpixmap));i++) {
			if (tp[i].id == type) {
				break;
			}
		}
		if (i >= sizeof(tp)/sizeof(Tpixmap)) {
			DEBUG_MSG(_("new_pixmap, requested unknown type %d\n"), type);
			i = sizeof(tp)/sizeof(Tpixmap)-1;
		}
		pixbuf = gdk_pixbuf_new_from_inline(-1,tp[i].data,FALSE,NULL);
		    g_assert (pixbuf);

    if ((width > 0 && height > 0)
	|| (gdk_pixbuf_get_width (pixbuf) != width
	    && gdk_pixbuf_get_height (pixbuf) != height))
    {
	GdkPixbuf *scaled;

	scaled =
	    gdk_pixbuf_scale_simple (pixbuf,
				     width >
				     0 ? width : gdk_pixbuf_get_width (pixbuf),
				     height >
				     0 ? height :
				     gdk_pixbuf_get_height (pixbuf),
				     GDK_INTERP_BILINEAR);
	g_object_unref(pixbuf);
	pixbuf=scaled;
    }
	wid = gtk_image_new_from_pixbuf(pixbuf);
	g_object_unref(pixbuf);
	return wid;
}
/*END Greate Image*/

GdkPixbuf *create_pixbuf_from_file (gchar *file, gint width, gint height)
{
	GdkPixbuf *pixbuf;
    
	DEBUG_MSG ("create_pixbuf_from_file: path: %s\n", file);
    
	if (g_file_test (file, G_FILE_TEST_EXISTS)) 
	{
		GError *error=NULL;
    
		pixbuf=gdk_pixbuf_new_from_file (file, &error);
		
		if ((width > 0 && height > 0) || (gdk_pixbuf_get_width (pixbuf) != width  && gdk_pixbuf_get_height (pixbuf) != height))
		{
			GdkPixbuf *scaled;
			scaled = gdk_pixbuf_scale_simple (pixbuf,
				width > 0 ? width : gdk_pixbuf_get_width (pixbuf),
				height > 0 ? height : gdk_pixbuf_get_height (pixbuf),
				GDK_INTERP_BILINEAR);
			pixbuf=scaled;
		}
		
		return pixbuf;
	}
	return NULL;
}


GtkWidget *create_pixmap_from_file(gchar *file,int width, int height) 
{
	GtkWidget *wid;
	GdkPixbuf *pixbuf;
	GError *error=NULL;
    
	if (g_file_test (file, G_FILE_TEST_EXISTS)) 
	{
	
		pixbuf=gdk_pixbuf_new_from_file (file, &error);
		g_assert (pixbuf);
	
		if ((width > 0 && height > 0) || (gdk_pixbuf_get_width (pixbuf) != width  && gdk_pixbuf_get_height (pixbuf) != height))
		{
			GdkPixbuf *scaled;
			scaled = gdk_pixbuf_scale_simple (pixbuf,
				width > 0 ? width : gdk_pixbuf_get_width (pixbuf),
				height > 0 ? height : gdk_pixbuf_get_height (pixbuf),
				GDK_INTERP_BILINEAR);
			pixbuf=scaled;
		}
		wid = gtk_image_new_from_pixbuf(pixbuf);
		g_object_unref(pixbuf);
		return wid;
	}
	return NULL;
}