📄 kokoutlook.c
字号:
DrawBaseBmp(hdc, &lEdgebmp);
}
//draw up edge
if(upBmpId>0)
{
uEdgebmp.BmpID=upBmpId;
uEdgebmp.width=474;//GetBMPWidth(HBITMAP hbmp);
uEdgebmp.height=2;
uEdgebmp.upperleftx=lpRc->left;
uEdgebmp.upperlefty=lpRc->top;
DrawBaseBmp(hdc, &uEdgebmp);
}
//draw right edge
if(rightBmpId>0)
{
rEdgebmp.BmpID=rightBmpId;
rEdgebmp.width=2;//GetBMPWidth(HBITMAP hbmp);
rEdgebmp.height=38;
rEdgebmp.upperleftx=lpRc->right-2;
rEdgebmp.upperlefty=lpRc->top+2;
DrawBaseBmp(hdc, &rEdgebmp);
}
//draw down edge
if(downBmpId>0)
{
dEdgebmp.BmpID=downBmpId;
dEdgebmp.width=474;//GetBMPWidth(HBITMAP hbmp);
dEdgebmp.height=2;
dEdgebmp.upperleftx=lpRc->left;
dEdgebmp.upperlefty=lpRc->bottom-2;
DrawBaseBmp(hdc, &dEdgebmp);
}
}
void DrawKokBack(HDC hdc,BYTE bInit)
{
RECT bsRect;
//draw box rect.
if(bInit)
{
SetRect(&bsRect, KOK_LEFT,KOK_TOP, KOK_LEFT+KOK_OUTLOOK_WIDTH-1,KOK_TOP+KOK_OUTLOOK_HIGH-1);
GUI_CreateButtonControl2(gui_hdc, &bsRect, GetColorInDef256Palette(253), GetColorInDef256Palette(87), GetColorInDef256Palette(199), CL_BKNOCARE, "", NORMAL_STRING, 0, 0);
}
else
{
SetRect(&bsRect, KOK_LEFT+156,KOK_TOP+2, KOK_LEFT+KOK_OUTLOOK_WIDTH-5,KOK_TOP+KOK_OUTLOOK_HIGH-5);
GUI_CreateButtonControl2(gui_hdc, &bsRect, GetColorInDef256Palette(253), GetColorInDef256Palette(253), GetColorInDef256Palette(253), CL_BKNOCARE, "", NORMAL_STRING, 0, 0);
}
}
void drawKokBox(HDC hdc,lpKokBox lpKokbox)
{
HDC hMemDC;
HBITMAP holdbmp;
RECT bsRect,tempRect;
BYTE i,curItem;
int left,right,top,bottom;
UINT uFormat=DT_SINGLELINE|DT_VCENTER|DT_CENTER|DT_CHARCLIP;
BYTE keystr[4][4]=
{
{'\0','b','\0','\0'},
{'\0','#','\0','\0'},
};
HBRUSH hbr;
curItem=lpKokbox->curItem;
hMemDC=InitMemoryDC(hdc,lpKokbox->kokIconBmp[curItem].width+1,lpKokbox->kokIconBmp[curItem].height+1,&holdbmp);
//draw kok icon bmp
SetRect(&tempRect, 0, 0,lpKokbox->kokIconBmp[curItem].width,lpKokbox->kokIconBmp[curItem].height);
GUI_CreateBitmapControl2(hMemDC, &tempRect, GetColorInDef256Palette(253), GetColorInDef256Palette(253), GetColorInDef256Palette(253), lpKokbox->kokIconBmp[curItem].BmpID, 0, 0);
BitBlt(hdc, lpKokbox->kokIconBmp[curItem].upperleftx, lpKokbox->kokIconBmp[curItem].upperlefty, lpKokbox->kokIconBmp[curItem].width, lpKokbox->kokIconBmp[curItem].height, hMemDC, 1, 0, SRCCOPY);
DelMemoryDC(hMemDC, holdbmp);
left=lpKokbox->kokItemRec.rect.left;
right=lpKokbox->kokItemRec.rect.right;
top=lpKokbox->kokItemRec.rect.top;
bottom=lpKokbox->kokItemRec.rect.bottom;
hMemDC=InitMemoryDC(hdc,right-left+1,bottom-top+1,&holdbmp);
//draw item rect
lpKokbox->kokItemRec.rect.right-=left;
lpKokbox->kokItemRec.rect.bottom-=top;
lpKokbox->kokItemRec.rect.left=0;
lpKokbox->kokItemRec.rect.top=0;
DrawBaseRect(hMemDC,&(lpKokbox->kokItemRec));
//draw item string
lpKokbox->kokItemName[curItem].rect.left-=left;
lpKokbox->kokItemName[curItem].rect.right-=left;
lpKokbox->kokItemName[curItem].rect.bottom-=top;
lpKokbox->kokItemName[curItem].rect.top-=top;
DrawBaseStr(hMemDC,&(lpKokbox->kokItemName[curItem]));
BitBlt(hdc, left, top, right-left, bottom-top, hMemDC, 1, 0, SRCCOPY);
DelMemoryDC(hMemDC, holdbmp);
//draw EKRect where are both echo and key bar .have left/right arrow at both sides.
drawEKBarRect(hdc,&(lpKokbox->EKBarRec),lpKokbox->backgroudClr,lpKokbox->arrClrIndex);
//draw string ahead of echo/key bar
if(curItem==KOK_STAGE_ECHO||curItem==KOK_STAGE_KEY)
{
left=lpKokbox->barStr[curItem-1].rect.left;
right=lpKokbox->barStr[curItem-1].rect.right;
top=lpKokbox->barStr[curItem-1].rect.top;
bottom=lpKokbox->barStr[curItem-1].rect.bottom;
hMemDC=InitMemoryDC(hdc,right-left+1,bottom-top+1,&holdbmp);
SetRect(&tempRect,0,0,right-left,bottom-top);
GUI_CreateButtonControl2(hMemDC,&tempRect,GetColorInDef256Palette(253),GetColorInDef256Palette(253),GetColorInDef256Palette(253),GetColorInDef256Palette(253),"",0,0,0);
lpKokbox->barStr[curItem-1].rect.left=0;
lpKokbox->barStr[curItem-1].rect.right-=left;
lpKokbox->barStr[curItem-1].rect.top=0;
lpKokbox->barStr[curItem-1].rect.bottom-=top;
DrawBaseStr(hMemDC,&(lpKokbox->barStr[curItem-1])); //gushun for karaoke volume
BitBlt(hdc, left, top, right-left, bottom-top, hMemDC, 1, 0, SRCCOPY);
DelMemoryDC(hMemDC, holdbmp);
}
//draw echo bar bmp
if(curItem==KOK_STAGE_ECHO)
{
left=lpKokbox->EKBarRec.left;
right=lpKokbox->EKBarRec.right;
top=lpKokbox->EKBarRec.top;
bottom=lpKokbox->EKBarRec.bottom;
hMemDC=InitMemoryDC(hdc,right-left+1,bottom-top+1,&holdbmp);
SetRect(&tempRect,0,0,right-left,bottom-top);
GUI_CreateButtonControl2(hMemDC,&tempRect,GetColorInDef256Palette(253),GetColorInDef256Palette(253),GetColorInDef256Palette(253),GetColorInDef256Palette(253),"",0,0,0);
lpKokbox->EchoBarBmp.upperleftx=4;
lpKokbox->EchoBarBmp.upperlefty=12;
nmDrawBar(hMemDC,&(lpKokbox->EchoBarBmp),0,lpKokbox->kokValue,0);
BitBlt(hdc, left, top, right-left, bottom-top, hMemDC, 1, 0, SRCCOPY);
DelMemoryDC(hMemDC, holdbmp);
}
//draw key bar bmp
if(curItem==KOK_STAGE_KEY)
{
SetRect(&bsRect, lpKokbox->EKBarRec.left+2, lpKokbox->EKBarRec.top,
lpKokbox->EKBarRec.left+12 , lpKokbox->EKBarRec.bottom);
SetTextColor(hdc, GetColorInDef256Palette(239));
DrawText(hdc,keystr[0], -1, &bsRect,uFormat);
SetRect(&bsRect, lpKokbox->EKBarRec.right-12, lpKokbox->EKBarRec.top,
lpKokbox->EKBarRec.right , lpKokbox->EKBarRec.bottom);
SetTextColor(hdc, GetColorInDef256Palette(239));
DrawText(hdc,keystr[1], -1, &bsRect,uFormat);
nmDrawBar(hdc,&(lpKokbox->KeyBarBmp[1]),0,lpKokbox->kokValue+1,4);
nmDrawBar(hdc,&(lpKokbox->KeyBarBmp[0]),lpKokbox->kokValue+1,13,4);
}
//-->gushun for karaoke volume
if(curItem == KOK_STAGE_VOLUME)
{
nmDrawBar(hdc,&(lpKokbox->KeyBarBmp[1]),0,lpKokbox->kokValue,4);
nmDrawBar(hdc,&(lpKokbox->KeyBarBmp[0]),lpKokbox->kokValue,15,4);
}
//<--gushun for karaoke volume
//draw mellody/voice value string
if(curItem==KOK_STAGE_MELODY||curItem==KOK_STAGE_VOICE)
{
//-->Alan, bug fix: in karaoke menu of dvd, the strings will overlap
// when adjusting melody or voice
hbr = CreateSolidBrush(GetColorInDef256Palette(253));
FillRect(hdc, &(lpKokbox->MVStr.rect), hbr);
DeleteObject((HGDIOBJ)hbr);
DrawBaseStr(hdc,&(lpKokbox->MVStr));
}
}
void ShowKaraOkeBarORI(HDC hdc,int cmd)
{
BOOL bInit;
switch(cmd)
{
case CMD_OSDINIT:
bInit=TRUE;
break;
case CMD_UP:
bInit=TRUE;
break;
case CMD_DOWN:
bInit=TRUE;
break;
case CMD_LEFT:
bInit=FALSE;
break;
case CMD_RIGHT:
bInit=FALSE;
break;
}
drawKokBoxWithMemDc(hdc,&kokbox,bInit);
}
//end new>>
//===========================
//---------------------
BYTE tempv;
BYTE tempMelody ;
void ShowVolumOnBotBlk(BYTE VolType)
{
int i;
int value;
switch(VolType)
{
case KOK_STAGE_VOLUME: //gushun for karaoke volume
value = OSD_Setup_Parameter.bMasterVolume;
break;
case KOK_STAGE_ECHO:
value = OSD_Setup_Parameter.bKaraEcho;
break;
case KOK_STAGE_KEY:
value = OSD_Setup_Parameter.bKaraKey;
break;
case KOK_STAGE_VOICE:
//value = OSD_Setup_Parameter.bKaraVoiceVol;
value = tempv;
break;
case KOK_STAGE_MELODY:
//value = OSD_Setup_Parameter.c;
//Haiyuan Say: I dont know which parameter it is now.temp set 1
value =tempMelody;
break;
}
// if (g_UiCrntFunc==UI_FUNC_FILEOPEN||bMixPlay)
// ShowKaraOkeBar(gui_hdc,VolType,value,KOK_LEFT+ (720-608)/2,KOK_TOP+ (480-416)/2, CMD_OSDINIT);
//else
ShowKaraOkeBar(gui_hdc,VolType,value,KOK_LEFT,KOK_TOP, CMD_OSDINIT);
SetTimer(OSD3_TM_ID, KaraokeTimer,TIME_10SEC);
}
void ModifyVolum(BYTE bAction)
{
extern BOOL isKaraoke,haveMelody;
extern BYTE isMultiVoise;
BYTE bVolum[MAXKOKITEMS]; //gushun for karaoke volume
BYTE MaxVol[MAXKOKITEMS] = {15,10,12,3,1}; //gushun for karaoke volume
int PointX,PointY;
bVolum[KOK_STAGE_ECHO] = OSD_Setup_Parameter.bKaraEcho;
bVolum[KOK_STAGE_KEY] = OSD_Setup_Parameter.bKaraKey;
bVolum[KOK_STAGE_VOICE] = tempv;
bVolum[KOK_STAGE_MELODY] = tempMelody;
bVolum[KOK_STAGE_VOLUME] = OSD_Setup_Parameter.bMasterVolume; //gushun for karaoke volume
//if (g_UiCrntFunc==UI_FUNC_FILEOPEN||bMixPlay)
//{
// PointX = KOK_LEFT+ (720-608)/2;
// PointY = KOK_TOP+ (480-416)/2;
//}
//else
{
PointX = KOK_LEFT;
PointY = KOK_TOP;
}
switch(bAction)
{
case V_KEY_LEFT:
if(bVolum[bVolCounter]>0)
{
bVolum[bVolCounter]--;
ShowKaraOkeBar(gui_hdc,bVolCounter,bVolum[bVolCounter],PointX,PointY,CMD_LEFT);
}
else if(bVolCounter >2)//melody and voise need recycle //gushun for karaoke volume
{
bVolum[bVolCounter] = MaxVol[bVolCounter];
ShowKaraOkeBar(gui_hdc,bVolCounter,bVolum[bVolCounter],PointX,PointY,CMD_LEFT);
}
break;
case V_KEY_RIGHT:
if(bVolum[bVolCounter] < MaxVol[bVolCounter])
{
bVolum[bVolCounter]++;
ShowKaraOkeBar(gui_hdc,bVolCounter,bVolum[bVolCounter],PointX,PointY,CMD_RIGHT);
}
else if(bVolCounter > 2)//need recycle //gushun for karaoke volume
{
bVolum[bVolCounter]=0;
ShowKaraOkeBar(gui_hdc,bVolCounter,bVolum[bVolCounter],PointX,PointY,CMD_RIGHT);
}
break;
}
SetTimer(OSD3_TM_ID, KaraokeTimer,TIME_10SEC);
// ShowOSDOnOff(C_ON);//dvd audio sh
OSD_Setup_Parameter.bKaraEcho = bVolum[KOK_STAGE_ECHO];
OSD_Setup_Parameter.bKaraKey = bVolum[KOK_STAGE_KEY];
//OSD_Setup_Parameter.bKaraVoiceVol = bVolum[2];
//OSD_Setup_Parameter.bKaraVoiceVol = bVolum[3];
tempv = bVolum[KOK_STAGE_VOICE];
tempMelody = bVolum[KOK_STAGE_MELODY];
OSD_Setup_Parameter.bKaraOKVoice = tempv;
OSD_Setup_Parameter.bKaraOKMelody = tempMelody;
OSD_Setup_Parameter.bMasterVolume = bVolum[KOK_STAGE_VOLUME]; //gushun for karaoke volume
UiSetKOKParam(bVolCounter,bVolum[bVolCounter]);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -