Merge branch 'develop' of github.com:mapmapteam/mapmap into develop

Conflicts:
	Paint.cpp
This commit is contained in:
Tats
2014-05-01 13:52:52 -04:00
18 changed files with 168 additions and 39 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ PROJECT_NAME = "MapMap"
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = "0.0.1"
PROJECT_NUMBER = "0.1.1"
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
+44
View File
@@ -1,6 +1,10 @@
Contribute to MapMap
====================
Build software, doc and the translations
----------------------------------------
See INSTALL.
Coding style
------------
* indent with 2 spaces
@@ -19,6 +23,8 @@ We use Semantic Versioning 2.0.0. Given a version number MAJOR.MINOR.PATCH, incr
* PATCH version when you make backwards-compatible bug fixes.
See http://semver.org/
We want the 0 series to be backward-compatible. That means that a project created with MapMap 0.1 should still work with MapMap 0.99, if we ever get to such a version number. When we will break this backward-compatibilty, we will start the 1 series and provide a migration script. This script might be ran from the command-line or on the Web. The other thing we need to be backward-compatible is the OSC interface. The rest of the software can change. This includes the names of the menu items and the appearance of the user interface. We will try to keep these consistent, though.
Files
-----
* BUGS: List of bugs to fix. (or, again, use github for these)
@@ -30,3 +36,41 @@ Files
* images/: Images part of the GUI.
* prototypes/ : Contains prototypes. Please ask the project maintainer before removing some of these.
Code management with Git
------------------------
* We develop in the develop branch. The master branch is only for the latest tag.
* Create a branch for each new features. Merge it to develop.
* Create release-x.y.z branch for releases.
* If possible, avoid merges, and use git rebase instead. (like in the GNOME projects)
* Create a x.y branch for each x.y major.minor version series.
* For a new release, merge develop to master (or your branch to the major.minor branch if it's a bugfix release) and then tag it there.
* In doubt, ask the release manager.
Make a release
--------------
* If it's a new feature, increment minor. If it's bugfix, increment micro. If it's not backward-compatible, increment major.
* Create a release-x.y.z branch
* Verify the version number:
* VERSION in mapmap.pro
* PROJECT_NUMBER in Doxyfile
* MAPMAP_VERSION in MainWindow.h
* MAPMAP_VERSION in sh_make_tarball.sh (until we fixe the tarball target in .pro)
* Edit NEWS
* run make
* run ./sh_build_doc.sh
* merge to master, or to the major.minor branch
* run ./sh_make_tarball.sh
* then untar it, cd to that dir and build the whole thing to see if it works
* git tag x.y.z
* go back to your release branch
* increment micro (or minor) version number in the files above.
* merge into develop.
* keep developing.
XML file version number
-----------------------
* update its minor number when you introduce new features.
* update its major number when it's not backward-comptatible anymore with its previous versions
* generally, we should follow the MapMap version, when new changes are introduced. (no need to increment it otherwise)
* we will need to implement some fancy XML file version number checking in the future.
+6
View File
@@ -13,6 +13,11 @@ Dependencies:
* liblo
* gstreamer-0.10
Non-mandatory:
* doxygen
* graphviz
Build it::
./build.sh
@@ -29,6 +34,7 @@ Do this::
For extras::
sudo apt-get install -y \
graphviz \
doxygen
To edit translations
+2 -2
View File
@@ -40,8 +40,8 @@
#include "qttreepropertybrowser.h"
#include "qtgroupboxpropertybrowser.h"
#define MAPMAP_VERSION "0.0.9"
#define MAPMAP_EXTENSION "mpm"
#define MAPMAP_VERSION "0.1.1"
#define MAPMAP_EXTENSION "mmp"
/**
* This is the main window of MapMap. It acts as both a view and a controller interface.
+1 -4
View File
@@ -18,20 +18,17 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MAPPING_H_
#define MAPPING_H_
#include <QtGlobal>
#include <tr1/memory>
#include "Shape.h"
#include "Paint.h"
#include "UidAllocator.h"
/**
* Mapping is the central concept of Libremapping.
* Mapping is the central concept of this software.
*
* A Mapping represents a relationship between an input Paint and
* and output Shape where the paint (possibly modified by some other
+1 -1
View File
@@ -431,7 +431,7 @@ bool MediaImpl::runVideo() {
}
_videoNewBufferCounter--;
std::cout << "VideoImpl::runVideo: read frame #" << _videoNewBufferCounter << std::endl;
//std::cout << "VideoImpl::runVideo: read frame #" << _videoNewBufferCounter << std::endl;
}
_postRun();
+13
View File
@@ -0,0 +1,13 @@
Release notes for MapMap
========================
2014-04-30 - MapMap 0.1.0
-------------------------
* Initial release.
* Qt user interface.
* Video mapping with GStreamer.
* Quad, meshes, triangles, circles.
* Color paint.
* Fullscreen output window.
* MMP project XML file format version 0.1.
+5 -5
View File
@@ -4,21 +4,21 @@ MapMap OSC Interface
API Reference
-------------
/texture/uri
/mapmap/paint/media/load
~~~~~~~~~~~~
Change a media URI::
/texture/uri ,is <paintId> <URI>
/mapmap/paint/media/load ,is <paintId> <path>
URI: Path to a file. (WARNING: we will change this API soon.
paintID: A number. Usually 0, or 1 or 2... depending on how many paints you have in your project.
path: Path to a file.
Examples
--------
Change a media URI::
Change a media path::
osc-send osc.udp://localhost:12345 /texture/uri ,is 0 ~/Videos/clips_finaux_ok/lys_flou_net.mov
osc-send osc.udp://localhost:12345 /mapmap/paint/media/load ,is 0 ~/Videos/clips_finaux_ok/lys_flou_net.mov
See also
--------
+2 -3
View File
@@ -211,12 +211,11 @@ void OscInterface::applyOscCommand(MainWindow &main_window, QVariantList & comma
std::string typetags = command.at(1).toString().toStdString();
// Handle all OSC messages here
if (path == "/texture/uri" && typetags == "is")
if (path == "/mapmap/paint/media/load" && typetags == "is")
{
int paint_id = command.at(2).toInt();
std::string image_uri = command.at(3).toString().toStdString();
//std::cout << "TODO load /image/uri " << image_id << " " << image_uri << std::endl;
// TODO:
//std::cout << "load /mapmap/paint/media/load " << paint_id << " " << image_uri << std::endl;
main_window.setTextureUri(paint_id, image_uri);
}
+4 -2
View File
@@ -41,8 +41,10 @@ bool ProjectReader::readFile(QIODevice *device)
}
QDomElement root = doc.documentElement();
if (root.tagName() != "project" || root.attribute("version") != "1.0") {
_xml.raiseError(QObject::tr("The file is not a mapmap version 1.0 file."));
// The handling of the version number will get fancier as we go.
if (root.tagName() != "project" || root.attribute("version") != "0.1")
{
_xml.raiseError(QObject::tr("The file is not a mapmap version 0.1 file."));
return false;
}
+1 -1
View File
@@ -33,7 +33,7 @@ bool ProjectWriter::writeFile(QIODevice *device)
_xml.writeStartDocument();
_xml.writeDTD("<!DOCTYPE mapmap>");
_xml.writeStartElement("project");
_xml.writeAttribute("version", "1.0");
_xml.writeAttribute("version", "0.1"); // Similar to pkg-config version numbers.
_xml.writeStartElement("paints");
for (int i = 0; i < _manager->nPaints(); i++)
+13 -11
View File
@@ -1,6 +1,5 @@
MapMap
============
======
MapMap is a free video mapping software.
Projection mapping, also known as video mapping and spatial augmented reality,
@@ -27,19 +26,22 @@ Build and install
-----------------
See the INSTALL file.
On Mac OS X, you need GStreamer: http://cdn.gstreamer.com/osx/universal/gstreamer-sdk-2013.6-universal.pkg
To use this software on Mac OS X:
* Install Qt5. You can get it from http://qt-project.org/downloads and choose the default location.
* Install the GStreamer SDK Runtime files from http://docs.gstreamer.com/display/GstSDK/Installing+on+Mac+OS+X
Authors
-------
* Alexandre Quessy
* Sofian Audry
* Mike Latona
* Vasilis Liaskovitis
* Alexandre Quessy: release manager, developer, technical writer, project manager.
* Sofian Audry: lead developer, user interface designer, project manager.
Contributors
------------
* Christian Ambaud
* Maxime Damecour
* Julien Keable
* Sylvain Cormier
* Mike Latona: user interface designer.
* Vasilis Liaskovitis: developer.
* Maxime Damecour: inspiration.
* Christian Ambaud: sponsor, inspiration.
* Louis Desjardins: project manager.
* Julien Keable: developer.
* Sylvain Cormier: developer.
+24 -3
View File
@@ -1,6 +1,27 @@
To do in MapMap
===============
TODO before 0.2.0
-----------------
* change xy position to integers?
* "avec le soutien de l'Organisation internationale de la Francophonie", with the logo.
* integration des icones de mike
* shmsrc???? non... on a plutot autre chose.. c'est a dire, plus de formes.
* traduction complete. multilinguisme fonctionnel.
* video upside-down fixed
* manuel de base, bilingue. (en HTML dans le Contents?)
* save media URI when it's changed via OSC
* remove name? (and re-add it soon)
* allow the user to change the OSC port number user a menu item and a dialog.
* be able to change the media source
* is it really the closest vertex that is dragged?
* how come paint quads don't have a dimension?
* create more number boxes for points when we change the dimension of a quad texture mapping.
* Be able to cancel a change when moving around a mapping.
* Be able to change the color of a color paint.
* Be able to undo deleting a mapping, and a paint.
* implement name : dans l'inspecteur
Code
----
@@ -64,9 +85,9 @@ You should make sure to block all incoming messages on that port if you don't wa
/mapmap/project/load ,s <file>
/mapmap/project/save ,s <file>
/mapmap/paint/color/rgba ,iffff <paint identifier> <red> <green> <blue> <alpha> (each channel within [0,1])
/mapmap/paint/texture/load ,is <paint identifier> <file>
/mapmap/paint/texture/speed ,if <paint identifier> <speed ratio> (1.0 means 100% speed)
/mapmap/paint/texture/seek ,il <paint identifier> <time position> (in milliseconds)
/mapmap/paint/media/load ,is <paint identifier> <file>
/mapmap/paint/media/speed ,if <paint identifier> <speed ratio> (1.0 means 100% speed)
/mapmap/paint/media/seek ,il <paint identifier> <time position> (in milliseconds)
/mapmap/output/fullscreen ,i <enable>
/mapmap/output/size ,ii <width> <height>
/mapmap/output/position ,ii <x> <y>
+16 -1
View File
@@ -5,6 +5,20 @@
#include <QtGui>
#include "MainWindow.h"
#include "MainApplication.h"
#include <stdlib.h>
#include <iostream>
static void set_env_vars_if_needed()
{
#ifdef __MACOSX_CORE__
std::cout << "OS X detected. Set environment for GStreamer-SDK support." << std::endl;
if (0 == setenv("GST_PLUGIN_PATH", "/Library/Frameworks/GStreamer.framework/Libraries", 1))
std::cout << " * GST_PLUGIN_PATH=Library/Frameworks/GStreamer.framework/Libraries" << std::endl;
if (0 == setenv("GST_DEBUG", "2", 1))
std::cout << " * GST_DEBUG=2" << std::endl;
//setenv("LANG", "C", 1);
#endif // __MACOSX_CORE__
}
// This class is just used to provide sleep functionalities in the main() method.
class I : public QThread
@@ -23,7 +37,8 @@ public:
int main(int argc, char *argv[])
{
// TODO: avoid segfaults when OSC port is busy
set_env_vars_if_needed();
MainApplication app(argc, argv);
if (!QGLFormat::hasOpenGL())
+20 -2
View File
@@ -1,5 +1,6 @@
CONFIG += qt debug
TEMPLATE = app
VERSION = 0.1.1
TARGET = mapmap
QT += gui opengl xml
CONFIG += qt debug
@@ -15,7 +16,6 @@ HEADERS = \
MappingManager.h \
Maths.h \
MediaImpl.h \
Paint.h \
OscInterface.h \
OscReceiver.h \
OutputGLWindow.h \
@@ -29,8 +29,8 @@ HEADERS = \
SOURCES = \
DestinationGLCanvas.cpp \
MainWindow.cpp \
MainApplication.cpp \
MainWindow.cpp \
Mapper.cpp \
MapperGLCanvas.cpp \
Mapping.cpp \
@@ -52,6 +52,8 @@ QT += gui opengl xml
RESOURCES = mapmap.qrc
TRANSLATIONS = mapmap_fr.ts
include(contrib/qtpropertybrowser/src/qtpropertybrowser.pri)
# Add the docs target:
docs.depends = $(HEADERS) $(SOURCES)
docs.commands = (cat Doxyfile; echo "INPUT = $?") | doxygen -
QMAKE_EXTRA_TARGETS += docs
@@ -92,6 +94,7 @@ unix:!mac {
# Mac OS X-specific:
mac {
TARGET = MapMap
DEFINES += MACOSX
# INCLUDEPATH += \
# /opt/local/include/ \
@@ -142,3 +145,18 @@ win32 {
CONFIG += console
}
# Adds the tarball target
tarball.target = mapmap-$${VERSION}.tar.gz
tarball.commands = git archive --format=tar.gz -9 --prefix=mapmap-$${VERSION}/ --output=mapmap-$${VERSION}.tar.gz HEAD
tarball.depends = .git
QMAKE_EXTRA_TARGETS += tarball
# Show various messages
message("MapMap version: $${VERSION}")
# message("Qt version: $$[QT_VERSION]")
# message("LIBS: $${LIBS}")
# message("PKGCONFIG: $${PKGCONFIG}")
# message("The project contains the following files: $${SOURCES} $${HEADERS}}")
# message("To create a tarball, run `make tarball`")
# message("To build the documentation, run `make docs`")
+3 -3
View File
@@ -2,9 +2,9 @@
set -o verbose
#export GST_PLUGIN_PATH=/Library/Frameworks/GStreamer.framework/Libraries
export LANG=C
export GST_DEBUG=3
FILEPATH=/Users/aalex/Desktop/mapmap-videos/BonneFete.mov
#FILEPATH=/Users/aalex/Downloads/sintel_trailer-480p.ogv
# export GST_DEBUG=3
#FILEPATH=/Users/aalex/Desktop/mapmap-videos/BonneFete.mov
FILEPATH=/Users/aalex/Downloads/sintel_trailer-480p.ogv
gst-launch-0.10 uridecodebin uri=file://${FILEPATH} ! ffmpegcolorspace ! autovideosink
Executable
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
#export GST_PLUGIN_PATH=/Library/Frameworks/GStreamer.framework/Libraries
#export GST_DEBUG=2
export LANG=C
./mapmap.app/Contents/MacOS/mapmap
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
MAPMAP_VERSION=0.1.1
git archive --format=tar.gz -9 --prefix=mapmap-${MAPMAP_VERSION}/ --output=mapmap-${MAPMAP_VERSION}.tar.gz HEAD