Ejemplo n.º 1
0
/*******************************************************************
*
*       _ShowBMP
*
* Shows the contents of a bitmap file
*/
static void _ShowBMP(const char * sFilename) {
  int XSize, YSize, XPos, YPos;
  DWORD NumBytesRead;
  HANDLE hFile = CreateFile(sFilename, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  DWORD FileSize = GetFileSize(hFile, NULL);
  char * pFile = malloc(FileSize);
  ReadFile(hFile, pFile, FileSize, &NumBytesRead, NULL);
  CloseHandle(hFile);
  GUI_ClearRect(0, 60, 319, 239);
  XSize = GUI_BMP_GetXSize(pFile);
  YSize = GUI_BMP_GetYSize(pFile);
  XPos = (XSize > 320) ?  0 : 160 - (XSize / 2);
  YPos = (YSize > 180) ? 60 : 150 - (YSize / 2);
  if (!GUI_BMP_Draw(pFile, XPos, YPos)) {
    GUI_Delay(2000);
  }
  free(pFile);
}
Ejemplo n.º 2
0
/* 显示BMP图片 */
static int _DrawBMPFile(char *path)
{
    FRESULT rc;
    uint32_t size;
    FIL fil;
    uint8_t *pFile = (uint8_t*)SRAM_START_ADDRESS;
    UINT br;
    /* 读取文件 */
    rc = f_open(&fil, path, FA_READ);
    ERROR_TRACE(rc);
    if(rc) return 1;
    size = f_size(&fil);
    printf("file size:%d\r\n", size);
    if(size > SRAM_SIZE)
    {
        printf("file size to large\r\n");
        rc = f_close(&fil);
        return 2;
    }
    rc = f_read(&fil, pFile, size, &br);
    if(rc || br != size)
    {
        printf("file data read failed\r\n");
        rc = f_close(&fil);
        return 3;
    }
    printf("Xsize:%d Ysize:%d\r\n", GUI_BMP_GetXSize(pFile), GUI_BMP_GetYSize(pFile));
    GUI_Clear();
    if(GUI_BMP_Draw(pFile, 0, 0))
    {
        GUI_DispString("BMP file display failed!");
    }
    rc = f_close(&fil);
    ERROR_TRACE(rc);
    return 0;
}
Ejemplo n.º 3
0
/*---------------------------------------------------------------------------*
 * Routine: _PFMainDialog
 *---------------------------------------------------------------------------*
 * Description:
 *      Callback function used by emWin to process events.
 * Inputs:
 *      WM_MESSAGE *pMsg -- message structure for current dialog.
 *---------------------------------------------------------------------------*/
static void _PFMainDialog(WM_MESSAGE *pMsg)
{
    int Id, NCode;
    WM_HWIN hItem;
    GUI_PID_STATE *p_touchState;
    T_ImageMessage message;

    switch (pMsg->MsgId){
    case WM_INIT_DIALOG:
        Id    = WM_GetId(pMsg->hWinSrc);
        NCode = pMsg->Data.v;
        LAFSetup(pMsg->hWin, ID_WINDOW, PFMainLayout);

        hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &REVERSE_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &REVERSE_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &REVERSE_BUTTON);

        hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &PLAY_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &PLAY_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &PLAY_BUTTON);

        hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &FORWARD_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &FORWARD_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &FORWARD_BUTTON);

        hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &SETTINGS_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &SETTINGS_BUTTON);
        BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &SETTINGS_BUTTON);

        G_OverlayTimer = WM_CreateTimer(pMsg->hWin, ID_OVERLAY_TIMER, OVERLAY_TIMEOUT_MS, 0);
        G_UpdateTimer = WM_CreateTimer(pMsg->hWin, ID_UPDATE_TIMER, UPDATE_TIME_MS, 0);
        G_PictureChangeTimer = WM_CreateTimer(pMsg->hWin, ID_PICTURECHANGE_TIMER, 0, 0);

        if (!G_Current) {
            G_Current = GUI_MEMDEV_Create(0, 0,
                    UEZ_LCD_DISPLAY_WIDTH, UEZ_LCD_DISPLAY_HEIGHT);
            GUI_MEMDEV_Select(G_Current);
            GUI_BMP_Draw(G_CurrentImage, 0, 0);
            GUI_MEMDEV_Select(0);
        }

        WM_SetHasTrans(pMsg->hWin);

        message = IMAGE_INITILIZE;
        UEZQueueSend(G_ImageLoadQueue,
                (void*)&message,
                50);
        break;
    case WM_NOTIFY_PARENT:
        Id = WM_GetId(pMsg->hWinSrc);
        NCode = pMsg->Data.v;
        if( !LAFHandleEvent(PFMainLayout, pMsg, NCode, Id)){
            //Handle special cases here
        }
        break;
    case WM_TIMER:
        NCode = pMsg->Data.v;
        if (G_Active) {
            if (NCode == G_OverlayTimer) {
                IHideButtonsAndText(pMsg);
                //Grab all the touches
                WM_SetCapture(pMsg->hWin, 0);
            } else if (NCode == G_PictureChangeTimer) {
                //put up new picture
                if(G_AutoPlayOn) {
                    IHandleForward(pMsg, WM_NOTIFICATION_RELEASED, ID_FORWARD_BUTTON);
                    WM_RestartTimer(G_PictureChangeTimer, 5000);
                }
            } else if (NCode == G_UpdateTimer) {
                IUpdateFields(pMsg);
                WM_RestartTimer(G_UpdateTimer, UPDATE_TIME_MS);
            }
        }
        break;
    case WM_TOUCH:
        p_touchState = (GUI_PID_STATE *)(pMsg->Data.p);
        if (!p_touchState->Pressed) {
            WM_RestartTimer(G_OverlayTimer, OVERLAY_TIMEOUT_MS);
            //Show all the hidden text on buttons
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_TEXT);
            WM_ShowWindow(hItem);
            hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON);
            WM_ShowWindow(hItem);
            hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON);
            WM_ShowWindow(hItem);
            hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON);
            WM_ShowWindow(hItem);
            hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON);
            WM_ShowWindow(hItem);
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TIMEDATE_TEXT);
            WM_ShowWindow(hItem);
            WM_ReleaseCapture();
            IUpdateFields(pMsg);
        }
        break;
    case WM_POST_PAINT:
        GUI_BMP_Draw(G_CurrentImage, 0, 0);
        break;
    case WM_APP_GAINED_FOCUS:
        G_Active = ETrue;
        WM_SetCapture(pMsg->hWin, 0);
        IHideButtonsAndText(pMsg);
        IUpdateFields(pMsg);
        break;
    case WM_APP_LOST_FOCUS:
        G_Active = EFalse;
        IHideButtonsAndText(pMsg);
        WM_ReleaseCapture();
        G_AutoPlayOn = EFalse;
        break;
    default:
      WM_DefaultProc(pMsg);
    break;
  }
}
Ejemplo n.º 4
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;
}
Ejemplo n.º 5
0
static H_LYR StandyWndCreate(const char *file_path)
{
	H_LYR hLyr;
	int rotation;
	FB frameBuf;

	ES_FILE *file = NULL;
	void *file_data = NULL;
	bmp_file_head_t *f_head= NULL;
	__layerwincreate_para_t layerWinCreate;
	__disp_layer_para_t lyrPara;
	__u32 lenth;

	file = eLIBs_fopen(file_path,"rb");
	if(file == NULL){
		__msg("file open fail\n");
		//return NULL;
		goto end;
	}
	f_head = eLIBs_malloc(sizeof(bmp_file_head_t));
	if(f_head==NULL){
  		__msg("file malloc fail\n");
		goto end;
	}
	eLIBs_fread(f_head,1,sizeof(bmp_file_head_t),file);
	if(f_head->bfType[0]!='B'||f_head->bfType[1]!='M'){
		__msg("file isnot bmp\n");
		goto end;
	}
	file_data = eLIBs_malloc(f_head->bfSize);
	eLIBs_fseek(file,0,SEEK_SET);
	lenth = eLIBs_fread(file_data,1,f_head->bfSize,file);
	__msg("lenth==%d\n",lenth);
	rotation = GUI_GetScnDir();
	MwLayerParaInit(&layerWinCreate, &frameBuf, &lyrPara, "Layer", rotation, 1, 320, 240);
	MwFillSize(&frameBuf.size, 320 , 240);
	MwFillRect(&lyrPara.src_win, 0, 0, 320, 240);
	hLyr = GUI_LyrWinCreate(&layerWinCreate);
	if (NULL == hLyr) {
		__msg("Create layer (%s) failed", layerWinCreate.name);
		goto end;
	}
	GUI_LyrWinSel(hLyr); 
	GUI_BMP_Draw(file_data, 0, 0);
	GUI_LyrWinSetSta(hLyr,GUI_LYRWIN_STA_ON);
	eLIBs_fclose(file);
	eLIBs_free(f_head);
	eLIBs_free(file_data);
	return hLyr;
end:
	if(file){
       eLIBs_fclose(file);
	}
	if(f_head){
		eLIBs_free(f_head);
	}
	if(file_data){
		eLIBs_free(file_data);
	}
	return NULL;
}
Ejemplo n.º 6
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);
}
Ejemplo n.º 7
0
__s32 GUI_LongStringMove(__string_show_info_t    *show_info)
{
	if(!show_info->hmem)
	{
        ORANGE_WRN("input parameter error!\n");
        
		return ORANGE_FAIL;
	}

    /*all can see*/
	if(show_info->show_size.width < show_info->region.width)
	{
		return ORANGE_OK;
	}

	/*clear screen*/
	GUI_LyrWinSel(show_info->hlayer);
	GUI_MEMDEV_Select(show_info->hmem);		
	GUI_SetBkColor(show_info->color);
	GUI_ClearRect(show_info->region.x,show_info->region.y,
                  show_info->region.x + show_info->region.width - 1,
                  show_info->region.y + show_info->region.height - 1);
    if(show_info->bk_bmp)
    {
        GUI_BMP_Draw(show_info->bk_bmp,show_info->region.x + show_info->bmp_pos.x,
                     show_info->region.y + show_info->bmp_pos.y);
    }
    if(show_info->alpha_en)
    {
        GUI_OpenAlphaBlend();
    }
    
	GUI_CharSetToEncode(show_info->encode_id);
	GUI_SetFont(show_info->pFont);	
	GUI_SetColor(show_info->fontColor);
    
    if(show_info->align)
    {
        GUI_RECT  rect;

        rect.x0  = show_info->region.x;
        rect.y0  = show_info->region.y;
        rect.x1  = show_info->region.x + show_info->region.width - 1;
        rect.y1  = show_info->region.y + show_info->region.height - 1;
        GUI_DispStringInRect(show_info->name + 
                 		show_info->enocde_align_group[show_info->move_step],&rect,show_info->align);
    }
    else
    {
    	GUI_DispStringAt(show_info->name +
                 		show_info->enocde_align_group[show_info->move_step], 
                 		show_info->region.x,
                 		show_info->region.y);
    }
	GUI_MEMDEV_CopyToLCD(show_info->hmem);
	GUI_MEMDEV_Select(0);
    if(show_info->alpha_en)
    {
        GUI_CloseAlphaBlend();
    }

    GUI_LyrWinFlushFB(show_info->hlayer);

	if(show_info->left_move)
	{	
        SIZE    show_size;
        
		show_info->move_step++;
		
		local_get_string_piexl_rect(show_info->name + show_info->enocde_align_group[show_info->move_step],show_info, 
			&show_size);
		if(show_size.width < show_info->region.width)
		{	
			show_info->left_move = 0;
		}
	}
	else
	{	
		show_info->move_step--;

		if(show_info->move_step < 0)
		{
			show_info->move_step = 0;
			show_info->left_move = 1;
		}
	}

    return  ORANGE_OK;
}
Ejemplo n.º 8
0
static int StaticCtrlProc (__gui_msg_t *msg)
{
    __u32	            	dwStyle;
    static_data_t*			pData;

    dwStyle = GUI_WinGetStyle(msg->h_deswin);

    switch(msg->id)
    {
        case GUI_MSG_CREATE:
            pData = (static_data_t*) orange_malloc(sizeof(static_data_t));
            if (pData == NULL) 
            {
                return ORANGE_FAIL;
            }

            pData->status       = 0;
            pData->hmem         = 0;
            pData->str_move     = 0;
            pData->data         = (__u32)GUI_WinGetAttr(msg->h_deswin);
            GUI_CtrlWinSetAddData(msg->h_deswin,(__u32)pData);
            return 0;
       
        case GUI_MSG_DESTROY:
            pData = (static_data_t*)GUI_CtrlWinGetAddData(msg->h_deswin);
            if(pData->str_move)
            {
                GUI_LongStringDelete(pData->str_move);
            }
            orange_mfree ((void *)GUI_CtrlWinGetAddData(msg->h_deswin));
            return 0;
        
        case GUI_MSG_ENABLE:
            if (msg->dwAddData1 && (dwStyle & WS_DISABLED))
            {
                dwStyle &= ~WS_DISABLED;

                GUI_WinSetStyle(msg->h_deswin,dwStyle);
            }
            else if (!msg->dwAddData1 && !(dwStyle & WS_DISABLED))
            {
                dwStyle |= WS_DISABLED;

                GUI_WinSetStyle(msg->h_deswin,dwStyle);
            }
            else
            {
                return 0;
            }
            return 0;
            
        case GUI_MSG_SET_UNFOCUS:
            if((STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS))
            {
                STATIC_DRAWSTATUS(msg->h_deswin) &= (~STATICST_FOCUS);
                

    			GUI_InvalidateRect (msg->h_deswin, NULL, ORANGE_TRUE);
            }
            return 0;

        case GUI_MSG_SET_FOCUS:          
            if(!(STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS))
            {
                STATIC_DRAWSTATUS(msg->h_deswin) |= STATICST_FOCUS;

    			GUI_InvalidateRect (msg->h_deswin, NULL, ORANGE_TRUE);
            }
            return 0;
        
        case GUI_MSG_KEY:
			switch(msg->dwAddData1)
			{
				/*case GUI_MSG_KEY_RISE:
				{
					{
						__gui_notify_msg_t      notify_msg;

		                notify_msg.hWnd     = msg->h_deswin;
		                notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                notify_msg.msgcode  = STN_CLICKED;
		                notify_msg.dwAddData= last_key;
		                    
		                GUI_NotifyParent (&notify_msg);
		            }
				}
                return 0;*/
                
				case GUI_MSG_KEY_DOWN:
				{
					if(msg->dwAddData2 == KEY_UP_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;

		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_CLICKED;
		                	notify_msg.dwAddData= last_key;
		                    
		                GUI_NotifyParent (&notify_msg);
		            	}
					}

					if(msg->dwAddData2 == KEY_DOWN_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;

		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_PUSHED;
		                	notify_msg.dwAddData= GUI_MSG_KEY_DOWN;
		                    
		                	GUI_NotifyParent (&notify_msg);
		            	}
					}
		            
				}
                return 0;
                
				case GUI_MSG_KEY_ENTER:
				{
					if(msg->dwAddData2 == KEY_UP_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;

		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_CLICKED;
		                	notify_msg.dwAddData= last_key;
		                    
		                GUI_NotifyParent (&notify_msg);
		            	}
					}

					if(msg->dwAddData2 == KEY_DOWN_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;
	
		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_PUSHED;
		                	notify_msg.dwAddData= GUI_MSG_KEY_ENTER;
		                    
		                	GUI_NotifyParent (&notify_msg);
		            	}
					}
		            
				}

                return 0;
                
				case GUI_MSG_KEY_RIGHT:
				case GUI_MSG_KEY_LEFT:
				case GUI_MSG_KEY_UP:
				default:
                {
					if(msg->dwAddData2 == KEY_UP_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;

		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_CLICKED;
		                	notify_msg.dwAddData= last_key;
		                    
		                GUI_NotifyParent (&notify_msg);
		            	}
					}

					if(msg->dwAddData2 == KEY_DOWN_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;
	
		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_PUSHED;
		                	notify_msg.dwAddData= msg->dwAddData1;
		                    
		                	GUI_NotifyParent (&notify_msg);
		            	}
					}
					
                }
				break;
					
			}

            /*if(msg->dwAddData1 != GUI_MSG_KEY_RISE)
            {
                last_key = msg->dwAddData1;
            }
            else
            {
                last_key = 0xffffffff;
            }*/
            last_key = msg->dwAddData1;
            
        return 0;
        
        case GUI_MSG_TOUCH:
			{
				switch(msg->dwAddData1)
				{
					case GUI_MSG_TOUCH_DOWN:
					{
						{
							__gui_notify_msg_t      notify_msg;

			                notify_msg.hWnd     = msg->h_deswin;
			                notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
			                notify_msg.msgcode  = STN_PUSHED;
			                notify_msg.dwAddData= 0;
			                    
			                GUI_NotifyParent (&notify_msg);
						}		            
					}
					break;
					
					case GUI_MSG_TOUCH_UP:
					{
						{
							__gui_notify_msg_t      notify_msg;

			                notify_msg.hWnd     = msg->h_deswin;
			                notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
			                notify_msg.msgcode  = STN_CLICKED;
			                notify_msg.dwAddData= 0;
			                    
			                GUI_NotifyParent (&notify_msg);
				         }
					}
					break;	
				}
			}
            
        return 0;

        case GUI_MSG_WIN_WAKEUP:
        case GUI_MSG_PAINT:
        {
			__gui_rect_t 	rcrect;
            RECT            fbrect;
			//void         	*pBMP;
            static_data_t   *static_data;
			static_para_t  	*user_data;
			//__u32			 color;

            //static_data = (static_para_t *)GUI_CtrlWinGetAddData(msg->h_deswin);

			user_data   = (static_para_t *)(((static_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin))->data);
            static_data = (static_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin);

            GUI_LyrWinSel(GUI_LyrP2H(GUI_WinGetLyrWin(msg->h_deswin)));
            
            GUI_WinGetClientFBRect(msg->h_deswin,&fbrect);
            if(!static_data->hmem && (GUI_WinGetStyle(msg->h_deswin) & WS_MEMDEV))
            {
            	#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
                static_data->hmem = GUI_MEMDEV_Create(fbrect.x,fbrect.y,fbrect.width,fbrect.height);
				#endif
            }
			SysRectToGuiRect(&fbrect,&rcrect);

			if(static_data->hmem)
			{
				#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
            	GUI_MEMDEV_Select(static_data->hmem);           // start memory device
            	#endif
        	}
				
        	if (STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS)
            {	
                GUI_RECT        rect;
                
                GUI_SetBkColor(user_data->bk_color);
            	GUI_ClearRect(rcrect.left,rcrect.top,
                 			rcrect.right,rcrect.bottom);

                if(user_data->focus_bmp)
                {
                    GUI_BMP_Draw(user_data->focus_bmp, rcrect.left + user_data->bmp_pos.x, 
    					rcrect.top + user_data->bmp_pos.y);
                }
				
				if(user_data->alpha_en)
                {
                    GUI_OpenAlphaBlend();
                }
                
				GUI_CharSetToEncode(user_data->draw_code);
				GUI_SetFont(user_data->draw_font);

				GUI_SetDrawMode(GUI_DRAWMODE_TRANS);
			    GUI_SetColor(user_data->ftxt_color);

                rect.x0 = rcrect.left;
                rect.y0 = rcrect.top;
                rect.x1 = rcrect.right;
                rect.y1 = rcrect.bottom;
                if(!user_data->txt_align)
                {
    			    GUI_DispStringAt(user_data->text,
    			                     rcrect.left + user_data->text_pos.x, 
    					            rcrect.top + user_data->text_pos.y);
                }
                else
                {
                    GUI_DispStringInRect(user_data->text,&rect,user_data->txt_align);
                }
            }
            else
            {
                GUI_RECT        rect;
                
                GUI_SetBkColor(user_data->bk_color);
				
            	GUI_ClearRect(rcrect.left,rcrect.top,
                 			rcrect.right,rcrect.bottom);

                if(user_data->unfocus_bmp)
                {
                    GUI_BMP_Draw(user_data->unfocus_bmp, rcrect.left + user_data->bmp_pos.x, 
    					rcrect.top + user_data->bmp_pos.y);
                }
				
				if(user_data->alpha_en)
                {
                    GUI_OpenAlphaBlend();
                }
                
				GUI_CharSetToEncode(user_data->draw_code);
				GUI_SetFont(user_data->draw_font);

				GUI_SetDrawMode(GUI_DRAWMODE_TRANS);
			    GUI_SetColor(user_data->uftxt_color);

                rect.x0 = rcrect.left;
                rect.y0 = rcrect.top;
                rect.x1 = rcrect.right;
                rect.y1 = rcrect.bottom;
                
			    if(!user_data->txt_align)
                {
    			    GUI_DispStringAt(user_data->text,
    			                     rcrect.left + user_data->text_pos.x, 
    					            rcrect.top + user_data->text_pos.y);
                }
                else
                {
                    GUI_DispStringInRect(user_data->text,&rect,user_data->txt_align);
                }
            }
            if(static_data->hmem)
            {
            	#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
	            GUI_MEMDEV_CopyToLCD( static_data->hmem );          // copy from memory device to fb
		        GUI_MEMDEV_Select( NULL );                    // stop memory device
		        GUI_MEMDEV_Delete(static_data->hmem);
				#endif
	            static_data->hmem = NULL;
        	}

            if(user_data->alpha_en)
            {
                GUI_CloseAlphaBlend();
            }

            GUI_LyrWinFlushFB(GUI_WinGetLyrWin(msg->h_deswin));
        }
        return 0;

        default:
        break;
    }
    
    return GUI_CtrlWinDefaultProc (msg);
}
Ejemplo n.º 9
0
static void _spinbox_ctrl_paint(__gui_msg_t * msg)
{
	char					str[128];
	__gui_rect_t			rcrect;
	RECT					fbrect;
	spinbox_data_t	 		*spinbox_data;
	spinbox_para_t			*user_data; 		
	
	user_data	= (spinbox_para_t *)(((spinbox_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin))->data);
	spinbox_data = (spinbox_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin);
	
	GUI_LyrWinSel((H_LYR)GUI_WinGetLyrWin(msg->h_deswin));
	GUI_WinGetClientFBRect(msg->h_deswin,&fbrect);
	if(!spinbox_data->hmem)
	{
		#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
		spinbox_data->hmem = GUI_MEMDEV_Create(fbrect.x,fbrect.y,fbrect.width,fbrect.height);
		GUI_MEMDEV_Select(spinbox_data->hmem);
		#endif
	}			 
	
	SysRectToGuiRect(&fbrect,&rcrect);
	
	GUI_OpenAlphaBlend();
	if (SPINBOX_DRAWSTATUS(msg->h_deswin) & BST_PUSHED)
	{	
		GUI_SetBkColor(user_data->bk_color);
		GUI_ClearRect(rcrect.left, rcrect.top, rcrect.right, rcrect.bottom);
		
		GUI_CharSetToEncode(user_data->draw_code);
		
		GUI_SetFont(user_data->draw_font);
	
		GUI_SetDrawMode(GUI_DRAWMODE_TRANS);						
		if(SPINBOX_DRAWFLAG(msg->h_deswin) & BST_LEFT)
		{
			GUI_BMP_Draw(user_data->ufup_bmp, rcrect.left + user_data->upbmp_pos.x, 
						 rcrect.top + user_data->upbmp_pos.y);
			GUI_BMP_Draw(user_data->fdn_bmp, rcrect.left + user_data->dnbmp_pos.x, 
						 rcrect.top + user_data->dnbmp_pos.y); 
		}
		else
		{	
			GUI_BMP_Draw(user_data->fup_bmp, rcrect.left + user_data->upbmp_pos.x, 
						 rcrect.top + user_data->upbmp_pos.y);					
			GUI_BMP_Draw(user_data->ufdn_bmp, rcrect.left + user_data->dnbmp_pos.x, 
				 		 rcrect.top + user_data->dnbmp_pos.y);	
		}
		
		GUI_SetColor(user_data->ftxt_color);
		eLIBs_uint2str_dec(user_data->cur_value, str);
		GUI_DispStringHCenterAt(str, rcrect.left + user_data->text_pos.x, rcrect.top + user_data->text_pos.y);		
	}
	else
	{			
		GUI_SetBkColor(user_data->bk_color);
		GUI_ClearRect(rcrect.left, rcrect.top, rcrect.right, rcrect.bottom);
	
		GUI_CharSetToEncode(user_data->draw_code);
		
		GUI_SetFont(user_data->draw_font);
	
		GUI_SetDrawMode(GUI_DRAWMODE_TRANS);
		GUI_BMP_Draw(user_data->ufup_bmp, rcrect.left + user_data->upbmp_pos.x, 
					  rcrect.top + user_data->upbmp_pos.y);
		GUI_BMP_Draw(user_data->ufdn_bmp, rcrect.left + user_data->dnbmp_pos.x, 
					  rcrect.top + user_data->dnbmp_pos.y);	
					  
		GUI_SetColor(user_data->uftxt_color);	
		eLIBs_uint2str_dec(user_data->cur_value, str);
		GUI_DispStringHCenterAt(str, rcrect.left + user_data->text_pos.x,rcrect.top + user_data->text_pos.y);					  						
	}
	GUI_LyrWinFlushFB((H_LYR)GUI_WinGetLyrWin(msg->h_deswin));
	GUI_CloseAlphaBlend();	
	
	if(spinbox_data->hmem)
	{
		#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
		GUI_MEMDEV_CopyToLCD( spinbox_data->hmem ); 
		GUI_MEMDEV_Select( NULL );			
		GUI_MEMDEV_Delete(spinbox_data->hmem);
		#endif
		spinbox_data->hmem = NULL;
	}	

}