OpenSolaris_b135/cmd/fmli/vt/highlight.c

Compare this file to the similar file:
Show the results in this format:

/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
/*	  All Rights Reserved  	*/

#pragma ident	"%Z%%M%	%I%	%E% SMI"

#include	<curses.h>
#include	<term.h>
#include	"color_pair.h"

/*
 * the UNDERLINE flag is the second bit of the "ncv" (no_color_video) 
 * terminfo variable (see set_underline_attrs() below)
 */ 
#define UNDERLINE	(0x02)

chtype Attr_normal; 	/* normal video */
chtype Attr_hide;	/* border of non-current window */
chtype Attr_highlight;	/* border of current window */
chtype Attr_select;	/* attribute of "selector bar" */
chtype Attr_show;	/* something visible (errors, etc) */
chtype Attr_visible;	/* the most annoying thing terminal can do */
chtype Attr_underline;	/* attribute of underline */
chtype Attr_mark;	/* attribute of "marked" items */



int
setvt_attrs(void)
{
	static chtype	modes;

	/*
	 * Determine modes
	 */
	if (enter_blink_mode)
		modes |= A_BLINK;
	if (enter_bold_mode)
		modes |= A_BOLD;
	if (enter_dim_mode)
		modes |= A_DIM;
	if (enter_reverse_mode)
		modes |= A_REVERSE;
	if (enter_standout_mode)
		modes |= A_STANDOUT;
	if (enter_underline_mode)
		modes |= A_UNDERLINE;

	/*
	 * Set up Attribute array
	 */
	Attr_normal = A_NORMAL;
	Attr_underline = A_UNDERLINE;	/* let curses decide */
	Attr_highlight = modes & A_STANDOUT;
	if (modes & A_REVERSE)
		Attr_highlight = A_REVERSE;
	Attr_visible = Attr_show = Attr_select = Attr_hide = Attr_highlight;
	if (modes & A_DIM)
		Attr_select = Attr_hide = modes & (A_REVERSE | A_DIM);
	else if (modes & A_BOLD) {
		Attr_highlight |= A_BOLD;
		Attr_select = A_BOLD;
	}
	if (modes & A_BLINK)
		Attr_visible |= A_BLINK;
	Attr_mark = Attr_select;
	if (modes & A_UNDERLINE)
		Attr_mark = A_UNDERLINE;
	return (0);
}

/*
 * SET_UNDERLINE_COLOR will change the underline attribute to be
 * "colpair" IF the terminal supports color BUT the terminal CAN NOT
 * support color attributes with underlining. 
 */
int
set_underline_attr(colpair)
int colpair;
{
	if (Color_terminal == TRUE && no_color_video >= 0 &&
	   (no_color_video & UNDERLINE))
		Attr_underline = COL_ATTR(A_REVERSE, colpair);
	return (0);
}