summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorJean-Yves Lefort <jylefort@FreeBSD.org>2005-08-31 00:54:05 +0000
committerJean-Yves Lefort <jylefort@FreeBSD.org>2005-08-31 00:54:05 +0000
commit9f56c0e24590a1ed751258ff460b00df985eaa27 (patch)
treeb3c0dea3fe3cb1da9c8d77ffa7cbfe9a7f14f5e7 /graphics
parentNew port normalizemime version 1.16.20050628: A mime normalizer to (diff)
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>
Notes
Notes: svn path=/head/; revision=141512
Diffstat (limited to 'graphics')
-rw-r--r--graphics/Makefile1
-rw-r--r--graphics/agave/Makefile34
-rw-r--r--graphics/agave/distinfo2
-rw-r--r--graphics/agave/files/patch-src_main.cc10
-rw-r--r--graphics/agave/files/roundpatch310
-rw-r--r--graphics/agave/pkg-descr9
-rw-r--r--graphics/agave/pkg-plist11
-rw-r--r--graphics/gnome-colorscheme/Makefile34
-rw-r--r--graphics/gnome-colorscheme/distinfo2
-rw-r--r--graphics/gnome-colorscheme/files/patch-src_main.cc10
-rw-r--r--graphics/gnome-colorscheme/files/roundpatch310
-rw-r--r--graphics/gnome-colorscheme/pkg-descr9
-rw-r--r--graphics/gnome-colorscheme/pkg-plist11
13 files changed, 753 insertions, 0 deletions
diff --git a/graphics/Makefile b/graphics/Makefile
index 21fcad3f75eb..fc58f4c23d96 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -156,6 +156,7 @@
SUBDIR += gltt
SUBDIR += gmt
SUBDIR += gnofract4d
+ SUBDIR += gnome-colorscheme
SUBDIR += gnomecanvas
SUBDIR += gnomeiconedit
SUBDIR += gnustep-slideshow
diff --git a/graphics/agave/Makefile b/graphics/agave/Makefile
new file mode 100644
index 000000000000..41f94c664585
--- /dev/null
+++ b/graphics/agave/Makefile
@@ -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>
diff --git a/graphics/agave/distinfo b/graphics/agave/distinfo
new file mode 100644
index 000000000000..2e212dfb213d
--- /dev/null
+++ b/graphics/agave/distinfo
@@ -0,0 +1,2 @@
+MD5 (colorscheme-0.2.1.tar.bz2) = e1465624d3373b5593b7c6ca25856aee
+SIZE (colorscheme-0.2.1.tar.bz2) = 149287
diff --git a/graphics/agave/files/patch-src_main.cc b/graphics/agave/files/patch-src_main.cc
new file mode 100644
index 000000000000..090109c97ab0
--- /dev/null
+++ b/graphics/agave/files/patch-src_main.cc
@@ -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
+ {
diff --git a/graphics/agave/files/roundpatch b/graphics/agave/files/roundpatch
new file mode 100644
index 000000000000..4f0fbb99b6c5
--- /dev/null
+++ b/graphics/agave/files/roundpatch
@@ -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)
+ {
diff --git a/graphics/agave/pkg-descr b/graphics/agave/pkg-descr
new file mode 100644
index 000000000000..c6b349ea11fe
--- /dev/null
+++ b/graphics/agave/pkg-descr
@@ -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/
diff --git a/graphics/agave/pkg-plist b/graphics/agave/pkg-plist
new file mode 100644
index 000000000000..21c01b3ebc22
--- /dev/null
+++ b/graphics/agave/pkg-plist
@@ -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
diff --git a/graphics/gnome-colorscheme/Makefile b/graphics/gnome-colorscheme/Makefile
new file mode 100644
index 000000000000..41f94c664585
--- /dev/null
+++ b/graphics/gnome-colorscheme/Makefile
@@ -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>
diff --git a/graphics/gnome-colorscheme/distinfo b/graphics/gnome-colorscheme/distinfo
new file mode 100644
index 000000000000..2e212dfb213d
--- /dev/null
+++ b/graphics/gnome-colorscheme/distinfo
@@ -0,0 +1,2 @@
+MD5 (colorscheme-0.2.1.tar.bz2) = e1465624d3373b5593b7c6ca25856aee
+SIZE (colorscheme-0.2.1.tar.bz2) = 149287
diff --git a/graphics/gnome-colorscheme/files/patch-src_main.cc b/graphics/gnome-colorscheme/files/patch-src_main.cc
new file mode 100644
index 000000000000..090109c97ab0
--- /dev/null
+++ b/graphics/gnome-colorscheme/files/patch-src_main.cc
@@ -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
+ {
diff --git a/graphics/gnome-colorscheme/files/roundpatch b/graphics/gnome-colorscheme/files/roundpatch
new file mode 100644
index 000000000000..4f0fbb99b6c5
--- /dev/null
+++ b/graphics/gnome-colorscheme/files/roundpatch
@@ -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)
+ {
diff --git a/graphics/gnome-colorscheme/pkg-descr b/graphics/gnome-colorscheme/pkg-descr
new file mode 100644
index 000000000000..c6b349ea11fe
--- /dev/null
+++ b/graphics/gnome-colorscheme/pkg-descr
@@ -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/
diff --git a/graphics/gnome-colorscheme/pkg-plist b/graphics/gnome-colorscheme/pkg-plist
new file mode 100644
index 000000000000..21c01b3ebc22
--- /dev/null
+++ b/graphics/gnome-colorscheme/pkg-plist
@@ -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