MS_Icon.c
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:3k
源码类别:

DVD

开发平台:

Others

  1. /* **************************************************************************************
  2.  *  Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
  3.  *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
  4.  *
  5.  *  File: $Workfile: MS_Icon.c $             
  6.  *
  7.  * Description:
  8.  * ============
  9.  * menu system icon menus handling
  10.  * 
  11.  * Log:
  12.  * ====
  13.  ****************************************************************************************
  14.  * Updates:
  15.  ****************************************************************************************
  16.  **************************************************************************************** */
  17. #include "Config.h" // Global Configuration - do not remove!
  18. #ifdef _DEBUG
  19. #include "DebugDbgMain.h"
  20. #undef IFTRACE
  21. #define IFTRACE if (gTraceMenu)
  22. #endif //_DEBUG
  23. #include <stdio.h>
  24. #include <stdlib.h>
  25. #include "PlaycoreScPadscmgr.h"
  26. #include "Decoderosdrendr.h"
  27. #include "UIMenu_Sysosd_drv.h"
  28. #include "UIMenu_Sysms_wdgt.h"
  29. #include "UIMenu_Sysms_lib.h"
  30. static BYTE icon_bmp_bg_idx = 0;
  31. MS_UOP icon_user_op(MS_WIDGET *widget,MS_UOP uop,char param) 
  32. {
  33. MS_ICON *icon = (MS_ICON *)widget;
  34. switch (uop)
  35. {
  36.   case MS_UOP_DELETE:
  37.   uop = MS_UOP_NOP;
  38.   break;
  39.   case MS_UOP_DISPLAY:
  40.      if( NULL !=icon->icon_buff)
  41. if(! param )
  42. {
  43. OSD_DrawBitmap( widget->pos.x, widget->pos.y,
  44.   icon->icon_buff ,
  45. #if defined(USE_BMP_BUTTON) && defined(USE_ICON_BUTTONS)
  46.   7,   
  47. #else
  48.   0,                          
  49. #endif
  50.                        0); 
  51. }
  52. else
  53. {
  54. OSD_DrawBitmap(widget->pos.x, widget->pos.y,
  55.   icon->icon_buff ,
  56.                      icon_bmp_bg_idx,
  57.                      FOCUS_COLOR ( widget->color) );
  58. }
  59.   uop = MS_UOP_NOP;
  60.   break;
  61. }
  62. return uop;
  63. }
  64. void MS_init_icon(MS_ICON *msi, MS_POS *pos, MS_COLOR color, 
  65. void (* user_op)(MS_WIDGET *, MS_UOP, char), 
  66. void *icon_buff, unsigned char attr)
  67. {
  68. #ifdef _DEBUG
  69. if (NULL == msi) {
  70. tr_printf(("FATAL: MS_init_icon() Failed: NULL control.n"));
  71. return;
  72. }
  73. #endif //_DEBUG
  74. ((MS_WIDGET *)msi)->pos = *pos;
  75. ((MS_WIDGET *)msi)->color = color;
  76. if (NULL != user_op)
  77. ((MS_WIDGET *)msi)->user_op = (MS_UOP(*)(MS_WIDGET *,MS_UOP,char ))user_op;
  78. else
  79. ((MS_WIDGET *)msi)->user_op = (MS_UOP(*)(MS_WIDGET *,MS_UOP,char ))icon_user_op;
  80. ((MS_WIDGET *)msi)->attr = attr;
  81. msi->icon_buff = icon_buff;
  82. ((MS_WIDGET *)msi)->parent = NO_PARENT;
  83. ((MS_WIDGET *)msi)->attrh = ALIGN_LEFT;
  84. }
  85. MS_ICON *MS_create_icon(MS_POS *pos,
  86. MS_COLOR color,
  87. void *icon_buff, 
  88. unsigned char attr,
  89. BYTE bg_idx)
  90. {
  91. MS_ICON *msi;
  92. dbg_printf(("MS_create_iconn"));
  93. msi = (MS_ICON *)malloc(sizeof(MS_ICON));
  94. #ifdef _DEBUG
  95. if (NULL == msi) {
  96. tr_printf(("FATAL: MS_create_icon() Failed: Low system resources.n"));
  97. return NULL;
  98. }
  99. #endif //_DEBUG
  100. icon_bmp_bg_idx = bg_idx;
  101. MS_init_icon(msi, pos, color, (void (*)(MS_WIDGET *, MS_UOP, char) ) icon_user_op, icon_buff, attr );
  102. return msi;
  103. }
  104. void MS_icon_override_color_select(BYTE bg_idx)
  105. {
  106. icon_bmp_bg_idx = bg_idx;
  107. }