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

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_STAT.C $             
  6.  *
  7.  * Description:
  8.  * ============
  9.  * menu system static menus handling
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 5 $
  14.  * Last Modified by $Author: Leonh $ at $Modtime: 9/04/03 8:05p $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /SourceCode/I64_Common/I64_Reference/UI/Menu_sys/MS_STAT.C $
  19.  * 
  20.  * 5     9/04/03 9:49p Leonh
  21.  * if the first byte is 0, make sure the the whole string for display is 0
  22.  * 
  23.  * 4     03-02-21 11:44 Janeg
  24.  * Fix string range validation bug.
  25.  * 
  26.  * 3     03-01-09 4:43 Leslie
  27.  * Unicode support
  28.  * 
  29.  * 12    23/04/02 9:39 Nirm
  30.  * - Added dependency in "Config.h".
  31.  * 
  32.  * 11    11/03/02 12:58 Nirm
  33.  * Debug message in case of memory allocation failure.
  34.  * 
  35.  * 10    2/27/02 7:02a Tomasp
  36.  * Changed get_blk/rel_blk to malloc,free.
  37.  * 
  38.  * 9     18/02/02 20:41 Nirm
  39.  * Exported essential methods.
  40.  * 
  41.  * 8     14/02/02 18:10 Nirm
  42.  * Fixed handling of strings that reside in the SDRAM.
  43.  * 
  44.  * 6     16/01/02 8:57 Nirm
  45.  * Fixed debug-messages.
  46.  * 
  47.  * 5     9/01/02 21:21 Nirm
  48.  * Corrected Include-paths.
  49.  * 
  50.  * 4     9/01/02 18:23 Nirm
  51.  * Corrected Include-Paths.
  52.  * 
  53.  * 3     30/12/01 10:05 Atai
  54.  * Add explicit casting
  55.  * 
  56.  * 2     25/12/01 10:55 Atai
  57.  * Code cleaning
  58.  **************************************************************************************** */
  59. #include "Config.h" // Global Configuration - do not remove!
  60. #ifdef _DEBUG
  61. #include "DebugDbgMain.h"
  62. #undef IFTRACE
  63. #define IFTRACE if (gTraceMenu)
  64. #endif //_DEBUG
  65. #include <stdio.h>
  66. #include <stdlib.h>
  67. #include "PlaycoreScPadscmgr.h"
  68. #include "Decoderosdrendr.h"
  69. #include "UIMenu_Sysosd_drv.h"
  70. #include "UIMenu_Sysms_wdgt.h"
  71. #include "UIMenu_Sysms_lib.h"
  72. //START of customer specific include files
  73. #include "Stringsstrings.h"
  74. //END of customer specific include files
  75. MS_UOP static_user_op(MS_WIDGET *widget,MS_UOP uop,char param) 
  76. {
  77. int str[ MS_STATIC_MAX_LENGTH / sizeof(int) + 1 ];
  78. unsigned char bgColor;
  79. #ifdef D_MS_EXTENSIONS
  80. unsigned char fgColor;
  81. #endif
  82. void *text = ((MS_STATIC *) widget)->text;
  83. switch (uop)
  84. {
  85. case MS_UOP_DELETE:
  86. param = 7;  // Remove warning
  87. return MS_UOP_NOP;
  88. case MS_UOP_DISPLAY:
  89. wcscpy( (wchar_t*)str, L"" );
  90. bgColor = BACK_COLOR(widget, param);
  91. #ifdef D_MS_EXTENSIONS
  92. fgColor = FORE_COLOR(widget, param);
  93. #endif
  94. if (MS_IS_USE_SC(widget))
  95. {
  96. if ( NULL_HANDLE != (WORD)text )
  97. sc_GetBytes((unsigned short)text, 0, MS_STATIC_MAX_LENGTH, (BYTE *)str);
  98. if(str[0] == 0)//LeonH_0904_2003: Sometimes when clear static display, only set the first two char to 0 on scratch pad. Make sure ignore the remainder.
  99. wcscpy( (wchar_t*)str, L"" );
  100. }
  101. if (MS_IS_ASCII(widget) )
  102. {
  103. if (!MS_IS_USE_SC(widget))
  104. #ifdef D_MS_EXTENSIONS
  105. OSD_PutText(widget->pos.x, widget->pos.y, widget->pos.w/*0*/, widget->pos.h, fgColor, bgColor, text, MS_JUST(widget), C_ASCII);
  106. #else
  107. OSD_PutText(widget->pos.x, widget->pos.y, widget->pos.w/*0*/, widget->pos.h, FG_COLOR(widget->color), bgColor, text, MS_JUST(widget), C_ASCII);
  108. #endif
  109. else
  110. #ifdef D_MS_EXTENSIONS
  111. OSD_PutText(widget->pos.x, widget->pos.y, widget->pos.w/*0*/, widget->pos.h, fgColor, bgColor, str, MS_JUST(widget), C_ASCII);
  112. #else
  113. OSD_PutText(widget->pos.x, widget->pos.y, widget->pos.w/*0*/, widget->pos.h, FG_COLOR(widget->color), bgColor, str, MS_JUST(widget), C_ASCII);
  114. #endif
  115. }
  116. else
  117. {
  118. if ( MS_IS_USE_SC(widget) )
  119.   text = (void *) str[0];
  120. if ((WORD)S_LAST <= (WORD) text )
  121. return MS_UOP_NOP;
  122. #ifdef D_MS_EXTENSIONS
  123. OSD_PutText(widget->pos.x, widget->pos.y, widget->pos.w/*0*/, widget->pos.h, fgColor, bgColor, text, MS_JUST(widget), !C_ASCII);
  124. #else
  125. OSD_PutText(widget->pos.x, widget->pos.y, /*0*/widget->pos.w, widget->pos.h, FG_COLOR(widget->color), bgColor, text, MS_JUST(widget), !C_ASCII);
  126. #endif
  127. }
  128. return MS_UOP_NOP;
  129. }
  130. return MS_UOP_NOP;
  131. }
  132. void MS_init_static(MS_STATIC *mss, MS_POS *pos, MS_COLOR color, 
  133. void (* user_op)(MS_WIDGET *, MS_UOP, char), 
  134. void *text, unsigned char attr)
  135. {
  136. #ifdef _DEBUG
  137. if (NULL == mss) {
  138. tr_printf(("FATAL: MS_init_static() Failed: NULL control.n"));
  139. return;
  140. }
  141. #endif //_DEBUG
  142. ((MS_WIDGET *)mss)->pos = *pos;
  143. ((MS_WIDGET *)mss)->color = color;
  144. if (NULL != user_op)
  145. ((MS_WIDGET *)mss)->user_op = (MS_UOP(*)(MS_WIDGET *,MS_UOP,char ))user_op;
  146. else
  147. ((MS_WIDGET *)mss)->user_op = (MS_UOP(*)(MS_WIDGET *,MS_UOP,char ))static_user_op;
  148. ((MS_WIDGET *)mss)->attr = attr;
  149. mss->text = text;
  150. ((MS_WIDGET *)mss)->parent = NO_PARENT;
  151. ((MS_WIDGET *)mss)->attrh = ALIGN_LEFT;
  152. }
  153. MS_STATIC *MS_create_static(MS_POS *pos,
  154. MS_COLOR color,
  155. void *text, 
  156. unsigned char attr)
  157. {
  158. MS_STATIC *mss;
  159. dbg_printf(("MS_create_staticn"));
  160. mss = (MS_STATIC *)malloc(sizeof(MS_STATIC));
  161. #ifdef _DEBUG
  162. if (NULL == mss) {
  163. tr_printf(("FATAL: MS_create_static() Failed: Low system resources.n"));
  164. return NULL;
  165. }
  166. #endif //_DEBUG
  167. MS_init_static(mss, pos, color, (void (*)(MS_WIDGET *, MS_UOP, char) ) static_user_op, text, attr );
  168. return mss;
  169. }