mirror of
https://github.com/mapmapteam/mapmap.git
synced 2026-06-16 12:33:19 +02:00
Merge branch 'develop' of github.com:mapmapteam/mapmap into develop
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
+13
-10
@@ -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
|
||||
|
||||
+14
-10
@@ -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)));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
+36
-33
@@ -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<QColor> 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,
|
||||
|
||||
+3
-2
@@ -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:
|
||||
|
||||
+3
-2
@@ -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)
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ public:
|
||||
|
||||
public slots:
|
||||
void setFullScreen(bool fullScreen);
|
||||
void setDisplayCrosshair(bool crosshair);
|
||||
void setCanvasDisplayCrosshair(bool crosshair);
|
||||
void setDisplayTestSignal(bool displayTestSignal);
|
||||
|
||||
signals:
|
||||
|
||||
@@ -44,5 +44,7 @@
|
||||
<file alias="pal-test">resources/images/test-signal/examples/pal-test-card.png</file>
|
||||
<file alias="ntsc-test">resources/images/test-signal/examples/ntsc-test-card.png</file>
|
||||
<file>resources/images/checkbox/checkbox-unchecked.png</file>
|
||||
<file alias="ntsc-test-card">resources/images/test-signal/ntsc-test-signal.svg</file>
|
||||
<file alias="mapmap-logo-with-border">resources/images/logo/mapmap-wide-with-border.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1024"
|
||||
height="192"
|
||||
viewBox="0 0 1024 192"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="mapmap-wide-with-border.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.1689453"
|
||||
inkscape:cx="512"
|
||||
inkscape:cy="96"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g4313"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="1022"
|
||||
inkscape:window-x="1050"
|
||||
inkscape:window-y="340"
|
||||
inkscape:window-maximized="1"
|
||||
units="px" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="mapmap-font-strock"
|
||||
style="display:inline"
|
||||
transform="translate(0,-552.09448)" />
|
||||
<g
|
||||
style="display:inline"
|
||||
inkscape:label="mapmap-font"
|
||||
id="g4313"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,-552.09448)">
|
||||
<g
|
||||
id="g4152"
|
||||
transform="translate(-16.70785,276.0476)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path16"
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:30;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 213.13908,291.79626 0,160.50123 -26.47862,0 0,-123.5862 -117.561741,123.5862 -26.47872,0 0,-160.50123 26.47872,0 58.379741,61.59448 59.182,-61.59448 26.47862,0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path18"
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:30;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 305.61895,317.47739 -12.83701,33.30653 26.68281,72.62217 -27.68551,0 -12.43472,-37.70948 -25.68214,66.60088 -28.48504,0 64.99778,-160.50123 30.88867,0 65.00285,160.50123 -28.68415,0 -51.76354,-134.8201" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccsssc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path20"
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:30;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 424.58761,377.66078 0,74.63468 -26.48269,0 0,-98.50547 27.68552,0 -27.68552,-38.11685 0,-23.87688 81.65359,0 c 23.66353,0 42.93022,19.26669 42.93022,42.9414 0,23.66354 -19.26669,42.92312 -42.93022,42.92312 l -55.1709,0" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccc"
|
||||
d="m 705.24607,291.79626 0,160.50123 -26.47862,0 0,-123.5862 -117.56174,123.5862 -26.47872,0 0,-160.50123 26.47872,0 58.37974,61.59448 59.182,-61.59448 26.47862,0"
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:30;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4307"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 797.72597,317.47739 -12.83701,33.30653 26.68281,72.62217 -27.68551,0 -12.43472,-37.70948 -25.68214,66.60088 -28.48504,0 64.99778,-160.50123 30.88867,0 65.00285,160.50123 -28.68415,0 -51.76354,-134.8201"
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:30;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4309"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccsssc"
|
||||
d="m 916.6946,377.66078 0,74.63468 -26.48269,0 0,-98.50547 27.68552,0 -27.68552,-38.11685 0,-23.87688 81.65359,0 c 23.66353,0 42.9302,19.26669 42.9302,42.9414 0,23.66354 -19.26667,42.92312 -42.9302,42.92312 l -55.1709,0"
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:30;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4311"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 69.098719,414.37467 40.525171,-42.32272 -40.525171,-43.53876 0,85.86148 z m 144.040361,-122.57841 0,160.50123 -26.47862,0 0,-123.5862 -117.561741,123.5862 -26.47872,0 0,-160.50123 26.47872,0 58.379741,61.59448 59.182,-61.59448 26.47862,0"
|
||||
style="display:inline;fill:#2d2f3e;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path4315"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 305.61895,317.47739 -12.83701,33.30653 26.68281,72.62217 -27.68551,0 -12.43472,-37.70948 -25.68214,66.60088 -28.48504,0 64.99778,-160.50123 30.88867,0 65.00285,160.50123 -28.68415,0 -51.76354,-134.8201"
|
||||
style="display:inline;fill:#2d2f3e;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path4317"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 426.39084,315.67314 29.09052,38.11685 24.27715,0 c 9.02837,0 16.44653,-8.62912 16.44653,-19.05233 0,-10.43947 -7.41816,-19.06452 -16.44653,-19.06452 l -53.36767,0 z m -1.80323,61.98764 0,74.63468 -26.48269,0 0,-98.50547 27.68552,0 -27.68552,-38.11685 0,-23.87688 81.65359,0 c 23.66353,0 42.93022,19.26669 42.93022,42.9414 0,23.66354 -19.26669,42.92312 -42.93022,42.92312 l -55.1709,0"
|
||||
style="display:inline;fill:#2d2f3e;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path4319"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4321"
|
||||
style="display:inline;fill:#2d2f3e;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 561.20571,414.37467 40.52517,-42.32272 -40.52517,-43.53876 0,85.86148 z m 144.04036,-122.57841 0,160.50123 -26.47862,0 0,-123.5862 -117.56174,123.5862 -26.47872,0 0,-160.50123 26.47872,0 58.37974,61.59448 59.182,-61.59448 26.47862,0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4323"
|
||||
style="display:inline;fill:#2d2f3e;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 797.72597,317.47739 -12.83701,33.30653 26.68281,72.62217 -27.68551,0 -12.43472,-37.70948 -25.68214,66.60088 -28.48504,0 64.99778,-160.50123 30.88867,0 65.00285,160.50123 -28.68415,0 -51.76354,-134.8201" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4325"
|
||||
style="display:inline;fill:#2d2f3e;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 918.49783,315.67314 29.09052,38.11685 24.27715,0 c 9.02837,0 16.44653,-8.62912 16.44653,-19.05233 0,-10.43947 -7.41816,-19.06452 -16.44653,-19.06452 l -53.36767,0 z m -1.80323,61.98764 0,74.63468 -26.48269,0 0,-98.50547 27.68552,0 -27.68552,-38.11685 0,-23.87688 81.65359,0 c 23.66353,0 42.9302,19.26669 42.9302,42.9414 0,23.66354 -19.26667,42.92312 -42.9302,42.92312 l -55.1709,0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
@@ -0,0 +1,183 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.0"
|
||||
width="672"
|
||||
height="504"
|
||||
id="svg2"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="ntsc-test-signal.svg">
|
||||
<metadata
|
||||
id="metadata24">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="1022"
|
||||
id="namedview22"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.8557524"
|
||||
inkscape:cx="301.89736"
|
||||
inkscape:cy="252"
|
||||
inkscape:window-x="1050"
|
||||
inkscape:window-y="340"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs4" />
|
||||
<g
|
||||
id="layer1">
|
||||
<rect
|
||||
width="672"
|
||||
height="504"
|
||||
x="0"
|
||||
y="0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2762" />
|
||||
<rect
|
||||
width="96"
|
||||
height="336"
|
||||
x="0"
|
||||
y="0"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2768" />
|
||||
<rect
|
||||
width="96"
|
||||
height="336"
|
||||
x="96"
|
||||
y="0"
|
||||
transform="translate(-6.4e-5,0)"
|
||||
style="fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2770" />
|
||||
<rect
|
||||
width="128"
|
||||
height="336"
|
||||
x="192"
|
||||
y="0"
|
||||
transform="matrix(0.75,0,0,1,48,0)"
|
||||
style="fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2772" />
|
||||
<rect
|
||||
width="128"
|
||||
height="336"
|
||||
x="288"
|
||||
y="0"
|
||||
transform="matrix(0.75,0,0,1,72,0)"
|
||||
style="fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2774" />
|
||||
<rect
|
||||
width="128"
|
||||
height="336"
|
||||
x="384"
|
||||
y="0"
|
||||
transform="matrix(0.75,0,0,1,96,0)"
|
||||
style="fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2776" />
|
||||
<rect
|
||||
width="128"
|
||||
height="336"
|
||||
x="480"
|
||||
y="0"
|
||||
transform="matrix(0.75,0,0,1,120,0)"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2778" />
|
||||
<rect
|
||||
width="128"
|
||||
height="336"
|
||||
x="576"
|
||||
y="0"
|
||||
transform="matrix(0.75,0,0,1,144,0)"
|
||||
style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2780" />
|
||||
<rect
|
||||
width="96"
|
||||
height="42"
|
||||
x="0"
|
||||
y="336"
|
||||
style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2782" />
|
||||
<rect
|
||||
width="96"
|
||||
height="42"
|
||||
x="192"
|
||||
y="336"
|
||||
style="fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2784" />
|
||||
<rect
|
||||
width="96"
|
||||
height="42"
|
||||
x="384"
|
||||
y="336"
|
||||
style="fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2786" />
|
||||
<rect
|
||||
width="96"
|
||||
height="42"
|
||||
x="576"
|
||||
y="336"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2788" />
|
||||
<rect
|
||||
width="128"
|
||||
height="126"
|
||||
x="0"
|
||||
y="378"
|
||||
transform="scale(0.9375,1)"
|
||||
style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2790" />
|
||||
<rect
|
||||
width="128"
|
||||
height="126"
|
||||
x="0"
|
||||
y="378"
|
||||
transform="matrix(0.9375,0,0,1,120,0)"
|
||||
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2796" />
|
||||
<rect
|
||||
width="128"
|
||||
height="126"
|
||||
x="0"
|
||||
y="378"
|
||||
transform="matrix(0.9375,0,0,1,240,0)"
|
||||
style="fill:#800080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2798" />
|
||||
<rect
|
||||
width="32"
|
||||
height="126"
|
||||
x="512"
|
||||
y="378"
|
||||
style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2800" />
|
||||
<rect
|
||||
width="32"
|
||||
height="126"
|
||||
x="544"
|
||||
y="378"
|
||||
style="fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect2802" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 55 KiB |
+250
-175
File diff suppressed because it is too large
Load Diff
+72
-17
@@ -1,6 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="fr">
|
||||
<context>
|
||||
<name>AboutDialog</name>
|
||||
<message>
|
||||
<source>About %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MapMap is a free/open source video mapping software.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copyright &copy; 2013 %1.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>See the </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 website</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Changelog</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Librairies</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>License</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ConsoleWindow</name>
|
||||
<message>
|
||||
@@ -46,7 +89,7 @@
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<source>About MapMap</source>
|
||||
<translation>À propos de MapMap</translation>
|
||||
<translation type="vanished">À propos de MapMap</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&New</source>
|
||||
@@ -319,10 +362,6 @@ No camera available in your system</source>
|
||||
<source>Select Color</source>
|
||||
<translation type="unfinished">Choisir une couleur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><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></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paints</source>
|
||||
<translation>Sources</translation>
|
||||
@@ -481,7 +520,7 @@ No camera available in your system</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display &Undo Stack</source>
|
||||
<translation>Afficher la liste des &Undo</translation>
|
||||
<translation type="vanished">Afficher la liste des &Undo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open Conso&le</source>
|
||||
@@ -613,7 +652,15 @@ The original file is not found. Will you locate?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Undo stack</source>
|
||||
<source>Display &Undo History</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Submit Feedback...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Undo history</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -644,15 +691,15 @@ The original file is not found. Will you locate?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock mapping</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="unfinished">Verrouiller le mapping</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Duplicate mapping</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="unfinished">Dupliquer un mapping</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete mapping</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="unfinished">Supprimer le mapping</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -745,10 +792,6 @@ The original file is not found. Will you locate?</source>
|
||||
<source>OSC Setup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apparence</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mapping & Shape</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -765,6 +808,14 @@ The original file is not found. Will you locate?</source>
|
||||
<source>Advanced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Language (requires restart)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Interface</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
@@ -876,7 +927,7 @@ Ligne %2, colonne %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete mapping</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="unfinished">Supprimer le mapping</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Problem at creation of shape.</source>
|
||||
@@ -911,7 +962,11 @@ Ligne %2, colonne %3</translation>
|
||||
<translation>Problème à la création de la source</translation>
|
||||
</message>
|
||||
<message>
|
||||
<translation>Problème à la création du mapping</translation>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Problem at creation of mapping.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -1053,7 +1108,7 @@ Ligne %2, colonne %3</translation>
|
||||
<name>QtFontEditWidget</name>
|
||||
<message>
|
||||
<source>...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="unfinished">...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select Font</source>
|
||||
|
||||
Reference in New Issue
Block a user