Example #1
0
File: skin.c Project: XQF/xqf
void draw_qw_skin (GtkWidget *preview, guchar *data, int top, int bottom) {
	guchar buf[320*3];
	guchar colormap[256];
	guchar *ptr;
	int i, j, k;
	int fixed_top_color = fix_qw_player_color (top);
	int fixed_bottom_color = fix_qw_player_color (bottom);

	if (data) {
		for (i = 0; i < 256; i++)
			colormap[i] = i;

		if (fixed_top_color != 1) {
			for (i = 0; i<16; i++)
				colormap[16*1 + i] = fixed_top_color*16 +
					((fixed_top_color <= 7)? i : 15 - i);
		}

		if (fixed_bottom_color != 6) {
			for (i = 0; i<16; i++)
				colormap[16*6 + i] = fixed_bottom_color*16 +
					((fixed_bottom_color <= 7)? i : 15 - i);
		}

		for (i = 0; i < 200; i++) {
			ptr = buf;
			for (j = 0; j < 320; j++) {
				*ptr++ = quake_pallete[colormap[*data] * 3 + 0];
				*ptr++ = quake_pallete[colormap[*data] * 3 + 1];
				*ptr++ = quake_pallete[colormap[*data] * 3 + 2];
				data++;
			}
			gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, 320);
		}
	}
	else {
		for (j = 0, k = NOSKIN_WCOLOR; j < 200; j += 40) {
			i = k;
			for (ptr = buf; ptr < buf+320*3; ptr += 40*3) {
				memset (ptr, i, 40*3);
				i = (NOSKIN_WCOLOR + NOSKIN_BCOLOR) - i;
			}
			for (i = 0; i < 40; i++) {
				gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, j+i, 320);
			}
			k = (NOSKIN_WCOLOR + NOSKIN_BCOLOR) - k;
		}
	}

	gtk_widget_draw (preview, NULL);
}
Example #2
0
File: skin.c Project: XQF/xqf
void draw_q2_skin (GtkWidget *preview, guchar *data, int scale) {
	guchar *buf;
	guchar *ptr;
	int i, j, k;

	buf = g_malloc (32*scale*3);

	if (data) {
		for (i = 0; i < 32*scale;) {
			ptr = buf;
			for (j = 0; j < 32; j++) {
				for (k = 0; k < scale; k++) {
					*ptr++ = quake2_pallete[*data * 3 + 0];
					*ptr++ = quake2_pallete[*data * 3 + 1];
					*ptr++ = quake2_pallete[*data * 3 + 2];
				}
				data++;
			}
			for (k = 0; k < scale; k++) {
				gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i++, 32*scale);
			}
		}
	}
	else {
		for (j = 0, k = NOSKIN_WCOLOR; j < 32*scale; j += 32) {
			i = k;
			for (ptr = buf; ptr < buf+32*scale*3; ptr += 32*3) {
				memset (ptr, i, 32*3);
				i = (NOSKIN_WCOLOR + NOSKIN_BCOLOR) - i;
			}
			for (i = 0; i < 32; i++) {
				gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, j+i, 32*scale);
			}
			k = (NOSKIN_WCOLOR + NOSKIN_BCOLOR) - k;
		}
	}

	g_free (buf);

	gtk_widget_draw (preview, NULL);
}
Example #3
0
static int about_dialog_load_logo(GtkWidget * window)
{
	GtkWidget *preview;
	GdkGC *gc;
	char buf[1024];
        char *c;
	unsigned char *pixelrow;
	FILE *fp;
	int count;
	int i;

	if (logo_pixmap)
		return TRUE;

	snprintf(buf, sizeof(buf), "%s/aube_logo.ppm", DATADIR);

	fp = fopen(buf, "rb");
	if (!fp)
		return FALSE;

	c = fgets(buf, 1024, fp);
	if (!c || strcmp(buf, "P6\n") != 0)
                goto out_err;

	if (!fgets(buf, 1024, fp))
                goto out_err;
	if (!fgets(buf, 1024, fp))
                goto out_err;

	sscanf(buf, "%d %d", &logo_width, &logo_height);

	if (!fgets(buf, 1024, fp))
                goto out_err;

	if (strcmp(buf, "255\n") != 0)
                goto out_err;

	preview = gtk_preview_new(GTK_PREVIEW_COLOR);
	gtk_preview_size(GTK_PREVIEW(preview), logo_width, logo_height);
	pixelrow = g_new(guchar, logo_width * 3);

	for (i = 0; i < logo_height; i++) {
		count =
		    fread(pixelrow, sizeof(unsigned char), logo_width * 3,
			  fp);
		if (count != (logo_width * 3)) {
			gtk_widget_destroy(preview);
			g_free(pixelrow);
                        goto out_err;
		}
		gtk_preview_draw_row(GTK_PREVIEW(preview), pixelrow, 0, i,
				     logo_width);
	}

	gtk_widget_realize(window);
	logo_pixmap =
	    gdk_pixmap_new(window->window, logo_width, logo_height,
			   gtk_preview_get_visual()->depth);
	gc = gdk_gc_new(logo_pixmap);
	gtk_preview_put(GTK_PREVIEW(preview),
			logo_pixmap, gc,
			0, 0, 0, 0, logo_width, logo_height);
	gdk_gc_destroy(gc);

	gtk_widget_unref(preview);
	g_free(pixelrow);

	fclose(fp);
	return TRUE;

out_err:
	fclose(fp);
	return FALSE;
}