static void shbar_palette_adjust(void) { ES_FILE *p_disp; __u32 *palette_buf; HTHEME htheme; htheme = dsk_theme_open(0); palette_buf = dsk_theme_hdl2buf(htheme); /*define palette's selfdefine area*/ *(palette_buf+0xC0) = 0x00000000; *(palette_buf+0xC1) = 0xC0323232; p_disp = eLIBs_fopen("b:\\DISP\\DISPLAY", "r+"); if(!p_disp) { __wrn("open display fail\n"); return ; } /* get palette */ { __u32 arg[3]; arg[0] = (__u32)palette_buf; arg[1] = 0; arg[2] = ROBIN_PALETTE_COLOR_COUNT * 4; eLIBs_fioctrl( p_disp, DISP_CMD_SET_PALETTE_TBL, 0, (void *)arg ); } eLIBs_fclose(p_disp); dsk_theme_close(htheme); }
int SimpleSliderDraw(void * handler, H_LYR layer, RECT * rect, int current) { SimpleSliderDesc * desc; int i; int blocks; OFFSET locat; HTHEME bmpTheme; void * bmpData; #ifndef REGULAR_DRAW HBLOCK backbg; HBLOCK foreg; FB fb; #endif if (NULL == handler) { return -1; } desc = (SimpleSliderDesc *)handler; // To get the current display position current = (current > desc->cls.limit) ? desc->cls.limit : current; blocks = (current * desc->cls.bmp_nr) / desc->cls.limit; blocks = (blocks > desc->cls.bmp_nr) ? desc->cls.bmp_nr : blocks; #ifndef REGULAR_DRAW GUI_LyrWinGetFB(layer, &fb); backbg = GUI_BlockCreateFrom(NULL, fb.size.width, fb.size.height, fb.addr[0], 0); #endif GUI_LyrWinSel(layer); if (desc->drew_position < 0) { for (i = 1; i <= blocks; i++) { if (0 == getStartPoint(&locat, &desc->cls.start_point, desc->cls.direc, i, desc->cls.bmp_nr, &desc->cls.puzzle)) { bmpTheme = dsk_theme_open(desc->bmps[i - 1]); bmpData = dsk_theme_hdl2buf(bmpTheme); #ifdef REGULAR_DRAW GUI_BMP_Draw(bmpData, locat.x + rect->x, locat.y + rect->y); #else eLIBs_memcpy(desc->puzzleData, (void *)((int)bmpData + BITMAPHEADERSIZE), desc->puzzleDataSize); foreg = GUI_BlockCreateFrom(NULL, desc->cls.puzzle.width, desc->cls.puzzle.height, desc->puzzleData, 0); GUI_BlockBitBlit(backbg, locat.x + rect->x, locat.y + rect->y, foreg, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(foreg); #endif dsk_theme_close(bmpTheme); // LogMI("Simple Slider Piece x = %d, y = %d, bmp = %d", locat.x, locat.y, i - 1); } } for (; i <= desc->cls.bmp_nr; i++) { if (0 == getStartPoint(&locat, &desc->cls.start_point, desc->cls.direc, i, desc->cls.bmp_nr, &desc->cls.puzzle)) { bmpTheme = dsk_theme_open(desc->cls.bgbmp_piece); bmpData = dsk_theme_hdl2buf(bmpTheme); #ifdef REGULAR_DRAW GUI_BMP_Draw(bmpData, locat.x + rect->x, locat.y + rect->y); #else eLIBs_memcpy(desc->puzzleData, (void *)((int)bmpData + BITMAPHEADERSIZE), desc->puzzleDataSize); foreg = GUI_BlockCreateFrom(NULL, desc->cls.puzzle.width, desc->cls.puzzle.height, desc->puzzleData, 0); GUI_BlockBitBlit(backbg, locat.x + rect->x, locat.y + rect->y, foreg, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(foreg); #endif dsk_theme_close(bmpTheme); // LogMI("Simple Slider Piece x = %d, y = %d", locat.x, locat.y); } } } else if (desc->drew_position < blocks) { for (i = 1 + desc->drew_position; i <= blocks; i++) { if (0 == getStartPoint(&locat, &desc->cls.start_point, desc->cls.direc, i, desc->cls.bmp_nr, &desc->cls.puzzle)) { bmpTheme = dsk_theme_open(desc->bmps[i - 1]); bmpData = dsk_theme_hdl2buf(bmpTheme); #ifdef REGULAR_DRAW GUI_BMP_Draw(bmpData, locat.x + rect->x, locat.y + rect->y); #else eLIBs_memcpy(desc->puzzleData, (void *)((int)bmpData + BITMAPHEADERSIZE), desc->puzzleDataSize); foreg = GUI_BlockCreateFrom(NULL, desc->cls.puzzle.width, desc->cls.puzzle.height, desc->puzzleData, 0); GUI_BlockBitBlit(backbg, locat.x + rect->x, locat.y + rect->y, foreg, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(foreg); #endif dsk_theme_close(bmpTheme); // LogMI("Simple Slider Piece x = %d, y = %d, bmp = %d", locat.x, locat.y, i - 1); } } } else if (desc->drew_position > blocks) { for (i = desc->drew_position; i > blocks; i--) { if (0 == getStartPoint(&locat, &desc->cls.start_point, desc->cls.direc, i, desc->cls.bmp_nr, &desc->cls.puzzle)) { bmpTheme = dsk_theme_open(desc->cls.bgbmp_piece); bmpData = dsk_theme_hdl2buf(bmpTheme); #ifdef REGULAR_DRAW GUI_BMP_Draw(bmpData, locat.x + rect->x, locat.y + rect->y); #else eLIBs_memcpy(desc->puzzleData, (void *)((int)bmpData + BITMAPHEADERSIZE), desc->puzzleDataSize); foreg = GUI_BlockCreateFrom(NULL, desc->cls.puzzle.width, desc->cls.puzzle.height, desc->puzzleData, 0); GUI_BlockBitBlit(backbg, locat.x + rect->x, locat.y + rect->y, foreg, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(foreg); #endif dsk_theme_close(bmpTheme); // LogMI("Simple Slider Piece x = %d, y = %d", locat.x, locat.y); } } } desc->drew_position = blocks; #ifndef REGULAR_DRAW GUI_BlockDelete(backbg); #endif return 0; }