[119764] trunk/dports/gis

pixilla at macports.org pixilla at macports.org
Mon May 5 18:28:38 PDT 2014


Revision: 119764
          https://trac.macports.org/changeset/119764
Author:   pixilla at macports.org
Date:     2014-05-05 18:28:38 -0700 (Mon, 05 May 2014)
Log Message:
-----------
gis/terra:
- New port.

Added Paths:
-----------
    trunk/dports/gis/terra/
    trunk/dports/gis/terra/Portfile
    trunk/dports/gis/terra/files/
    trunk/dports/gis/terra/files/terra.patches

Added: trunk/dports/gis/terra/Portfile
===================================================================
--- trunk/dports/gis/terra/Portfile	                        (rev 0)
+++ trunk/dports/gis/terra/Portfile	2014-05-06 01:28:38 UTC (rev 119764)
@@ -0,0 +1,45 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+# $Id$
+
+PortSystem          1.0
+
+name                terra
+version             0.7
+
+categories          gis science
+maintainers         gmail.com:tlockhart1976 openmaintainer
+
+description         Generate polygonal approximations of terrains and other height fields.
+
+long_description \
+Generate polygonal approximations of terrains and other height fields. \
+Terra is based on algorithms described in: \
+Fast Polygonal Approximation of Terrains and Height Fields \
+by Michael Garland and Paul Heckbert (Technical Report CMU-CS-95-181).
+
+license             Public Domain
+platforms           darwin
+
+homepage            http://mgarland.org/software/scape.html
+master_sites        http://mgarland.org/dist/
+
+checksums           rmd160  885639282ffe5244f5289ef3f453390c8acdb30f \
+                    sha256  22470e13e1f0659d23dbf7e0ecbfd8f6490bcd1d0a953537c1dfec18f4df3bd7
+
+depends_lib         port:freeglut
+depends_build-append  port:freeglut
+
+worksrcdir          ${name}
+patch.pre_args      -p1
+patchfiles          terra.patches
+use_configure       no
+
+destroot {
+    xinstall -m 755 ${worksrcpath}/terra ${destroot}${prefix}/bin/terra
+    xinstall -m 755 ${worksrcpath}/xterra ${destroot}${prefix}/bin/xterra
+
+    # documentation
+    xinstall -m 755 -d ${destroot}${prefix}/share/${name}
+    xinstall -m 644 ${worksrcpath}/README.html ${destroot}${prefix}/share/${name}
+    xinstall -m 644 ${worksrcpath}/crater.pgm ${destroot}${prefix}/share/${name}
+}


Property changes on: trunk/dports/gis/terra/Portfile
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: trunk/dports/gis/terra/files/terra.patches
===================================================================
--- trunk/dports/gis/terra/files/terra.patches	                        (rev 0)
+++ trunk/dports/gis/terra/files/terra.patches	2014-05-06 01:28:38 UTC (rev 119764)
@@ -0,0 +1,545 @@
+diff -u ../terra.orig/Array.h ./Array.h
+--- ../terra.orig/Array.h	1995-12-19 11:24:31.000000000 -0800
++++ ./Array.h	2014-03-18 15:04:25.000000000 -0700
+@@ -1,6 +1,9 @@
+ #ifndef ARRAY_INCLUDED // -*- C++ -*-
+ #define ARRAY_INCLUDED
+ 
++#include <memory.h>
++
++
+ //
+ // Array classes
+ //
+diff -u ../terra.orig/GreedyInsert.cc ./GreedyInsert.cc
+--- ../terra.orig/GreedyInsert.cc	1996-01-19 09:07:18.000000000 -0800
++++ ./GreedyInsert.cc	2014-03-18 15:17:36.000000000 -0700
+@@ -1,9 +1,11 @@
+-#include <iostream.h>
++#include <iostream>
+ #include "GreedyInsert.h"
+-
++#include <assert.h>
+ #include "Mask.h"
+ extern ImportMask *MASK;
+ 
++using namespace std;
++
+ void TrackedTriangle::update(Subdivision& s)
+ {
+     GreedySubdivision& gs = (GreedySubdivision&)s;
+@@ -209,7 +211,11 @@
+ 
+     is_used(sx,sy) = DATA_POINT_USED;
+     count++;
++#if 0
+     return insert(Vec2(sx,sy), t);
++#endif
++    Vec2 vec(sx,sy);
++    return insert(vec, t);
+ }
+ 
+ 
+Only in .: GreedyInsert.o
+diff -u ../terra.orig/Heap.cc ./Heap.cc
+--- ../terra.orig/Heap.cc	1996-01-09 13:19:08.000000000 -0800
++++ ./Heap.cc	2014-03-18 15:04:25.000000000 -0700
+@@ -1,7 +1,9 @@
+ #include <assert.h>
+-#include <iostream.h>
++#include <iostream>
+ #include "Heap.h"
+ 
++using namespace std;
++
+ 
+ void Heap::swap(int i,int j)
+ {
+Only in .: Heap.o
+diff -u ../terra.orig/Makefile ./Makefile
+--- ../terra.orig/Makefile	1996-01-30 08:35:20.000000000 -0800
++++ ./Makefile	2014-03-18 16:52:05.000000000 -0700
+@@ -4,23 +4,24 @@
+ # You should change these to fit your system.
+ #
+ 
+-CC = cc
+-C++ = CC
++CC = gcc
++C++ = g++
+ 
+ # For compiling on SGI's with the pre-5.3 (ie. cfront-based) compiler:
+ # add '-ptr/tmp/terra_ptrepository' to OPTFLAGS
+ # add '-pte.cc' to LFLAGS
+ 
+-OPTFLAGS = -g -mips2 
++# OPTFLAGS = -g -mips2 
+ # OPTFLAGS = -O2 -mips2
++OPTFLAGS = -g -Wall
+ 
+ GUI_LIBS = -lglut -lGLU -lGL -lXmu -lX11
+-LIBS = -lmalloc -lmx
++LIBS = # -lmalloc -lmx
+ 
+ #
+ # This defines the location of the GLUT libraries
+ #
+-ANIM = /afs/cs/project/anim/garland
++ANIM = /opt/local
+ GLUT_FLAGS = 
+ GLUT_INCDIR = $(ANIM)/include
+ GLUT_LIBDIR = $(ANIM)/lib
+@@ -34,7 +35,7 @@
+ #
+ # These are the flags for compilation (CFLAGS) and linking (LFLAGS) 
+ #
+-CFLAGS = $(INCDIR) $(OPTFLAGS) -DSAFETY
++CFLAGS = $(INCDIR) $(OPTFLAGS) -DIOSTREAMH # -DSAFETY
+ LFLAGS = $(LIBDIR) $(OPTFLAGS)
+ 
+ 
+@@ -81,7 +82,7 @@
+ 
+ depend :
+ 	touch Makefile.depend
+-	makedepend -fMakefile.depend $(INCDIR) -I/usr/include/CC $(BASE_SRCS) $(GUI_SRCS)
++	makedepend -fMakefile.depend $(INCDIR) $(BASE_SRCS) $(GUI_SRCS)
+ 	/bin/rm -f Makefile.depend.bak
+ 
+ sinclude Makefile.depend
+diff -u ../terra.orig/Map.h ./Map.h
+--- ../terra.orig/Map.h	1996-01-30 08:35:21.000000000 -0800
++++ ./Map.h	2014-03-18 15:09:08.000000000 -0700
+@@ -2,10 +2,13 @@
+ #define MAP_INCLUDED
+ 
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ 
+ #include "Geom.h"
+ 
++using namespace std;
++
++
+ class Map
+ {
+ public:
+Only in .: Map.o
+diff -u ../terra.orig/Mask.cc ./Mask.cc
+--- ../terra.orig/Mask.cc	1996-01-17 08:03:13.000000000 -0800
++++ ./Mask.cc	2014-03-18 15:04:25.000000000 -0700
+@@ -1,10 +1,12 @@
+ #include <math.h>
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ 
+ #include "Geom.h"
+ #include "Mask.h"
+ 
++using namespace std;
++
+ 
+ RealMask *readMask(istream& in)
+ {
+diff -u ../terra.orig/Mask.h ./Mask.h
+--- ../terra.orig/Mask.h	1996-01-17 08:03:14.000000000 -0800
++++ ./Mask.h	2014-03-18 15:16:16.000000000 -0700
+@@ -1,6 +1,11 @@
+ #ifndef MASK_INCLUDED // -*- C++ -*-
+ #define MASK_INCLUDED
+ 
++#include <istream>
++
++using namespace std;
++
++
+ class ImportMask
+ {
+ 
+Only in .: Mask.o
+diff -u ../terra.orig/Quadedge.cc ./Quadedge.cc
+--- ../terra.orig/Quadedge.cc	1995-12-19 14:05:48.000000000 -0800
++++ ./Quadedge.cc	2014-03-18 15:04:25.000000000 -0700
+@@ -1,8 +1,10 @@
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ 
+ #include "Quadedge.h"
+ 
++using namespace std;
++
+ Edge::Edge(const Edge&)
+ {
+     cerr << "Edge: Edge assignments are forbidden." << endl;
+Only in .: Quadedge.o
+diff -u ../terra.orig/Subdivision.cc ./Subdivision.cc
+--- ../terra.orig/Subdivision.cc	1996-01-30 08:35:22.000000000 -0800
++++ ./Subdivision.cc	2014-04-01 17:12:59.000000000 -0700
+@@ -1,9 +1,10 @@
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ #include <assert.h>
+ 
+ #include "Subdivision.h"
+ 
++using namespace std;
+ 
+ 
+ Edge *Subdivision::makeEdge(Vec2& org, Vec2& dest)
+@@ -105,7 +106,7 @@
+ 
+ static void overEdge(Edge *e, edge_callback fn, void *closure)
+ {
+-    if( e->token != timestamp )
++    if( static_cast<typeof(timestamp)>(e->token) != timestamp )
+     {
+ 	e->token = timestamp;
+ 	e->Sym()->token = timestamp;
+@@ -214,7 +215,7 @@
+         real td = triArea(x, ed->Dest(), ed->Org());
+ 
+         if (td>0)                       // x is below ed
+-            if (to>0 || to==0 && t==0) {// x is interior, or origin endpoint
++            if (to>0 || (to==0 && t==0)) {// x is interior, or origin endpoint
+                 startingEdge = e;
+                 return e;
+             }
+@@ -259,10 +260,12 @@
+ 
+     if ( (x == e->Org()) || (x == e->Dest()) ) {
+         // point is already in the mesh
++#if 0
+ 	//
+         cerr << "WARNING: Tried to reinsert point: " << x << endl;
+ 	cerr << "         org: " << e->Org() << endl;
+ 	cerr << "        dest: " << e->Dest() << endl;
++#endif
+         return NULL;
+     }
+ 
+@@ -338,7 +341,9 @@
+     do {
+ 
+ 	Edge *e = spoke->Lnext();
++#if 0
+ 	Edge *t = e->Oprev();
++#endif
+ 
+ 	if( isInterior(e) && shouldSwap(x, e) )
+ 	    swap(e);
+Only in .: Subdivision.o
+diff -u ../terra.orig/Vec2.h ./Vec2.h
+--- ../terra.orig/Vec2.h	1996-01-30 08:35:24.000000000 -0800
++++ ./Vec2.h	2014-03-18 16:55:04.000000000 -0700
+@@ -1,6 +1,11 @@
+ #ifndef VEC2_INCLUDED // -*- C++ -*-
+ #define VEC2_INCLUDED
+ 
++#include <iostream>
++
++using namespace std;
++
++
+ class Vec2 {
+ protected:
+     real elt[2];
+@@ -163,7 +168,13 @@
+ 
+ inline istream& operator>>(istream& in, Vec2& v)
+ {
++#if 0
+     return in >> "[" >> v[0] >> v[1] >> "]";
++#endif
++    in.ignore(1, '[');
++    in >> v[0] >> v[1];
++    in.ignore(1, ']');
++    return in;
+ }
+ #endif
+ 
+diff -u ../terra.orig/Vec3.h ./Vec3.h
+--- ../terra.orig/Vec3.h	1995-12-19 11:24:37.000000000 -0800
++++ ./Vec3.h	2014-03-18 16:54:02.000000000 -0700
+@@ -1,6 +1,11 @@
+ #ifndef VEC3_INCLUDED // -*- C++ -*-
+ #define VEC3_INCLUDED
+ 
++#include <iostream>
++
++using namespace std;
++
++
+ class Vec3 {
+ protected:
+     real elt[3];
+@@ -173,7 +178,13 @@
+ 
+ inline istream& operator>>(istream& in, Vec3& v)
+ {
++#if 0
+     return in >> "[" >> v[0] >> v[1] >> v[2] >> "]";
++#endif
++    in.ignore(1, '[');
++    in >> v[0] >> v[1];
++    in.ignore(1, ']');
++    return in;
+ }
+ #endif
+ 
+Only in .: altadena-lake.osm
+Only in .: altadena.osm
+diff -u ../terra.orig/cmdline.cc ./cmdline.cc
+--- ../terra.orig/cmdline.cc	1996-01-19 10:34:14.000000000 -0800
++++ ./cmdline.cc	2014-04-01 17:11:47.000000000 -0700
+@@ -1,7 +1,9 @@
+ #include <stdlib.h>
+-#include <fstream.h>
++#include <fstream>
+ #include <string.h>
+ #include "terra.h"
++#include <getopt.h>
++
+ 
+ GreedySubdivision *mesh;
+ Map *DEM;
+@@ -18,9 +20,9 @@
+ char *mask_filename   = NULL;
+ char *script_filename = NULL;
+ 
+-static char *options = "e:p:h:o:m:s:";
++static const char *options = "e:p:h:o:m:s:";
+ 
+-static char *usage_string =
++static const char *usage_string =
+ "-e <thresh>      Sets the tolerable error threshold\n"
+ "-p <count>       Sets the maximum number of allowable points\n"
+ "-h <factor>      Sets the height scaling factor.  For example,\n"
+@@ -31,7 +33,7 @@
+ "-s <file>        Execute preinsertion script from <file>\n"
+ "\n";
+ 
+-static void usage_error(char *msg = NULL)
++static void usage_error(const char *msg = NULL)
+ {
+     if( msg )
+ 	cerr << msg << endl;
+Only in .: cmdline.o
+diff -u ../terra.orig/glHacks.h ./glHacks.h
+--- ../terra.orig/glHacks.h	1996-01-30 08:35:27.000000000 -0800
++++ ./glHacks.h	2014-03-18 16:55:18.000000000 -0700
+@@ -4,6 +4,9 @@
+ #include <GL/glx.h>
+ #include <GL/gl.h>
+ #include <GL/glu.h>
++#include <iostream>
++
++using namespace std;
+ 
+ 
+ /*************************************************************************
+Only in .: glHacks.o
+diff -u ../terra.orig/greedy.cc ./greedy.cc
+--- ../terra.orig/greedy.cc	1996-01-19 10:34:15.000000000 -0800
++++ ./greedy.cc	2014-04-01 17:14:20.000000000 -0700
+@@ -1,4 +1,6 @@
+ #include "terra.h"
++#include <fstream>
++
+ 
+ void scripted_preinsertion(istream& script)
+ {
+@@ -64,7 +66,7 @@
+ inline int goal_not_met()
+ {
+     return mesh->maxError() > error_threshold &&
+-	   mesh->pointCount() < point_limit;
++      static_cast<typeof(point_limit)>(mesh->pointCount()) < point_limit;
+ }
+ 
+ static void announce_goal()
+Only in .: greedy.o
+diff -u ../terra.orig/gui.cc ./gui.cc
+--- ../terra.orig/gui.cc	1996-01-30 08:35:28.000000000 -0800
++++ ./gui.cc	2014-04-01 17:10:12.000000000 -0700
+@@ -1,5 +1,5 @@
+-#include <iostream.h>
+-#include <fstream.h>
++#include <iostream>
++#include <fstream>
+ 
+ #include <GL/glut.h>
+ #include "glHacks.h"
+@@ -14,6 +14,7 @@
+ int will_draw_dem = False;
+ 
+ 
++void xglutResize(int width, int height);
+ // Prototype for our hack below.
+ //
+ void xglutKeepAspect(float width, float height);
+@@ -69,10 +70,10 @@
+ {
+     int toggle = glutCreateMenu(mesh_toggle_menu);
+ 
+-    glutAddMenuEntry("Draw DEM data", (int)&will_draw_dem);
++    glutAddMenuEntry("Draw DEM data", will_draw_dem);
+ 
+ 
+-    int main = glutCreateMenu(mesh_main_menu);
++    glutCreateMenu(mesh_main_menu);
+     glutAddSubMenu("Toggle", toggle);
+ 
+     glutAddMenuEntry("Output Mesh EPS", MESH_MENU_EPS);
+@@ -141,6 +142,7 @@
+       glC(1.0, 0.15, 0.15);
+       mesh->overEdges(draw_edge);
+     glEnd();
++    glutSwapBuffers();
+ }
+ 
+ static inline void redisplay_all(int other)
+@@ -400,7 +402,8 @@
+ 
+     // ---------------------------------------------------------------------
+ 
+-    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
++    // glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
++    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
+     mesh_view = glutCreateWindow("TERRA: Mesh");
+ 
+     xglutKeepAspect(DEM->width, DEM->height);
+@@ -408,6 +411,7 @@
+     create_mesh_menus();
+ 
+     glutDisplayFunc(mesh_display);
++    glutReshapeFunc(xglutResize);
+     glutMouseFunc(mesh_mouse);
+ 
+     glMatrixMode(GL_PROJECTION);
+@@ -433,24 +437,38 @@
+ //
+ ////////////////////////////////////////////////////////////////////////
+ 
+-extern "C" {
+-#include <GL/glutint.h>
+-}
+-
+-void xglutKeepAspect(float width, float height)
++void xglutResize(int width, int height)
+ {
+-    Window win;
+-    XSizeHints hints;
++    Map& map = mesh->getData();
++    real w = (real)map.width;
++    real h = (real)map.height;
++
++    // const float ar_origin = (float) WIDTH / (float) HEIGHT;
++    const float ar_origin = (float) w / (float) h;
++    const float ar_new = (float) width / (float) height;
++
++    float scale_w = (float) width / (float) w;
++    float scale_h = (float) height / (float) h;
++    if (ar_new > ar_origin) {
++        scale_w = scale_h;
++    } else {
++        scale_h = scale_w;
++    }
+ 
+-    if( __glutCurrentWindow )
+-    {
+-        win = __glutCurrentWindow->win;
++    float margin_x = (width - w * scale_w) / 2;
++    float margin_y = (height - h * scale_h) / 2;
+ 
++    glViewport(margin_x, margin_y, w * scale_w, h * scale_h);
++    glMatrixMode(GL_PROJECTION);
++    glLoadIdentity();
++    glOrtho(0, w / ar_origin, 0, h / ar_origin, 0, 1.0);
+ 
+-        hints.flags = PAspect;
+-        hints.min_aspect.x = hints.max_aspect.x = (int)(1000*width);
+-        hints.min_aspect.y = hints.max_aspect.y = (int)(1000*height);
++    glMatrixMode(GL_MODELVIEW);
++    glLoadIdentity() ;
++}
+ 
+-        XSetWMNormalHints(__glutDisplay, win, &hints);
+-    }
++void xglutKeepAspect(float width, float height)
++{
++    int w = glutGet(GLUT_WINDOW_WIDTH);
++    glutReshapeWindow(w, static_cast<int>(floor(width*(height/w)+0.5)));
+ }
+Only in .: gui.o
+Only in .: jpl.osm
+diff -u ../terra.orig/output.cc ./output.cc
+--- ../terra.orig/output.cc	1996-01-30 08:35:30.000000000 -0800
++++ ./output.cc	2014-04-01 17:08:47.000000000 -0700
+@@ -1,8 +1,8 @@
+ #include "terra.h"
+-#include <fstream.h>
++#include <fstream>
+ 
+ 
+-void generate_output(char *filename, FileFormat format)
++void generate_output(const char *filename, FileFormat format)
+ {
+     if( !filename )
+ 	filename = output_filename;
+Only in .: output.o
+Only in .: terra
+diff -u ../terra.orig/terra.cc ./terra.cc
+--- ../terra.orig/terra.cc	1996-01-10 13:22:59.000000000 -0800
++++ ./terra.cc	2014-03-18 15:09:42.000000000 -0700
+@@ -1,10 +1,12 @@
+ #include "terra.h"
+ 
+-main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+     process_cmdline(argc, argv);
+ 
+     greedy_insertion();
+ 
+     generate_output();
++
++    return 0;
+ }
+diff -u ../terra.orig/terra.h ./terra.h
+--- ../terra.orig/terra.h	1996-01-19 10:34:17.000000000 -0800
++++ ./terra.h	2014-04-01 17:08:42.000000000 -0700
+@@ -24,7 +24,7 @@
+ extern void scripted_preinsertion(istream&);
+ extern void subsample_insertion(int target_width);
+ 
+-extern void generate_output(char *filename=NULL,
++extern void generate_output(const char *filename=NULL,
+ 			    FileFormat format=NULLfile);
+ extern void output_tin(ostream&);
+ extern void output_eps(ostream&);
+Only in .: terra.o
+Only in .: xterra
+diff -u ../terra.orig/xterra.cc ./xterra.cc
+--- ../terra.orig/xterra.cc	1995-12-15 11:26:34.000000000 -0800
++++ ./xterra.cc	2014-04-01 17:09:39.000000000 -0700
+@@ -5,7 +5,7 @@
+ 
+ 
+ 
+-main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+     glutInit(&argc, argv);
+     process_cmdline(argc, argv);
+@@ -15,4 +15,6 @@
+ 
+ 
+     gui_interact();
++
++    return 0;
+ }
+Only in .: xterra.o
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20140505/23268208/attachment.html>


More information about the macports-changes mailing list