Exemplo n.º 1
0
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);	
	
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
static __s32 clockWndProc(__gui_msg_t * msg)
{
    __u32 clockhands[CLOCKHANDS];
    FB fb;

    HTHEME hback;
    HBLOCK block;
    void * pic;
    int length;
    int start_x;
    int start_y;

    ClockPrivate * draw;
    draw = (ClockPrivate *)GUI_WinGetAttr(msg->h_deswin);
    if ((!draw) || (-1 == EWin_CheckInherit(&draw->scrolling.ewii)) ||
        (!(draw->scrolling.ewii.mask[0] & SCR_WNDINFOMASK_SBUTTON))) {
        LogE("Null or wrong scrolling page window private data");
        return -1;
    }
    switch (msg->id) {
    case GUI_MSG_CREATE:
		draw->scrolling.ewii.mask[0] |= SCR_WNDINFOMASK_GESTURE;
        clockhands[0] = ID_CLOCK_PNG_DIG_HAND_H1_BMP;
        clockhands[1] = ID_CLOCK_PNG_DIG_HAND_H2_BMP;
        clockhands[2] = ID_CLOCK_PNG_DIG_HAND_H3_BMP;
        clockhands[3] = ID_CLOCK_PNG_DIG_HAND_H4_BMP;
        clockhands[4] = ID_CLOCK_PNG_DIG_HAND_H5_BMP;
        clockhands[5] = ID_CLOCK_PNG_DIG_HAND_H6_BMP;
        clockhands[6] = ID_CLOCK_PNG_DIG_HAND_H7_BMP;
        clockhands[7] = ID_CLOCK_PNG_DIG_HAND_H8_BMP;
        draw->hhdl = picswap_quadrant_begin(clockhands, 25, 80);
        clockhands[0] = ID_CLOCK_PNG_DIG_HAND_M1_BMP;
        clockhands[1] = ID_CLOCK_PNG_DIG_HAND_M2_BMP;
        clockhands[2] = ID_CLOCK_PNG_DIG_HAND_M3_BMP;
        clockhands[3] = ID_CLOCK_PNG_DIG_HAND_M4_BMP;
        clockhands[4] = ID_CLOCK_PNG_DIG_HAND_M5_BMP;
        clockhands[5] = ID_CLOCK_PNG_DIG_HAND_M6_BMP;
        clockhands[6] = ID_CLOCK_PNG_DIG_HAND_M7_BMP;
        clockhands[7] = ID_CLOCK_PNG_DIG_HAND_M8_BMP;
        draw->mhdl = picswap_quadrant_begin(clockhands, 25, 80);
        clockhands[0] = ID_CLOCK_PNG_DIG_HAND_S1_BMP;
        clockhands[1] = ID_CLOCK_PNG_DIG_HAND_S2_BMP;
        clockhands[2] = ID_CLOCK_PNG_DIG_HAND_S3_BMP;
        clockhands[3] = ID_CLOCK_PNG_DIG_HAND_S4_BMP;
        clockhands[4] = ID_CLOCK_PNG_DIG_HAND_S5_BMP;
        clockhands[5] = ID_CLOCK_PNG_DIG_HAND_S6_BMP;
        clockhands[6] = ID_CLOCK_PNG_DIG_HAND_S7_BMP;
        clockhands[7] = ID_CLOCK_PNG_DIG_HAND_S8_BMP;
        draw->shdl = picswap_quadrant_begin(clockhands, 25, 80);
        draw->bgicon = ID_CLOCK_BMP_DIGITALCLOCK_BG_BMP;
        GUI_LyrWinGetFB(draw->scrolling.ewii.lyrLow, &fb);
        draw->bgblock = GUI_BlockCreateFrom(NULL, fb.size.width, fb.size.height, fb.addr[0], 0);
        GUI_LyrWinGetFB(draw->scrolling.ewii.lyrHigher, &fb);
        draw->forgblock = GUI_BlockCreateFrom(NULL, fb.size.width, fb.size.height, fb.addr[0], 0);
        esTIME_GetTime(&draw->tm);
		draw->minute = draw->tm.minute;
        draw->invalidate |= INVALIDATE_BACKGROUND|INVALIDATE_FOREGROUND;
        break;
    case GUI_MSG_DESTROY:
        GUI_BlockDelete(draw->forgblock);
        GUI_BlockDelete(draw->bgblock);
        picswap_quadrant_end(draw->shdl);
        picswap_quadrant_end(draw->mhdl);
        picswap_quadrant_end(draw->hhdl);
        esMEMS_Mfree(0, draw);
        break;
    case GUI_MSG_PAINT:
        if (draw->invalidate & INVALIDATE_BACKGROUND) {
#ifdef THIS_DEBUG
            log_d("Invalidate background");
#endif
            GUI_LyrWinSel(draw->scrolling.ewii.lyrLow);
            hback = dsk_Systheme_open(draw->bgicon);
            pic = dsk_Systheme_hdl2buf(hback);
            GUI_BMP_Draw(pic, draw->scrolling.wndRect.x, draw->scrolling.wndRect.y);
            dsk_theme_close(hback);
            pic = picget_clock_pic(draw->hhdl, (draw->tm.hour % 12) * 5 + (draw->tm.minute / 12), &length, &start_x, &start_y);
            block = GUI_BlockCreateFrom(NULL, length, length, pic, 0);
            GUI_BlockBitBlit(draw->bgblock, draw->scrolling.wndRect.x + start_x + WATCH_OFFSET_X,
                draw->scrolling.wndRect.y + start_y + WATCH_OFFSET_Y,
                block, NULL, BLITFLAG_COLORALPHA, NULL);
            GUI_BlockDelete(block);
            pic = picget_clock_pic(draw->mhdl, draw->tm.minute, &length, &start_x, &start_y);
            block = GUI_BlockCreateFrom(NULL, length, length, pic, 0);
            GUI_BlockBitBlit(draw->bgblock, draw->scrolling.wndRect.x + start_x + WATCH_OFFSET_X,
                draw->scrolling.wndRect.y + start_y + WATCH_OFFSET_Y,
                block, NULL, BLITFLAG_COLORALPHA, NULL);
            GUI_BlockDelete(block);
        }
        
		if (draw->invalidate & INVALIDATE_FOREGROUND) {
			GUI_LyrWinSel(draw->scrolling.ewii.lyrHigher);
			GUI_SetBkColor(0);
            GUI_ClearRect(draw->scrolling.wndRect.x, draw->scrolling.wndRect.y,
                draw->scrolling.wndRect.x + draw->scrolling.wndRect.width, draw->scrolling.wndRect.y + draw->scrolling.wndRect.height);
        }
        pic = picget_clock_pic(draw->shdl, draw->tm.second, &length, &start_x, &start_y);
        block = GUI_BlockCreateFrom(NULL, length, length, pic, 0);
        GUI_BlockBitBlit(draw->forgblock, draw->scrolling.wndRect.x + start_x + WATCH_OFFSET_X,
            draw->scrolling.wndRect.y + start_y + WATCH_OFFSET_Y,
            block, NULL, BLITFLAG_COLORSET, NULL);
        GUI_BlockDelete(block);

        draw->invalidate = INVALIDATE_NULL;
        break;
    //case GUI_MSG_USER_REPAINT_NEIGHBOR:
        //draw->invalidate |= (INVALIDATE_BACKGROUND | INVALIDATE_FOREGROUND);
    case GUI_MSG_TIMER:
        esTIME_GetTime(&draw->tm);
        if (draw->minute != draw->tm.minute) {
            draw->minute = draw->tm.minute;
            draw->invalidate |= INVALIDATE_BACKGROUND;
        }
#ifdef THIS_DEBUG
        log_mi("time: %d,%d,%d", draw->tm.hour, draw->tm.minute, draw->tm.second);
        log_mi("Date: %d,%d,%d", draw->date.year, draw->date.month, draw->date.day);
#endif
        __here__;
        GUI_WinUpdate(msg->h_deswin, ORANGE_TRUE);
        break;
    case GUI_MSG_SET_FOCUS:
        draw->invalidate |= (INVALIDATE_BACKGROUND | INVALIDATE_FOREGROUND);
        GUI_SetTimer(msg->h_deswin, 1, 100, NULL);
		__msg("12");
        return 0;
    case GUI_MSG_SET_UNFOCUS:
        GUI_KillTimer(msg->h_deswin, 1);
        return 0;
    default:
        break;
    }

    return GUI_FrmWinDefaultProc(msg);
}