📄 osddraw.lst
字号:
253 2 break;
254 2 default: break;
255 2 }
256 1
257 1 if(m_bOSDEnable)
258 1 Timer0Start();
259 1 }
260
261 void OSDOpenMenu(void)
262 {
263 1 OSDClearPage();
264 1 OSDPosition(CENTER);
265 1 OSDEnable();
266 1 m_cItem=1;
267 1 m_cOSDFunc=1;
268 1
269 1 OSDShowPage();
270 1 switch(m_cOSDMenu){
271 2 case idVIDEOMENU:
272 2 ir_repeat=1;
273 2 OSDShowVideoData();
274 2 break;
275 2 case idTVMENU:
276 2 ir_repeat=0;
277 2 // OSDShowTVData(); // mark by Sherman 05'11'14
278 2 break;
279 2 default:
280 2 return;
281 2 }
282 1 m_cOSDEvent=OPENMENU;
283 1 }
284
285 void OSDFuncExit(void)
286 {
287 1
288 1 }
289
290 uCHAR OSD_cOSDLang=0;
291 void OSDShowPage(void)
292 {
293 1 uCHAR y=1;
294 1
295 1 pOSDLangPtr=&MultiLangOSD[OSD_cOSDLang];
296 1 pOSDMenuPtr=pOSDLangPtr->osdMenuPtr;
297 1 cTotal=0;
298 1
299 1 while(pOSDMenuPtr[m_cOSDMenu-1][cTotal].iconStr!=NULL)
300 1 {
301 2 OSDShowLine(iBlankLine,0,y,COL_NORMAL,OSD_LENGTH);
302 2 //OSDShowLine(pOSDMenuPtr[m_cOSDMenu-1][cTotal].iconStr,ICON_STAT,y,COL_NORMAL,OSD_LENGTH);
C51 COMPILER V7.50 OSDDRAW 01/12/2006 13:31:13 PAGE 6
303 2 OSDShowLine(pOSDMenuPtr[m_cOSDMenu-1][cTotal].txtStr,TXT_STAT,y,COL_NORMAL,OSD_LENGTH);
304 2 // idx = pOSDMenuPtr[(m_cOSDFunc>>4)-1][cTotal].cidIdx;
305 2 switch (pOSDMenuPtr[(m_cOSDMenu-1)-1][cTotal].cDataAttr)
306 2 {
307 3 case GAUGE:
308 3 case NUMBER:
309 3 // OSDDrawNum(EepOSDPub[idx],sOSDParams1[idx].Max,NUM_STAT,y,COL_NORMAL);
310 3 break;
311 3 // case OPTION:
312 3 // OSDShowOption(y,COL_NORMAL);
313 3 // break;
314 3 // case INFO:
315 3 // OSDShowInfo(0,(cTotal+1),COL_GAUGE);
316 3 // break;
317 3 case NONE:
318 3 default:
319 3 break;
320 3 }
321 2 cTotal++;
322 2 y++;
323 2 }
324 1 OSDShowLine(iBlankLine,0,y++,COL_NORMAL,OSD_LENGTH);
325 1 OSDShowLine(iBlankLine,0,y,COL_NORMAL,OSD_LENGTH);
326 1
327 1 OSDMoveCursor();
328 1 }
329
330 void OSDCleanLine(uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength)
331 {
332 1 if((x < 30) && ( y < OSD_LINE_NUM))
333 1 {
334 2 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
335 2 twdWr_Burst_A(OSD_RAM_DL); // Write OSD index
336 2 while((x < 30) && (x < cLength))
337 2 {
338 3 twdWr_Burst_D(BLANK);
339 3 twdWr_Burst_D(cColor);
340 3 x++;
341 3 }
342 2 twdWr_Burst_P();
343 2 }
344 1 }
345
346 void OSDClearPage(void)
347 {
348 1 uCHAR i=0;
349 1 for(i=0;i<OSD_LINE_NUM;i++)
350 1 {
351 2 OSDCleanLine(0,i,0,30);
352 2 OSDSetLineAttribute(i,0x80);
353 2 }
354 1 }
355
356 void OSDSetLineAttribute(uCHAR cLine,uCHAR cAttribute)
357 {
358 1 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)cLine << 5)+31);
359 1 twdWr_Burst_A(OSD_RAM_DL); // Write OSD index
360 1 twdWr_Burst_D(0);
361 1 twdWr_Burst_D(cAttribute);
362 1 twdWr_Burst_P();
363 1 }
364
C51 COMPILER V7.50 OSDDRAW 01/12/2006 13:31:13 PAGE 7
365 void OSDShowVideoData(void)
366 {
367 1 uCHAR gauge_y =cTotal+2;
368 1
369 1 switch(m_cOSDFunc){
370 2 case idBRIGHTMENU:
371 2 OSDDrawGauge(EepVideo.cBright,V_BRIGHT_MAX,0,gauge_y,COL_GAUGE);
372 2 OSDDrawNum(EepVideo.cBright,V_BRIGHT_MAX,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03);
373 2 break;
374 2 case idCONTRASTMENU:
375 2 OSDDrawGauge(EepVideo.cContrast,V_CONTRAST_MAX,0,gauge_y,COL_GAUGE);
376 2 OSDDrawNum(EepVideo.cContrast,V_CONTRAST_MAX,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03);
377 2 break;
378 2 case idSHARPMENU:
379 2 OSDDrawGauge(EepVideo.cSharp,V_SHARP_MAX,0,gauge_y,COL_GAUGE);
380 2 OSDDrawNum(EepVideo.cSharp,0,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03);
381 2 break;
382 2 case idSATMENU:
383 2 OSDDrawGauge(EepVideo.cSat,V_SAT_MAX,0,gauge_y,COL_GAUGE);
384 2 OSDDrawNum(EepVideo.cSat,V_SAT_MAX,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03);
385 2 break;
386 2 case idHUEMENU:
387 2 OSDDrawGauge(EepVideo.cHue,V_HUE_MAX,0,gauge_y, COL_GAUGE);
388 2 OSDDrawNum(EepVideo.cHue,V_HUE_MAX,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03);
389 2 break;
390 2 default: break;
391 2 }
392 1 }
393 /*
394 #ifdef AU_35
395 #define GAUGE_TOTAL_FONT_L 10 //Long
396 #else
397 #define GAUGE_TOTAL_FONT_L 25 //Long
398 #endif
399 */
400 #ifdef _160_234
#define GAUGE_TOTAL_FONT_L 20 //10 //Long
#else
403 #define GAUGE_TOTAL_FONT_L 25 //Long
404 #endif
405
406 void OSDDrawGauge(uCHAR cVal, uCHAR cMax, uCHAR x, uCHAR y, uCHAR cColor)
407 {
408 1 int index,i,j;
409 1 int step_size=100/GAUGE_TOTAL_FONT_L;
410 1
411 1 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y<< 5)+x);
412 1 twdWr_Burst_A(OSD_RAM_DL); // Write OSD index
413 1 index= (int)cVal*GAUGE_TOTAL_FONT_L/(int)cMax;
414 1 for(i=0;i<index;i++){
415 2 twdWr_Burst_D(34); // full
416 2 twdWr_Burst_D(cColor);
417 2 }
418 1 j=((int)cVal*100/(int)cMax)-index*step_size;
419 1 j=j/2;//2.5;
420 1 twdWr_Burst_D(j+35); // residue
421 1 twdWr_Burst_D(cColor);
422 1
423 1 for(i=index+1;i<GAUGE_TOTAL_FONT_L;i++)
424 1 {
425 2 twdWr_Burst_D(35); // empty
426 2 twdWr_Burst_D(cColor);
C51 COMPILER V7.50 OSDDRAW 01/12/2006 13:31:13 PAGE 8
427 2 }
428 1 twdWr_Burst_P();
429 1
430 1
431 1 }
432
433 //Maximum three initiger, percentage
434 void OSDDrawNum(uWORD wVal, uCHAR cMax, uCHAR x, uCHAR y, uCHAR cColor, uCHAR cAttr)
435 {
436 1 //Init Part
437 1 uCHAR cTemp;
438 1 if(cMax!=0)
439 1 {
440 2 m_wBuff[0]=(unsigned long)wVal*100;
441 2 m_wBuff[0]=m_wBuff[0]/cMax;
442 2 }
443 1 else //Non percentage
444 1 {
445 2 m_wBuff[0]=wVal;
446 2 }
447 1
448 1 if(m_wBuff[0]<10)
449 1 m_cBuff[1]=1;
450 1 else if(m_wBuff[0]<100)
451 1 m_cBuff[1]=2;
452 1 else
453 1 m_cBuff[1]=3;
454 1
455 1 OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
456 1 twdWr_Burst_A(OSD_RAM_DL); // Write OSD index
457 1
458 1 if((cAttr&0xF0)==DRAW_BLANK)
459 1 {
460 2 switch(m_cBuff[1]){
461 3 case 1:
462 3 if((cAttr&0x0F)==3||(cAttr&0x0F)==2)
463 3 {
464 4 twdWr_Burst_D(BLANK);
465 4 twdWr_Burst_D(cColor);
466 4 }
467 3 case 2:
468 3 if((cAttr&0x0F)==3)
469 3 {
470 4 twdWr_Burst_D(BLANK);
471 4 twdWr_Burst_D(cColor);
472 4 }
473 3 }
474 2 }
475 1 else if((cAttr&0xF0)==DRAW_ZERO)
476 1 {
477 2 switch(m_cBuff[1]){
478 3 case 1:
479 3 if((cAttr&0x0F)==3||(cAttr&0x0F)==2)
480 3 {
481 4 twdWr_Burst_D('0'-IndexNumOffset);
482 4 twdWr_Burst_D(cColor);
483 4 }
484 3 case 2:
485 3 if((cAttr&0x0F)==3)
486 3 {
487 4 twdWr_Burst_D('0'-IndexNumOffset);
488 4 twdWr_Burst_D(cColor);
C51 COMPILER V7.50 OSDDRAW 01/12/2006 13:31:13 PAGE 9
489 4 }
490 3 }
491 2 }
492 1
493 1
494 1 while(m_cBuff[1]>0)
495 1 {
496 2 if(m_cBuff[1]==3)
497 2 cTemp=m_wBuff[0]/100;
498 2 else if(m_cBuff[1]==2)
499 2 cTemp=(m_wBuff[0]%100)/10;
500 2 else if(m_cBuff[1]==1)
501 2 cTemp=m_wBuff[0]%10;
502 2
503 2 OSDNumConvert(cTemp);
504 2 twdWr_Burst_D(cColor );
505 2 m_cBuff[1]--;
506 2 }
507 1 twdWr_Burst_P();
508 1 }
509
510
511 void OSDNumConvert(uCHAR cNum)
512 {
513 1 switch(cNum){
514 2 case 9: twdWr_Burst_D('9'-IndexNumOffset); break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -