import
This commit is contained in:
24
DSTexCompress/FreeImage/Examples/Linux/Makefile
Normal file
24
DSTexCompress/FreeImage/Examples/Linux/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
CC = gcc
|
||||
CPP = g++
|
||||
COMPILERFLAGS = -O3
|
||||
INCLUDE = -I../../Dist
|
||||
VGALIBRARIES = -lfreeimage -lvga
|
||||
VGAINCLUDE = -I/usr/include/asm
|
||||
GTKLIBRARIES = -lfreeimage `pkg-config --libs gtk+-2.0`
|
||||
GTKINCLUDE = `pkg-config --cflags gtk+-2.0`
|
||||
CFLAGS = $(COMPILERFLAGS) $(INCLUDE)
|
||||
|
||||
all: default
|
||||
|
||||
default: linux-svgalib linux-gtk
|
||||
|
||||
linux-svgalib: linux-svgalib.c
|
||||
$(CC) $(CFLAGS) $< -o $@ $(VGALIBRARIES) $(VGAINCLUDE)
|
||||
strip $@
|
||||
|
||||
linux-gtk: linux-gtk.c
|
||||
$(CC) $(CFLAGS) $< -o $@ $(GTKLIBRARIES) $(GTKINCLUDE)
|
||||
strip $@
|
||||
|
||||
clean:
|
||||
rm -f core linux-svgalib linux-gtk
|
||||
100
DSTexCompress/FreeImage/Examples/Linux/linux-gtk.c
Normal file
100
DSTexCompress/FreeImage/Examples/Linux/linux-gtk.c
Normal file
@@ -0,0 +1,100 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <FreeImage.h>
|
||||
#include <string.h>
|
||||
|
||||
void destroy(GtkWidget * widget, gpointer data) {
|
||||
gtk_main_quit();
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
GtkWidget *window, *imagebox;
|
||||
GdkVisual *visual;
|
||||
GdkImage *image;
|
||||
FIBITMAP *dib;
|
||||
int y;
|
||||
|
||||
// initialize the FreeImage library
|
||||
FreeImage_Initialise(TRUE);
|
||||
|
||||
dib = FreeImage_Load(FIF_PNG, "freeimage.png", PNG_DEFAULT);
|
||||
|
||||
gtk_init(&argc, &argv);
|
||||
|
||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(window), "destroy",
|
||||
GTK_SIGNAL_FUNC(destroy), NULL);
|
||||
|
||||
visual = gdk_visual_get_system();
|
||||
|
||||
image = gdk_image_new(GDK_IMAGE_NORMAL,visual,
|
||||
FreeImage_GetWidth(dib),FreeImage_GetHeight(dib));
|
||||
|
||||
g_print("picture: %d bpp\n"
|
||||
"system: %d bpp byteorder: %d\n"
|
||||
" redbits: %d greenbits: %d bluebits: %d\n"
|
||||
"image: %d bpp %d bytes/pixel\n",
|
||||
FreeImage_GetBPP(dib),
|
||||
visual->depth,visual->byte_order,
|
||||
visual->red_prec,visual->green_prec,visual->blue_prec,
|
||||
image->depth,image->bpp );
|
||||
|
||||
if (FreeImage_GetBPP(dib) != (image->bpp << 3)) {
|
||||
FIBITMAP *ptr;
|
||||
|
||||
switch (image->bpp) {
|
||||
case 1:
|
||||
ptr = FreeImage_ConvertTo8Bits(dib);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (image->depth == 15) {
|
||||
ptr = FreeImage_ConvertTo16Bits555(dib);
|
||||
} else {
|
||||
ptr = FreeImage_ConvertTo16Bits565(dib);
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
ptr = FreeImage_ConvertTo24Bits(dib);
|
||||
break;
|
||||
|
||||
default:
|
||||
case 4:
|
||||
ptr = FreeImage_ConvertTo32Bits(dib);
|
||||
break;
|
||||
}
|
||||
|
||||
FreeImage_Unload(dib);
|
||||
dib = ptr;
|
||||
}
|
||||
|
||||
//makes it upside down :(
|
||||
// memcpy(image->mem, FreeImage_GetBits(dib), image->bpl * image->height);
|
||||
|
||||
BYTE *ptr = FreeImage_GetBits(dib);
|
||||
|
||||
for (y = 0; y < image->height; y++) {
|
||||
memcpy(image->mem + (y * image->bpl),
|
||||
ptr + ((image->height - y - 1) * image->bpl),
|
||||
image->bpl);
|
||||
}
|
||||
|
||||
FreeImage_Unload(dib);
|
||||
|
||||
imagebox = gtk_image_new_from_image(image, NULL);
|
||||
gtk_container_add(GTK_CONTAINER(window), imagebox);
|
||||
|
||||
gtk_widget_show(imagebox);
|
||||
gtk_widget_show(window);
|
||||
|
||||
gtk_main();
|
||||
|
||||
// release the FreeImage library
|
||||
FreeImage_DeInitialise();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
96
DSTexCompress/FreeImage/Examples/Linux/linux-svgalib.c
Normal file
96
DSTexCompress/FreeImage/Examples/Linux/linux-svgalib.c
Normal file
@@ -0,0 +1,96 @@
|
||||
#include <vga.h>
|
||||
#include "FreeImage.h"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
FIBITMAP *dib,*ptr;
|
||||
vga_modeinfo *inf;
|
||||
int length,height,bpp,y;
|
||||
|
||||
// initialize the FreeImage library
|
||||
FreeImage_Initialise();
|
||||
|
||||
dib = FreeImage_Load(FIF_PNG, "freeimage.png", PNG_DEFAULT);
|
||||
|
||||
vga_init();
|
||||
vga_setmode(vga_getdefaultmode());
|
||||
|
||||
inf = vga_getmodeinfo(vga_getcurrentmode());
|
||||
|
||||
switch(inf->colors) {
|
||||
default:
|
||||
printf("Must be at least 256 color mode!\n");
|
||||
return;
|
||||
|
||||
case 1 << 8:
|
||||
bpp = 8;
|
||||
break;
|
||||
|
||||
case 1 << 15:
|
||||
bpp = 15;
|
||||
break;
|
||||
|
||||
case 1 << 16:
|
||||
bpp = 16;
|
||||
break;
|
||||
|
||||
case 1 << 24:
|
||||
if( inf->bytesperpixel == 3 ) {
|
||||
bpp = 24;
|
||||
} else {
|
||||
bpp = 32;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(FreeImage_GetBPP(dib) != bpp) {
|
||||
switch(bpp) {
|
||||
case 8:
|
||||
ptr = FreeImage_ConvertTo8Bits(dib);
|
||||
break;
|
||||
|
||||
case 15:
|
||||
ptr = FreeImage_ConvertTo16Bits555(dib);
|
||||
break;
|
||||
|
||||
case 16:
|
||||
ptr = FreeImage_ConvertTo16Bits565(dib);
|
||||
break;
|
||||
|
||||
case 24:
|
||||
ptr = FreeImage_ConvertTo24Bits(dib);
|
||||
break;
|
||||
|
||||
default:
|
||||
case 32:
|
||||
ptr = FreeImage_ConvertTo32Bits(dib);
|
||||
break;
|
||||
}
|
||||
|
||||
FreeImage_Unload(dib);
|
||||
dib = ptr;
|
||||
}
|
||||
|
||||
length = FreeImage_GetWidth(dib);
|
||||
if( inf->width < length ) {
|
||||
length = inf->width;
|
||||
}
|
||||
height = FreeImage_GetHeight(dib);
|
||||
if( inf->height < height ) {
|
||||
height = inf->height;
|
||||
}
|
||||
|
||||
for(y = 0; y < height; y++) {
|
||||
vga_drawscansegment(FreeImage_GetScanLine(dib, y), 0, y, length);
|
||||
}
|
||||
|
||||
FreeImage_Unload(dib);
|
||||
|
||||
vga_getch();
|
||||
vga_setmode(TEXT);
|
||||
|
||||
// release the FreeImage library
|
||||
FreeImage_DeInitialise();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user