Miki-chan
13/12/2003, 15:57
Bueno, aquí pongo todo el código. Lo que pone la imagen en pantalla está abajo del todo y en negrita, pero como tiene comentarios varios, puede que le venga bien a alguien el resto del código:
#include<gpdef.h>
#include<gpstdio.h>
#include<gpstdlib.h>
#include<gpgraphic.h>
//#include<paletas.c>
GP_PALETTEENTRY paleta[256] = {
0x0001, 0x0015, 0x002B, 0x003F, 0x0181, 0x0195, 0x01AB, 0x01BF, 0x0281,
0x0295, 0x02AB, 0x02BF, 0x0301, 0x0315, 0x032B, 0x033F, 0x03C1, 0x03D5,
0x03EB, 0x03FF, 0x0541, 0x0555, 0x056B, 0x057F, 0x0641, 0x0655, 0x066B,
0x067F, 0x07C1, 0x07D5, 0x07EB, 0x07FF, 0x3001, 0x3015, 0x302B, 0x303F,
0x3181, 0x3195, 0x31AB, 0x31BF, 0x3281, 0x3295, 0x32AB, 0x32BF, 0x3301,
0x3315, 0x332B, 0x333F, 0x33C1, 0x33D5, 0x33EB, 0x33FF, 0x3541, 0x3555,
0x356B, 0x357F, 0x3641, 0x3655, 0x366B, 0x367F, 0x37C1, 0x37D5, 0x37EB,
0x37FF, 0x5001, 0x5015, 0x502B, 0x503F, 0x5181, 0x5195, 0x51AB, 0x51BF,
0x5281, 0x5295, 0x52AB, 0x52BF, 0x5301, 0x5315, 0x532B, 0x533F, 0x53C1,
0x53D5, 0x53EB, 0x53FF, 0x5541, 0x5555, 0x556B, 0x557F, 0x5641, 0x5655,
0x566B, 0x567F, 0x57C1, 0x57D5, 0x57EB, 0x57FF, 0x6001, 0x6015, 0x602B,
0x603F, 0x6181, 0x6195, 0x61AB, 0x61BF, 0x6281, 0x6295, 0x62AB, 0x62BF,
0x6301, 0x6315, 0x632B, 0x633F, 0x63C1, 0x63D5, 0x63EB, 0x63FF, 0x6541,
0x6555, 0x656B, 0x657F, 0x6641, 0x6655, 0x666B, 0x667F, 0x67C1, 0x67D5,
0x67EB, 0x67FF, 0x7801, 0x7815, 0x782B, 0x783F, 0x7981, 0x7995, 0x79AB,
0x79BF, 0x7A81, 0x7A95, 0x7AAB, 0x7ABF, 0x7B01, 0x7B15, 0x7B2B, 0x7B3F,
0x7BC1, 0x7BD5, 0x7BEB, 0x7BFF, 0x7D41, 0x7D55, 0x7D6B, 0x7D7F, 0x7E41,
0x7E55, 0x7E6B, 0x7E7F, 0x7FC1, 0x7FD5, 0x7FEB, 0x7FFF, 0xA801, 0xA815,
0xA82B, 0xA83F, 0xA981, 0xA995, 0xA9AB, 0xA9BF, 0xAA81, 0xAA95, 0xAAAB,
0xAABF, 0xAB01, 0xAB15, 0xAB2B, 0xAB3F, 0xABC1, 0xABD5, 0xABEB, 0xABFF,
0xAD41, 0xAD55, 0xAD6B, 0xAD7F, 0xAE41, 0xAE55, 0xAE6B, 0xAE7F, 0xAFC1,
0xAFD5, 0xAFEB, 0xAFFF, 0xC801, 0xC815, 0xC82B, 0xC83F, 0xC981, 0xC995,
0xC9AB, 0xC9BF, 0xCA81, 0xCA95, 0xCAAB, 0xCABF, 0xCB01, 0xCB15, 0xCB2B,
0xCB3F, 0xCBC1, 0xCBD5, 0xCBEB, 0xCBFF, 0xCD41, 0xCD55, 0xCD6B, 0xCD7F,
0xCE41, 0xCE55, 0xCE6B, 0xCE7F, 0xCFC1, 0xCFD5, 0xCFEB, 0xCFFF, 0xF801,
0xF815, 0xF82B, 0xF83F, 0xF981, 0xF995, 0xF9AB, 0xF9BF, 0xFA81, 0xFA95,
0xFAAB, 0xFABF, 0xFB01, 0xFB15, 0xFB2B, 0xFB3F, 0xFBC1, 0xFBD5, 0xFBEB,
0xFBFF, 0xFD41, 0xFD55, 0xFD6B, 0xFD7F, 0xFE41, 0xFE55, 0xFE6B, 0xFE7F,
0xFFC1, 0xFFD5, 0xFFEB, 0xFFFF};
void GpMain( void * arg) //siempre lleva lo del parentesis, sin ello NO compila
{
unsigned char * imagen; //declara una variable con la que podremos cargar una imagen
unsigned long data_size, total_size; //define los tamaños de los datos del GpFileRead
ERR_CODE err; //Guarda el valor que devuelve GpFileOpen, este valor será SM_OK si se ha abierto correctamente
F_HANDLE h_rfile; //Es el equivalente a la variable FILE * de C
GPDRAWSURFACE gpDraw; //Es la variable de pantalla
GP_HPALETTE h_pal; //Es la variable de la paleta de color
GpLcdSurfaceGet(&gpDraw,0); //Toma el estado de la pantalla LCD, en este caso, el tamaño
GpSurfaceSet(&gpDraw); //Establece gpDraw como la superficie sobre la que podremos dibujar o colocar objetos
GpLcdEnable(); //Activa la pantalla LCD ¿Es realmente necesario?
GpFatInit(); //Inicializa la SMC. Lo necesitamos SIEMPRE que vayamos a leer/escribir en la SMC
h_pal=GpPaletteCreate(256,(GP_PALETTEENTRY *)paleta); //Crea la paleta de la imagen
GpPaletteSelect(h_pal); //Selecciona una paleta
GpPaletteRealize(); //Carga la paleta en el Hard
h_pal=NULL;
err=GpFileOpen("gp:\\gpmm\\imagen.gpg",OPEN_R,&h_rfile);
//Abre el fichero imagen.gpg de la ruta especificada, en modo apertura (OPEN_R) y lo abre con la variable h_rfile
if(err!=SM_OK) //Comprueba si el fichero se ha abierto correctamente. Si no es así, sale del programa
{
return;
}
GpFileRead(h_rfile,&data_size,4,&total_size);
GpFileRead(h_rfile,&data_size,4,&total_size);
imagen=(unsigned char *)gp_mem_func.malloc(data_size);
//Aloca espacio del tamaño data_size en la variable imagen (imagen es un puntero). Malloc funciona igual que en C
GpFileRead(h_rfile,(unsigned char *)imagen,data_size,&total_size);
//Lee el contenido del fichero sobre la variable imagen. A diferencia de C lleva primero el fichero del que leemos, la variable sobre la que leemos, el tamaño de lo leído y el tamaño total de todo lo leído.
GpFileClose(h_rfile); //Cierra el fichero
GpRectFill(NULL,&gpDraw,0,0,gpDraw.buf_w,gpDraw.buf_h,0x00);
//Pinta la superficie gpDraw de negro
while(1) //Bucle infinito que mantiene el programa siempre en ejecución
{
GpBitBlt(NULL,&gpDraw,0,0,320,240,(unsigned char *)imagen,0,0,320,240);
//Coloca la imagen del puntero imagen en la pantalla
}
}
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.