diff options
author | mi <mi@FreeBSD.org> | 2005-10-22 16:20:15 +0800 |
---|---|---|
committer | mi <mi@FreeBSD.org> | 2005-10-22 16:20:15 +0800 |
commit | daa7fe7163b337658594f6f08c3cb4aea3d3f90f (patch) | |
tree | 801cd846a4a1d281a35afa5a07608743e83137c3 /devel/libgpc | |
parent | 50ce608a7a3f70efd12045aa8c72de06cc14fb98 (diff) | |
download | freebsd-ports-gnome-daa7fe7163b337658594f6f08c3cb4aea3d3f90f.tar.gz freebsd-ports-gnome-daa7fe7163b337658594f6f08c3cb4aea3d3f90f.tar.zst freebsd-ports-gnome-daa7fe7163b337658594f6f08c3cb4aea3d3f90f.zip |
Add ports of the General Polygon Clipping library and its sample
client application. Some day OpenOffice may use this too...
Diffstat (limited to 'devel/libgpc')
-rw-r--r-- | devel/libgpc/Makefile | 28 | ||||
-rw-r--r-- | devel/libgpc/distinfo | 2 | ||||
-rw-r--r-- | devel/libgpc/files/BSDmakefile | 13 | ||||
-rw-r--r-- | devel/libgpc/files/patch-alloca | 65 | ||||
-rw-r--r-- | devel/libgpc/pkg-descr | 22 |
5 files changed, 130 insertions, 0 deletions
diff --git a/devel/libgpc/Makefile b/devel/libgpc/Makefile new file mode 100644 index 000000000000..d5745e5f0bcb --- /dev/null +++ b/devel/libgpc/Makefile @@ -0,0 +1,28 @@ +# New ports collection makefile for: gpc +# Date created: 22 October 2005 +# Whom: Mikhail Teterin +# +# $FreeBSD$ +# + +PORTNAME= gpc +PORTVERSION= 2.32 +CATEGORIES= devel math graphics +MASTER_SITES= ftp://ftp.cs.man.ac.uk/pub/toby/gpc/ +DISTNAME= ${PORTNAME}${PORTVERSION:S/.//} + +MAINTAINER= mi@aldan.algebra.com +COMMENT= Generic Polygon Clipper + +USE_ZIP= yes +PLIST_FILES= lib/libgpc.so.${PORTVERSION} \ + lib/libgpc.so lib/libgpc.a \ + include/gpc.h +INSTALLS_SHLIB= yes +NO_CDROM= Can't be used for profit without permission + +MAKEFILE= ${FILESDIR}/BSDmakefile + +EXTRACT_BEFORE_ARGS=-qoa + +.include <bsd.port.mk> diff --git a/devel/libgpc/distinfo b/devel/libgpc/distinfo new file mode 100644 index 000000000000..8daa03122003 --- /dev/null +++ b/devel/libgpc/distinfo @@ -0,0 +1,2 @@ +MD5 (gpc232.zip) = e8ede167d810f26cf01f760a8824e2c9 +SIZE (gpc232.zip) = 15606 diff --git a/devel/libgpc/files/BSDmakefile b/devel/libgpc/files/BSDmakefile new file mode 100644 index 000000000000..6b4d317d263b --- /dev/null +++ b/devel/libgpc/files/BSDmakefile @@ -0,0 +1,13 @@ +LIB= gpc +NOPROFILE= yes +SHLIB_MAJOR= 2 +SHLIB_MINOR= 32 + +SRCS= gpc.c +INCS= gpc.h + +LIBDIR= ${PREFIX}/lib +INCSDIR= ${PREFIX}/include +WARNS?= 4 # level 5 trips over '-Wunused' + +.include <bsd.lib.mk> diff --git a/devel/libgpc/files/patch-alloca b/devel/libgpc/files/patch-alloca new file mode 100644 index 000000000000..6b45ec7a48db --- /dev/null +++ b/devel/libgpc/files/patch-alloca @@ -0,0 +1,65 @@ +Use alloca() instead of malloc()/free(), where it is easy to do. + +Use BSD's err() instead of fprintf()/exit() on fatal failures. + +When so exiting, use non-zero code to signal a failure. + + -mi + +--- gpc.c Fri Dec 17 10:39:26 2004 ++++ gpc.c Sat Oct 22 04:04:31 2005 +@@ -39,4 +39,5 @@ Copyright: (C) 1997-2004, Advanced Inter + + #include "gpc.h" ++#include <err.h> + #include <stdlib.h> + #include <float.h> +@@ -104,6 +105,6 @@ Copyright: (C) 1997-2004, Advanced Inter + #define MALLOC(p, b, s, t) {if ((b) > 0) { \ + p= (t*)malloc(b); if (!(p)) { \ +- fprintf(stderr, "gpc malloc failure: %s\n", s); \ +- exit(0);}} else p= NULL;} ++ err(1, "gpc: %s needed %zd bytes\n", s, \ ++ (size_t)b); }} else p= NULL;} + + #define FREE(p) {if (p) {free(p); (p)= NULL;}} +@@ -965,6 +966,5 @@ static void minimax_test(gpc_polygon *su + c_bbox= create_contour_bboxes(clip); + +- MALLOC(o_table, subj->num_contours * clip->num_contours * sizeof(int), +- "overlap table creation", int); ++ o_table = alloca(subj->num_contours * clip->num_contours * sizeof(int)); + + /* Check all subject contour bounding boxes against clip boxes */ +@@ -1006,5 +1006,4 @@ static void minimax_test(gpc_polygon *su + FREE(s_bbox); + FREE(c_bbox); +- FREE(o_table); + } + +@@ -1166,5 +1165,5 @@ void gpc_polygon_clip(gpc_op op, gpc_pol + + /* Build scanbeam table from scanbeam tree */ +- MALLOC(sbt, sbt_entries * sizeof(double), "sbt creation", double); ++ sbt = alloca(sbt_entries * sizeof(double)); + build_sbt(&scanbeam, sbt, sbtree); + scanbeam= 0; +@@ -1749,5 +1748,4 @@ void gpc_polygon_clip(gpc_op op, gpc_pol + FREE(c_heap); + FREE(s_heap); +- FREE(sbt); + } + +@@ -1825,5 +1823,5 @@ void gpc_tristrip_clip(gpc_op op, gpc_po + + /* Build scanbeam table from scanbeam tree */ +- MALLOC(sbt, sbt_entries * sizeof(double), "sbt creation", double); ++ sbt = alloca(sbt_entries * sizeof(double)); + build_sbt(&scanbeam, sbt, sbtree); + scanbeam= 0; +@@ -2463,5 +2461,4 @@ void gpc_tristrip_clip(gpc_op op, gpc_po + FREE(c_heap); + FREE(s_heap); +- FREE(sbt); + } + diff --git a/devel/libgpc/pkg-descr b/devel/libgpc/pkg-descr new file mode 100644 index 000000000000..0235b8c5f08d --- /dev/null +++ b/devel/libgpc/pkg-descr @@ -0,0 +1,22 @@ +An algorithm for calculating the difference, intersection, +exclusive-or or union of arbitrary polygon sets. + +Author: Alan Murta (email: gpc@cs.man.ac.uk) + +Copyright: (C) 1997-2004, Advanced Interfaces Group, + University of Manchester. + + This software is free for non-commercial use. It may be copied, + modified, and redistributed provided that this copyright notice + is preserved on all copies. The intellectual property rights of + the algorithms used reside with the University of Manchester + Advanced Interfaces Group. + + You may not use this software, in whole or in part, in support + of any commercial product without the express consent of the + author. + +WWW: http://www.cs.man.ac.uk/~toby/alan/software/ + + Software documentation at +WWW: http://www.cs.man.ac.uk/~toby/alan/software/gpc.html |