uiattr.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 355 行 · 第 1/2 页

C
355
字号
/****************************************************************************
*
*                            Open Watcom Project
*
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Sybase Open Watcom
*    Public License version 1.0 (the 'License'). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at www.sybase.com/developer/opensource.
*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  Default ui lib attribute values.
*
****************************************************************************/


#include <string.h>
#include "uidef.h"
#include "uiattrs.h"

#if defined( __WATCOMC__ ) && (defined( __386__ ) || defined( M_I86 ))
   #define PROGRAM_VGA
#endif

#if defined( PROGRAM_VGA )
#pragma aux SetColourRegister =         \
    "   MOV     AH, 10h     "           \
    "   MOV     AL, 10h     "           \
    "   INT     10h         "           \
        parm caller [bx] [dh] [ch] [cl] \
        modify      [ax];

#pragma aux SetBlinkAttr =              \
    "   MOV     AH, 10h     "           \
    "   MOV     AL, 03h     "           \
    "   INT     10h         "           \
        parm caller [bl]                \
        modify      [ax];

static  char    BlinkAttr       = 1;
void    SetBlinkAttr( char );
void    SetColourRegister( unsigned, char, char, char );

a_colour    VGAcolours[16] = {
//      RED   GREEN    BLUE
    {   0,      0,      0   },      //  Black
    {   32,     32,     32  },      //  Gray
    {   47,     47,     47  },      //  Silver
    {   0,      0,      32  },      //  Navy
    {   0,      0,      63  },      //  Blue
    {   0,      63,     63  },      //  Aqua
    {   32,     0,      0   },      //  Maroon
    {   63,     0,      0   },      //  Red
    {   32,     0,      32  },      //  Purple
    {   63,     0,      63  },      //  Fuchsia
    {   0,      32,     32  },      //  Teal
    {   0,      32,     0   },      //  Green
    {   0,      63,     0   },      //  Lime
    {   32,     32,     0   },      //  Olive
    {   63,     63,     0   },      //  Yellow
    {   63,     63,     63  }       //  White
};

#define VGA_MENU    VGA_SILVER
#define VGA_CMENU   VGA_BLUE

ATTR ui_vga_colour_attrs[] =
{       _bg( VGA_MENU  ) |  _fg( VGA_BLACK )   // MENU
,       _bg( VGA_MENU  ) |  _fg( VGA_BLACK )   // ACTIVE
,       _bg( VGA_CMENU ) |  _fg( VGA_AQUA  )   // CURR_ACTIVE
,       _bg( VGA_MENU  ) |  _fg( VGA_GRAY  )   // INACTIVE
,       _bg( VGA_CMENU ) |  _fg( VGA_GRAY  )   // CURR_INACTIVE
,       _bg( VGA_BLACK ) |  _fg( VGA_WHITE )   // SHADOW
,       _bg( VGA_MENU  ) |  _fg( VGA_BLUE  )   // DEFAULT_HOTSPOT
,       _bg( VGA_WHITE ) |  _fg( VGA_BLACK )   // NORMAL
,       _bg( VGA_WHITE ) |  _fg( VGA_GRAY  )   // BRIGHT
,       _bg( VGA_SILVER) |  _fg( VGA_BLACK )   // EDIT
,       _bg( VGA_BLACK ) |  _fg( VGA_WHITE )   // REVERSE
,       _bg( VGA_WHITE ) |  _fg( VGA_BLACK )   // EDIT2
,       _bg( VGA_SILVER) |  _fg( VGA_BLACK )   // HOTSPOT
,       _bg( VGA_BLACK ) |  _fg( VGA_WHITE )   // HELP
,       _bg( VGA_MENU  ) |  _fg( VGA_BLUE  )   // HOT
,       _bg( VGA_CMENU ) |  _fg( VGA_WHITE )   // HOT_CURR
,       _bg( VGA_MENU  ) |  _fg( VGA_BLUE  )   // HOT_QUIET
,       _bg( VGA_GRAY  ) |  _fg( VGA_WHITE )   // CURR_EDIT
,       _bg( VGA_FUCHSIA)|  _fg( VGA_BLACK )   // CURR_MARK_EDIT
,       _bg( VGA_TEAL  ) |  _fg( VGA_BLACK )   // MARK_NORMAL
,       _bg( VGA_OLIVE ) |  _fg( VGA_BLACK )   // MARK_EDIT
,       _bg( VGA_GRAY  ) |  _fg( VGA_BLUE  )   // CURR_HOTSPOT_KEY
,       _bg( VGA_BLACK ) |  _fg( VGA_AQUA  )   // EDIT_DIAL
,       0                                      // SELECT_DIAL
,       0                                      // CURR_EDIT_DIAL
,       _bg( VGA_NAVY )  |  _fg( VGA_WHITE )   // CURR_SELECT_DIAL
,       _bg( VGA_WHITE ) |  _fg( VGA_SILVER)   // FRAME
,       _bg( VGA_SILVER) |  _fg( VGA_BLACK )   // SCROLL_ICON
,       _bg( VGA_SILVER) |  _fg( VGA_BLACK )   // SCROLL_BAR
,       _bg( VGA_WHITE)  |  _fg( VGA_SILVER)   // DIAL_FRAME
,       _bg( VGA_BLACK ) |  _fg( VGA_WHITE )   // BROWSE
,       _bg( VGA_GRAY  ) |  _fg( VGA_WHITE )   // CURR_HOTSPOT
,       _bg( VGA_BLACK ) |  _fg( VGA_RED   )   // ERROR
,       _bg( VGA_GREEN ) |  _fg( VGA_WHITE )   // HINT
,       _bg( VGA_BLACK ) |  _fg( VGA_RED   )   // WARNING
,       _bg( VGA_WHITE ) |  _fg( VGA_WHITE )   // OFF_HOTSPOT
,       _bg( VGA_WHITE ) |  _fg( VGA_BLUE  )   // RADIO_HOTSPOT
};
#endif

#define C_MENU      C_WHITE
#define C_CMENU     C_BLACK
#define C_BACK      C_BLUE

#ifdef UNIX
    #define C_BRIGHT_WHITE_ON_WHITE C_BROWN
#else
    #define C_BRIGHT_WHITE_ON_WHITE (BRIGHT | C_WHITE)
#endif

ATTR ui_colour_attrs[] =
{       _bg( C_MENU  ) |  _fg(          C_BLUE  )   // MENU
,       _bg( C_MENU  ) |  _fg(          C_BLUE  )   // ACTIVE
,       _bg( C_CMENU ) |  _fg(          C_WHITE )   // CURR_ACTIVE
,       _bg( C_MENU  ) |  _fg( BRIGHT | C_BLACK )   // INACTIVE
,       _bg( C_CMENU ) |  _fg(          C_WHITE )   // CURR_INACTIVE
,       _bg( C_BACK  ) |  _fg(          C_BLACK )   // SHADOW
,       _bg( C_WHITE ) |  _fg( C_BRIGHT_WHITE_ON_WHITE )    // DEFAULT_HOTSPOT
,       _bg( C_BACK  ) |  _fg(          C_WHITE )   // NORMAL
,       _bg( C_BACK  ) |  _fg( BRIGHT | C_WHITE )   // BRIGHT
,       _bg( C_WHITE ) |  _fg(          C_BLACK )   // EDIT
,       _bg( C_CYAN  ) |  _fg(          C_BLACK )   // REVERSE
,       _bg( C_WHITE ) |  _fg(          C_BLACK )   // EDIT2
,       _bg( C_WHITE ) |  _fg(          C_BLUE  )   // HOTSPOT
,       _bg( C_BLACK ) |  _fg( BRIGHT | C_WHITE )   // HELP
,       _bg( C_MENU  ) |  _fg( C_BRIGHT_WHITE_ON_WHITE )    // HOT
,       _bg( C_CMENU ) |  _fg( BRIGHT | C_WHITE )   // HOT_CURR
,       _bg( C_MENU  ) |  _fg( C_BRIGHT_WHITE_ON_WHITE )    // HOT_QUIET
,       _bg( C_BLACK ) |  _fg( BRIGHT | C_WHITE )   // CURR_EDIT
,       _bg( C_MAGENTA)|  _fg(          C_BLACK )   // CURR_MARK_EDIT
,       _bg( C_CYAN  ) |  _fg(          C_BLACK )   // MARK_NORMAL
,       _bg( C_BROWN ) |  _fg(          C_BLACK )   // MARK_EDIT
,       _bg( C_CYAN  ) |  _fg( BRIGHT | C_WHITE )   // CURR_HOTSPOT_KEY
,       _bg( C_BLACK ) |  _fg(          C_CYAN  )   // EDIT_DIAL
,       0                                           // SELECT_DIAL
,       0                                           // CURR_EDIT_DIAL
,       _bg( C_BLUE  ) |  _fg(          C_WHITE )   // CURR_SELECT_DIAL
,       _bg( C_BACK  ) |  _fg(          C_WHITE )   // FRAME
,       _bg( C_WHITE ) |  _fg(          C_BLACK )   // SCROLL_ICON
,       _bg( C_BROWN ) |  _fg( BRIGHT | C_WHITE )   // SCROLL_BAR
,       _bg( C_BACK  ) |  _fg(          C_CYAN  )   // DIAL_FRAME
,       _bg( C_BLACK ) |  _fg(          C_WHITE )   // BROWSE
,       _bg( C_CYAN  ) |  _fg(          C_BLUE  )   // CURR_HOTSPOT
,       _bg( C_BACK  ) |  _fg( BRIGHT | C_RED   )   // ERROR
,       _bg( C_CYAN  ) |  _fg( BRIGHT | C_WHITE )   // HINT
,       _bg( C_BACK  ) |  _fg( BRIGHT | C_RED   )   // WARNING
,       _bg( C_WHITE ) |  _fg( BRIGHT | C_BLUE  )   // OFF_HOTSPOT
,       _bg( C_BACK  ) |  _fg( BRIGHT | C_WHITE )   // RADIO_HOTSPOT
};

ATTR ui_bw_attrs[] =
{       _bg( BG_WHITE ) | _fg( FG_BLACK  )          // MENU
,       _bg( BG_WHITE ) | _fg( FG_BLACK  )          // ACTIVE
,       _bg( BG_GREY5 ) | _fg( FG_WHITE  )          // CURR_ACTIVE
,       _bg( BG_WHITE ) | _fg( FG_GREY10 )          // INACTIVE
,       _bg( BG_GREY5 ) | _fg( FG_GREY10 )          // CURR_INACTIVE

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?