Add gnome-colorscheme.

GNOME Colorscheme is a color scheme builder for the GNOME desktop. It is
useful for web creation as well as room painting. It supports 6 various types
of color schemes: Complements, Split Complements, Triads, Tetrads, Analogous,
and Monochromatic.

The user can lighten/darken the whole colorscheme or increase/decrease its
saturation.

WWW: http://home.gna.org/colorscheme/

PR:		ports/85458
Submitted by:	Piotr Smyrak <piotr.smyrak@heron.pl>
This commit is contained in:
Jean-Yves Lefort 2005-08-31 00:54:05 +00:00
parent 0e1ef5c9cc
commit 9f56c0e245
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=141512
13 changed files with 753 additions and 0 deletions

View File

@ -156,6 +156,7 @@
SUBDIR += gltt
SUBDIR += gmt
SUBDIR += gnofract4d
SUBDIR += gnome-colorscheme
SUBDIR += gnomecanvas
SUBDIR += gnomeiconedit
SUBDIR += gnustep-slideshow

34
graphics/agave/Makefile Normal file
View File

@ -0,0 +1,34 @@
# New ports collection makefile for: gnome-colorscheme
# Date created: 30 August 2005
# Whom: Piotr Smyrak <smyru@heron.pl>
#
# $FreeBSD$
#
PORTNAME= colorscheme
PORTVERSION= 0.2.1
CATEGORIES= graphics gnome
MASTER_SITES= http://download.gna.org/${PORTNAME}/0.2/
PKGNAMEPREFIX= gnome-
MAINTAINER= smyru@heron.pl
COMMENT= A color scheme builder for the GNOME desktop
LIB_DEPENDS= gtkmm-2.4.1:${PORTSDIR}/x11-toolkits/gtkmm24 \
cppunit-1.10:${PORTSDIR}/devel/cppunit
USE_BZIP2= yes
USE_GMAKE= yes
USE_X_PREFIX= yes
USE_GNOME= gnomeprefix gnomehack intlhack libgnomeui
GNU_CONFIGURE= yes
USE_GCC= 3.4+
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" LDFLAGS="-L${LOCALBASE}/lib"
.include <bsd.port.pre.mk>
.if ${OSVERSION} < 503001
EXTRA_PATCHES+= ${FILESDIR}/roundpatch
.endif
.include <bsd.port.post.mk>

2
graphics/agave/distinfo Normal file
View File

@ -0,0 +1,2 @@
MD5 (colorscheme-0.2.1.tar.bz2) = e1465624d3373b5593b7c6ca25856aee
SIZE (colorscheme-0.2.1.tar.bz2) = 149287

View File

@ -0,0 +1,10 @@
--- src/main.cc.orig Tue Aug 30 02:25:47 2005
+++ src/main.cc Tue Aug 30 02:26:18 2005
@@ -33,6 +33,7 @@
#include <libgnomeui/gnome-ui-init.h>
#include "gcs-mainwindow.h"
+#include "gcs-i18n.h"
namespace gcs
{

View File

@ -0,0 +1,310 @@
--- src/core/gcs-color.cc.orig Wed Aug 31 02:18:48 2005
+++ src/core/gcs-color.cc Wed Aug 31 02:26:33 2005
@@ -28,7 +28,262 @@
#include <iomanip> // for hex, setw, setfill, uppercase
#include <algorithm> // for transform
#include <stdexcept> // for invalid_argument exception
-#include <math.h> // for round, floor
+
+/* ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * Copyright (c) 2003, Steven G. Kargl
+ * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org>
+ * Copyright (c) 2002, 2003 David Schultz <dschultz@uclink.Berkeley.EDU>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice unmodified, this list of conditions, and the following
+ * disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <math.h>
+
+/* Symbolic constants to classify floating point numbers. */
+#define COMPAT_FP_INFINITE 0x01
+#define COMPAT_FP_NAN 0x02
+#define COMPAT_FP_NORMAL 0x04
+#define COMPAT_FP_SUBNORMAL 0x08
+#define COMPAT_FP_ZERO 0x10
+
+#include <sys/endian.h>
+#define compat_fpclassify(x) \
+ ((sizeof (x) == sizeof (float)) ? compat___fpclassifyf(x) \
+ : (sizeof (x) == sizeof (double)) ? compat___fpclassifyd(x) \
+ : compat___fpclassifyl(x))
+
+union compat_IEEEf2bits {
+ float f;
+ struct {
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+ unsigned int man :23;
+ unsigned int exp :8;
+ unsigned int sign :1;
+#else /* _BIG_ENDIAN */
+ unsigned int sign :1;
+ unsigned int exp :8;
+ unsigned int man :23;
+#endif
+ } bits;
+};
+
+union compat_IEEEd2bits {
+ double d;
+ struct {
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+ unsigned int manl :32;
+ unsigned int manh :20;
+ unsigned int exp :11;
+ unsigned int sign :1;
+#else /* _BIG_ENDIAN */
+ unsigned int sign :1;
+ unsigned int exp :11;
+ unsigned int manh :20;
+ unsigned int manl :32;
+#endif
+ } bits;
+};
+
+#ifdef __alpha__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int manl :32;
+ unsigned int manh :20;
+ unsigned int exp :11;
+ unsigned int sign :1;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((void)0)
+#elif __amd64__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int manl :32;
+ unsigned int manh :32;
+ unsigned int exp :15;
+ unsigned int sign :1;
+ unsigned int junkl :16;
+ unsigned int junkh :32;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#elif __arm__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int manl :32;
+ unsigned int manh :32;
+ unsigned int exp :15;
+ unsigned int sign :1;
+ unsigned int junk :16;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#elif __i386__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int manl :32;
+ unsigned int manh :32;
+ unsigned int exp :15;
+ unsigned int sign :1;
+ unsigned int junk :16;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#elif __ia64__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+ unsigned int manl :32;
+ unsigned int manh :32;
+ unsigned int exp :15;
+ unsigned int sign :1;
+ unsigned long junk :48;
+#else /* _BIG_ENDIAN */
+ unsigned long junk :48;
+ unsigned int sign :1;
+ unsigned int exp :15;
+ unsigned int manh :32;
+ unsigned int manl :32;
+#endif
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#elif __powerpc__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int sign :1;
+ unsigned int exp :15;
+ unsigned long long manh :48;
+ unsigned long long manl :64;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((void)0)
+#elif __sparc64__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int sign :1;
+ unsigned int exp :15;
+ unsigned long manh :48;
+ unsigned long manl :64;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((void)0)
+#endif
+
+static int
+compat___fpclassifyf(float f)
+{
+ union compat_IEEEf2bits u;
+
+ u.f = f;
+ if (u.bits.exp == 0) {
+ if (u.bits.man == 0)
+ return (COMPAT_FP_ZERO);
+ return (COMPAT_FP_SUBNORMAL);
+ }
+ if (u.bits.exp == 255) {
+ if (u.bits.man == 0)
+ return (COMPAT_FP_INFINITE);
+ return (COMPAT_FP_NAN);
+ }
+ return (COMPAT_FP_NORMAL);
+}
+
+static int
+compat___fpclassifyd(double d)
+{
+ union compat_IEEEd2bits u;
+
+ u.d = d;
+ if (u.bits.exp == 0) {
+ if ((u.bits.manl | u.bits.manh) == 0)
+ return (COMPAT_FP_ZERO);
+ return (COMPAT_FP_SUBNORMAL);
+ }
+ if (u.bits.exp == 2047) {
+ if ((u.bits.manl | u.bits.manh) == 0)
+ return (COMPAT_FP_INFINITE);
+ return (COMPAT_FP_NAN);
+ }
+ return (COMPAT_FP_NORMAL);
+}
+
+static int
+compat___fpclassifyl(long double e)
+{
+ union compat_IEEEl2bits u;
+
+ u.e = e;
+ if (u.bits.exp == 0) {
+ if ((u.bits.manl | u.bits.manh) == 0)
+ return (COMPAT_FP_ZERO);
+ return (COMPAT_FP_SUBNORMAL);
+ }
+ compat_mask_nbit_l(u); /* Mask normalization bit if applicable. */
+ if (u.bits.exp == 32767) {
+ if ((u.bits.manl | u.bits.manh) == 0)
+ return (COMPAT_FP_INFINITE);
+ return (COMPAT_FP_NAN);
+ }
+ return (COMPAT_FP_NORMAL);
+}
+
+static double
+compat_round(double x)
+{
+ double t;
+ int i;
+
+ i = compat_fpclassify(x);
+ if (i == COMPAT_FP_INFINITE || i == COMPAT_FP_NAN)
+ return (x);
+
+ if (x >= 0.0) {
+ t = ceil(x);
+ if (t - x > 0.5)
+ t -= 1.0;
+ return (t);
+ } else {
+ t = ceil(-x);
+ if (t + x > 0.5)
+ t -= 1.0;
+ return (-t);
+ }
+}
namespace gcs
{
@@ -166,9 +421,9 @@
}
tempHue *= maxHueValue / 6; // degrees
- tempHue = round(tempHue);
- out.saturation = static_cast<int>(round(tempSat));
- out.value = static_cast<int>(round(tempVal));
+ tempHue = compat_round(tempHue);
+ out.saturation = static_cast<int>(compat_round(tempSat));
+ out.value = static_cast<int>(compat_round(tempVal));
if(tempHue < 0)
{
out.hue += maxHueValue;
@@ -201,7 +456,7 @@
hueSector = static_cast<int>(floor(scaledHue));
remainder = scaledHue - hueSector; // factorial part of scaledHue
p = static_cast<int>(
- round(
+ compat_round(
(float) maxRgbValue *
(
((float) hsv.value / 100.0) *
@@ -210,18 +465,18 @@
)
);
q = static_cast<int>(
- round(
+ compat_round(
(float) maxRgbValue * ((float) hsv.value / 100.0 *
(1.0 - ((float) hsv.saturation / 100.0 * remainder)))
)
);
t = static_cast<int>(
- round(
+ compat_round(
(float) maxRgbValue * ((float) hsv.value / 100.0) *
(1.0 - ((float) hsv.saturation / 100.0) * (1.0 - remainder))
)
);
- val = static_cast<int>(round(maxRgbValue * hsv.value / 100));
+ val = static_cast<int>(compat_round(maxRgbValue * hsv.value / 100));
switch(hueSector)
{

9
graphics/agave/pkg-descr Normal file
View File

@ -0,0 +1,9 @@
GNOME Colorscheme is a color scheme builder for the GNOME desktop. It is
useful for web creation as well as room painting. It supports 6 various types
of color schemes: Complements, Split Complements, Triads, Tetrads, Analogous,
and Monochromatic.
The user can lighten/darken the whole colorscheme or increase/decrease its
saturation.
WWW: http://home.gna.org/colorscheme/

11
graphics/agave/pkg-plist Normal file
View File

@ -0,0 +1,11 @@
bin/colorscheme
share/gnome/applications/colorscheme.desktop
share/gnome/colorscheme/ui/colorscheme.ui
share/gnome/pixmaps/colorscheme-icon.png
share/gnome/pixmaps/colorscheme-logo.png
share/gnome/pixmaps/darken.png
share/gnome/pixmaps/desaturate.png
share/gnome/pixmaps/lighten.png
share/gnome/pixmaps/saturate.png
@dirrm share/gnome/colorscheme/ui
@dirrm share/gnome/colorscheme

View File

@ -0,0 +1,34 @@
# New ports collection makefile for: gnome-colorscheme
# Date created: 30 August 2005
# Whom: Piotr Smyrak <smyru@heron.pl>
#
# $FreeBSD$
#
PORTNAME= colorscheme
PORTVERSION= 0.2.1
CATEGORIES= graphics gnome
MASTER_SITES= http://download.gna.org/${PORTNAME}/0.2/
PKGNAMEPREFIX= gnome-
MAINTAINER= smyru@heron.pl
COMMENT= A color scheme builder for the GNOME desktop
LIB_DEPENDS= gtkmm-2.4.1:${PORTSDIR}/x11-toolkits/gtkmm24 \
cppunit-1.10:${PORTSDIR}/devel/cppunit
USE_BZIP2= yes
USE_GMAKE= yes
USE_X_PREFIX= yes
USE_GNOME= gnomeprefix gnomehack intlhack libgnomeui
GNU_CONFIGURE= yes
USE_GCC= 3.4+
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" LDFLAGS="-L${LOCALBASE}/lib"
.include <bsd.port.pre.mk>
.if ${OSVERSION} < 503001
EXTRA_PATCHES+= ${FILESDIR}/roundpatch
.endif
.include <bsd.port.post.mk>

View File

@ -0,0 +1,2 @@
MD5 (colorscheme-0.2.1.tar.bz2) = e1465624d3373b5593b7c6ca25856aee
SIZE (colorscheme-0.2.1.tar.bz2) = 149287

View File

@ -0,0 +1,10 @@
--- src/main.cc.orig Tue Aug 30 02:25:47 2005
+++ src/main.cc Tue Aug 30 02:26:18 2005
@@ -33,6 +33,7 @@
#include <libgnomeui/gnome-ui-init.h>
#include "gcs-mainwindow.h"
+#include "gcs-i18n.h"
namespace gcs
{

View File

@ -0,0 +1,310 @@
--- src/core/gcs-color.cc.orig Wed Aug 31 02:18:48 2005
+++ src/core/gcs-color.cc Wed Aug 31 02:26:33 2005
@@ -28,7 +28,262 @@
#include <iomanip> // for hex, setw, setfill, uppercase
#include <algorithm> // for transform
#include <stdexcept> // for invalid_argument exception
-#include <math.h> // for round, floor
+
+/* ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * Copyright (c) 2003, Steven G. Kargl
+ * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org>
+ * Copyright (c) 2002, 2003 David Schultz <dschultz@uclink.Berkeley.EDU>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice unmodified, this list of conditions, and the following
+ * disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <math.h>
+
+/* Symbolic constants to classify floating point numbers. */
+#define COMPAT_FP_INFINITE 0x01
+#define COMPAT_FP_NAN 0x02
+#define COMPAT_FP_NORMAL 0x04
+#define COMPAT_FP_SUBNORMAL 0x08
+#define COMPAT_FP_ZERO 0x10
+
+#include <sys/endian.h>
+#define compat_fpclassify(x) \
+ ((sizeof (x) == sizeof (float)) ? compat___fpclassifyf(x) \
+ : (sizeof (x) == sizeof (double)) ? compat___fpclassifyd(x) \
+ : compat___fpclassifyl(x))
+
+union compat_IEEEf2bits {
+ float f;
+ struct {
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+ unsigned int man :23;
+ unsigned int exp :8;
+ unsigned int sign :1;
+#else /* _BIG_ENDIAN */
+ unsigned int sign :1;
+ unsigned int exp :8;
+ unsigned int man :23;
+#endif
+ } bits;
+};
+
+union compat_IEEEd2bits {
+ double d;
+ struct {
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+ unsigned int manl :32;
+ unsigned int manh :20;
+ unsigned int exp :11;
+ unsigned int sign :1;
+#else /* _BIG_ENDIAN */
+ unsigned int sign :1;
+ unsigned int exp :11;
+ unsigned int manh :20;
+ unsigned int manl :32;
+#endif
+ } bits;
+};
+
+#ifdef __alpha__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int manl :32;
+ unsigned int manh :20;
+ unsigned int exp :11;
+ unsigned int sign :1;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((void)0)
+#elif __amd64__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int manl :32;
+ unsigned int manh :32;
+ unsigned int exp :15;
+ unsigned int sign :1;
+ unsigned int junkl :16;
+ unsigned int junkh :32;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#elif __arm__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int manl :32;
+ unsigned int manh :32;
+ unsigned int exp :15;
+ unsigned int sign :1;
+ unsigned int junk :16;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#elif __i386__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int manl :32;
+ unsigned int manh :32;
+ unsigned int exp :15;
+ unsigned int sign :1;
+ unsigned int junk :16;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#elif __ia64__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+ unsigned int manl :32;
+ unsigned int manh :32;
+ unsigned int exp :15;
+ unsigned int sign :1;
+ unsigned long junk :48;
+#else /* _BIG_ENDIAN */
+ unsigned long junk :48;
+ unsigned int sign :1;
+ unsigned int exp :15;
+ unsigned int manh :32;
+ unsigned int manl :32;
+#endif
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#elif __powerpc__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int sign :1;
+ unsigned int exp :15;
+ unsigned long long manh :48;
+ unsigned long long manl :64;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((void)0)
+#elif __sparc64__
+union compat_IEEEl2bits {
+ long double e;
+ struct {
+ unsigned int sign :1;
+ unsigned int exp :15;
+ unsigned long manh :48;
+ unsigned long manl :64;
+ } bits;
+};
+#define compat_mask_nbit_l(u) ((void)0)
+#endif
+
+static int
+compat___fpclassifyf(float f)
+{
+ union compat_IEEEf2bits u;
+
+ u.f = f;
+ if (u.bits.exp == 0) {
+ if (u.bits.man == 0)
+ return (COMPAT_FP_ZERO);
+ return (COMPAT_FP_SUBNORMAL);
+ }
+ if (u.bits.exp == 255) {
+ if (u.bits.man == 0)
+ return (COMPAT_FP_INFINITE);
+ return (COMPAT_FP_NAN);
+ }
+ return (COMPAT_FP_NORMAL);
+}
+
+static int
+compat___fpclassifyd(double d)
+{
+ union compat_IEEEd2bits u;
+
+ u.d = d;
+ if (u.bits.exp == 0) {
+ if ((u.bits.manl | u.bits.manh) == 0)
+ return (COMPAT_FP_ZERO);
+ return (COMPAT_FP_SUBNORMAL);
+ }
+ if (u.bits.exp == 2047) {
+ if ((u.bits.manl | u.bits.manh) == 0)
+ return (COMPAT_FP_INFINITE);
+ return (COMPAT_FP_NAN);
+ }
+ return (COMPAT_FP_NORMAL);
+}
+
+static int
+compat___fpclassifyl(long double e)
+{
+ union compat_IEEEl2bits u;
+
+ u.e = e;
+ if (u.bits.exp == 0) {
+ if ((u.bits.manl | u.bits.manh) == 0)
+ return (COMPAT_FP_ZERO);
+ return (COMPAT_FP_SUBNORMAL);
+ }
+ compat_mask_nbit_l(u); /* Mask normalization bit if applicable. */
+ if (u.bits.exp == 32767) {
+ if ((u.bits.manl | u.bits.manh) == 0)
+ return (COMPAT_FP_INFINITE);
+ return (COMPAT_FP_NAN);
+ }
+ return (COMPAT_FP_NORMAL);
+}
+
+static double
+compat_round(double x)
+{
+ double t;
+ int i;
+
+ i = compat_fpclassify(x);
+ if (i == COMPAT_FP_INFINITE || i == COMPAT_FP_NAN)
+ return (x);
+
+ if (x >= 0.0) {
+ t = ceil(x);
+ if (t - x > 0.5)
+ t -= 1.0;
+ return (t);
+ } else {
+ t = ceil(-x);
+ if (t + x > 0.5)
+ t -= 1.0;
+ return (-t);
+ }
+}
namespace gcs
{
@@ -166,9 +421,9 @@
}
tempHue *= maxHueValue / 6; // degrees
- tempHue = round(tempHue);
- out.saturation = static_cast<int>(round(tempSat));
- out.value = static_cast<int>(round(tempVal));
+ tempHue = compat_round(tempHue);
+ out.saturation = static_cast<int>(compat_round(tempSat));
+ out.value = static_cast<int>(compat_round(tempVal));
if(tempHue < 0)
{
out.hue += maxHueValue;
@@ -201,7 +456,7 @@
hueSector = static_cast<int>(floor(scaledHue));
remainder = scaledHue - hueSector; // factorial part of scaledHue
p = static_cast<int>(
- round(
+ compat_round(
(float) maxRgbValue *
(
((float) hsv.value / 100.0) *
@@ -210,18 +465,18 @@
)
);
q = static_cast<int>(
- round(
+ compat_round(
(float) maxRgbValue * ((float) hsv.value / 100.0 *
(1.0 - ((float) hsv.saturation / 100.0 * remainder)))
)
);
t = static_cast<int>(
- round(
+ compat_round(
(float) maxRgbValue * ((float) hsv.value / 100.0) *
(1.0 - ((float) hsv.saturation / 100.0) * (1.0 - remainder))
)
);
- val = static_cast<int>(round(maxRgbValue * hsv.value / 100));
+ val = static_cast<int>(compat_round(maxRgbValue * hsv.value / 100));
switch(hueSector)
{

View File

@ -0,0 +1,9 @@
GNOME Colorscheme is a color scheme builder for the GNOME desktop. It is
useful for web creation as well as room painting. It supports 6 various types
of color schemes: Complements, Split Complements, Triads, Tetrads, Analogous,
and Monochromatic.
The user can lighten/darken the whole colorscheme or increase/decrease its
saturation.
WWW: http://home.gna.org/colorscheme/

View File

@ -0,0 +1,11 @@
bin/colorscheme
share/gnome/applications/colorscheme.desktop
share/gnome/colorscheme/ui/colorscheme.ui
share/gnome/pixmaps/colorscheme-icon.png
share/gnome/pixmaps/colorscheme-logo.png
share/gnome/pixmaps/darken.png
share/gnome/pixmaps/desaturate.png
share/gnome/pixmaps/lighten.png
share/gnome/pixmaps/saturate.png
@dirrm share/gnome/colorscheme/ui
@dirrm share/gnome/colorscheme