diff --git a/MM.cpp b/MM.cpp index d9268e1..8a2b334 100644 --- a/MM.cpp +++ b/MM.cpp @@ -40,6 +40,7 @@ const QColor MM::DARK_BLUE("#0C0927"); const QColor MM::LIGHT_RED("#69020B"); const QColor MM::DARK_RED("#380b19"); +const QColor MM::CROSSHAIR_STROKE(QColor(0, 0, 0, 63)); const QColor MM::CONTROL_COLOR(WHITE); const QColor MM::CONTROL_COLOR_NON_SELECTED(QColor(CONTROL_COLOR.red(), CONTROL_COLOR.green(), CONTROL_COLOR.blue(), 63)); const QColor MM::CONTROL_LOCKED_COLOR(LIGHT_RED); diff --git a/MM.h b/MM.h index 85e83cb..f2fed77 100644 --- a/MM.h +++ b/MM.h @@ -93,6 +93,7 @@ public: static const QColor LIGHT_RED; static const QColor DARK_RED; + static const QColor CROSSHAIR_STROKE; static const QColor CONTROL_COLOR; static const QColor CONTROL_COLOR_NON_SELECTED; static const QColor CONTROL_LOCKED_COLOR; diff --git a/MainWindow.cpp b/MainWindow.cpp index d78f62c..5320351 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -1376,6 +1376,7 @@ void MainWindow::createLayout() sourceCanvas->setMinimumSize(CANVAS_MINIMUM_WIDTH, CANVAS_MINIMUM_HEIGHT); sourceCanvasToolbar = new MapperGLCanvasToolbar(sourceCanvas, this); + sourceCanvasToolbar->setToolbarTitle(tr("Source")); QVBoxLayout* sourceLayout = new QVBoxLayout; sourcePanel = new QWidget(this); @@ -1390,6 +1391,7 @@ void MainWindow::createLayout() destinationCanvas->setMinimumSize(CANVAS_MINIMUM_WIDTH, CANVAS_MINIMUM_HEIGHT); destinationCanvasToolbar = new MapperGLCanvasToolbar(destinationCanvas, this); + destinationCanvasToolbar->setToolbarTitle(tr("Destination")); QVBoxLayout* destinationLayout = new QVBoxLayout; destinationPanel = new QWidget(this); @@ -1778,7 +1780,7 @@ void MainWindow::createActions() addAction(displayControlsAction); // Manage show/hide of canvas controls. connect(displayControlsAction, SIGNAL(toggled(bool)), this, SLOT(enableDisplayControls(bool))); - connect(displayControlsAction, SIGNAL(toggled(bool)), outputWindow, SLOT(setDisplayCrosshair(bool))); + connect(displayControlsAction, SIGNAL(toggled(bool)), outputWindow, SLOT(setCanvasDisplayCrosshair(bool))); // Toggle display of canvas controls. displayPaintControlsAction = new QAction(tr("&Display Controls of Mappings of a Paint"), this); @@ -1860,25 +1862,25 @@ void MainWindow::createActions() // Perspectives // Main perspective (Source + destination) - mainViewAction = new QAction(tr("Main Perspective"), this); + mainViewAction = new QAction(tr("Main Layout"), this); mainViewAction->setCheckable(true); mainViewAction->setChecked(true); - mainViewAction->setShortcut(Qt::CTRL + Qt::ALT + Qt::Key_1); - mainViewAction->setToolTip(tr("Switch to the Main perspective.")); + mainViewAction->setShortcut(Qt::CTRL + Qt::Key_1); + mainViewAction->setToolTip(tr("Switch to the Main layout.")); connect(mainViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(0), SLOT(setVisible(bool))); connect(mainViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(1), SLOT(setVisible(bool))); // Source Only - sourceViewAction = new QAction(tr("Source Perspective"), this); + sourceViewAction = new QAction(tr("Source Layout"), this); sourceViewAction->setCheckable(true); - sourceViewAction->setShortcut(Qt::CTRL + Qt::ALT + Qt::Key_2); - sourceViewAction->setToolTip(tr("Switch to the Source perspective.")); + sourceViewAction->setShortcut(Qt::CTRL + Qt::Key_2); + sourceViewAction->setToolTip(tr("Switch to the Source layout.")); connect(sourceViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(0), SLOT(setVisible(bool))); connect(sourceViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(1), SLOT(setHidden(bool))); // Destination Only - destViewAction = new QAction(tr("Destination Perspective"), this); + destViewAction = new QAction(tr("Destination Layout"), this); destViewAction->setCheckable(true); - destViewAction->setShortcut(Qt::CTRL + Qt::ALT + Qt::Key_3); - destViewAction->setToolTip(tr("Switch to the Destination perspective.")); + destViewAction->setShortcut(Qt::CTRL + Qt::Key_3); + destViewAction->setToolTip(tr("Switch to the Destination layout.")); connect(destViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(0), SLOT(setHidden(bool))); connect(destViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(1), SLOT(setVisible(bool))); // Groups all actions @@ -2169,6 +2171,7 @@ void MainWindow::readSettings() outputFullScreenAction->setChecked(settings.value("displayOutputWindow", MM::DISPLAY_OUTPUT_WINDOW).toBool()); displayTestSignalAction->setChecked(settings.value("displayTestSignal", MM::DISPLAY_TEST_SIGNAL).toBool()); displayControlsAction->setChecked(settings.value("displayControls", MM::DISPLAY_CONTROLS).toBool()); + outputWindow->setCanvasDisplayCrosshair(settings.value("displayControls", MM::DISPLAY_CONTROLS).toBool()); oscListeningPort = settings.value("oscListeningPort", MM::DEFAULT_OSC_PORT).toInt(); // Update Recent files and video diff --git a/MapperGLCanvasToolbar.cpp b/MapperGLCanvasToolbar.cpp index 9ea2821..81829f3 100644 --- a/MapperGLCanvasToolbar.cpp +++ b/MapperGLCanvasToolbar.cpp @@ -43,9 +43,12 @@ void MapperGLCanvasToolbar::createZoomToolsLayout() // Create zoom tool bar setObjectName("zoom-toolbox"); - // Create vertical layout for widgets - QHBoxLayout* buttonsLayout = new QHBoxLayout; - buttonsLayout->setContentsMargins(0, 0, 5, 0); + // Create label for title + _titleLabel = new QLabel; + + // Create horizontale layout for widgets + QHBoxLayout* toolbarLayout = new QHBoxLayout; + toolbarLayout->setContentsMargins(0, 0, 5, 0); // Create buttons // Zoom In button _zoomInButton = new QPushButton; @@ -96,15 +99,16 @@ void MapperGLCanvasToolbar::createZoomToolsLayout() connect(_dropdownMenu, SIGNAL(activated(QString)), _canvas, SLOT(setZoomFromMenu(QString))); // Add widgets into layout - buttonsLayout->addWidget(_zoomInButton); - buttonsLayout->addWidget(_zoomOutButton); - buttonsLayout->addWidget(_resetZoomButton); - buttonsLayout->addWidget(_fitToViewButton); - buttonsLayout->addWidget(separator); - buttonsLayout->addWidget(_dropdownMenu); + toolbarLayout->addWidget(_titleLabel); + toolbarLayout->addWidget(_zoomInButton); + toolbarLayout->addWidget(_zoomOutButton); + toolbarLayout->addWidget(_resetZoomButton); + toolbarLayout->addWidget(_fitToViewButton); + toolbarLayout->addWidget(separator); + toolbarLayout->addWidget(_dropdownMenu); // Insert layout in widget - setLayout(buttonsLayout); + setLayout(toolbarLayout); connect(_canvas, SIGNAL(zoomFactorChanged(qreal)), this, SLOT(updateDropdownMenu(qreal))); } diff --git a/MapperGLCanvasToolbar.h b/MapperGLCanvasToolbar.h index db3ab66..273f270 100644 --- a/MapperGLCanvasToolbar.h +++ b/MapperGLCanvasToolbar.h @@ -39,6 +39,8 @@ public: // Return enable statut bool buttonsAreEnable() { return _areEnable; } + void setToolbarTitle(const QString &title) { _titleLabel->setText(title); } + public slots: // Update and feedback zoom level void updateDropdownMenu(qreal factor = 1); @@ -47,7 +49,8 @@ public slots: protected: MapperGLCanvas* _canvas; - + // Labels + QLabel *_titleLabel; // Buttons for toolbox layout QPushButton* _zoomInButton; QPushButton* _zoomOutButton; diff --git a/OutputGLCanvas.cpp b/OutputGLCanvas.cpp index ab55840..cac87b5 100644 --- a/OutputGLCanvas.cpp +++ b/OutputGLCanvas.cpp @@ -27,10 +27,7 @@ MM_BEGIN_NAMESPACE OutputGLCanvas::OutputGLCanvas(MainWindow* mainWindow, QWidget* parent, const QGLWidget* shareWidget, QGraphicsScene* scene) : MapperGLCanvas(mainWindow, true, parent, shareWidget, scene), _displayCrosshair(false), - _displayTestSignal(false), - _svg_test_signal(":/test-signal"), - _brush_test_signal(_svg_test_signal), - _palTestCard(":/pal-test-card") + _displayTestSignal(false) { // Disable scrollbars. setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -53,10 +50,11 @@ void OutputGLCanvas::drawForeground(QPainter *painter , const QRectF &rect) int testCard = settings.value("signalTestCard", MM::DEFAULT_TEST_CARD).toInt(); glPushMatrix(); painter->translate(rect.x(), rect.y()); + painter->setRenderHint(QPainter::Antialiasing); painter->save(); switch (testCard) { case MM::Classic: - _drawTestSignal(painter); + _drawClassicTestSignal(painter); break; case MM::PAL: _drawPALTestCard(painter); @@ -91,16 +89,25 @@ void OutputGLCanvas::drawForeground(QPainter *painter , const QRectF &rect) if (rect.contains(cursorPosition)) #endif { +// painter->setPen(MM::CONTROL_COLOR); +// painter->drawLine(cursorPosition.x(), rect.y(), cursorPosition.x(), rect.height()); +// painter->drawLine(rect.x(), cursorPosition.y(), rect.width(), cursorPosition.y()); + // Draw crosshair line + painter->setPen(MM::CROSSHAIR_STROKE); + painter->setBrush(MM::CONTROL_COLOR); + painter->drawRect(cursorPosition.x() - 2, rect.y(), 4, rect.height()); + painter->drawRect(rect.x(), cursorPosition.y() - 2, rect.width(), 4); + // Draw crosshair pointer painter->setPen(MM::CONTROL_COLOR); - painter->drawLine(cursorPosition.x(), rect.y(), cursorPosition.x(), rect.height()); - painter->drawLine(rect.x(), cursorPosition.y(), rect.width(), cursorPosition.y()); + painter->setBrush(MM::CROSSHAIR_STROKE); + painter->drawRect(cursorPosition.x() - 10, cursorPosition.y() - 10, 20, 20); } } } } -void OutputGLCanvas::_drawTestSignal(QPainter* painter) +void OutputGLCanvas::_drawClassicTestSignal(QPainter* painter) { const QRect& geo = geometry(); int width = geo.width(); @@ -127,12 +134,12 @@ void OutputGLCanvas::_drawTestSignal(QPainter* painter) } // Create responsive image - QImage image = _svg_test_signal.scaled(height, height, Qt::KeepAspectRatio, Qt::SmoothTransformation); - int imageX = (width - image.width()) / 2; - int imageY = (height - image.height()) / 2; + _classicTestCard = QImage(":/test-signal").scaled(height, height, Qt::KeepAspectRatio, Qt::SmoothTransformation); + int imageX = (width - _classicTestCard.width()) / 2; + int imageY = (height - _classicTestCard.height()) / 2; // Draw the image. - painter->drawImage(imageX, imageY, image); + painter->drawImage(imageX, imageY, _classicTestCard); } void OutputGLCanvas::_drawPALTestCard(QPainter* painter) @@ -170,17 +177,17 @@ void OutputGLCanvas::_drawPALTestCard(QPainter* painter) } // Create responsive image - QImage image = _palTestCard.scaled(height - (rectSize * 2), height - (rectSize * 2), + _palTestCard = QImage(":/pal-test-card").scaled(height - (rectSize * 2), height - (rectSize * 2), Qt::KeepAspectRatio, Qt::SmoothTransformation); // Draw image - int imageX = (width - image.width()) / 2; - int imageY = (height - image.height()) / 2; - int imageWidth = image.width(); - int imageHeight = image.height(); - painter->drawImage(imageX, imageY, image); + int imageX = (width - _palTestCard.width()) / 2; + int imageY = (height - _palTestCard.height()) / 2; + int imageHeight = _palTestCard.height(); + painter->drawImage(imageX, imageY, _palTestCard); + // Draw text for screen resolution - int fontSize = imageHeight / 20; - QRect textRect((width / 2) - (fontSize * 3), imageY + (imageHeight / 13), fontSize * 6, fontSize); + int fontSize = imageHeight / 18; + QRect textRect((width / 2) - (fontSize * 3), imageY + (imageHeight / 19), fontSize * 6, fontSize); _drawResolutionText(painter, textRect, fontSize); } @@ -189,24 +196,19 @@ void OutputGLCanvas::_drawNTSCTestCard(QPainter* painter) const QRect& geo = geometry(); int width = geo.width(); int height = geo.height(); - QList colors = { - Qt::white, Qt::yellow, Qt::cyan, Qt::green, - Qt::magenta, Qt::red, Qt::blue, Qt::black - }; - const int bandWidth = width / colors.size(); + // Create image + _ntscTestCard = QImage(":/ntsc-test-card").scaled(width, height); - painter->setPen(Qt::NoPen); + // Draw backgroung image + painter->drawImage(geo.x(), geo.y(), _ntscTestCard); + // Draw logo + QImage mapmapLogo = QImage(":/mapmap-logo-with-border").scaled(width, height / 15, Qt::KeepAspectRatio, Qt::SmoothTransformation); + painter->drawImage((width - mapmapLogo.width()) / 2, height / 4, mapmapLogo); - // Draw checkerboard pattern. - for (int x = 0; x < width / bandWidth; x++) - { - painter->setBrush(colors.at(x)); - painter->drawRect(x * bandWidth, 0, bandWidth, height); - } // Draw text for screen resolution - int fontSize = height / 30; + int fontSize = height / 21; QRect textRect((width / 2) - (fontSize * 3), height / 3, fontSize * 6, fontSize); _drawResolutionText(painter, textRect, fontSize); } @@ -220,6 +222,7 @@ void OutputGLCanvas::_drawResolutionText(QPainter *painter, const QRect &rect, i painter->fillRect(rect, Qt::black); QFont font = painter->font(); font.setPixelSize(fontSize); + font.setBold(true); painter->setFont(font); painter->setPen(Qt::white); painter->drawText(rect, Qt::AlignCenter, diff --git a/OutputGLCanvas.h b/OutputGLCanvas.h index 9c54b61..a912ac9 100644 --- a/OutputGLCanvas.h +++ b/OutputGLCanvas.h @@ -50,7 +50,7 @@ public: } private: - void _drawTestSignal(QPainter* painter); + void _drawClassicTestSignal(QPainter* painter); void _drawPALTestCard(QPainter *painter); void _drawNTSCTestCard(QPainter *painter); @@ -58,9 +58,10 @@ private: bool _displayCrosshair; bool _displayTestSignal; - QImage _svg_test_signal; + QImage _classicTestCard; QBrush _brush_test_signal; QImage _palTestCard; + QImage _ntscTestCard; protected: // overriden from QGlWidget: diff --git a/OutputGLWindow.cpp b/OutputGLWindow.cpp index 8ef86ae..4fd8d21 100644 --- a/OutputGLWindow.cpp +++ b/OutputGLWindow.cpp @@ -38,7 +38,7 @@ OutputGLWindow:: OutputGLWindow(QWidget* parent, const MapperGLCanvas* canvas_) layout->addWidget(canvas); setLayout(layout); - setDisplayCrosshair(false); // default + setCanvasDisplayCrosshair(false); // default this->_is_fullscreen = false; _preferredScreen = QApplication::screens().size() - 1; } @@ -93,10 +93,11 @@ void OutputGLWindow::_updateToPreferredScreen() } -void OutputGLWindow::setDisplayCrosshair(bool crosshair) +void OutputGLWindow::setCanvasDisplayCrosshair(bool crosshair) { canvas->setDisplayCrosshair(crosshair); setCursor(crosshair || this->_is_fullscreen ? Qt::BlankCursor : Qt::ArrowCursor); + qDebug() << "Crosshair " << crosshair; } void OutputGLWindow::setDisplayTestSignal(bool displayTestSignal) diff --git a/OutputGLWindow.h b/OutputGLWindow.h index 19c594f..13c4344 100644 --- a/OutputGLWindow.h +++ b/OutputGLWindow.h @@ -46,7 +46,7 @@ public: public slots: void setFullScreen(bool fullScreen); - void setDisplayCrosshair(bool crosshair); + void setCanvasDisplayCrosshair(bool crosshair); void setDisplayTestSignal(bool displayTestSignal); signals: diff --git a/interface.qrc b/interface.qrc index bce1d62..14b0238 100644 --- a/interface.qrc +++ b/interface.qrc @@ -44,5 +44,7 @@ resources/images/test-signal/examples/pal-test-card.png resources/images/test-signal/examples/ntsc-test-card.png resources/images/checkbox/checkbox-unchecked.png + resources/images/test-signal/ntsc-test-signal.svg + resources/images/logo/mapmap-wide-with-border.svg diff --git a/main.cpp b/main.cpp index f17b66f..de5fd63 100644 --- a/main.cpp +++ b/main.cpp @@ -140,12 +140,13 @@ int main(int argc, char *argv[]) // IMPORTANT: Translator must be set *before* the MainWindow is created for it to work. QSettings settings; + // Get language from command line or user settings QString lang = parser.value("lang").isEmpty() ? settings.value("language").toString() : parser.value("lang"); if (MM::SUPPORTED_LANGUAGES.contains(lang)) { - QLocale::setDefault(QLocale(lang)); + //QLocale::setDefault(QLocale(lang)); QTranslator qtTranslator; #ifdef Q_OS_WIN32 qtTranslator.load(QString("qt_%1").arg(lang), @@ -156,9 +157,9 @@ int main(int argc, char *argv[]) #endif app.installTranslator(&qtTranslator); - QTranslator localization; - localization.load(QString(":/mapmap_%1").arg(lang)); - app.installTranslator(&localization); + QTranslator appTranslator; + appTranslator.load(QString("translations/mapmap_%1").arg(lang)); + app.installTranslator(&appTranslator); } else { qWarning() << "Unrecognized/unsupported language: " << lang; diff --git a/resources/images/logo/mapmap-wide-with-border.svg b/resources/images/logo/mapmap-wide-with-border.svg new file mode 100644 index 0000000..76f9af9 --- /dev/null +++ b/resources/images/logo/mapmap-wide-with-border.svg @@ -0,0 +1,133 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/test-signal/ntsc-test-signal.svg b/resources/images/test-signal/ntsc-test-signal.svg new file mode 100644 index 0000000..a76a1bd --- /dev/null +++ b/resources/images/test-signal/ntsc-test-signal.svg @@ -0,0 +1,183 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/test-signal/pal-test-signal.svg b/resources/images/test-signal/pal-test-signal.svg index 4d2b549..acdfac5 100644 --- a/resources/images/test-signal/pal-test-signal.svg +++ b/resources/images/test-signal/pal-test-signal.svg @@ -23,8 +23,633 @@ sodipodi:docname="pal-test-signal.svg">image/svg+xml \ No newline at end of file + inkscape:current-layer="layer3" /> \ No newline at end of file diff --git a/translations/mapmap_en.ts b/translations/mapmap_en.ts index 6740f66..344108d 100644 --- a/translations/mapmap_en.ts +++ b/translations/mapmap_en.ts @@ -1,6 +1,59 @@ + + AboutDialog + + + About %1 + + + + + MapMap is a free/open source video mapping software. + + + + + Copyright &copy; 2013 %1. + + + + + See the + + + + + %1 website + + + + + About + + + + + Changelog + + + + + Librairies + + + + + Contributors + + + + + License + + + ConsoleWindow @@ -53,524 +106,538 @@ MainWindow - + Open project Open project - - + + MapMap files (*.%1) MapMap files (*.%1) - + Save project Save project - + Import media source file Import media source file - + Media files (%1 %2);;All files (*) Media files (%1 %2);;All files (*) - + Available camera Available camera - + Select camera Select camera - + + No camera available No camera available - + + You can not use this feature! No camera available in your system You can not use this feature! No camera available in your system - + Select Color Select Color - About MapMap - About MapMap + About MapMap - <h2><img src=":mapmap-title"/> %1</h2><p>Copyright &copy; 2013 %2.</p><p>MapMap is a free software for video mapping.</p><p>Projection mapping, also known as video mapping and spatial augmented reality, is a projection technology used to turn objects, often irregularly shaped, into a display surface for video projection. These objects may be complex industrial landscapes, such as buildings. By using specialized software, a two or three dimensional object is spatially mapped on the virtual program which mimics the real environment it is to be projected on. The software can interact with a projector to fit any desired image onto the surface of that object. This technique is used by artists and advertisers alike who can add extra dimensions, optical illusions, and notions of movement onto previously static objects. The video is commonly combined with, or triggered by, audio to create an audio-visual narrative.This project was made possible by the support of the International Organization of La Francophonie.</p><p>http://mapmap.info<br />http://www.francophonie.org</p> - <h2><img src=":mapmap-title"/> %1</h2><p>Copyright &copy; 2013 %2.</p><p>MapMap is a free software for video mapping.</p><p>Projection mapping, also known as video mapping and spatial augmented reality, is a projection technology used to turn objects, often irregularly shaped, into a display surface for video projection. These objects may be complex industrial landscapes, such as buildings. By using specialized software, a two or three dimensional object is spatially mapped on the virtual program which mimics the real environment it is to be projected on. The software can interact with a projector to fit any desired image onto the surface of that object. This technique is used by artists and advertisers alike who can add extra dimensions, optical illusions, and notions of movement onto previously static objects. The video is commonly combined with, or triggered by, audio to create an audio-visual narrative.This project was made possible by the support of the International Organization of La Francophonie.</p><p>http://mapmap.info<br />http://www.francophonie.org</p> + <h2><img src=":mapmap-title"/> %1</h2><p>Copyright &copy; 2013 %2.</p><p>MapMap is a free software for video mapping.</p><p>Projection mapping, also known as video mapping and spatial augmented reality, is a projection technology used to turn objects, often irregularly shaped, into a display surface for video projection. These objects may be complex industrial landscapes, such as buildings. By using specialized software, a two or three dimensional object is spatially mapped on the virtual program which mimics the real environment it is to be projected on. The software can interact with a projector to fit any desired image onto the surface of that object. This technique is used by artists and advertisers alike who can add extra dimensions, optical illusions, and notions of movement onto previously static objects. The video is commonly combined with, or triggered by, audio to create an audio-visual narrative.This project was made possible by the support of the International Organization of La Francophonie.</p><p>http://mapmap.info<br />http://www.francophonie.org</p> - - - + + + MapMap MapMap - + Remove this paint and all its associated mappings? Remove this paint and all its associated mappings? - + Paints Paints - + Mappings Mappings - + &New &New - + Create a new project Create a new project - + &Open... &Open... - + Open an existing project Open an existing project - + &Save &Save - + Save the project Save the project - + Save &As... Save &As... - + Save the project as... Save the project as... - + No Recents Videos No Recents Videos - + &Import Media File... &Import Media File... - + Import a video or image file... Import a video or image file... - + Open &Camera Device... Open &Camera Device... - + Choose your camera device... Choose your camera device... - + Add &Color Paint... Add &Color Paint... - + Add a color paint... Add a color paint... - + E&xit E&xit - + Exit the application Exit the application - + &Undo &Undo - + &Redo &Redo - + &About MapMap &About MapMap - + Show the application's About box Show the application's About box - + Duplicate Duplicate - + Duplicate item Duplicate item - + Delete mapping Delete mapping - - + + Delete item Delete item - - + + Rename Rename - - + + Rename item Rename item - + Lock mapping Lock mapping - + Lock mapping item Lock mapping item - + Hide mapping Hide mapping - + Hide mapping item Hide mapping item - + Solo mapping Solo mapping - + solo mapping item solo mapping item - + Delete paint Delete paint - + &Preferences... &Preferences... - + Configure preferences... Configure preferences... - + Add &Mesh Add &Mesh - + Add mesh Add mesh - + Add &Triangle Add &Triangle - + Add triangle Add triangle - + Add &Ellipse Add &Ellipse - + Add ellipse Add ellipse - - + + Play Play - - + + Pause Pause - - + + Rewind Rewind - + Toggle &Fullscreen Toggle &Fullscreen - + Toggle Fullscreen Toggle Fullscreen - + &Display Controls &Display Controls - + Display canvas controls Display canvas controls - + &Display Controls of Mappings of a Paint &Display Controls of Mappings of a Paint - + Display all canvas controls related to current paint Display all canvas controls related to current paint - + &Sticky Vertices &Sticky Vertices - + Enable sticky vertices Enable sticky vertices - + Show &Test Signal Show &Test Signal - + Show Test signal Show Test signal - - Display &Undo Stack - Display &Undo Stack + + Display &Undo History + - + + Undo history + + + + Display &Undo Stack + Display &Undo Stack + + + Open Conso&le Open Conso&le - + Display &Zoom Toolbar Display &Zoom Toolbar - + &Menu Bar &Menu Bar - + Main Perspective Main Perspective - + Switch to the Main perspective. Switch to the Main perspective. - + Source Perspective Source Perspective - + Switch to the Source perspective. Switch to the Source perspective. - + Destination Perspective Destination Perspective - + Switch to the Destination perspective. Switch to the Destination perspective. - + Report bug... Report bug... - + Technical Support Technical Support - + Documentation Documentation - + + Submit Feedback... + + + + &File &File - + Open Recents Projects Open Recents Projects - + Open Recents Videos Open Recents Videos - + &Edit &Edit - + &Source &Source - + &Destination &Destination - + &Playback &Playback - + &Output &Output - + &Tools &Tools - + &Window &Window - + Toolbars Toolbars - + &Help &Help - + &Toolbar &Toolbar - + The document has been modified. Do you want to save your changes? The document has been modified. Do you want to save your changes? - - + + Error reading mapping project file Error reading mapping project file - - + + Cannot read file %1: %2. Cannot read file %1: %2. - + Parse error in file %1: %2 @@ -579,110 +646,109 @@ Do you want to save your changes? %2 - + File loaded File loaded - + Error saving mapping project Error saving mapping project - + Cannot write file %1: %2. Cannot write file %1: %2. - + File saved File saved - + Untitled Untitled - + %1[*] - %2 %1[*] - %2 - - + + MapMap Project MapMap Project - - + + &%1 %2 &%1 %2 - + Clear List Clear List - + No Recents Projects No Recents Projects - + %1 - %2x%3 %1 - %2x%3 - + File imported File imported - + Color paint added Color paint added - + Warning Warning - + The following file is not supported: %1 The following file is not supported: %1 - + Cannot load movie Cannot load movie - + Unable to use the file « %1 » The original file is not found. Will you locate? Unable to use the file « %1 » The original file is not found. Will you locate? - + Locate file « %1 » Locate file « %1 » - + %1 files (%2) %1 files (%2) - Undo stack - Undo stack + Undo stack @@ -711,22 +777,22 @@ The original file is not found. Will you locate? MappingItemDelegate - + Solo mapping Solo mapping - + Lock mapping Lock mapping - + Duplicate mapping Duplicate mapping - + Delete mapping Delete mapping @@ -739,132 +805,141 @@ The original file is not found. Will you locate? Preferences - + Large Large - + Medium Medium - + Small Small - + + Language (requires restart) + + + + Toolbar icon size (requires restart) Toolbar icon size (requires restart) - + Enable Sticky vertices Enable Sticky vertices - + Sensitivity Sensitivity - + Vertex Vertex - + Shape Shape - + Layers Layers - + Show resolution on output Show resolution on output - + Classic test card Classic test card - + PAL test card PAL test card - + NTSC test card NTSC test card - + Send OSC messages Send OSC messages - + to machine to machine - + at port at port - + Listen OSC messages Listen OSC messages - + on port on port - + Refresh Refresh - + Local IP Local IP - + OSC Setup OSC Setup - - Apparence - Apparence + + Interface + - + Apparence + Apparence + + + Mapping & Shape Mapping & Shape - + Output Output - + Controls Controls - + Advanced Advanced @@ -907,12 +982,12 @@ The original file is not found. Will you locate? - + Problem at creation of shape. Problem at creation of shape. - + Unable to create paint of type '%1'. @@ -983,12 +1058,12 @@ Line %2, column %3 Problem at creation of mapping. - + Initiating program... Initiating program... - + Done. Done. diff --git a/translations/mapmap_fr.ts b/translations/mapmap_fr.ts index b427114..5432f37 100644 --- a/translations/mapmap_fr.ts +++ b/translations/mapmap_fr.ts @@ -1,6 +1,49 @@ + + AboutDialog + + About %1 + + + + MapMap is a free/open source video mapping software. + + + + Copyright &copy; 2013 %1. + + + + See the + + + + %1 website + + + + About + + + + Changelog + + + + Librairies + + + + Contributors + + + + License + + + ConsoleWindow @@ -46,7 +89,7 @@ MainWindow About MapMap - À propos de MapMap + À propos de MapMap &New @@ -319,10 +362,6 @@ No camera available in your system Select Color Choisir une couleur - - <h2><img src=":mapmap-title"/> %1</h2><p>Copyright &copy; 2013 %2.</p><p>MapMap is a free software for video mapping.</p><p>Projection mapping, also known as video mapping and spatial augmented reality, is a projection technology used to turn objects, often irregularly shaped, into a display surface for video projection. These objects may be complex industrial landscapes, such as buildings. By using specialized software, a two or three dimensional object is spatially mapped on the virtual program which mimics the real environment it is to be projected on. The software can interact with a projector to fit any desired image onto the surface of that object. This technique is used by artists and advertisers alike who can add extra dimensions, optical illusions, and notions of movement onto previously static objects. The video is commonly combined with, or triggered by, audio to create an audio-visual narrative.This project was made possible by the support of the International Organization of La Francophonie.</p><p>http://mapmap.info<br />http://www.francophonie.org</p> - - Paints Sources @@ -481,7 +520,7 @@ No camera available in your system Display &Undo Stack - Afficher la liste des &Undo + Afficher la liste des &Undo Open Conso&le @@ -613,7 +652,15 @@ The original file is not found. Will you locate? - Undo stack + Display &Undo History + + + + Submit Feedback... + + + + Undo history @@ -644,15 +691,15 @@ The original file is not found. Will you locate? Lock mapping - + Verrouiller le mapping Duplicate mapping - + Dupliquer un mapping Delete mapping - + Supprimer le mapping @@ -745,10 +792,6 @@ The original file is not found. Will you locate? OSC Setup - - Apparence - - Mapping & Shape @@ -765,6 +808,14 @@ The original file is not found. Will you locate? Advanced + + Language (requires restart) + + + + Interface + + QObject @@ -876,7 +927,7 @@ Ligne %2, colonne %3 Delete mapping - + Supprimer le mapping Problem at creation of shape. @@ -911,7 +962,11 @@ Ligne %2, colonne %3 Problème à la création de la source - Problème à la création du mapping + + + + + Problem at creation of mapping. @@ -1053,7 +1108,7 @@ Ligne %2, colonne %3 QtFontEditWidget ... - + ... Select Font