📄 startosd.c
字号:
/* * C Source file for the main code * Copyright (c) Sigma Designs 2002-2003. All Rights Reserved. */#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>#include "OsdWindow.h"#include "startosd.h"void endapp(OSD_WINDOW *wPtr,DATA_POINTER d);void endapp(OSD_WINDOW *wPtr,DATA_POINTER d){ OsdEndApp();}void OsdKbHandler(OSD_WINDOW *wPtr, DATA_POINTER ptr){ GR_EVENT *event; unsigned int rk; char buf[3]; event = wPtr->lastevent; rk = event->keystroke.ch; if (rk == SHOW_PLAY_INFO_UPDATE) return; // Display Message and allow OSD, Volume to come through switch (rk) { case SHOW_ABORT_MSG: case SHOW_INVALID_REGION_MSG: case SHOW_BOOK_MARK_MSG: case SHOW_CANNOT_PLAYBACK_FROM_CURRENT_POSITION_MSG: case SHOW_PARENTAL_LEVEL_MSG: case SHOW_CANNOT_PLAYBACK_AT_CURRENT_RESOLUTION_MSG: MapMsgHandler(wPtr, (DATA_POINTER)rk); return; case SHOW_CLEAR_MSG: ClearMsg(wPtr); return; } // Display Volume will ClearOSD but not CancelOsd. ClearOsd(wPtr); // Handle volume stuff first if (rk == SHOW_VOLUP_KEYDOWN || rk == SHOW_VOLDOWN_KEYDOWN) { DrawVolBar(wPtr); return; } // Display OSD or digits will ClearOsd, CancelVolume CancelVolume(wPtr); // Handle digits for VCD here if (rk >= SHOW_ZERO_KEYDOWN && rk <= SHOW_NINE_KEYDOWN) { char digit; digit = 0x30 + rk - SHOW_ZERO_KEYDOWN; switch (digitCnt) { case 1: digitStr[1] = digitStr[2]; break; case 2: digitStr[0] = digitStr[1]; digitStr[1] = digitStr[2]; break; } digitStr[2] = digit; digitCnt++; //Display digit string GrFillRect(wPtr->wid,wPtr->gc_pal6,445,40,90,50); GrSetGCFont(wPtr->gc, OSD_DEFAULT_FONT_36); GrText(wPtr->wid,wPtr->gc,465,75,digitStr,-1,GR_TFASCII); //GrText(wPtr->wid,wPtr->gc,440,35,digitStr,-1,GR_TFASCII); GrSetGCFont(wPtr->gc, OSD_DEFAULT_FONT_NO); return; } else { if (digitCnt) { digitCnt = 0; digitStr[0] = '-'; digitStr[1] = '-'; digitStr[2] = '-'; digitStr[3] = '\0'; } } if (rk == SHOW_CLEAR_DIGIT) { GrFillRect(wPtr->wid,wPtr->gc_pal0,445,40,90,50); //GrFillRect(wPtr->wid,wPtr->gc_pal0,340,40,300,54); RedrawOsd(wPtr); return; } // Handle mute stuff here if (rk == SHOW_MUTE_KEYDOWN) { DrawStickyOsd(wPtr, "img/mute.png"); return; } if (rk == SHOW_MUTE_OFF) { CancelStickyOsd(wPtr); return; } switch (rk) { case SHOW_LOADING: DrawOsd(wPtr,"img/wait.png",OSD_NO_TIMEOUT); return; case SHOW_NOT_LOADING: CancelNonStickyOsd(wPtr); return; case SHOW_OPEN_KEYDOWN: GrClearWindow(wPtr->wid, GR_FALSE); CancelNonStickyOsd(wPtr); DrawOsd(wPtr,"img/open.png",OSD_RES_TIMEOUT); return; case SHOW_POWER_KEYDOWN: CancelNonStickyOsd(wPtr); GrClearWindow(wPtr->wid, GR_FALSE); //DrawOsd(wPtr,"img/power.png",OSD_RES_TIMEOUT); // printf("Powered off...\n"); return; case SHOW_CLOSE_KEYDOWN: DrawOsd(wPtr,"img/close.png",OSD_RES_TIMEOUT); return; case SHOW_LIB_KEYDOWN: ShowJpeg("img/lib/libbackground.jpg"); MapLibHandler(wPtr, (DATA_POINTER)GR_TRUE); return; case SHOW_SETUP_KEYDOWN: //DrawOsd(wPtr,"img/wait.png",OSD_NO_TIMEOUT); ShowJpeg("img/setupbackground.jpg"); MapSetupHandler(wPtr, (DATA_POINTER)GR_TRUE); return; case SHOW_VCD_SEARCH_KEYDOWN: MapSearchHandler(wPtr, (DATA_POINTER)VCD_SEARCH); return; case SHOW_DVD_SEARCH_KEYDOWN: MapSearchHandler(wPtr, (DATA_POINTER)DVD_SEARCH); return; case SHOW_SPECIAL_MENU_KEYDOWN: MapSpecialMenuHandler(wPtr, NULL); return; case SHOW_TIME_SEARCH_KEYDOWN: MapSearchHandler(wPtr, (DATA_POINTER)TIME_SEARCH); return; case SHOW_PASSWORD_ENTRY_KEYDOWN: MapPwdChkHandler(wPtr, NULL); return; //case SHOW_PROGRAM_KEYDOWN: // MapProgramPlaylistHandler(wPtr, NULL); // return; case SHOW_DVD_INFO_KEYDOWN: case SHOW_VCD_INFO_KEYDOWN: case SHOW_AUDIO_CD_INFO_KEYDOWN: MapShowInfoHandler(wPtr, (DATA_POINTER)rk); return; default: if (rk >= SHOW_FIRST_TIMEOUT_OSD && rk <= SHOW_LAST_TIMEOUT_OSD) { int timeout; if (rk & 0x4000) timeout = OSD_RES_TIMEOUT; else if (rk & 0x8000) timeout = OSD_TIMEOUT; else timeout = OSD_NO_TIMEOUT; if (rk == SHOW_PLAY_KEYDOWN || rk == SHOW_STOP_KEYDOWN) { //Cancel no-time-out osd CancelNonStickyOsd(wPtr); } DrawOsd(wPtr,osdTOImg[rk & 0xFF],timeout); return; } else if (rk >= SHOW_FIRST_NOTIMEOUT_OSD && rk <= SHOW_LAST_NOTIMEOUT_OSD) { DrawOsd(wPtr,osdNoTOImg[rk & 0xFF],OSD_NO_TIMEOUT); return; } else if (rk >= SHOW_SUBTITLE1_KEYDOWN && rk <= SHOW_SUBTITLEOFF_KEYDOWN) { if (rk == SHOW_SUBTITLEOFF_KEYDOWN) DrawOsd(wPtr,"img/subtitleoff.png",OSD_TIMEOUT); else { DrawOsd(wPtr,"img/subtitle.png",OSD_TIMEOUT); GrSetGCFont(wPtr->gc_pal244, OSD_DEFAULT_FONT_36); itoa(rk-SHOW_SUBTITLE1_KEYDOWN+1,buf,2); GrText(wPtr->wid,wPtr->gc_pal244,550,78,buf,2,GR_TFASCII); GrSetGCFont(wPtr->gc_pal244, OSD_DEFAULT_FONT_NO); } } else if (rk >= SHOW_ANGLE1_KEYDOWN && rk <= SHOW_ANGLE9_KEYDOWN) { GrSetGCFont(wPtr->gc_pal244, OSD_DEFAULT_FONT_36); itoa(rk-SHOW_ANGLE1_KEYDOWN+1,buf,2); DrawOsd(wPtr,"img/angle.png",OSD_TIMEOUT); GrText(wPtr->wid,wPtr->gc_pal244,500,78,buf,2,GR_TFASCII); GrSetGCFont(wPtr->gc_pal244, OSD_DEFAULT_FONT_NO); } else if (rk >= SHOW_AUDIO1_KEYDOWN && rk <= SHOW_AUDIO8_KEYDOWN) { GrSetGCFont(wPtr->gc_pal244, OSD_DEFAULT_FONT_36); itoa(rk-SHOW_AUDIO1_KEYDOWN+1,buf,2); DrawOsd(wPtr,"img/audio.png",OSD_TIMEOUT); GrText(wPtr->wid,wPtr->gc_pal244,500,78,buf,2,GR_TFASCII); GrSetGCFont(wPtr->gc_pal244, OSD_DEFAULT_FONT_NO); } else if (rk >= SHOW_ZOOM1_KEYDOWN && rk <= SHOW_ZOOMOFF_KEYDOWN) { if (rk == SHOW_ZOOMOFF_KEYDOWN) DrawOsd(wPtr,"img/zoomoff.png",OSD_TIMEOUT); else { GrSetGCFont(wPtr->gc_pal244, OSD_DEFAULT_FONT_36); itoa(rk-SHOW_ZOOM1_KEYDOWN+1,buf,2); DrawOsd(wPtr,"img/zoom.png",OSD_TIMEOUT); GrText(wPtr->wid,wPtr->gc_pal244,500,78,buf,2,GR_TFASCII); GrSetGCFont(wPtr->gc_pal244, OSD_DEFAULT_FONT_NO); } } } }void MapMainWindow(OSD_WINDOW *wPtr, DATA_POINTER ptr){ wPtr->KbdHandler=OsdKbHandler; if (ptr) GrClearWindow(main_window->wid, GR_FALSE); return;}int initgui (int argc,char **argv){ main_window = OsdAppInitialize(); MapMainWindow(main_window, 0); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -