PA_Draw.h

Aller à la documentation de ce fichier.
00001 #ifndef _PA_Buffer
00002 #define _PA_Buffer
00003 
00004 
00005 
00011 #include "PA9.h"
00012 #include "PA_Interrupt.h"
00013 
00014 
00015 
00016 extern u16 PA_oldx[2];
00017 extern u16 PA_oldy[2];
00018 extern u8 PA_drawsize[2];
00019 extern u16 *PA_DrawBg[2];
00020 //extern PA_SCreen
00021 
00039 void PA_Init8bitBg(bool screen, u8 bg_priority);
00040 
00041 
00053 void PA_Init16bitBg(bool screen, u8 bg_priority);
00054 
00055 
00056 
00074 extern inline void PA_Put8bitPixel(bool screen, s16 x, s16 y, u8 color) {
00075        u16 pos =     (x >> 1) + (y << 7);
00076        if (x&1){
00077               PA_DrawBg[screen][pos] &= 255;
00078               PA_DrawBg[screen][pos] |= color << 8;                   
00079        }
00080        else {
00081               PA_DrawBg[screen][pos] &= 255 << 8;
00082               PA_DrawBg[screen][pos] |= color;
00083        }
00084 }
00085 
00086 
00105 extern inline void PA_Put2_8bitPixels(bool screen, s16 x, s16 y, u16 colors) {             PA_DrawBg[screen][(x >> 1) + (y << 7)] = colors;
00106 }
00107 
00128 extern inline void PA_PutDouble8bitPixels(bool screen, s16 x, s16 y, u8 color1, u8 color2) {
00129        PA_Put2_8bitPixels(screen, x, y, color1 + (color2 << 8));             
00130 }
00131 
00132 
00133 
00152 extern inline void PA_Put4_8bitPixels(bool screen, s16 x, s16 y, u32 colors) {
00153 /*
00154        (*u32*)(PA_DrawBg[screen] + (x >> 1) + (y << 7)) = colors;*/
00155 }
00156 
00157 
00172 extern inline u8 PA_Get8bitPixel(bool screen, u8 x, u8 y) {
00173        u16 pos =     (x >> 1) + (y << 7);
00174        if (x&1){
00175               return (PA_DrawBg[screen][pos] >> 8);
00176        }
00177        else {
00178               return (PA_DrawBg[screen][pos]);
00179        }
00180 }
00181 
00182 
00183 
00184 
00202 extern inline void PA_Put16bitPixel(bool screen, s16 x, s16 y, u16 color) {
00203        PA_DrawBg[screen][x + (y << 8)] = color;
00204 }
00205 
00206 
00221 #define PA_Get16bitPixel(screen, x, y) PA_DrawBg[screen][x + (y << 8)]
00222 
00223 
00224 
00225 
00226 
00227 
00251 void PA_Draw8bitLine(bool screen, u16 x1, u16 y1, u16 x2, u16 y2, u8 color);
00252 
00253 
00254 
00255 
00256 
00280 void PA_Draw16bitLine(bool screen, u16 x1, u16 y1, u16 x2, u16 y2, u16 color);
00281 
00282 
00283 
00284 
00296 void PA_8bitDraw(bool screen, u8 color);
00297 
00298 
00310 void PA_16bitDraw(bool screen, u16 color);
00311 
00312 
00324 #define PA_SetDrawSize(screen, draw_size) PA_drawsize[screen] = draw_size;
00325 
00326 
00327 
00328 
00329 
00341 #define PA_Load8bitBitmap(screen, bitmap) DMA_Copy(bitmap, (void*)PA_DrawBg[screen], 256*96, DMA_16NOW);
00342 
00354 #define PA_Load16bitBitmap(screen, bitmap) {u32 PA_temp; \
00355 for (PA_temp = 0; PA_temp < 256*192; PA_temp++)\
00356 PA_DrawBg[screen][PA_temp] = bitmap[PA_temp] + (1 << 15);}
00357 
00358 
00367 #define PA_Clear8bitBg(screen) DMA_Copy(Blank, (void*)PA_DrawBg[screen], 256*96, DMA_16NOW);
00368 
00377 #define PA_Clear16bitBg(screen) DMA_Copy(Blank, (void*)PA_DrawBg[screen], 256*192, DMA_16NOW)
00378 
00379 
00391 extern inline void PA_LoadJpeg(bool screen, void *jpeg) {
00392        REG_IME = 0x00;
00393        JPEG_DecompressImage((u8*)jpeg, PA_DrawBg[screen], 256, 192);
00394        REG_IME = 0x01;      
00395 }
00396 
00397 
00398 
00399 
00400 
00401 
00402 void PA_Draw16bitLineEx(bool screen, s16 basex, s16 basey, s16 endx, s16 endy, u16 color, s8 size);
00403 
00404 void PA_Draw16bitRect(bool screen, s16 basex, s16 basey, s16 endx, s16 endy, u16 color);
00405 
00406 
00407 
00408 
00409 
00410  // end of Draw
00412 
00413 
00414 extern inline void PA_8bit8x8Image(bool screen, u16 basex, u16 basey, u8* data){
00415 s16 x, y;
00416 
00417 for (x = 0; x < 8; x++)
00418        for (y = 0; y < 8; y++)
00419               PA_Put8bitPixel(screen, x + basex, y + basey, data[x + (y << 3)]);
00420 }
00421 
00422 /*
00423 extern inline void PA_DrawImage(bool screen, s16 x, s16 y, s16 lx, s16 ly, u8* data){
00424 s16 i, j;
00425 u16* data2 = (u16*)data;
00426 
00427 if (x&1){ // Premier pixel à mettre tout seul peut-etre
00428        for (j = 0; j < ly; j++) PA_Put8bitPixel(screen, x, j + y, data[0]);
00429        x++;
00430        data2 = (u16*)(data + 1);
00431 }
00432 
00433 i = 0;
00434 // Tant qu'il reste au moins 2 pixels à mettre, on fait 2 par 2
00435 while(i < (lx-2)){
00436        for (j = 0; j < ly; j++) {
00437               PA_PutDouble8bitPixels(screen, i + x, j + y, data2[(i >> 1) + (j*lx)]);
00438        }
00439        i+=2;
00440 }
00441 
00442 if (!((i + x)&1)){ // Dernier pixel à mettre tout seul peut-etre
00443        for (j = 0; j < ly; j++) PA_Put8bitPixel(screen, i + x, j + y, data2[(i >> 1) + (j*lx)]&255);
00444 }
00445 
00446 }
00447 */
00448 
00449 
00450 
00451 
00452 
00453 
00454 
00455 
00456 
00457 
00458 
00459 
00460 
00461 
00462 
00463 
00464 
00465 
00466 
00467 
00468 #endif
00469 
00470 

Généré le Tue Oct 18 13:31:44 2005 pour PA_lib par  doxygen 1.4.5