GRRLIB/examples/lesson2/source/main.c
N0NameN0 9c6a0491eb [CHG] GRRLIB_LoadTexture now autodetect if its JPG or PNG
[DEL] GRRLIB_Credit is gone ;)
[CHG] Scatter removed from lesson1
2009-02-16 23:36:21 +00:00

225 lines
10 KiB
C

/*===========================================
GRRLIB (GX version) 3.0.5 alpha
Code : NoNameNo
Additional Code : Crayon
GX hints : RedShade
How To use Bitmap FX example code
============================================*/
#include "../../../GRRLIB/GRRLIB/GRRLIB.h"
#include <stdlib.h>
#include <wiiuse/wpad.h>
#include "gfx/pirate.h"
#include "gfx/font1.h"
Mtx GXmodelView2D;
int main() {
u32 wpaddown;
int page = 0;
// Font texture
GRRLIB_texImg text_font1 = GRRLIB_LoadTexture(font1);
GRRLIB_InitTileSet(&text_font1, 32, 36, 32);
// Load the original texture and create empty texture of the same size as the original one
GRRLIB_texImg tex_pirate = GRRLIB_LoadTexture(pirate);
GRRLIB_texImg tex_gray = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_invert = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_blur1 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_blur2 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_blur3 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_blur4 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_blur5 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_blur6 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_pixel1 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_pixel2 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_pixel3 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_pixel4 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_pixel5 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_pixel6 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_scatter1 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_scatter2 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_scatter3 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_scatter4 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_scatter5 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_scatter6 = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_fliph = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_flipv = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
GRRLIB_texImg tex_fliphv = GRRLIB_CreateEmptyTexture(tex_pirate.w, tex_pirate.h);
// Let's precalculte the grayscale texture
GRRLIB_BMFX_Grayscale(tex_pirate, tex_gray);
GRRLIB_FlushTex(tex_gray);
// Let's precalculte the inverted color texture
GRRLIB_BMFX_Invert(tex_pirate, tex_invert);
GRRLIB_FlushTex(tex_invert);
// Let's precalculte 6 differents blur texture with 6 differents blur factor
GRRLIB_BMFX_Blur(tex_pirate, tex_blur1, 1);
GRRLIB_FlushTex(tex_blur1);
GRRLIB_BMFX_Blur(tex_pirate, tex_blur2, 2);
GRRLIB_FlushTex(tex_blur2);
GRRLIB_BMFX_Blur(tex_pirate, tex_blur3, 3);
GRRLIB_FlushTex(tex_blur3);
GRRLIB_BMFX_Blur(tex_pirate, tex_blur4, 4);
GRRLIB_FlushTex(tex_blur4);
GRRLIB_BMFX_Blur(tex_pirate, tex_blur5, 5);
GRRLIB_FlushTex(tex_blur5);
GRRLIB_BMFX_Blur(tex_pirate, tex_blur6, 6);
GRRLIB_FlushTex(tex_blur6);
// Let's precalculte 6 differents pixelate texture with 6 differents pixelate factor
GRRLIB_BMFX_Pixelate(tex_pirate, tex_pixel1, 1);
GRRLIB_FlushTex(tex_pixel1);
GRRLIB_BMFX_Pixelate(tex_pirate, tex_pixel2, 2);
GRRLIB_FlushTex(tex_pixel2);
GRRLIB_BMFX_Pixelate(tex_pirate, tex_pixel3, 3);
GRRLIB_FlushTex(tex_pixel3);
GRRLIB_BMFX_Pixelate(tex_pirate, tex_pixel4, 4);
GRRLIB_FlushTex(tex_pixel4);
GRRLIB_BMFX_Pixelate(tex_pirate, tex_pixel5, 5);
GRRLIB_FlushTex(tex_pixel5);
GRRLIB_BMFX_Pixelate(tex_pirate, tex_pixel6, 6);
GRRLIB_FlushTex(tex_pixel6);
// Let's precalculte 6 differents pixelate texture with 6 differents pixelate factor
GRRLIB_BMFX_Scatter(tex_pirate, tex_scatter1, 2);
GRRLIB_FlushTex(tex_pixel1);
GRRLIB_BMFX_Scatter(tex_pirate, tex_scatter2, 4);
GRRLIB_FlushTex(tex_pixel2);
GRRLIB_BMFX_Scatter(tex_pirate, tex_scatter3, 6);
GRRLIB_FlushTex(tex_pixel3);
GRRLIB_BMFX_Scatter(tex_pirate, tex_scatter4, 8);
GRRLIB_FlushTex(tex_pixel4);
GRRLIB_BMFX_Scatter(tex_pirate, tex_scatter5, 10);
GRRLIB_FlushTex(tex_pixel5);
GRRLIB_BMFX_Scatter(tex_pirate, tex_scatter6, 12);
GRRLIB_FlushTex(tex_pixel6);
// Let's precalculte for flipping the texture
GRRLIB_BMFX_FlipH(tex_pirate, tex_fliph);
GRRLIB_FlushTex(tex_fliph);
GRRLIB_BMFX_FlipV(tex_pirate, tex_flipv);
GRRLIB_FlushTex(tex_flipv);
GRRLIB_BMFX_FlipV(tex_fliph, tex_fliphv);
GRRLIB_FlushTex(tex_fliphv);
GRRLIB_Init();
WPAD_Init();
while(1) {
WPAD_ScanPads();
wpaddown = WPAD_ButtonsDown(0);
GRRLIB_FillScreen(0xFFFFFFFF);
switch(page)
{
case 1:
GRRLIB_Printf(10, 10, text_font1, 0X000000FF, 1, "GRAYSCALE FX");
GRRLIB_DrawImg(10, 60, tex_pirate, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60, tex_gray, 0, 1, 1, 0xFFFFFFFF);
break;
case 2:
GRRLIB_Printf(10, 10, text_font1, 0X000000FF, 1, "INVERT FX");
GRRLIB_DrawImg(10, 60, tex_pirate, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60, tex_invert, 0, 1, 1, 0xFFFFFFFF);
break;
case 3:
GRRLIB_Printf(10, 10, text_font1, 0X000000FF, 1, "FLIPH AND FLIPV FX");
GRRLIB_DrawImg(10, 60, tex_pirate, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60, tex_fliph, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*2, 60, tex_flipv, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*3, 60, tex_fliphv, 0, 1, 1, 0xFFFFFFFF);
break;
case 4:
GRRLIB_Printf(10, 10, text_font1, 0X000000FF, 1, "BLUR FX");
GRRLIB_DrawImg(10, 60, tex_pirate, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60, tex_blur1, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*2, 60, tex_blur2, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*3, 60, tex_blur3, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10, 60+tex_pirate.h*1, tex_blur4, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60+tex_pirate.h*1, tex_blur5, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*2, 60+tex_pirate.h*1, tex_blur6, 0, 1, 1, 0xFFFFFFFF);
break;
case 5:
GRRLIB_Printf(10, 10, text_font1, 0X000000FF, 1, "PIXELATE FX");
GRRLIB_DrawImg(10, 60, tex_pirate, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60, tex_pixel1, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*2, 60, tex_pixel2, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*3, 60, tex_pixel3, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10, 60+tex_pirate.h*1, tex_pixel4, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60+tex_pirate.h*1, tex_pixel5, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*2, 60+tex_pirate.h*1, tex_pixel6, 0, 1, 1, 0xFFFFFFFF);
break;
case 6:
GRRLIB_Printf(10, 10, text_font1, 0X000000FF, 1, "SCATTER FX");
GRRLIB_DrawImg(10, 60, tex_pirate, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60, tex_scatter1, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*2, 60, tex_scatter2, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*3, 60, tex_scatter3, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10, 60+tex_pirate.h*1, tex_scatter4, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*1, 60+tex_pirate.h*1, tex_scatter5, 0, 1, 1, 0xFFFFFFFF);
GRRLIB_DrawImg(10+tex_pirate.w*2, 60+tex_pirate.h*1, tex_scatter6, 0, 1, 1, 0xFFFFFFFF);
break;
default:
GRRLIB_Printf(10, 10, text_font1, 0X000000FF, 1, "WELCOME TO THE");
GRRLIB_Printf(10, 40, text_font1, 0X000000FF, 1, "GRRLIB FX DEMO.");
GRRLIB_Printf(10, 80, text_font1, 0X000000FF, 1, "TO QUIT PRESS THE");
GRRLIB_Printf(10, 120, text_font1, 0X000000FF, 1, "HOME BUTTON.");
GRRLIB_Printf(10, 160, text_font1, 0X000000FF, 1, "USE + OR - TO MOVE");
GRRLIB_Printf(10, 200, text_font1, 0X000000FF, 1, "ACROSS PAGES.");
}
GRRLIB_Render();
if(wpaddown & WPAD_BUTTON_HOME) {
exit(0);
}
if(wpaddown & WPAD_BUTTON_MINUS) {
page--;
if(page < 0) page = 6;
}
if(wpaddown & WPAD_BUTTON_PLUS) {
page++;
if(page > 6) page = 0;
}
}
GRRLIB_Exit(); // Be a good boy, clear the memory allocated by GRRLIB
free(tex_pirate.data);
free(tex_gray.data);
free(tex_invert.data);
free(tex_fliph.data);
free(tex_flipv.data);
free(tex_fliphv.data);
free(tex_blur1.data);
free(tex_blur2.data);
free(tex_blur3.data);
free(tex_blur4.data);
free(tex_blur5.data);
free(tex_blur6.data);
free(tex_pixel1.data);
free(tex_pixel2.data);
free(tex_pixel3.data);
free(tex_pixel4.data);
free(tex_pixel5.data);
free(tex_pixel6.data);
free(tex_scatter1.data);
free(tex_scatter2.data);
free(tex_scatter3.data);
free(tex_scatter4.data);
free(tex_scatter5.data);
free(tex_scatter6.data);
return 0;
}