-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.3778 2022/02/12 20:15:29 tom Exp $
+-- $Id: NEWS,v 1.3780 2022/02/20 00:40:32 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information.
+20220219
+ + expanded description in man/resizeterm.3x
+ + additional workaround for ImageMagick in test/picsmap.c
+
20220212
+ improve font-formatting in other manpages, for consistency.
+ correct/improve font-formatting in curs_wgetch.3x (patch by Benno
-5:0:10 6.3 20220212
+5:0:10 6.3 20220219
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.1466 2022/02/12 15:31:08 tom Exp $
+# $Id: dist.mk,v 1.1467 2022/02/19 12:13:47 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 6
NCURSES_MINOR = 3
-NCURSES_PATCH = 20220212
+NCURSES_PATCH = 20220219
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG>xterm(1)</STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed
descriptions of the entry points.
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
https://invisible-island.net/ncurses/tctest.html
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for detailed
descriptions of the entry points.
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
method of updating character screens with reasonable optimization.
This implementation is "new curses" (ncurses) and is the approved
replacement for 4.4BSD classic curses, which has been discontinued.
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
The <STRONG>ncurses</STRONG> library emulates the curses library of System V Release 4
UNIX, and XPG4 (X/Open Portability Guide) curses (also known as XSI
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 1996-on
- * @Id: resizeterm.3x,v 1.31 2022/02/12 20:07:29 tom Exp @
+ * @Id: resizeterm.3x,v 1.32 2022/02/20 00:32:18 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
This is an extension to the curses library. It provides callers with a
hook into the <STRONG>ncurses</STRONG> data to resize windows, primarily for use by
- programs running in an X Window terminal (e.g., xterm).
+ programs running in an X Window terminal (e.g., xterm) when the
+ terminal's screen size is changed by the user:
+ <STRONG>o</STRONG> Curses windows cannot extend outside the screen. If the terminal
+ is shrunk, curses windows must be shrunk to fit.
+
+ <STRONG>o</STRONG> If the terminal is stretched, rows and/or columns can be added to
+ existing windows. The added cells should match the current
+ attributes of the windows.
+
+ If the calling program has not set up a handler for <STRONG>SIGWINCH</STRONG> when it
+ initializes <STRONG>ncurses</STRONG> (e.g., using <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG> or <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>), then
+ <STRONG>ncurses</STRONG> sets a handler for <STRONG>SIGWINCH</STRONG> which notifies the library when a
+ window-size event has occurred. The library checks for this
+ notification
+
+ <STRONG>o</STRONG> when reading input data,
+
+ <STRONG>o</STRONG> when implicitly resuming program mode (e.g., between <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and
+ <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG>), and
+
+ <STRONG>o</STRONG> when explicitly resuming program mode in <STRONG><A HREF="curs_terminfo.3x.html">restartterm(3x)</A></STRONG>.
+
+ When the library has found that the terminal's window-size has changed,
+ it calls <STRONG>resizeterm</STRONG> to update its data structures.
+
+ An application which establishes its own <STRONG>SIGWINCH</STRONG> handler can call
+ <STRONG>resizeterm</STRONG>, but in that case, the library will not see <STRONG>SIGWINCH</STRONG>, and
+ proper layout will rely upon the application.
+
+
+</PRE><H2><a name="h2-FUNCTIONS">FUNCTIONS</a></H2><PRE>
</PRE><H3><a name="h3-resizeterm">resizeterm</a></H3><PRE>
- The function <STRONG>resizeterm</STRONG> resizes the standard and current windows to the
- specified dimensions, and adjusts other bookkeeping data used by the
- <STRONG>ncurses</STRONG> library that record the window dimensions such as the <STRONG>LINES</STRONG> and
- <STRONG>COLS</STRONG> variables.
+ The function <STRONG>resizeterm</STRONG> resizes the standard and current windows (i.e.,
+ <STRONG>stdscr</STRONG> and <STRONG>curscr</STRONG>) to the specified dimensions, and adjusts other
+ bookkeeping data used by the <STRONG>ncurses</STRONG> library that record the window
+ dimensions such as the <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> variables.
</PRE><H3><a name="h3-resize_term">resize_term</a></H3><PRE>
- Most of the work is done by the inner function <STRONG>resize_term</STRONG>. The outer
- function <STRONG>resizeterm</STRONG> adds bookkeeping for the <STRONG>SIGWINCH</STRONG> handler, as well
- as repainting the soft-key area (see <STRONG><A HREF="curs_slk.3x.html">slk_touch(3x)</A></STRONG>).
+ Most of the work for <STRONG>resizeterm</STRONG> is done by the inner function
+ <STRONG>resize_term</STRONG>. The outer function <STRONG>resizeterm</STRONG> adds bookkeeping for the
+ <STRONG>SIGWINCH</STRONG> handler, as well as repainting the soft-key area (see
+ <STRONG><A HREF="curs_slk.3x.html">slk_touch(3x)</A></STRONG>).
+
+ The <STRONG>resize_term</STRONG> function attempts to resize all windows. This helps
+ with simple applications. However:
- When resizing the windows, <STRONG>resize_term</STRONG> blank-fills the areas that are
- extended. The calling application should fill in these areas with
- appropriate data.
+ <STRONG>o</STRONG> It is not possible to automatically resize pads.
- The <STRONG>resize_term</STRONG> function attempts to resize all windows. However, due
- to the calling convention of pads, it is not possible to resize these
- without additional interaction with the application.
+ <STRONG>o</STRONG> Applications which have complicated layouts should check for
+ <STRONG>KEY_RESIZE</STRONG> returned from <STRONG>wgetch</STRONG>, and adjust their layout, e.g.,
+ using <STRONG>wresize</STRONG> and <STRONG>mvwin</STRONG>, or by recreating the windows.
When resizing windows, <STRONG>resize_term</STRONG> recursively adjusts subwindows,
keeping them within the updated parent window's limits. If a top-level
<STRONG>o</STRONG> on receipt of a <STRONG>SIGWINCH</STRONG>, the handler sets a flag
- <STRONG>o</STRONG> which is tested in <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> and <STRONG>doupdate</STRONG>,
+ <STRONG>o</STRONG> which is tested in <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">doupdate(3x)</A></STRONG> and <STRONG><A HREF="curs_terminfo.3x.html">restartterm(3x)</A></STRONG>,
<STRONG>o</STRONG> in turn, calling the <STRONG>resizeterm</STRONG> function,
<ul>
<li><a href="#h2-NAME">NAME</a></li>
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
-<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-FUNCTIONS">FUNCTIONS</a>
<ul>
<li><a href="#h3-resizeterm">resizeterm</a></li>
<li><a href="#h3-resize_term">resize_term</a></li>
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
have, by specifying how to perform screen operations, and by specifying
padding requirements and initialization sequences.
- This manual describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This manual describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
<STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
<STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
<STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
<STRONG>csh(1)</STRONG>, <STRONG>sh(1)</STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>tty(4)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
<STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220212).
+ This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220219).
-# $Id: manhtml.aliases,v 1.19 2020/12/12 14:45:55 tom Exp $
+# $Id: manhtml.aliases,v 1.20 2022/02/20 00:39:41 tom Exp $
#***************************************************************************
-# Copyright 2019,2020 Thomas E. Dickey *
+# Copyright 2019-2020,2022 Thomas E. Dickey *
# Copyright 2013,2017 Free Software Foundation, Inc. *
# *
# Permission is hereby granted, free of charge, to any person obtaining a *
newterm(3X) curs_initscr(3X)
refresh(3X) curs_refresh(3X)
reset_shell_mode(3X) curs_kernel(3X)
+restartterm(3X) curs_terminfo(3X)
set_term(3X) curs_initscr(3X)
setcchar(3X) curs_getcchar(3X)
setupterm(3X) curs_terminfo(3X)
.\"
.\" Author: Thomas E. Dickey 1996-on
.\"
-.\" $Id: resizeterm.3x,v 1.31 2022/02/12 20:07:29 tom Exp $
+.\" $Id: resizeterm.3x,v 1.32 2022/02/20 00:32:18 tom Exp $
.TH resizeterm 3X ""
.de bP
.ie n .IP \(bu 4
.PP
This is an extension to the curses library.
It provides callers with a hook into the \fBncurses\fP data to resize windows,
-primarily for use by programs running in an X Window terminal (e.g., xterm).
+primarily for use by programs running in an X Window terminal (e.g., xterm)
+when the terminal's screen size is changed by the user:
+.bP
+Curses windows cannot extend outside the screen.
+If the terminal is shrunk, curses windows must be shrunk to fit.
+.bP
+If the terminal is stretched,
+rows and/or columns can be added to existing windows.
+The added cells should match the current attributes of the windows.
+.PP
+If the calling program has not set up a handler for \fBSIGWINCH\fP
+when it initializes \fBncurses\fP
+(e.g., using \fBinitscr\fP(3X) or \fBnewterm\fP(3X)),
+then \fBncurses\fP sets a handler for \fBSIGWINCH\fP which notifies
+the library when a window-size event has occurred.
+The library checks for this notification
+.bP
+when reading input data,
+.bP
+when implicitly resuming program mode
+(e.g., between \fBendwin\fP(3X) and \fBwrefresh\fP(3X)),
+and
+.bP
+when explicitly resuming program mode in \fBrestartterm\fP(3X).
+.PP
+When the library has found that the terminal's window-size has
+changed, it calls \fBresizeterm\fP to update its data structures.
+.PP
+An application which establishes its own \fBSIGWINCH\fP handler
+can call \fBresizeterm\fP, but in that case, the library will not
+see \fBSIGWINCH\fP, and proper layout will rely upon the application.
+.SH FUNCTIONS
.SS resizeterm
.PP
The function \fBresizeterm\fP resizes the standard and current windows
+(i.e., \fBstdscr\fP and \fBcurscr\fP)
to the specified dimensions, and adjusts other bookkeeping data used by
the \fBncurses\fP library that record the window dimensions
such as the \fBLINES\fP and \fBCOLS\fP variables.
.SS resize_term
.PP
-Most of the work is done by the inner function \fBresize_term\fP.
+Most of the work for \fBresizeterm\fP is
+done by the inner function \fBresize_term\fP.
The outer function \fBresizeterm\fP adds bookkeeping
for the \fBSIGWINCH\fP handler,
as well as repainting the soft-key area (see \fBslk_touch\fP(3X)).
.PP
-When resizing the windows,
-\fBresize_term\fP blank-fills the areas that are extended.
-The calling application should fill in these areas with appropriate data.
-.PP
The \fBresize_term\fP function attempts to resize all windows.
-However, due to the calling convention of pads,
-it is not possible to resize these
-without additional interaction with the application.
+This helps with simple applications.
+However:
+.bP
+It is not possible to automatically resize pads.
+.bP
+Applications which have complicated layouts should check for
+\fBKEY_RESIZE\fP returned from \fBwgetch\fP,
+and adjust their layout, e.g., using \fBwresize\fP and \fBmvwin\fP,
+or by recreating the windows.
.PP
When resizing windows, \fBresize_term\fP recursively adjusts subwindows,
keeping them within the updated parent window's limits.
.bP
on receipt of a \fBSIGWINCH\fP, the handler sets a flag
.bP
-which is tested in \fBwgetch\fP(3X) and \fBdoupdate\fP,
+which is tested in
+\fBwgetch\fP(3X),
+\fBdoupdate\fP(3X) and
+\fBrestartterm\fP(3X),
.bP
in turn, calling the \fBresizeterm\fP function,
.bP
-ncurses6 (6.3+20220212) unstable; urgency=low
+ncurses6 (6.3+20220219) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 12 Feb 2022 10:31:08 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 19 Feb 2022 07:13:47 -0500
ncurses6 (5.9-20131005) unstable; urgency=low
-ncurses6 (6.3+20220212) unstable; urgency=low
+ncurses6 (6.3+20220219) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 12 Feb 2022 10:31:08 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 19 Feb 2022 07:13:47 -0500
ncurses6 (5.9-20131005) unstable; urgency=low
-ncurses6 (6.3+20220212) unstable; urgency=low
+ncurses6 (6.3+20220219) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 12 Feb 2022 10:31:08 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 19 Feb 2022 07:13:47 -0500
ncurses6 (5.9-20120608) unstable; urgency=low
-; $Id: mingw-ncurses.nsi,v 1.506 2022/02/12 15:31:08 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.507 2022/02/19 12:13:47 tom Exp $\r
\r
; TODO add examples\r
; TODO bump ABI to 6\r
!define VERSION_MAJOR "6"\r
!define VERSION_MINOR "3"\r
!define VERSION_YYYY "2022"\r
-!define VERSION_MMDD "0212"\r
+!define VERSION_MMDD "0219"\r
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
\r
!define MY_ABI "5"\r
Summary: shared libraries for terminal handling
Name: mingw32-ncurses6
Version: 6.3
-Release: 20220212
+Release: 20220219
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
Summary: shared libraries for terminal handling
Name: ncurses6
Version: 6.3
-Release: 20220212
+Release: 20220219
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
Summary: Curses library with POSIX thread support.
Name: ncursest6
Version: 6.3
-Release: 20220212
+Release: 20220219
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
* authorization. *
****************************************************************************/
/*
- * $Id: picsmap.c,v 1.142 2022/02/06 01:44:34 tom Exp $
+ * $Id: picsmap.c,v 1.144 2022/02/19 21:30:04 tom Exp $
*
* Author: Thomas E. Dickey
*
char *t;
char *s = t = strchr(buffer, '#');
bool matched = FALSE;
- bool blurred = FALSE;
if (s != 0) {
/* after the "#RGB", there are differences - just ignore */
++s;
*++s = '\0';
}
+
if (match_c(buffer,
"%d,%d: (%d,%d,%d,%d) #%x ",
&col, &row,
"%d,%d: (%f%%,%f%%,%f%%,%d) #%x ",
&col, &row,
&rf, &gf, &bf, &nocolor,
+ &check) ||
+ match_c(buffer,
+ "%d,%d: (%f%%,%f%%,%f%%) #%x ",
+ &col, &row,
+ &rf, &gf, &bf,
&check)) {
matched = TRUE;
- blurred = TRUE; /* 6.9.11 scaling is broken... */
+
#define fp_fix(n) (int) (MaxRGB * (((n) > 100.0 ? 100.0 : (n)) / 100.0))
+
r = fp_fix(rf);
g = fp_fix(gf);
b = fp_fix(bf);
}
+ if ((s - t) > 8) /* 6 hex digits vs 8 */
+ check /= 256;
if (matched) {
int which, c;
+ int want_r = (check >> 16) & 0xff;
+ int want_g = (check >> 8) & 0xff;
+ int want_b = (check >> 0) & 0xff;
+
+#define fp_err(tst,ref) ((tst > MaxRGB) || ((tst - ref)*(tst - ref)) > 4)
- if ((s - t) > 8) /* 6 hex digits vs 8 */
- check /= 256;
- if (blurred) {
- /* revisit this when ImageMagick is fixed */
- } else if (r > MaxRGB ||
- g > MaxRGB ||
- b > MaxRGB ||
- check != (unsigned) ((r << 16) | (g << 8) | b)) {
+ if (fp_err(r, want_r) ||
+ fp_err(g, want_g) ||
+ fp_err(b, want_b)) {
okay = FALSE;
break;
}