/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_color.c,v 1.95 2009/08/22 19:04:36 tom Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.101 2011/05/28 21:57:59 tom Exp $")
#ifdef USE_TERM_DRIVER
#define CanChange InfoOf(SP_PARM).canchange
#else
bool result = FALSE;
+ (void) SP_PARM;
if (orig_pair != 0) {
TPUTS_TRACE("orig_pair");
putp(orig_pair);
{
int result = FALSE;
- T((T_CALLED("_nc_reset_colors(%p)"), SP_PARM));
+ T((T_CALLED("_nc_reset_colors(%p)"), (void *) SP_PARM));
if (SP_PARM->_color_defs > 0)
SP_PARM->_color_defs = -(SP_PARM->_color_defs);
if (reset_color_pair(NCURSES_SP_ARG))
int result = ERR;
int maxpairs = 0, maxcolors = 0;
- T((T_CALLED("start_color(%p)"), SP_PARM));
+ T((T_CALLED("start_color(%p)"), (void *) SP_PARM));
if (SP_PARM == 0) {
result = ERR;
max = b;
/* calculate lightness */
- *l = (min + max) / 20;
+ *l = (short) ((min + max) / 20);
if (min == max) { /* black, white and all shades of gray */
*h = 0;
/* calculate saturation */
if (*l < 50)
- *s = ((max - min) * 100) / (max + min);
+ *s = (short) (((max - min) * 100) / (max + min));
else
- *s = ((max - min) * 100) / (2000 - max - min);
+ *s = (short) (((max - min) * 100) / (2000 - max - min));
/* calculate hue */
if (r == max)
- t = 120 + ((g - b) * 60) / (max - min);
+ t = (short) (120 + ((g - b) * 60) / (max - min));
else if (g == max)
- t = 240 + ((b - r) * 60) / (max - min);
+ t = (short) (240 + ((b - r) * 60) / (max - min));
else
- t = 360 + ((r - g) * 60) / (max - min);
+ t = (short) (360 + ((r - g) * 60) / (max - min));
*h = t % 360;
}
colorpair_t previous;
int maxcolors;
- T((T_CALLED("init_pair(%p,%d,%d,%d)"), SP_PARM, pair, f, b));
+ T((T_CALLED("init_pair(%p,%d,%d,%d)"), (void *) SP_PARM, pair, f, b));
if (!ValidPair(pair))
returnCode(ERR);
previous = SP_PARM->_color_pairs[pair];
#if NCURSES_EXT_FUNCS
- if (SP_PARM->_default_color) {
+ if (SP_PARM->_default_color || SP_PARM->_assumed_color) {
bool isDefault = FALSE;
bool wasDefault = FALSE;
int default_pairs = SP_PARM->_default_pairs;
{
if ((f < 0) || !OkColorHi(f)
|| (b < 0) || !OkColorHi(b)
- || (pair < 1))
+ || (pair < 1)) {
returnCode(ERR);
+ }
}
/*
int result = ERR;
int maxcolors;
- T((T_CALLED("init_color(%p,%d,%d,%d,%d)"), SP_PARM, color, r, g, b));
+ T((T_CALLED("init_color(%p,%d,%d,%d,%d)"),
+ (void *) SP_PARM,
+ color,
+ r, g, b));
if (SP_PARM == 0)
returnCode(result);
NCURSES_EXPORT(bool)
NCURSES_SP_NAME(can_change_color) (NCURSES_SP_DCL)
{
- T((T_CALLED("can_change_color(%p)"), SP_PARM));
- returnCode((CanChange != 0) ? TRUE : FALSE);
+ int result = FALSE;
+
+ T((T_CALLED("can_change_color(%p)"), (void *) SP_PARM));
+
+ if (HasTerminal(SP_PARM) && (CanChange != 0)) {
+ result = TRUE;
+ }
+
+ returnCode(result);
}
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(bool)
NCURSES_SP_NAME(has_colors) (NCURSES_SP_DCL0)
{
- int code;
+ int code = FALSE;
+ (void) SP_PARM;
T((T_CALLED("has_colors()")));
+ if (HasTerminal(SP_PARM)) {
#ifdef USE_TERM_DRIVER
- code = HasColor;
+ code = HasColor;
#else
- code = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
- && (((set_foreground != NULL)
- && (set_background != NULL))
- || ((set_a_foreground != NULL)
- && (set_a_background != NULL))
- || set_color_pair)) ? TRUE : FALSE);
+ code = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
+ && (((set_foreground != NULL)
+ && (set_background != NULL))
+ || ((set_a_foreground != NULL)
+ && (set_a_background != NULL))
+ || set_color_pair)) ? TRUE : FALSE);
#endif
+ }
returnCode(code);
}
int result = ERR;
int maxcolors;
- T((T_CALLED("color_content(%p,%d,%p,%p,%p)"), SP_PARM, color, r, g, b));
+ T((T_CALLED("color_content(%p,%d,%p,%p,%p)"),
+ (void *) SP_PARM,
+ color,
+ (void *) r,
+ (void *) g,
+ (void *) b));
if (SP_PARM == 0)
returnCode(result);
{
int result;
- T((T_CALLED("pair_content(%p,%d,%p,%p)"), SP_PARM, pair, f, b));
+ T((T_CALLED("pair_content(%p,%d,%p,%p)"),
+ (void *) SP_PARM,
+ pair,
+ (void *) f,
+ (void *) b));
if (!ValidPair(pair)) {
result = ERR;
if (b)
*b = bg;
- TR(TRACE_ATTRS, ("...pair_content(%p,%d,%d,%d)", SP_PARM, pair, fg, bg));
+ TR(TRACE_ATTRS, ("...pair_content(%p,%d,%d,%d)",
+ (void *) SP_PARM,
+ pair,
+ fg, bg));
result = OK;
}
returnCode(result);
#if NCURSES_EXT_FUNCS
if (isDefaultColor(fg))
- fg = default_fg(NCURSES_SP_ARG);
+ fg = (short) default_fg(NCURSES_SP_ARG);
if (isDefaultColor(bg))
- bg = default_bg(NCURSES_SP_ARG);
+ bg = (short) default_bg(NCURSES_SP_ARG);
#endif
if (reverse) {