From e12cf9e438b179ffe3f58b15172edbbfde8ee251 Mon Sep 17 00:00:00 2001 From: Jeremy Laviole Date: Thu, 1 Oct 2015 11:48:05 +0200 Subject: [PATCH] Added compilation with Maven, and distribution with shell script. Update to Processing 3 final. --- .gitignore | 1 + README.md | 21 +- createLibrary.sh | 49 +++++ lib-processing/json4processing.jar | Bin 0 -> 30753 bytes pom.xml | 186 ++++++++++++++++++ .../interactions/TuioCursorHandler.java | 2 +- .../mapdisplay/OpenGLMapDisplay.java | 8 +- .../AbstractShapeMarkerLocationTest.java | 3 +- test/de/fhpotsdam/ImageLoadingTestApp.java | 2 +- .../transmatrix/MultiTransObjectApp.java | 2 +- .../ManualMapInteractionsTestApp.java | 2 +- 11 files changed, 265 insertions(+), 11 deletions(-) create mode 100644 createLibrary.sh create mode 100644 lib-processing/json4processing.jar create mode 100644 pom.xml diff --git a/.gitignore b/.gitignore index ba8eaf60..1c268892 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ doc/ data/splendor-big.png src/de/fhpotsdam/unfolding/mapdisplay/GLGraphicsMapDisplayTransparentTest.java /bin/ +/target/ \ No newline at end of file diff --git a/README.md b/README.md index 3aa68db4..50a577ad 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,25 @@ Create interactive thematic maps and geovisualizations. * * +Compilation : + +``` bash +mvn install +mvn javadoc:javadoc +sh createLibrary.sh +``` + +Updated version for Processing 3. + +Compilation : + +``` bash +mvn install +mvn javadoc:javadoc +sh createLibrary.sh +``` + + ## About ### Interaction Events Unfolding enables you to rapidly create interactive maps. Basic interactions @@ -54,5 +73,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - diff --git a/createLibrary.sh b/createLibrary.sh new file mode 100644 index 00000000..8bd66e44 --- /dev/null +++ b/createLibrary.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +TMP=tmp +NAME=Unfolding + +mkdir $TMP +mkdir $TMP/$NAME +mkdir $TMP/$NAME/library +mkdir $TMP/$NAME/reference + +echo "Copy Library" +# Library +cp target/$NAME.jar $TMP/$NAME/library/$NAME.jar + + +echo "Copy the sources" +# copy the source also +cp -R src $TMP/$NAME/ +cp -R data $TMP/$NAME/ +cp -R lib-processing/* $TMP/$NAME/library/ + +cp -R test $TMP/$NAME/ +# cp -R data $TMP/$NAME/ + +# Not really an external library. It is here until +# Processing is in Maven Central. +#rm $TMP/$NAME/lib/core.jar + +echo "Copy the examples" +cp -R examples $TMP/$NAME/ + +cp -R pom.xml $TMP/$NAME/ + +echo "Copy the JavaDoc" +cp -R target/site/apidocs/* $TMP/$NAME/reference/ + +echo "Create the archive..." +cd $TMP + +tar -zcf $NAME.tgz $NAME + +mv $NAME.tgz .. +cd .. + +echo "Clean " +rm -rf $TMP + + +echo "Creation OK" diff --git a/lib-processing/json4processing.jar b/lib-processing/json4processing.jar new file mode 100644 index 0000000000000000000000000000000000000000..6c3073ef90ed1f56f1fa9d4f4adc2464918bbc30 GIT binary patch literal 30753 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 IfBp1-04$BEJpcdz literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..cbf7e5c2 --- /dev/null +++ b/pom.xml @@ -0,0 +1,186 @@ + + 4.0.0 + fr.inria + unfolding + 1.0 + jar + unfolding + + + src + test + + + + org.codehaus.mojo + build-helper-maven-plugin + + + generate-sources + + add-source + + + + examples + examples-extern + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.3.2 + + Unfolding + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.1 + + -Xdoclint:none + + + + + + + + + + org.processing + core + 3.0 + + + + + gluegen-rt + gluegen-rt + 3.0 + system + ${project.basedir}/lib/gluegen-rt.jar + + + jogl-all + jogl-all + 3.0 + system + ${project.basedir}/lib/jogl-all.jar + + + + json4processing + json4processing + 1.0 + system + ${project.basedir}/lib/json4processing.jar + + + + sqlite-jdbc + sqlite-jdbc + 1.0 + system + ${project.basedir}/lib/sqlite-jdbc-3.7.2.jar + + + log4j + log4j + 1.0 + system + ${project.basedir}/lib-processing/log4j-1.2.15.jar + + + + libTUIO + libTUIO + 1.0 + system + ${project.basedir}/lib/libTUIO.jar + + + + org.processing + core + 3.0 + + + + junit + junit + 4.10 + test + + + + handy + handy + 1.0 + system + ${project.basedir}/lib-extern/handy.jar + + + ani + ani + 1.0 + system + ${project.basedir}/lib-extern/Ani.jar + + + geonames + geonames + 1.0 + system + ${project.basedir}/lib-extern/geonames-1.1.6.jar + + + controlP5 + controlP5 + 1.0 + system + ${project.basedir}/lib-extern/controlP5.jar + + + joda-time + joda-time + 2.0 + system + ${project.basedir}/lib-extern/joda-time-2.0.jar + + + + + license + + diff --git a/src/de/fhpotsdam/unfolding/interactions/TuioCursorHandler.java b/src/de/fhpotsdam/unfolding/interactions/TuioCursorHandler.java index 16a72d5e..52112274 100644 --- a/src/de/fhpotsdam/unfolding/interactions/TuioCursorHandler.java +++ b/src/de/fhpotsdam/unfolding/interactions/TuioCursorHandler.java @@ -63,7 +63,7 @@ public TuioCursorHandler(PApplet p, boolean listenToTuio, List map } tuioClient.connect(); - p.registerDispose(this); + p.registerMethod("dispose", this); } public TuioCursorHandler(PApplet p, List maps) { diff --git a/src/de/fhpotsdam/unfolding/mapdisplay/OpenGLMapDisplay.java b/src/de/fhpotsdam/unfolding/mapdisplay/OpenGLMapDisplay.java index 1ab6ae48..5eed1885 100644 --- a/src/de/fhpotsdam/unfolding/mapdisplay/OpenGLMapDisplay.java +++ b/src/de/fhpotsdam/unfolding/mapdisplay/OpenGLMapDisplay.java @@ -50,9 +50,9 @@ public OpenGLMapDisplay(PApplet papplet, AbstractMapProvider provider, String re } offscreenPG = papplet.createGraphics((int) width, (int) height, this.renderer); - offscreenPG.smooth(papplet.g.quality); + offscreenPG.smooth(papplet.g.smooth); offscreenCutoffPG = papplet.createGraphics((int) width, (int) height, this.renderer); - offscreenCutoffPG.smooth(papplet.g.quality); + offscreenCutoffPG.smooth(papplet.g.smooth); } public void setMapDisplayShader(MapDisplayShader shader) { @@ -79,9 +79,9 @@ public void resize(float width, float height) { } offscreenPG = papplet.createGraphics((int) width, (int) height, renderer); - offscreenPG.smooth(papplet.g.quality); + offscreenPG.smooth(papplet.g.smooth); offscreenCutoffPG = papplet.createGraphics((int) width, (int) height, renderer); - offscreenCutoffPG.smooth(papplet.g.quality); + offscreenCutoffPG.smooth(papplet.g.smooth); if (mapDisplayShader != null) { mapDisplayShader.resize(width, height); diff --git a/test/de/fhpotsdam/AbstractShapeMarkerLocationTest.java b/test/de/fhpotsdam/AbstractShapeMarkerLocationTest.java index 214691f0..77d6899d 100644 --- a/test/de/fhpotsdam/AbstractShapeMarkerLocationTest.java +++ b/test/de/fhpotsdam/AbstractShapeMarkerLocationTest.java @@ -33,7 +33,8 @@ public void before() { } private void addCountryMarker() { - List countries = GeoJSONReader.loadData(p, "data/countries.geo.json"); +// System.out.println("Sketch Path " + p.sketchPath()); + List countries = GeoJSONReader.loadData(p, p.sketchPath() +"/data/data/countries.geo.json"); List countryMarkers = MapUtils.createSimpleMarkers(countries); map.addMarkers(countryMarkers); } diff --git a/test/de/fhpotsdam/ImageLoadingTestApp.java b/test/de/fhpotsdam/ImageLoadingTestApp.java index 3d13c43f..ca48a7f2 100644 --- a/test/de/fhpotsdam/ImageLoadingTestApp.java +++ b/test/de/fhpotsdam/ImageLoadingTestApp.java @@ -31,7 +31,7 @@ public void setup() { if (bytes == null) { } else { Image awtImage = Toolkit.getDefaultToolkit().createImage(bytes); - MediaTracker tracker = new MediaTracker(this); + MediaTracker tracker = new MediaTracker(this.frame); tracker.addImage(awtImage, 0); try { tracker.waitForAll(); diff --git a/test/de/fhpotsdam/transmatrix/MultiTransObjectApp.java b/test/de/fhpotsdam/transmatrix/MultiTransObjectApp.java index abc34d24..52c3c025 100644 --- a/test/de/fhpotsdam/transmatrix/MultiTransObjectApp.java +++ b/test/de/fhpotsdam/transmatrix/MultiTransObjectApp.java @@ -40,7 +40,7 @@ public void setup() { transObjects.add(new TuioTransformableObject(this, 500, 200, 300, 300)); transObjects.add(new TextThing(this, 600, 50, 340, 70)); - addMouseWheelListener(new java.awt.event.MouseWheelListener() { + frame.addMouseWheelListener(new java.awt.event.MouseWheelListener() { public void mouseWheelMoved(java.awt.event.MouseWheelEvent evt) { mouseWheel(evt.getWheelRotation()); } diff --git a/test/de/fhpotsdam/unfolding/interaction/ManualMapInteractionsTestApp.java b/test/de/fhpotsdam/unfolding/interaction/ManualMapInteractionsTestApp.java index 76cea1b7..c9a797d0 100644 --- a/test/de/fhpotsdam/unfolding/interaction/ManualMapInteractionsTestApp.java +++ b/test/de/fhpotsdam/unfolding/interaction/ManualMapInteractionsTestApp.java @@ -37,7 +37,7 @@ public void setup() { debugDisplay = new DebugDisplay(this, map, 0, 0); - addMouseWheelListener(new java.awt.event.MouseWheelListener() { + frame.addMouseWheelListener(new java.awt.event.MouseWheelListener() { public void mouseWheelMoved(java.awt.event.MouseWheelEvent evt) { mouseWheel(evt.getWheelRotation()); }