1
0
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:
Mikhail Teterin 2005-10-22 08:20:15 +00:00
parent 17ed271daa
commit 024cb10eec
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=146102
11 changed files with 261 additions and 0 deletions

View File

@ -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
View 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
View File

@ -0,0 +1,2 @@
MD5 (gpc232.zip) = e8ede167d810f26cf01f760a8824e2c9
SIZE (gpc232.zip) = 15606

View 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>

View 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
View 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
View 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
View File

@ -0,0 +1,2 @@
MD5 (gpc232.zip) = e8ede167d810f26cf01f760a8824e2c9
SIZE (gpc232.zip) = 15606

View 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>

View 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
View 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