mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-03 06:04:53 +00:00
Add ports of the General Polygon Clipping library and its sample
client application. Some day OpenOffice may use this too...
This commit is contained in:
parent
17ed271daa
commit
024cb10eec
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=146102
@ -340,6 +340,7 @@
|
||||
SUBDIR += gonzui
|
||||
SUBDIR += google-sparsehash
|
||||
SUBDIR += gorm
|
||||
SUBDIR += gpc
|
||||
SUBDIR += gperf
|
||||
SUBDIR += gputils
|
||||
SUBDIR += gsoap
|
||||
|
28
devel/gpc/Makefile
Normal file
28
devel/gpc/Makefile
Normal file
@ -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>
|
2
devel/gpc/distinfo
Normal file
2
devel/gpc/distinfo
Normal file
@ -0,0 +1,2 @@
|
||||
MD5 (gpc232.zip) = e8ede167d810f26cf01f760a8824e2c9
|
||||
SIZE (gpc232.zip) = 15606
|
13
devel/gpc/files/BSDmakefile
Normal file
13
devel/gpc/files/BSDmakefile
Normal file
@ -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>
|
65
devel/gpc/files/patch-alloca
Normal file
65
devel/gpc/files/patch-alloca
Normal file
@ -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);
|
||||
}
|
||||
|
22
devel/gpc/pkg-descr
Normal file
22
devel/gpc/pkg-descr
Normal file
@ -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
|
28
devel/libgpc/Makefile
Normal file
28
devel/libgpc/Makefile
Normal file
@ -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>
|
2
devel/libgpc/distinfo
Normal file
2
devel/libgpc/distinfo
Normal file
@ -0,0 +1,2 @@
|
||||
MD5 (gpc232.zip) = e8ede167d810f26cf01f760a8824e2c9
|
||||
SIZE (gpc232.zip) = 15606
|
13
devel/libgpc/files/BSDmakefile
Normal file
13
devel/libgpc/files/BSDmakefile
Normal file
@ -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>
|
65
devel/libgpc/files/patch-alloca
Normal file
65
devel/libgpc/files/patch-alloca
Normal file
@ -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);
|
||||
}
|
||||
|
22
devel/libgpc/pkg-descr
Normal file
22
devel/libgpc/pkg-descr
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user