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

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_Frame.c $             
  6.  *
  7.  * Description:
  8.  * ============
  9.  * menu system frame menus handling
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 3 $
  14.  * Last Modified by $Author: Rond $ at $Modtime: 10/28/02 16:51 $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /SourceCode/I64/UI/Menu_sys/MS_Frame.c $
  19.  * 
  20.  * 3     10/30/02 17:49 Rond
  21.  * 
  22.  * 3     23/04/02 9:39 Nirm
  23.  * - Added dependency in "Config.h".
  24.  * 
  25.  * 2     19/03/02 20:55 Nirm
  26.  * Added support for the MS_UOP_ENTER event.
  27.  * 
  28.  * 1     15/03/02 19:12 Nirm
  29.  * 
  30.  **************************************************************************************** */
  31. #include "Config.h" // Global Configuration - do not remove!
  32. #ifdef _DEBUG
  33. #undef IFTRACE
  34. #define IFTRACE if (gTraceMenu)
  35. #include "DebugDbgMain.h"
  36. #endif //_DEBUG
  37. #include "Decoderosdrendr.h"
  38. #include "UIMenu_Sysosd_drv.h"
  39. #include "UIMenu_Sysms_wdgt.h"
  40. MS_UOP frame_user_op(MS_WIDGET *widget, MS_UOP uop, char param) 
  41. {
  42. unsigned char ucColor= BACK_COLOR(widget, param);
  43. MS_FRAME *msf= (MS_FRAME*)widget;
  44. switch (uop)
  45. {
  46. case MS_UOP_ENTER:
  47. ucColor= FG_COLOR(widget->color);
  48. // Fall-Through!
  49. case MS_UOP_DISPLAY:
  50. switch (msf->frame_type)
  51. {
  52. case MS_FRAME_TYPE_CORNERED:
  53. OSD_CorneredFrame((widget->pos).x, (widget->pos).y, (widget->pos).w, (widget->pos).h,
  54.   msf->horiz_len, msf->vert_len, ucColor, msf->thickness);
  55. break;
  56. case MS_FRAME_TYPE_CROSSHAIR:
  57. OSD_AimedFrame((widget->pos).x, (widget->pos).y, (widget->pos).w, (widget->pos).h,
  58.    msf->horiz_len, msf->vert_len, ucColor, msf->thickness);
  59. break;
  60. }
  61. uop= MS_UOP_NOP;
  62. break;
  63. }
  64. return uop;
  65. }
  66. void MS_init_frame(MS_FRAME *msf, MS_POS *pos, MS_COLOR color, 
  67. void (* user_op)(MS_WIDGET *, MS_UOP, char),
  68. MS_FRAME_TYPE frame_type,
  69. unsigned char thickness,
  70. unsigned char vertical_side_len,
  71. unsigned char horizontal_side_len,
  72. unsigned char attr)
  73. {
  74. #ifdef _DEBUG
  75. if (NULL == msf) {
  76. tr_printf(("FATAL: MS_init_frame() Failed: NULL control.n"));
  77. return;
  78. }
  79. #endif //_DEBUG
  80. ((MS_WIDGET *)msf)->pos= *pos;
  81. ((MS_WIDGET *)msf)->color= color;
  82. if (NULL != user_op)
  83. ((MS_WIDGET *)msf)->user_op= (MS_UOP(*)(MS_WIDGET *,MS_UOP,char ))user_op;
  84. else
  85. ((MS_WIDGET *)msf)->user_op= (MS_UOP(*)(MS_WIDGET *,MS_UOP,char ))frame_user_op;
  86. ((MS_WIDGET *)msf)->attr= attr;
  87. msf->frame_type= frame_type;
  88. msf->thickness= thickness;
  89. msf->vert_len= vertical_side_len;
  90. msf->horiz_len= horizontal_side_len;
  91. ((MS_WIDGET *)msf)->parent = NO_PARENT;
  92. ((MS_WIDGET *)msf)->attrh = ALIGN_LEFT;
  93. }
  94. MS_FRAME *MS_create_frame(MS_POS *pos,
  95.   MS_COLOR color,
  96.   MS_FRAME_TYPE frame_type,
  97.   unsigned char thickness,
  98.   unsigned char vertical_side_len,
  99.   unsigned char horizontal_side_len,
  100.   unsigned char attr)
  101. {
  102. MS_FRAME *msf;
  103. dbg_printf(("MS_create_framen"));
  104. msf = (MS_FRAME *)malloc(sizeof(MS_FRAME));
  105. #ifdef _DEBUG
  106. if (NULL == msf) {
  107. tr_printf(("FATAL: MS_create_frame() Failed: Low system resources.n"));
  108. return NULL;
  109. }
  110. #endif //_DEBUG
  111. MS_init_frame(msf, pos, color, (void (*)(MS_WIDGET *, MS_UOP, char) ) frame_user_op, 
  112.   frame_type, thickness, vertical_side_len, horizontal_side_len, attr);
  113. return msf;
  114. }