📄 osdctrl.c
字号:
return;
}
}
void subMenu(void)
{
subClear();
/* PortDataOut(((MainMenuCols+1)*4+3), UPDATE_CODE,clearData2,23);
PortDataOut(((MainMenuCols+1)*5+3), UPDATE_CODE,clearData2,23);
PortDataOut(((MainMenuCols+1)*7+3), UPDATE_CODE,clearData2,23);
PortDataOut(((MainMenuCols+1)*8+3), UPDATE_CODE,clearData2,23);*/
load_iconData();
if(cursor >= LUMINANCE_CONTRAST && cursor <= IMAGEPOSITION_V)
{
PortDataOut((MainMenuCols+1)*4+3,UPDATE_CODE,SubIcon1[0],3);
PortDataOut((MainMenuCols+1)*5+3,UPDATE_CODE,SubIcon1[1],3);
PortDataOut((MainMenuCols+1)*7+3,UPDATE_CODE,SubIcon2[0],3);
PortDataOut((MainMenuCols+1)*8+3,UPDATE_CODE,SubIcon2[1],3);
}
else if ((cursor >= COLORTEMP_WARM) && (cursor <= COLORTEMP_USER))
{
PortDataOut((MainMenuCols+1)*4+12,UPDATE_CODE,warmData[eepData.language],6);
PortDataOut((MainMenuCols+1)*6+12,UPDATE_CODE,coolData[eepData.language],6);
PortDataOut((MainMenuCols+1)*8+9,UPDATE_CODE,userData[eepData.language],sizeof(userData[0]) / sizeof(char));
}
else if(cursor == USER_R || cursor == OSDSETUP_HPOS)
{
PortDataOut((MainMenuCols+1)*3+3,UPDATE_CODE,SubIcon1[0],3);
PortDataOut((MainMenuCols+1)*4+3,UPDATE_CODE,SubIcon1[1],3);
PortDataOut((MainMenuCols+1)*5+3,UPDATE_CODE,SubIcon2[0],3);
PortDataOut((MainMenuCols+1)*6+3,UPDATE_CODE,SubIcon2[1],3);
PortDataOut((MainMenuCols+1)*7+3,UPDATE_CODE,SubIcon3[0],3);
PortDataOut((MainMenuCols+1)*8+3,UPDATE_CODE,SubIcon3[1],3);
}
else if(cursor == AUTOCONFIG_YES || cursor == RESET_YES)
{
PortDataOut((MainMenuCols+1)*5+13,UPDATE_CODE,yesData[eepData.language],3);
PortDataOut((MainMenuCols+1)*7+13,UPDATE_CODE,noData[eepData.language],4);
}
else if(cursor >= LANGUAGE_ENGLISH && cursor <= LANGUAGE_SCHINESE)
{
PortDataOut((MainMenuCols+1)*4+5,UPDATE_CODE,englishData[0],8);
PortDataOut((MainMenuCols+1)*4+17,UPDATE_CODE,englishData[1],8);
PortDataOut((MainMenuCols+1)*6+5,UPDATE_CODE,englishData[2],8);
PortDataOut((MainMenuCols+1)*6+17,UPDATE_CODE,englishData[3],8);
PortDataOut((MainMenuCols+1)*8+5,UPDATE_CODE,englishData[4],8);
PortDataOut((MainMenuCols+1)*8+17,UPDATE_CODE,englishData[5],8);
/* buff[20] = 0;
PortDataOut((MainMenuCols+1)*(4+buff[20]*2)+5,UPDATE_CODE,englishData[0],8);
PortDataOut((MainMenuCols+1)*(4+buff[20]*2)+17,UPDATE_CODE,englishData[0]+1,8);*/
}
else if(cursor == MAIN_INFORMATION)
informationMenu();
else if (cursor == HOT_CONTRAST)
{
PortDataOut((MainMenuCols+1)*5+3,UPDATE_CODE,SubIcon1[0],3);
PortDataOut((MainMenuCols+1)*6+3,UPDATE_CODE,SubIcon1[1],3);
setScrollBarAttr(1);
AdjustFlag ^= 1;
adjContrast(0,SHOW);
}
else if (cursor == HOT_BRIGHTNESS)
{
PortDataOut((MainMenuCols+1)*5+3,UPDATE_CODE,SubIcon2[0],3);
PortDataOut((MainMenuCols+1)*6+3,UPDATE_CODE,SubIcon2[1],3);
setScrollBarAttr(1);
AdjustFlag ^= 1;
adjBrightness(0,SHOW);
}
#if WITH_AUDIO
else if (cursor == HOT_VOLUME)
adjVolume(0,SHOW);
else if (cursor == MAIN_EXIT)
{
PortDataOut((MainMenuCols+1)*6+3,UPDATE_CODE,VolumeIcon[0],3);
PortDataOut((MainMenuCols+1)*7+3,UPDATE_CODE,VolumeIcon[1],3);
setScrollBarAttr(1);
adjVolume(0,SHOW);
}
#endif
enableOSD();
}
void subSelect(char select)
{
if(cursor >= LUMINANCE_CONTRAST && cursor <= IMAGEPOSITION_V)
{
PortDataOut((MainMenuCols+1)*((cursor & 0x0F)*3+4)+3, UPDATE_ATTR, mainIconAttrData[select],3);
PortDataOut((MainMenuCols+1)*((cursor & 0x0F)*3+5)+3, UPDATE_ATTR, mainIconAttrData[select],3);
}
else if(cursor >= COLORTEMP_WARM && cursor <= COLORTEMP_USER)
{
PortDataOut((MainMenuCols+1)*((cursor-COLORTEMP_WARM)*2+4)+8, UPDATE_ATTR, colortempAttrData[select],sizeof(colortempAttrData[0]) / sizeof(char));
}
else if((cursor >= USER_R && cursor <= USER_B) || (cursor >= OSDSETUP_HPOS && cursor <= OSDSETUP_TIME))
{
PortDataOut((MainMenuCols+1)*((cursor & 0x0F)-1)+3, UPDATE_ATTR, mainIconAttrData[select],3);
PortDataOut((MainMenuCols+1)*((cursor & 0x0F))+3, UPDATE_ATTR, mainIconAttrData[select],3);
}
else if((cursor >= AUTOCONFIG_YES && cursor <= AUTOCONFIG_NO) || (cursor >= RESET_YES && cursor <= RESET_NO))
{
PortDataOut((MainMenuCols+1)*((cursor & 0x0F)*2+5)+10, UPDATE_ATTR, colortempAttrData[select],8);
}
else if(cursor >= LANGUAGE_ENGLISH && cursor <= LANGUAGE_SCHINESE)
{
if((cursor & 0x01) == 0)
PortDataOut((MainMenuCols+1)*(cursor-LANGUAGE_ENGLISH+4)+4, UPDATE_ATTR, colortempAttrData[select],10);
else if((cursor & 0x01) == 1)
PortDataOut((MainMenuCols+1)*(cursor-LANGUAGE_DEUTSCH+4)+16, UPDATE_ATTR, colortempAttrData[select],10);
}
#if WITH_AUDIO
else if(cursor == MAIN_EXIT)
{
PortDataOut((MainMenuCols+1)*6+3, UPDATE_ATTR, mainIconAttrData[select],3);
PortDataOut((MainMenuCols+1)*7+3, UPDATE_ATTR, mainIconAttrData[select],3);
}
#endif
}
/***********************************
* OSD position adjustment *
************************************/
void adjSharpness(char delta,bit show)
{
int val;
unsigned char temp;
val = eepData.sharpness + delta;
if (val >= MIN_sharpness && val <= MAX_sharpness)
{
eepData.sharpness = val;
temp = RegByteIn(0x59) & 0x0F;
temp |= (eepData.sharpness<<4 & 0xF0);
RegByteOut(0x59, temp); //coefficient R
temp=eepData.sharpness<<4|eepData.sharpness;
RegByteOut(0x5A, temp); //coefficient G
if (show)
{
PortDataOut((MainMenuCols+1)*13+9, UPDATE_CODE, BarUpData, 12);
PortDataOut((MainMenuCols+1)*14+8, UPDATE_CODE, DnData, 1);
PortDataOut((MainMenuCols+1)*14+22, UPDATE_CODE, UpData, 1);
PortDataOut((MainMenuCols+1)*15+9, UPDATE_CODE, BarDnData, 12);
DisplayScrollBar((unsigned int)MAX_sharpness, val);
PortDataOut((MainMenuCols+1)*14+9, UPDATE_CODE, buff, 12);
converInt(val*100/MAX_sharpness);
PortDataOut((MainMenuCols+1)*14+24, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.sharpness-&eepData),(unsigned char *)&eepData.sharpness, 1);
}
}
/***********************************
* OSD position adjustment *
************************************/
void adjOSDPosH(char delta,bit show)
{
ival = eepData.osdPosH + delta*5;
if (eepData.osdPosH > MAX_osdPosH) eepData.osdPosH = MAX_osdPosH;
if (eepData.osdPosH < MIN_osdPosH) eepData.osdPosH = MIN_osdPosH;
if (ival >= MIN_osdPosH && ival <= MAX_osdPosH)
{
eepData.osdPosH = ival;
ival = (ival-MIN_osdPosH) * (MAX_OSD_HPOS-MIN_OSD_HPOS);
ival /= (MAX_osdPosH-MIN_osdPosH);
ival += MIN_OSD_HPOS;
OSDRegByteOut(OSDNEWFRAME_H_START, ival);
/* Trigger the double buffer */
buff[0] = OSDRegByteIn(OSDNEWFRAME_V_HEIGHT);
OSDRegByteOut(OSDNEWFRAME_V_HEIGHT, buff[0]);
if (show)
{
PortDataOut((MainMenuCols+1)*3+8, UPDATE_CODE, hposData[eepData.language], sizeof(hposData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)MAX_osdPosH, (unsigned int)eepData.osdPosH);
PortDataOut((MainMenuCols+1)*4+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0xD6, 16);
converInt((int) eepData.osdPosH);
PortDataOut((MainMenuCols+1)*4+23, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.osdPosH-&eepData),(unsigned char *)&eepData.osdPosH, 1);
}
}
/***********************************
* OSD position adjustment *
************************************/
void adjOSDPosV(char delta,bit show)
{
long lval;
ival1 = eepData.osdPosV + delta*5;
if (eepData.osdPosV > MAX_osdPosV) eepData.osdPosV = MAX_osdPosV;
if (eepData.osdPosV < MIN_osdPosV) eepData.osdPosV = MIN_osdPosV;
if (ival1 >= MIN_osdPosV && ival1 <= MAX_osdPosV)
{
eepData.osdPosV = ival1;
/* adjust OSD position */
ival = MAX_osdPosV - ival1; // invert value
lval = (long)ival * (MAX_OSD_VPOS - MIN_OSD_VPOS);
ival = lval /(MAX_osdPosV - MIN_osdPosV);
ival += MIN_OSD_VPOS;
OSDRegByteOut(OSDNEWFRAME_V_START_LOW, (unsigned char) ival);
OSDRegByteOut(OSDNEWFRAME_V_START_HIGH, (unsigned char) ((ival >> 8) & 0x07));
/* Trigger the double buffer */
buff[0] = OSDRegByteIn(OSDNEWFRAME_V_HEIGHT);
OSDRegByteOut(OSDNEWFRAME_V_HEIGHT, buff[0]);
if (show)
{
PortDataOut((MainMenuCols+1)*5+8, UPDATE_CODE, vposData[eepData.language], sizeof(vposData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)MAX_osdPosV, (unsigned int)eepData.osdPosV);
PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0xD6, 16);
converInt((int) eepData.osdPosV);
PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.osdPosV-&eepData),(unsigned char *)&eepData.osdPosV, 1);
}
}
/***********************************
* Custom color adjustment *
************************************/
#if RB_SWAP
void adjUser_B(char delta,bit show)
#else
void adjUser_R(char delta,bit show)
#endif
{
if((eepData.userR+delta >= MIN_userRGB) && (eepData.userR+delta <= MAX_userRGB))
{
eepData.userR += delta;
#if USE_GAMMA
setGamma(SELECTR,eepData.userR);
#else
setDigitalContrast(SELECTR,eepData.userR);
#endif
if (show)
{
#if RB_SWAP
PortDataOut((MainMenuCols+1)*3+10, UPDATE_CODE, Bluedata[eepData.language], sizeof(Bluedata[0]) / sizeof(char));
#else
PortDataOut((MainMenuCols+1)*3+10, UPDATE_CODE, Reddata[eepData.language], sizeof(Reddata[0]) / sizeof(char));
#endif
DisplayScrollBar((unsigned int) MAX_userRGB, (unsigned int)eepData.userR);
PortDataOut((MainMenuCols+1)*4+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0xD6, 16);
converInt((int) eepData.userR);
PortDataOut((MainMenuCols+1)*4+23, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.userR-&eepData),(unsigned char *)&eepData.userR, 3);
}
}
/***********************************
* Custom color adjustment *
************************************/
void adjUser_G(char delta,bit show)
{
if((eepData.userG+delta >= MIN_userRGB) && (eepData.userG+delta <= MAX_userRGB))
{
eepData.userG += delta;
#if USE_GAMMA
setGamma(SELECTG,eepData.userG);
#else
setDigitalContrast(SELECTG,eepData.userG);
#endif
if (show)
{
/* data */
PortDataOut((MainMenuCols+1)*5+10, UPDATE_CODE, Greendata[eepData.language], sizeof(Greendata[0]) / sizeof(char));
DisplayScrollBar((unsigned int) MAX_userRGB, (unsigned int)eepData.userG);
PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0xD6, 16);
converInt((int) eepData.userG);
PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.userR-&eepData),(unsigned char *)&eepData.userR, 3);
}
}
/***********************************
* Custom color adjustment *
************************************/
#if RB_SWAP
void adjUser_R(char delta,bit show)
#else
void adjUser_B(char delta,bit show)
#endif
{
if((eepData.userB+delta >= MIN_userRGB) && (eepData.userB+delta <= MAX_userRGB))
{
eepData.userB += delta;
#if USE_GAMMA
setGamma(SELECTB,eepData.userB);
#else
setDigitalContrast(SELECTB,eepData.userB);
#endif
if (show)
{
#if RB_SWAP
PortDataOut((MainMenuCols+1)*7+10, UPDATE_CODE, Reddata[eepData.language], sizeof(Reddata[0]) / sizeof(char));
#else
PortDataOut((MainMenuCols+1)*7+10, UPDATE_CODE, Bluedata[eepData.language], sizeof(Bluedata[0]) / sizeof(char));
#endif
DisplayScrollBar((unsigned int) MAX_userRGB, (unsigned int)eepData.userB);
PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
converInt((int) eepData.userB);
PortDataOut((MainMenuCols+1)*8+23, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.userR-&eepData),(unsigned char *)&eepData.userR, 3);
}
}
/****************************************
* Adjust values for OSD patterns *
*****************************************/
void adjustCtrl(char val)
{
switch(cursor)
{
case LUMINANCE_BRIGHTNESS:
case HOT_BRIGHTNESS:
adjBrightness(val,SHOW);
return;
case LUMINANCE_CONTRAST:
case HOT_CONTRAST:
adjContrast(val,SHOW);
return;
case IMAGESETUP_FOUCS:
adjPhase(val,SHOW);
return;
case IMAGESETUP_CLOCK:
adjPitch(val,SHOW);
return;
case IMAGEPOSITION_H:
adjHPos(val,SHOW);
return;
case IMAGEPOSITION_V:
adjVPos(val,SHOW);
return;
case OSDSETUP_HPOS:
adjOSDPosH(val,SHOW);
return;
case OSDSETUP_VPOS:
adjOSDPosV(val,SHOW);
return;
case OSDSETUP_TIME:
adjOSDTime(val,SHOW);
return;
case USER_R:
adjUser_R(val,SHOW);
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -