From ad92a026701638aee1f10816e8f4351defb1d78d Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Sat, 5 Sep 2015 00:31:58 -0700 Subject: [PATCH 01/77] updated read me --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 809ef56..593620c 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,5 @@ CasterSoundboard A soundboard for hot-keying and playing back sounds. (For podcasting) CasterSoundboard is written in C++ Qt5. + +This is the development branch code. From 171b5debb7f7c1a91b15a1b3a13c34690f510f7b Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 01:07:19 +0200 Subject: [PATCH 02/77] qmake: Add an install target This adds an "install" target to the resulting Makefile, so it's easier to be packaged for distributions. Signed-off-by: aszlig --- CasterSoundboard/CasterSoundboard.pro | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index 43b0f5a..0398d9e 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -31,3 +31,6 @@ FORMS += RESOURCES += \ res.qrc + +target.path = $${PREFIX}/bin +INSTALLS += target From d891d9adb2f885165d6839bb8db2b57402972c14 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 01:08:51 +0200 Subject: [PATCH 03/77] Add a default.nix for development/building for Nix This is mainly so that you could easily have a nix-shell with the dependencies set up and also a way to build a package out of it. Signed-off-by: aszlig --- default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 default.nix diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..ad5e7d4 --- /dev/null +++ b/default.nix @@ -0,0 +1,10 @@ +with import {}; + +stdenv.mkDerivation { + name = "CasterSoundboard"; + src = ./CasterSoundboard; + nativeBuildInputs = [ qt5.qmakeHook qt5.makeQtWrapper ]; + buildInputs = [ qt5.qtmultimedia ]; + enableParallelBuilding = true; + postInstall = "wrapQtProgram \"$out/bin/$name\""; +} From 79f3e94131d8053db6b45e1400b328e4f770cc92 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 03:30:44 +0200 Subject: [PATCH 04/77] player: Give a visual cue about loading state If the player doesn't work correctly (which currently is the case on my system) or can't load the file immediately (like for example from a network resource) it's a good idea to actually show in the tile that it's still trying to load the source. Signed-off-by: aszlig --- CasterSoundboard/CasterPlayer.cpp | 14 ++++++++++++++ CasterSoundboard/CasterPlayer.h | 1 + 2 files changed, 15 insertions(+) diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index baef5d7..cfbe538 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -132,6 +132,7 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) connect(player,SIGNAL(positionChanged(qint64)),this,SLOT(playerPositionChanged(qint64))); connect(player,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(playerStateChanged(QMediaPlayer::State))); connect(player,SIGNAL(metaDataChanged()),this,SLOT(playerMetaDataChanged())); + connect(player,SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),this,SLOT(playerNewMediaStatus(QMediaPlayer::MediaStatus))); } //Set Properties @@ -249,6 +250,19 @@ void CasterPlayerWidget::playerMetaDataChanged() } +void CasterPlayerWidget::playerNewMediaStatus(QMediaPlayer::MediaStatus status) +{ + switch (status) { + case QMediaPlayer::LoadingMedia: + soundNameLabel->setText("Loading..."); + soundNameLabel->setStyleSheet("color:darkblue;"); + break; + default: + soundNameLabel->setStyleSheet(""); + break; + } +} + //-------------- //Private Methods diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h index 533639f..84ad6cf 100644 --- a/CasterSoundboard/CasterPlayer.h +++ b/CasterSoundboard/CasterPlayer.h @@ -103,5 +103,6 @@ public slots: void playerPositionChanged(qint64 position); void playerStateChanged(QMediaPlayer::State state); void playerMetaDataChanged(); + void playerNewMediaStatus(QMediaPlayer::MediaStatus status); }; #endif // CASTERPLAYER_H From 78a95c8bfe9b1b910d79b06acf4b1176232c1298 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 05:46:32 +0200 Subject: [PATCH 05/77] player: Factor out state into a single State enum This not only gives a bit more information about what's going on within a specific player tile, but we now have a single state property which we can use to boil down all the various states of the subwidgets to the CasterPlayer class. Right now we do not yet take into account the QMediaPlayer's state, but that's something for future improvements. So the result is now that the user now should no longer be in the dark if Qt Multimedia fails to load a file. Signed-off-by: aszlig --- CasterSoundboard/CasterPlayer.cpp | 70 +++++++++++++++++-------------- CasterSoundboard/CasterPlayer.h | 14 +++++-- 2 files changed, 50 insertions(+), 34 deletions(-) diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index cfbe538..0841df6 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -51,6 +51,7 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) this->setAcceptDrops(true); //Init Player + state = NoFile; player = new QMediaPlayer(); //Init Properties soundFilePath = new QString(""); @@ -58,9 +59,6 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) progress = 0.0; volume = 100; - //Internal Properties - newMediaLoaded = false; - //Set-Up Widget Layout soundNameLabel = new QLabel(""); soundNameLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); @@ -133,6 +131,7 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) connect(player,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(playerStateChanged(QMediaPlayer::State))); connect(player,SIGNAL(metaDataChanged()),this,SLOT(playerMetaDataChanged())); connect(player,SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),this,SLOT(playerNewMediaStatus(QMediaPlayer::MediaStatus))); + connect(player,SIGNAL(error(QMediaPlayer::Error)),this,SLOT(playerError(QMediaPlayer::Error))); } //Set Properties @@ -224,45 +223,52 @@ void CasterPlayerWidget::playerStateChanged(QMediaPlayer::State state) void CasterPlayerWidget::playerMetaDataChanged() { //Update Meta Data - QFileInfo fi(*soundFilePath); - if(player->metaData(QMediaMetaData::Title).toString() != "") - { - //Use metadata title - soundNameLabel->setText(player->metaData(QMediaMetaData::Title).toString()); - } - else - { - //Use filename as title - soundNameLabel->setText(fi.baseName()); - } int timeLeft = player->duration(); int seconds = (int) (timeLeft / 1000) % 60 ; int minutes = (int) ((timeLeft / (1000*60)) % 60); QString timeRemaining = "-" + QString("%1").arg(minutes,2,'i',0,'0') + ":" + QString("%1").arg(seconds,2,'i',0,'0'); timeLabel->setText(timeRemaining); - - //Hack solution to prevent playing when when meadia loaded. - if(newMediaLoaded) - { - newMediaLoaded = false; - player->stop(); - } - } void CasterPlayerWidget::playerNewMediaStatus(QMediaPlayer::MediaStatus status) { - switch (status) { - case QMediaPlayer::LoadingMedia: - soundNameLabel->setText("Loading..."); - soundNameLabel->setStyleSheet("color:darkblue;"); - break; - default: - soundNameLabel->setStyleSheet(""); - break; + // If we are already in Error state, don't try to update the label at all. + if (state == Error) + return; + + if (status == QMediaPlayer::LoadingMedia) { + soundNameLabel->setText("Loading..."); + soundNameLabel->setStyleSheet("color:darkblue;"); + player->stop(); + state = Loading; + } else if (status != QMediaPlayer::InvalidMedia) { + // We want to change the label on all occasions except if we have + // InvalidMedia, where we also get an Error signal which is handled in + // playerError(). + QFileInfo fi(*soundFilePath); + QString text; + if (player->metaData(QMediaMetaData::Title).toString() != "") + //Use metadata title + text = player->metaData(QMediaMetaData::Title).toString(); + else //Use filename as title + text = QFileInfo(*soundFilePath).baseName(); + soundNameLabel->setText(text); + soundNameLabel->setStyleSheet(""); + state = Active; } } +void CasterPlayerWidget::playerError(QMediaPlayer::Error error) +{ + if (error == QMediaPlayer::NoError) + return; + + soundNameLabel->setText("Error: " + player->errorString()); + soundNameLabel->setStyleSheet("color:red;"); + player->stop(); + state = Error; +} + //-------------- //Private Methods @@ -354,9 +360,11 @@ bool CasterPlayerWidget::openFiles(const QStringList& pathList) fi.suffix() == "wmv") { soundFilePath = new QString(pathList[0]);//Sets File Path + // Put the state into NoFile here, so that we're not going to be stuck + // in the Error state forever. + state = NoFile; player->setVolume(volume); player->setMedia(QUrl::fromLocalFile(soundFilePath->toUtf8().constData())); - newMediaLoaded = true; return true; } else diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h index 84ad6cf..cd8a3f6 100644 --- a/CasterSoundboard/CasterPlayer.h +++ b/CasterSoundboard/CasterPlayer.h @@ -74,6 +74,16 @@ private: //Private Methods int getProgressWidth(); //Use to compute width of progress bar + // Internal state property + enum State { + NoFile, + Loading, + Error, + Active + }; + + State state; + //contained widgets: QVBoxLayout *mainLayout; QHBoxLayout *subMainLayoutH; @@ -88,9 +98,6 @@ private: QPushButton *subMenuButton; QSlider *volumeSlider; - //Internal Properties - bool newMediaLoaded; - signals: //MyWidget's signals.... public slots: @@ -104,5 +111,6 @@ public slots: void playerStateChanged(QMediaPlayer::State state); void playerMetaDataChanged(); void playerNewMediaStatus(QMediaPlayer::MediaStatus status); + void playerError(QMediaPlayer::Error error); }; #endif // CASTERPLAYER_H From 0c9fdcbc9b725d2c47066f2d705d2c8f9e1ad290 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 05:52:03 +0200 Subject: [PATCH 06/77] player: Allow to select a file instead of dragging This is mainly useful because I'm using a tiling WM and don't have a lot of applications available (well, except Chromium, but that's still very much annoying while testing) for dragging and dropping files into CasterSoundboard. Signed-off-by: aszlig --- CasterSoundboard/CasterPlayer.cpp | 71 ++++++++++++++++++++----------- CasterSoundboard/CasterPlayer.h | 5 ++- 2 files changed, 49 insertions(+), 27 deletions(-) diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index 0841df6..cc01ace 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -60,7 +61,7 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) volume = 100; //Set-Up Widget Layout - soundNameLabel = new QLabel(""); + soundNameLabel = new QLabel(""); soundNameLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); QFont sNLF("Georgia",7,-1,false); sNLF.setBold(true); soundNameLabel->setFont(sNLF); @@ -278,6 +279,27 @@ int CasterPlayerWidget::getProgressWidth() return (int)(this->progress * (float)(this->width())); } +bool CasterPlayerWidget::assignFile(const QString &path) +{ + if(openFiles(QStringList(path))) + { + playSound(); + return true; + } + else + { + QMessageBox msgBox; + msgBox.setText("CasterSoundboard does not accept this file type.\nMake sure your system has the necessary codecs installed.\nCasterSoundboard can also play the audio from videos."); + msgBox.setInformativeText("Try: (*.mp3), (*.wav), (*.ogg), (*.flac), (*.m4a).\nAnd Try: (*.mp4), (*.mov), (*.ogv), (*.avi), (*.mpg), (*.wmv)."); + msgBox.setStandardButtons(QMessageBox::Close); + msgBox.setDefaultButton(QMessageBox::Close); + msgBox.setModal(true); + msgBox.exec(); + return false; + } + +} + //Public Methods //===============Player Methods================= void CasterPlayerWidget::playSound() @@ -312,34 +334,31 @@ void CasterPlayerWidget::dragLeaveEvent(QDragLeaveEvent *event) void CasterPlayerWidget::dropEvent(QDropEvent *event) { - const QMimeData* mimeData = event->mimeData(); + const QMimeData* mimeData = event->mimeData(); - if (mimeData->hasUrls()) - { - QStringList pathList; - QList urlList = mimeData->urls(); + if (mimeData->hasUrls()) + { + QString path = mimeData->urls().at(0).toLocalFile(); + if (assignFile(path)) + event->acceptProposedAction(); + } +} - for (int i = 0; i < urlList.size() && i < 32; ++i) - { - pathList.append(urlList.at(i).toLocalFile()); - } +void CasterPlayerWidget::mousePressEvent(QMouseEvent* event) +{ + if (event->button() != Qt::LeftButton) { + event->ignore(); + return; + } - if(openFiles(pathList)) - { - event->acceptProposedAction(); - playSound(); - } - else - { - QMessageBox msgBox; - msgBox.setText("CasterSoundboard does not accept this file type.\nMake sure your system has the necessary codecs installed.\nCasterSoundboard can also play the audio from videos."); - msgBox.setInformativeText("Try: (*.mp3), (*.wav), (*.ogg), (*.flac), (*.m4a).\nAnd Try: (*.mp4), (*.mov), (*.ogv), (*.avi), (*.mpg), (*.wmv)."); - msgBox.setStandardButtons(QMessageBox::Close); - msgBox.setDefaultButton(QMessageBox::Close); - msgBox.setModal(true); - int ret = msgBox.exec(); - } - } + event->accept(); + QString path = QFileDialog::getOpenFileName( + this, "Open audio file", "", + "Audio files (*.mp3 *.wav *.ogg *.flac *.m4a);;" + "Video files (*.mp4 *.mov *.ogv *.avi *.mpg *.wmv)" + ); + if (!path.isNull()) + assignFile(path); } bool CasterPlayerWidget::openFiles(const QStringList& pathList) diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h index cd8a3f6..57e95e4 100644 --- a/CasterSoundboard/CasterPlayer.h +++ b/CasterSoundboard/CasterPlayer.h @@ -68,11 +68,14 @@ protected: void dragMoveEvent(QDragMoveEvent *event); void dragLeaveEvent(QDragLeaveEvent *event); void dropEvent(QDropEvent *event); - bool openFiles(const QStringList& pathList); + // Choose a file instead of dragging + void mousePressEvent(QMouseEvent* event); + bool openFiles(const QStringList &pathList); private: //Private Methods int getProgressWidth(); //Use to compute width of progress bar + bool assignFile(const QString &path); // Internal state property enum State { From f4e59f85a8aba63476819c69122ffdab69a8a8bc Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 05:56:48 +0200 Subject: [PATCH 07/77] default.nix: Add all gstreamer plugins This was the reason audio wasn't working for me so far. In the long term however I think it would be a good idea to actually show an error dialogue with detailed information if that happens. Signed-off-by: aszlig --- default.nix | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index ad5e7d4..0f43a19 100644 --- a/default.nix +++ b/default.nix @@ -4,7 +4,16 @@ stdenv.mkDerivation { name = "CasterSoundboard"; src = ./CasterSoundboard; nativeBuildInputs = [ qt5.qmakeHook qt5.makeQtWrapper ]; - buildInputs = [ qt5.qtmultimedia ]; + buildInputs = [ + qt5.qtmultimedia + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-ugly + ]; enableParallelBuilding = true; - postInstall = "wrapQtProgram \"$out/bin/$name\""; + postInstall = '' + wrapQtProgram "$out/bin/$name" \ + --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" + ''; } From a9a9264eeaab68d6227b6840bf456a44d2d1e81e Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 07:39:36 +0200 Subject: [PATCH 08/77] board: Refactor to use a single hash for layout Having all the keys copy & pasted all over the place is a lot of churn and doesn't need to be like that. We're heading on to saving the state of the board layout and duplicating even more of these lines all over the place is not magically cleaning up the code. Signed-off-by: aszlig --- CasterSoundboard/CasterBoard.cpp | 647 +++---------------------------- CasterSoundboard/CasterBoard.h | 51 +-- 2 files changed, 73 insertions(+), 625 deletions(-) diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp index c17190f..42dfa98 100644 --- a/CasterSoundboard/CasterBoard.cpp +++ b/CasterSoundboard/CasterBoard.cpp @@ -24,603 +24,76 @@ #include "CasterPlayer.h" #include +CasterBoardLayout::CasterBoardLayout(const QString &letter, int posY, int posX) +{ + this->letter = letter; + this->posY = posY; + this->posX = posX; +} + //Constructor============================================= CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) { + layout[Qt::Key_1] = new CasterBoardLayout("1", 0, 0); + layout[Qt::Key_2] = new CasterBoardLayout("2", 0, 1); + layout[Qt::Key_3] = new CasterBoardLayout("3", 0, 2); + layout[Qt::Key_4] = new CasterBoardLayout("4", 0, 3); + layout[Qt::Key_5] = new CasterBoardLayout("5", 0, 4); + layout[Qt::Key_6] = new CasterBoardLayout("6", 0, 5); + layout[Qt::Key_7] = new CasterBoardLayout("7", 0, 6); + layout[Qt::Key_8] = new CasterBoardLayout("8", 0, 7); + + layout[Qt::Key_Q] = new CasterBoardLayout("Q", 1, 0); + layout[Qt::Key_W] = new CasterBoardLayout("W", 1, 1); + layout[Qt::Key_E] = new CasterBoardLayout("E", 1, 2); + layout[Qt::Key_R] = new CasterBoardLayout("R", 1, 3); + layout[Qt::Key_T] = new CasterBoardLayout("T", 1, 4); + layout[Qt::Key_Y] = new CasterBoardLayout("Y", 1, 5); + layout[Qt::Key_U] = new CasterBoardLayout("U", 1, 6); + layout[Qt::Key_I] = new CasterBoardLayout("I", 1, 7); + + layout[Qt::Key_A] = new CasterBoardLayout("A", 2, 0); + layout[Qt::Key_S] = new CasterBoardLayout("S", 2, 1); + layout[Qt::Key_D] = new CasterBoardLayout("D", 2, 2); + layout[Qt::Key_F] = new CasterBoardLayout("F", 2, 3); + layout[Qt::Key_G] = new CasterBoardLayout("G", 2, 4); + layout[Qt::Key_H] = new CasterBoardLayout("H", 2, 5); + layout[Qt::Key_J] = new CasterBoardLayout("J", 2, 6); + layout[Qt::Key_K] = new CasterBoardLayout("K", 2, 7); + + layout[Qt::Key_Z] = new CasterBoardLayout("Z", 3, 0); + layout[Qt::Key_X] = new CasterBoardLayout("X", 3, 1); + layout[Qt::Key_C] = new CasterBoardLayout("C", 3, 2); + layout[Qt::Key_V] = new CasterBoardLayout("V", 3, 3); + layout[Qt::Key_B] = new CasterBoardLayout("B", 3, 4); + layout[Qt::Key_N] = new CasterBoardLayout("N", 3, 5); + layout[Qt::Key_M] = new CasterBoardLayout("M", 3, 6); + layout[Qt::Key_Comma] = new CasterBoardLayout(",", 3, 7); + QGridLayout *boardLayout = new QGridLayout(this); - //WIDGETS - player1 = new CasterPlayerWidget; - player1->setHotKeyLetter("1"); - player2 = new CasterPlayerWidget; - player2->setHotKeyLetter("2"); - player3 = new CasterPlayerWidget; - player3->setHotKeyLetter("3"); - player4 = new CasterPlayerWidget; - player4->setHotKeyLetter("4"); - player5 = new CasterPlayerWidget; - player5->setHotKeyLetter("5"); - player6 = new CasterPlayerWidget; - player6->setHotKeyLetter("6"); - player7 = new CasterPlayerWidget; - player7->setHotKeyLetter("7"); - player8 = new CasterPlayerWidget; - player8->setHotKeyLetter("8"); + QHash::const_iterator i = layout.constBegin(); - playerQ = new CasterPlayerWidget; - playerQ->setHotKeyLetter("Q"); - playerW = new CasterPlayerWidget; - playerW->setHotKeyLetter("W"); - playerE = new CasterPlayerWidget; - playerE->setHotKeyLetter("E"); - playerR = new CasterPlayerWidget; - playerR->setHotKeyLetter("R"); - playerT = new CasterPlayerWidget; - playerT->setHotKeyLetter("T"); - playerY = new CasterPlayerWidget; - playerY->setHotKeyLetter("Y"); - playerU = new CasterPlayerWidget; - playerU->setHotKeyLetter("U"); - playerI = new CasterPlayerWidget; - playerI->setHotKeyLetter("I"); - - playerA = new CasterPlayerWidget; - playerA->setHotKeyLetter("A"); - playerS = new CasterPlayerWidget; - playerS->setHotKeyLetter("S"); - playerD = new CasterPlayerWidget; - playerD->setHotKeyLetter("D"); - playerF = new CasterPlayerWidget; - playerF->setHotKeyLetter("F"); - playerG = new CasterPlayerWidget; - playerG->setHotKeyLetter("G"); - playerH = new CasterPlayerWidget; - playerH->setHotKeyLetter("H"); - playerJ = new CasterPlayerWidget; - playerJ->setHotKeyLetter("J"); - playerK = new CasterPlayerWidget; - playerK->setHotKeyLetter("K"); - - playerZ = new CasterPlayerWidget; - playerZ->setHotKeyLetter("Z"); - playerX = new CasterPlayerWidget; - playerX->setHotKeyLetter("X"); - playerC = new CasterPlayerWidget; - playerC->setHotKeyLetter("C"); - playerV = new CasterPlayerWidget; - playerV->setHotKeyLetter("V"); - playerB = new CasterPlayerWidget; - playerB->setHotKeyLetter("B"); - playerN = new CasterPlayerWidget; - playerN->setHotKeyLetter("N"); - playerM = new CasterPlayerWidget; - playerM->setHotKeyLetter("M"); - playerCOMMA = new CasterPlayerWidget; - playerCOMMA->setHotKeyLetter(","); - - //ADD TO LAYOUT - boardLayout->addWidget(player1, 0,0); - boardLayout->addWidget(player2, 0,1); - boardLayout->addWidget(player3, 0,2); - boardLayout->addWidget(player4, 0,3); - boardLayout->addWidget(player5, 0,4); - boardLayout->addWidget(player6, 0,5); - boardLayout->addWidget(player7, 0,6); - boardLayout->addWidget(player8, 0,7); - - boardLayout->addWidget(playerQ, 1,0); - boardLayout->addWidget(playerW, 1,1); - boardLayout->addWidget(playerE, 1,2); - boardLayout->addWidget(playerR, 1,3); - boardLayout->addWidget(playerT, 1,4); - boardLayout->addWidget(playerY, 1,5); - boardLayout->addWidget(playerU, 1,6); - boardLayout->addWidget(playerI, 1,7); - - boardLayout->addWidget(playerA, 2,0); - boardLayout->addWidget(playerS, 2,1); - boardLayout->addWidget(playerD, 2,2); - boardLayout->addWidget(playerF, 2,3); - boardLayout->addWidget(playerG, 2,4); - boardLayout->addWidget(playerH, 2,5); - boardLayout->addWidget(playerJ, 2,6); - boardLayout->addWidget(playerK, 2,7); - - boardLayout->addWidget(playerZ, 3,0); - boardLayout->addWidget(playerX, 3,1); - boardLayout->addWidget(playerC, 3,2); - boardLayout->addWidget(playerV, 3,3); - boardLayout->addWidget(playerB, 3,4); - boardLayout->addWidget(playerN, 3,5); - boardLayout->addWidget(playerM, 3,6); - boardLayout->addWidget(playerCOMMA, 3,7); + while (i != layout.constEnd()) { + CasterPlayerWidget *widget = new CasterPlayerWidget(); + i.value()->widget = widget; + widget->setHotKeyLetter(i.value()->letter); + boardLayout->addWidget(widget, i.value()->posY, i.value()->posX); + ++i; + } } void CasterBoard::keyReleaseEvent(QKeyEvent *event) { //Handles All Hot Key Behavior - //BOARD 1 - if(event->key() == Qt::Key_1) - { - if(player1->player->state() == QMediaPlayer::PlayingState) - { - player1->stopSound(); - } - else if (player1->player->state() == QMediaPlayer::PausedState) - { - player1->playSound(); - } - else if (player1->player->state() == QMediaPlayer::StoppedState) - { - player1->playSound(); - } - } - else if(event->key() == Qt::Key_2) - { - if(player2->player->state() == QMediaPlayer::PlayingState) - { - player2->stopSound(); - } - else if (player2->player->state() == QMediaPlayer::PausedState) - { - player2->playSound(); - } - else if (player2->player->state() == QMediaPlayer::StoppedState) - { - player2->playSound(); - } - } - else if(event->key() == Qt::Key_3) - { - if(player3->player->state() == QMediaPlayer::PlayingState) - { - player3->stopSound(); - } - else if (player3->player->state() == QMediaPlayer::PausedState) - { - player3->playSound(); - } - else if (player3->player->state() == QMediaPlayer::StoppedState) - { - player3->playSound(); - } - } - else if(event->key() == Qt::Key_4) - { - if(player4->player->state() == QMediaPlayer::PlayingState) - { - player4->stopSound(); - } - else if (player4->player->state() == QMediaPlayer::PausedState) - { - player4->playSound(); - } - else if (player4->player->state() == QMediaPlayer::StoppedState) - { - player4->playSound(); - } - } - else if(event->key() == Qt::Key_5) - { - if(player5->player->state() == QMediaPlayer::PlayingState) - { - player5->stopSound(); - } - else if (player5->player->state() == QMediaPlayer::PausedState) - { - player5->playSound(); - } - else if (player5->player->state() == QMediaPlayer::StoppedState) - { - player5->playSound(); - } - } - else if(event->key() == Qt::Key_6) - { - if(player6->player->state() == QMediaPlayer::PlayingState) - { - player6->stopSound(); - } - else if (player6->player->state() == QMediaPlayer::PausedState) - { - player6->playSound(); - } - else if (player6->player->state() == QMediaPlayer::StoppedState) - { - player6->playSound(); - } - } - else if(event->key() == Qt::Key_7) - { - if(player7->player->state() == QMediaPlayer::PlayingState) - { - player7->stopSound(); - } - else if (player7->player->state() == QMediaPlayer::PausedState) - { - player7->playSound(); - } - else if (player7->player->state() == QMediaPlayer::StoppedState) - { - player7->playSound(); - } - } - else if(event->key() == Qt::Key_8) - { - if(player8->player->state() == QMediaPlayer::PlayingState) - { - player8->stopSound(); - } - else if (player8->player->state() == QMediaPlayer::PausedState) - { - player8->playSound(); - } - else if (player8->player->state() == QMediaPlayer::StoppedState) - { - player8->playSound(); - } - } - //BOARD 2 - else if(event->key() == Qt::Key_Q) - { - if(playerQ->player->state() == QMediaPlayer::PlayingState) - { - playerQ->stopSound(); - } - else if (playerQ->player->state() == QMediaPlayer::PausedState) - { - playerQ->playSound(); - } - else if (playerQ->player->state() == QMediaPlayer::StoppedState) - { - playerQ->playSound(); - } - } - else if(event->key() == Qt::Key_W) - { - if(playerW->player->state() == QMediaPlayer::PlayingState) - { - playerW->stopSound(); - } - else if (playerW->player->state() == QMediaPlayer::PausedState) - { - playerW->playSound(); - } - else if (playerW->player->state() == QMediaPlayer::StoppedState) - { - playerW->playSound(); - } - } - else if(event->key() == Qt::Key_E) - { - if(playerE->player->state() == QMediaPlayer::PlayingState) - { - playerE->stopSound(); - } - else if (playerE->player->state() == QMediaPlayer::PausedState) - { - playerE->playSound(); - } - else if (playerE->player->state() == QMediaPlayer::StoppedState) - { - playerE->playSound(); - } - } - else if(event->key() == Qt::Key_R) - { - if(playerR->player->state() == QMediaPlayer::PlayingState) - { - playerR->stopSound(); - } - else if (playerR->player->state() == QMediaPlayer::PausedState) - { - playerR->playSound(); - } - else if (playerR->player->state() == QMediaPlayer::StoppedState) - { - playerR->playSound(); - } - } - else if(event->key() == Qt::Key_T) - { - if(playerT->player->state() == QMediaPlayer::PlayingState) - { - playerT->stopSound(); - } - else if (playerT->player->state() == QMediaPlayer::PausedState) - { - playerT->playSound(); - } - else if (playerT->player->state() == QMediaPlayer::StoppedState) - { - playerT->playSound(); - } - } - else if(event->key() == Qt::Key_Y) - { - if(playerY->player->state() == QMediaPlayer::PlayingState) - { - playerY->stopSound(); - } - else if (playerY->player->state() == QMediaPlayer::PausedState) - { - playerY->playSound(); - } - else if (playerY->player->state() == QMediaPlayer::StoppedState) - { - playerY->playSound(); - } - } - else if(event->key() == Qt::Key_U) - { - if(playerU->player->state() == QMediaPlayer::PlayingState) - { - playerU->stopSound(); - } - else if (playerU->player->state() == QMediaPlayer::PausedState) - { - playerU->playSound(); - } - else if (playerU->player->state() == QMediaPlayer::StoppedState) - { - playerU->playSound(); - } - } - else if(event->key() == Qt::Key_I) - { - if(playerI->player->state() == QMediaPlayer::PlayingState) - { - playerI->stopSound(); - } - else if (playerI->player->state() == QMediaPlayer::PausedState) - { - playerI->playSound(); - } - else if (playerI->player->state() == QMediaPlayer::StoppedState) - { - playerI->playSound(); - } - } - //BOARD 3 - else if(event->key() == Qt::Key_A) - { - if(playerA->player->state() == QMediaPlayer::PlayingState) - { - playerA->stopSound(); - } - else if (playerA->player->state() == QMediaPlayer::PausedState) - { - playerA->playSound(); - } - else if (playerA->player->state() == QMediaPlayer::StoppedState) - { - playerA->playSound(); - } - } - else if(event->key() == Qt::Key_S) - { - if(playerS->player->state() == QMediaPlayer::PlayingState) - { - playerS->stopSound(); - } - else if (playerS->player->state() == QMediaPlayer::PausedState) - { - playerS->playSound(); - } - else if (playerS->player->state() == QMediaPlayer::StoppedState) - { - playerS->playSound(); - } - } - else if(event->key() == Qt::Key_D) - { - if(playerD->player->state() == QMediaPlayer::PlayingState) - { - playerD->stopSound(); - } - else if (playerD->player->state() == QMediaPlayer::PausedState) - { - playerD->playSound(); - } - else if (playerD->player->state() == QMediaPlayer::StoppedState) - { - playerD->playSound(); - } - } - else if(event->key() == Qt::Key_F) - { - if(playerF->player->state() == QMediaPlayer::PlayingState) - { - playerF->stopSound(); - } - else if (playerF->player->state() == QMediaPlayer::PausedState) - { - playerF->playSound(); - } - else if (playerF->player->state() == QMediaPlayer::StoppedState) - { - playerF->playSound(); - } - } - else if(event->key() == Qt::Key_G) - { - if(playerG->player->state() == QMediaPlayer::PlayingState) - { - playerG->stopSound(); - } - else if (playerG->player->state() == QMediaPlayer::PausedState) - { - playerG->playSound(); - } - else if (playerG->player->state() == QMediaPlayer::StoppedState) - { - playerG->playSound(); - } - } - else if(event->key() == Qt::Key_H) - { - if(playerH->player->state() == QMediaPlayer::PlayingState) - { - playerH->stopSound(); - } - else if (playerH->player->state() == QMediaPlayer::PausedState) - { - playerH->playSound(); - } - else if (playerH->player->state() == QMediaPlayer::StoppedState) - { - playerH->playSound(); - } - } - else if(event->key() == Qt::Key_J) - { - if(playerJ->player->state() == QMediaPlayer::PlayingState) - { - playerJ->stopSound(); - } - else if (playerJ->player->state() == QMediaPlayer::PausedState) - { - playerJ->playSound(); - } - else if (playerJ->player->state() == QMediaPlayer::StoppedState) - { - playerJ->playSound(); - } - } - else if(event->key() == Qt::Key_K) - { - if(playerK->player->state() == QMediaPlayer::PlayingState) - { - playerK->stopSound(); - } - else if (playerK->player->state() == QMediaPlayer::PausedState) - { - playerK->playSound(); - } - else if (playerK->player->state() == QMediaPlayer::StoppedState) - { - playerK->playSound(); - } - } - //BOARD 4 - else if(event->key() == Qt::Key_Z) - { - if(playerZ->player->state() == QMediaPlayer::PlayingState) - { - playerZ->stopSound(); - } - else if (playerZ->player->state() == QMediaPlayer::PausedState) - { - playerZ->playSound(); - } - else if (playerZ->player->state() == QMediaPlayer::StoppedState) - { - playerZ->playSound(); - } - } - else if(event->key() == Qt::Key_X) - { - if(playerX->player->state() == QMediaPlayer::PlayingState) - { - playerX->stopSound(); - } - else if (playerX->player->state() == QMediaPlayer::PausedState) - { - playerX->playSound(); - } - else if (playerX->player->state() == QMediaPlayer::StoppedState) - { - playerX->playSound(); - } - } - else if(event->key() == Qt::Key_C) - { - if(playerC->player->state() == QMediaPlayer::PlayingState) - { - playerC->stopSound(); - } - else if (playerC->player->state() == QMediaPlayer::PausedState) - { - playerC->playSound(); - } - else if (playerC->player->state() == QMediaPlayer::StoppedState) - { - playerC->playSound(); - } - } - else if(event->key() == Qt::Key_V) - { - if(playerV->player->state() == QMediaPlayer::PlayingState) - { - playerV->stopSound(); - } - else if (playerV->player->state() == QMediaPlayer::PausedState) - { - playerV->playSound(); - } - else if (playerV->player->state() == QMediaPlayer::StoppedState) - { - playerV->playSound(); - } - } - else if(event->key() == Qt::Key_B) - { - if(playerB->player->state() == QMediaPlayer::PlayingState) - { - playerB->stopSound(); - } - else if (playerB->player->state() == QMediaPlayer::PausedState) - { - playerB->playSound(); - } - else if (playerB->player->state() == QMediaPlayer::StoppedState) - { - playerB->playSound(); - } - } - else if(event->key() == Qt::Key_N) - { - if(playerN->player->state() == QMediaPlayer::PlayingState) - { - playerN->stopSound(); - } - else if (playerN->player->state() == QMediaPlayer::PausedState) - { - playerN->playSound(); - } - else if (playerN->player->state() == QMediaPlayer::StoppedState) - { - playerN->playSound(); - } - } - else if(event->key() == Qt::Key_M) - { - if(playerM->player->state() == QMediaPlayer::PlayingState) - { - playerM->stopSound(); - } - else if (playerM->player->state() == QMediaPlayer::PausedState) - { - playerM->playSound(); - } - else if (playerM->player->state() == QMediaPlayer::StoppedState) - { - playerM->playSound(); - } - } - else if(event->key() == Qt::Key_Comma) - { - if(playerCOMMA->player->state() == QMediaPlayer::PlayingState) - { - playerCOMMA->stopSound(); - } - else if (playerCOMMA->player->state() == QMediaPlayer::PausedState) - { - playerCOMMA->playSound(); - } - else if (playerCOMMA->player->state() == QMediaPlayer::StoppedState) - { - playerCOMMA->playSound(); - } + if (!layout.contains(event->key())) + return; + + CasterPlayerWidget *widget = layout.value(event->key())->widget; + + switch (widget->player->state()) { + case QMediaPlayer::PlayingState: widget->stopSound(); break; + case QMediaPlayer::PausedState: widget->playSound(); break; + case QMediaPlayer::StoppedState: widget->playSound(); break; } } diff --git a/CasterSoundboard/CasterBoard.h b/CasterSoundboard/CasterBoard.h index e51e417..2bc4eea 100644 --- a/CasterSoundboard/CasterBoard.h +++ b/CasterSoundboard/CasterBoard.h @@ -23,10 +23,22 @@ #ifndef CASTERBOARD_H #define CASTERBOARD_H #include +#include //forward declarations class CasterPlayerWidget; +class CasterBoardLayout : public QObject +{ + Q_OBJECT +public: + CasterBoardLayout(const QString &letter, int posY, int posX); + + QString letter; + int posX, posY; + CasterPlayerWidget *widget; +}; + class CasterBoard : public QWidget //inherit from QWidget { Q_OBJECT @@ -42,44 +54,7 @@ protected: void keyReleaseEvent(QKeyEvent *event);//Capture Hot Keys private: - //Private Methods - - //WIDGETS - CasterPlayerWidget *player1; - CasterPlayerWidget *player2; - CasterPlayerWidget *player3; - CasterPlayerWidget *player4; - CasterPlayerWidget *player5; - CasterPlayerWidget *player6; - CasterPlayerWidget *player7; - CasterPlayerWidget *player8; - - CasterPlayerWidget *playerQ; - CasterPlayerWidget *playerW; - CasterPlayerWidget *playerE; - CasterPlayerWidget *playerR; - CasterPlayerWidget *playerT; - CasterPlayerWidget *playerY; - CasterPlayerWidget *playerU; - CasterPlayerWidget *playerI; - - CasterPlayerWidget *playerA; - CasterPlayerWidget *playerS; - CasterPlayerWidget *playerD; - CasterPlayerWidget *playerF; - CasterPlayerWidget *playerG; - CasterPlayerWidget *playerH; - CasterPlayerWidget *playerJ; - CasterPlayerWidget *playerK; - - CasterPlayerWidget *playerZ; - CasterPlayerWidget *playerX; - CasterPlayerWidget *playerC; - CasterPlayerWidget *playerV; - CasterPlayerWidget *playerB; - CasterPlayerWidget *playerN; - CasterPlayerWidget *playerM; - CasterPlayerWidget *playerCOMMA; + QHash layout; signals: //SIGNALS From 8156d69784e042d0685417d8235228785813f748 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 07:50:21 +0200 Subject: [PATCH 09/77] Move CasterBoardLayout class into its own file We're going to extend that class, so let's give it its own file. Signed-off-by: aszlig --- CasterSoundboard/CasterBoard.cpp | 7 ----- CasterSoundboard/CasterBoard.h | 12 +------- CasterSoundboard/CasterBoardLayout.cpp | 30 +++++++++++++++++++ CasterSoundboard/CasterBoardLayout.h | 40 ++++++++++++++++++++++++++ CasterSoundboard/CasterSoundboard.pro | 2 ++ 5 files changed, 73 insertions(+), 18 deletions(-) create mode 100644 CasterSoundboard/CasterBoardLayout.cpp create mode 100644 CasterSoundboard/CasterBoardLayout.h diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp index 42dfa98..c2f4839 100644 --- a/CasterSoundboard/CasterBoard.cpp +++ b/CasterSoundboard/CasterBoard.cpp @@ -24,13 +24,6 @@ #include "CasterPlayer.h" #include -CasterBoardLayout::CasterBoardLayout(const QString &letter, int posY, int posX) -{ - this->letter = letter; - this->posY = posY; - this->posX = posX; -} - //Constructor============================================= CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) { diff --git a/CasterSoundboard/CasterBoard.h b/CasterSoundboard/CasterBoard.h index 2bc4eea..a4e7ff3 100644 --- a/CasterSoundboard/CasterBoard.h +++ b/CasterSoundboard/CasterBoard.h @@ -22,23 +22,13 @@ */ #ifndef CASTERBOARD_H #define CASTERBOARD_H +#include "CasterBoardLayout.h" #include #include //forward declarations class CasterPlayerWidget; -class CasterBoardLayout : public QObject -{ - Q_OBJECT -public: - CasterBoardLayout(const QString &letter, int posY, int posX); - - QString letter; - int posX, posY; - CasterPlayerWidget *widget; -}; - class CasterBoard : public QWidget //inherit from QWidget { Q_OBJECT diff --git a/CasterSoundboard/CasterBoardLayout.cpp b/CasterSoundboard/CasterBoardLayout.cpp new file mode 100644 index 0000000..b67cac5 --- /dev/null +++ b/CasterSoundboard/CasterBoardLayout.cpp @@ -0,0 +1,30 @@ +/* + * Copyright 2017 aszlig + * + * This file is part of CasterSoundboard. An application for playing hot-keyed + * sounds. For more information, please visit: + * + * https://github.com/JupiterBroadcasting/CasterSoundboard + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "CasterBoardLayout.h" + +CasterBoardLayout::CasterBoardLayout(const QString &letter, int posY, int posX) +{ + this->letter = letter; + this->posY = posY; + this->posX = posX; +} diff --git a/CasterSoundboard/CasterBoardLayout.h b/CasterSoundboard/CasterBoardLayout.h new file mode 100644 index 0000000..2ff7dfa --- /dev/null +++ b/CasterSoundboard/CasterBoardLayout.h @@ -0,0 +1,40 @@ +/* + * Copyright 2017 aszlig + * + * This file is part of CasterSoundboard. An application for playing hot-keyed + * sounds. For more information, please visit: + * + * https://github.com/JupiterBroadcasting/CasterSoundboard + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#ifndef CASTERBOARDLAYOUT_H +#define CASTERBOARDLAYOUT_H +#include + +#include "CasterPlayer.h" + +class CasterBoardLayout : public QObject +{ + Q_OBJECT +public: + CasterBoardLayout(const QString &letter, int posY, int posX); + + QString letter; + int posX, posY; + CasterPlayerWidget *widget; +}; + +#endif // CASTERBOARD_H diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index 0398d9e..6a13c15 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -16,6 +16,7 @@ TEMPLATE = app SOURCES += main.cpp\ CasterPlayer.cpp \ CasterBoard.cpp \ + CasterBoardLayout.cpp \ MainWindow.cpp \ CasterLabelColorPicker.cpp \ CSS.cpp @@ -23,6 +24,7 @@ SOURCES += main.cpp\ HEADERS += \ CasterPlayer.h \ CasterBoard.h \ + CasterBoardLayout.h \ CSS.h \ MainWindow.h \ CasterLabelColorPicker.h From d48cfbf72d58b32df57db2162fe71cd395132c50 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 11:22:15 +0200 Subject: [PATCH 10/77] Save and restore layout on exit/startup We already have a map of all the keys and their corresponding CasterBoardLayout values, which link to the corresponding widget. So when closing the window, the layout is saved using QSettings within the [boards] section in an array mapping from the key id to the file name, which looks like this: [boards] 1\49=/path/to/foo.ogg 1\title=aaa 2\69=/path/to/bar.flac 2\title=bbb size=2 Of course, if we have more complex layouts which doesn't involve a grid, this will fall short, but we can still implement this once that's the case. Signed-off-by: aszlig Fixes: #3 --- CasterSoundboard/CasterBoard.cpp | 26 ++++++++++++++++++++++ CasterSoundboard/CasterBoard.h | 4 ++++ CasterSoundboard/CasterPlayer.cpp | 37 ++++++++++++++++--------------- CasterSoundboard/CasterPlayer.h | 2 +- CasterSoundboard/MainWindow.h | 3 +++ CasterSoundboard/mainwindow.cpp | 37 +++++++++++++++++++++++++++++++ 6 files changed, 90 insertions(+), 19 deletions(-) diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp index c2f4839..e6f1e9c 100644 --- a/CasterSoundboard/CasterBoard.cpp +++ b/CasterSoundboard/CasterBoard.cpp @@ -76,6 +76,32 @@ CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) } } +void CasterBoard::saveLayout(QSettings &settings) +{ + QHash::const_iterator i = layout.constBegin(); + + while (i != layout.constEnd()) { + CasterPlayerWidget *widget = i.value()->widget; + QString keystr = QString::number(i.key()); + if (!widget->soundFilePath->isEmpty()) + settings.setValue(keystr, *widget->soundFilePath); + ++i; + } +} + +void CasterBoard::restoreLayout(const QSettings &settings) +{ + QHash::const_iterator i = layout.constBegin(); + + while (i != layout.constEnd()) { + CasterPlayerWidget *widget = i.value()->widget; + QString keystr = QString::number(i.key()); + if (settings.contains(keystr)) + widget->assignFile(settings.value(keystr).toString()); + ++i; + } +} + void CasterBoard::keyReleaseEvent(QKeyEvent *event) { //Handles All Hot Key Behavior diff --git a/CasterSoundboard/CasterBoard.h b/CasterSoundboard/CasterBoard.h index a4e7ff3..86737a6 100644 --- a/CasterSoundboard/CasterBoard.h +++ b/CasterSoundboard/CasterBoard.h @@ -25,6 +25,7 @@ #include "CasterBoardLayout.h" #include #include +#include //forward declarations class CasterPlayerWidget; @@ -36,6 +37,9 @@ public: //Constructor CasterBoard(QWidget* parent = 0); //don't forget to pass the parent + void saveLayout(QSettings &settings); + void restoreLayout(const QSettings &settings); + //Properties diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index cc01ace..6ff0ea6 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -279,11 +279,24 @@ int CasterPlayerWidget::getProgressWidth() return (int)(this->progress * (float)(this->width())); } +//Public Methods +//===============Player Methods================= +void CasterPlayerWidget::playSound() +{ + player->setVolume(volume); + player->play(); +} + +void CasterPlayerWidget::stopSound() +{ + player->setVolume(volume); + player->stop(); +} + bool CasterPlayerWidget::assignFile(const QString &path) { if(openFiles(QStringList(path))) { - playSound(); return true; } else @@ -299,20 +312,6 @@ bool CasterPlayerWidget::assignFile(const QString &path) } } - -//Public Methods -//===============Player Methods================= -void CasterPlayerWidget::playSound() -{ - player->setVolume(volume); - player->play(); -} - -void CasterPlayerWidget::stopSound() -{ - player->setVolume(volume); - player->stop(); -} //================================================== //Protected Methods @@ -339,8 +338,10 @@ void CasterPlayerWidget::dropEvent(QDropEvent *event) if (mimeData->hasUrls()) { QString path = mimeData->urls().at(0).toLocalFile(); - if (assignFile(path)) + if (assignFile(path)) { + playSound(); event->acceptProposedAction(); + } } } @@ -357,8 +358,8 @@ void CasterPlayerWidget::mousePressEvent(QMouseEvent* event) "Audio files (*.mp3 *.wav *.ogg *.flac *.m4a);;" "Video files (*.mp4 *.mov *.ogv *.avi *.mpg *.wmv)" ); - if (!path.isNull()) - assignFile(path); + if (!path.isNull() && assignFile(path)) + playSound(); } bool CasterPlayerWidget::openFiles(const QStringList& pathList) diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h index 57e95e4..19ff003 100644 --- a/CasterSoundboard/CasterPlayer.h +++ b/CasterSoundboard/CasterPlayer.h @@ -51,6 +51,7 @@ public: //Player Methhods void playSound();//Plays sound void stopSound();//Stops sound + bool assignFile(const QString &path); //Properties QString *soundFilePath; @@ -75,7 +76,6 @@ protected: private: //Private Methods int getProgressWidth(); //Use to compute width of progress bar - bool assignFile(const QString &path); // Internal state property enum State { diff --git a/CasterSoundboard/MainWindow.h b/CasterSoundboard/MainWindow.h index c8b883d..6dfd4a3 100644 --- a/CasterSoundboard/MainWindow.h +++ b/CasterSoundboard/MainWindow.h @@ -23,6 +23,7 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include +#include //forward declarations class QTabWidget; @@ -46,6 +47,7 @@ protected: //PROPERTIES //METHODS + void closeEvent(QCloseEvent *event) override; //WIDGETS @@ -53,6 +55,7 @@ private: //PROPERTIES //METHODS + void restoreSettings(); //WIDGETS QPushButton *addNewTabButton; diff --git a/CasterSoundboard/mainwindow.cpp b/CasterSoundboard/mainwindow.cpp index c7b72ef..2f9da2a 100644 --- a/CasterSoundboard/mainwindow.cpp +++ b/CasterSoundboard/mainwindow.cpp @@ -59,11 +59,48 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) //SET LAYOUT this->setLayout(layout); + restoreSettings(); + //MAKE CONNECTIONS connect(aboutButton,SIGNAL(clicked()),this,SLOT(aboutBox())); connect(addNewTabButton,SIGNAL(clicked()),this,SLOT(addNewTab())); connect(mainTabContainer,SIGNAL(tabCloseRequested(int)),this,SLOT(mainTabContainerTabClosedRequested(int))); +} +void MainWindow::closeEvent(QCloseEvent *event) +{ + QSettings settings("Jupiter Broadcasting", "CasterSoundboard"); + + settings.beginWriteArray("boards"); + + for (int i = 0; i < mainTabContainer->count(); ++i) { + settings.setArrayIndex(i); + settings.setValue("title", mainTabContainer->tabText(i)); + + CasterBoard *cb; + cb = static_cast(mainTabContainer->widget(i)); + cb->saveLayout(settings); + } + + settings.endArray(); + + event->accept(); +} + +void MainWindow::restoreSettings() +{ + QSettings settings("Jupiter Broadcasting", "CasterSoundboard"); + + int size = settings.beginReadArray("boards"); + + for (int i = 0; i < size; ++i) { + settings.setArrayIndex(i); + + CasterBoard *cb = new CasterBoard; + mainTabContainer->addTab(cb, settings.value("title").toString()); + cb->restoreLayout(settings); + } + settings.endArray(); } //SLOTS From d1711e77899a772c56188c0ced31594d6023f7cf Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 3 May 2017 12:03:35 +0200 Subject: [PATCH 11/77] CasterBoard: Refactor further + make more readable The pull request made by @freqlabs is much more readable, because it also gets rid of the hardcoded grid coordinates. So this is mainly a rebase of his commit 04f5d1d92c3cc8b2d0312961b4d589 in #9 on top of my changes: Use a QMap to simplify CasterBoard Instead of using separate member variables for every player, a single map can both store the players and provide a convenient mechanism for mapping key press events to the appropriate player. The map uses a Qt::Key symbol as the key and stores the pointer to each widget as the value. To populate the map, we iterate over each character in a string, where the characters correspond to the labels of the hotkey widgets. The corresponding Qt::Key values are stored in another array that is accessed in parallel. A counter keeps track of the offset in the keys array and is also used to calculate the grid position of each widget. Instead of a map I'm still using a QHash, because it doesn't allow for duplicates and is also faster in lookup. I've also noticed that he's been using C++11 constructs, so I'm also using these for saveLayout() and restoreLayout() as well. Signed-off-by: aszlig Cc: @freqlabs --- CasterSoundboard/CasterBoard.cpp | 87 +++++++++++++------------------- 1 file changed, 36 insertions(+), 51 deletions(-) diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp index e6f1e9c..7c4b097 100644 --- a/CasterSoundboard/CasterBoard.cpp +++ b/CasterSoundboard/CasterBoard.cpp @@ -27,78 +27,63 @@ //Constructor============================================= CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) { - layout[Qt::Key_1] = new CasterBoardLayout("1", 0, 0); - layout[Qt::Key_2] = new CasterBoardLayout("2", 0, 1); - layout[Qt::Key_3] = new CasterBoardLayout("3", 0, 2); - layout[Qt::Key_4] = new CasterBoardLayout("4", 0, 3); - layout[Qt::Key_5] = new CasterBoardLayout("5", 0, 4); - layout[Qt::Key_6] = new CasterBoardLayout("6", 0, 5); - layout[Qt::Key_7] = new CasterBoardLayout("7", 0, 6); - layout[Qt::Key_8] = new CasterBoardLayout("8", 0, 7); + Qt::Key const keys[] = { + Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, + Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, - layout[Qt::Key_Q] = new CasterBoardLayout("Q", 1, 0); - layout[Qt::Key_W] = new CasterBoardLayout("W", 1, 1); - layout[Qt::Key_E] = new CasterBoardLayout("E", 1, 2); - layout[Qt::Key_R] = new CasterBoardLayout("R", 1, 3); - layout[Qt::Key_T] = new CasterBoardLayout("T", 1, 4); - layout[Qt::Key_Y] = new CasterBoardLayout("Y", 1, 5); - layout[Qt::Key_U] = new CasterBoardLayout("U", 1, 6); - layout[Qt::Key_I] = new CasterBoardLayout("I", 1, 7); + Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, + Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, - layout[Qt::Key_A] = new CasterBoardLayout("A", 2, 0); - layout[Qt::Key_S] = new CasterBoardLayout("S", 2, 1); - layout[Qt::Key_D] = new CasterBoardLayout("D", 2, 2); - layout[Qt::Key_F] = new CasterBoardLayout("F", 2, 3); - layout[Qt::Key_G] = new CasterBoardLayout("G", 2, 4); - layout[Qt::Key_H] = new CasterBoardLayout("H", 2, 5); - layout[Qt::Key_J] = new CasterBoardLayout("J", 2, 6); - layout[Qt::Key_K] = new CasterBoardLayout("K", 2, 7); + Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, + Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, - layout[Qt::Key_Z] = new CasterBoardLayout("Z", 3, 0); - layout[Qt::Key_X] = new CasterBoardLayout("X", 3, 1); - layout[Qt::Key_C] = new CasterBoardLayout("C", 3, 2); - layout[Qt::Key_V] = new CasterBoardLayout("V", 3, 3); - layout[Qt::Key_B] = new CasterBoardLayout("B", 3, 4); - layout[Qt::Key_N] = new CasterBoardLayout("N", 3, 5); - layout[Qt::Key_M] = new CasterBoardLayout("M", 3, 6); - layout[Qt::Key_Comma] = new CasterBoardLayout(",", 3, 7); + Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, + Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Comma, + }; + + QString const letters = + "12345678" + "QWERTYUI" + "ASDFGHJK" + "ZXCVBNM,"; + + int offset = 0; + for (QChar const letter : letters) { + int posX = offset / 8; + int posY = offset % 8; + layout[keys[offset++]] = new CasterBoardLayout(letter, posX, posY); + } QGridLayout *boardLayout = new QGridLayout(this); - QHash::const_iterator i = layout.constBegin(); - - while (i != layout.constEnd()) { + for (int key : layout.keys()) { + CasterBoardLayout *value = layout.value(key); CasterPlayerWidget *widget = new CasterPlayerWidget(); - i.value()->widget = widget; - widget->setHotKeyLetter(i.value()->letter); - boardLayout->addWidget(widget, i.value()->posY, i.value()->posX); - ++i; + value->widget = widget; + widget->setHotKeyLetter(value->letter); + boardLayout->addWidget(widget, value->posY, value->posX); } } void CasterBoard::saveLayout(QSettings &settings) { - QHash::const_iterator i = layout.constBegin(); - - while (i != layout.constEnd()) { - CasterPlayerWidget *widget = i.value()->widget; - QString keystr = QString::number(i.key()); + for (int key : layout.keys()) { + CasterBoardLayout *value = layout.value(key); + CasterPlayerWidget *widget = value->widget; + QString keystr = QString::number(key); if (!widget->soundFilePath->isEmpty()) settings.setValue(keystr, *widget->soundFilePath); - ++i; } } void CasterBoard::restoreLayout(const QSettings &settings) { - QHash::const_iterator i = layout.constBegin(); - - while (i != layout.constEnd()) { - CasterPlayerWidget *widget = i.value()->widget; - QString keystr = QString::number(i.key()); + for (int key : layout.keys()) { + CasterBoardLayout *value = layout.value(key); + CasterPlayerWidget *widget = value->widget; + QString keystr = QString::number(key); if (settings.contains(keystr)) widget->assignFile(settings.value(keystr).toString()); - ++i; } } From b3e58bddccb33effcd813a54a62fd35d012a4942 Mon Sep 17 00:00:00 2001 From: Ryan Moeller Date: Tue, 2 May 2017 20:39:11 -0700 Subject: [PATCH 12/77] Add .gitignore --- CasterSoundboard/.gitignore | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 CasterSoundboard/.gitignore diff --git a/CasterSoundboard/.gitignore b/CasterSoundboard/.gitignore new file mode 100644 index 0000000..35bdfe1 --- /dev/null +++ b/CasterSoundboard/.gitignore @@ -0,0 +1,7 @@ +.qmake.stash +*.o +CasterSoundboard +*.app +Makefile +moc_* +qrc_* From 809a4230f3cb1fdf289b747b6be0228e10de98d9 Mon Sep 17 00:00:00 2001 From: Mathew Robinson Date: Thu, 4 May 2017 11:21:31 -0400 Subject: [PATCH 13/77] add installation instructions --- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/README.md b/README.md index 593620c..a0b3ace 100644 --- a/README.md +++ b/README.md @@ -6,3 +6,63 @@ A soundboard for hot-keying and playing back sounds. (For podcasting) CasterSoundboard is written in C++ Qt5. This is the development branch code. +======= + +## How to Install + +CasterSoundboard is not packaged for any platforms at this time see +Building from Source for installation instructions. + +### Building From Source + +First clone the repository using git, if you don't have git installed +you can find installation instructions [here](https://git-scm.com) + +``` +$ git clone https://github.com/JupiterBroadcasting/CasterSoundboard +``` + +Now we need to install the qt5 development libraries and tools, the +commands for various platforms are listed below: + +*Fedora* +``` +# dnf install qt-devel make gcc gcc-c++ +``` + +*Debian and Ubuntu* +``` +# apt install qtdeclarative5-dev qt5-default build-essentials +``` + +*Mac OSX* +``` +# brew install qt +``` + +You should then have access to qmake, make, and the qt5 development +libraries. Next cd into the project folder inside the repo: + +``` +$ cd CasterSoundboard/CasterSoundboard +``` + +Now run qmake, this will auto generate a makefile: + +``` +$ qmake +``` + +Then run make to build the project: + +``` +$ make +``` + +And finally run make install to install the app: + +``` +# make install +``` + +Now you're good to go! From 901481b7664d68a7c645f44695fbeca855b75512 Mon Sep 17 00:00:00 2001 From: rikai Date: Thu, 4 May 2017 14:29:56 -0700 Subject: [PATCH 14/77] Update README.md Not much of a reason for this, really. People can check their branches and makes merging into master annoying. --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index a0b3ace..1127f3f 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,6 @@ CasterSoundboard A soundboard for hot-keying and playing back sounds. (For podcasting) CasterSoundboard is written in C++ Qt5. - -This is the development branch code. ======= ## How to Install From 22d81c8df90eb73133f4c944fcb6951bf02d7629 Mon Sep 17 00:00:00 2001 From: James F-Robinson Date: Fri, 5 May 2017 13:24:05 +0100 Subject: [PATCH 15/77] readme: fix Fedora installation instructions Had to change a few commands to get it to build on my Fedora 25 machine: * changed the 'qt-devel' package for 'qt5-devel' * changed the 'qmake' command to 'qmake-qt5' --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1127f3f..dd27db3 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ commands for various platforms are listed below: *Fedora* ``` -# dnf install qt-devel make gcc gcc-c++ +# dnf install qt5-devel make gcc gcc-c++ ``` *Debian and Ubuntu* @@ -51,6 +51,12 @@ Now run qmake, this will auto generate a makefile: $ qmake ``` +or on Fedora: + +``` +$ qmake-qt5 +``` + Then run make to build the project: ``` From 34014288dfbe34e6a41fbe0cf55bfb4f996fe2ae Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Fri, 5 May 2017 13:30:09 -0700 Subject: [PATCH 16/77] Added git ignore file --- .gitignore | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6ae5ad6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# vim stuff +*.swp +*.swo + +# OSX +.DS_Store + +# Build directories +build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug/ From cab9c408da47b1326a6650254e7c539308276730 Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Fri, 5 May 2017 13:32:59 -0700 Subject: [PATCH 17/77] Rename mainwindow.cpp to MainWindow.cpp --- CasterSoundboard/{mainwindow.cpp => MainWindow.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CasterSoundboard/{mainwindow.cpp => MainWindow.cpp} (100%) diff --git a/CasterSoundboard/mainwindow.cpp b/CasterSoundboard/MainWindow.cpp similarity index 100% rename from CasterSoundboard/mainwindow.cpp rename to CasterSoundboard/MainWindow.cpp From 6e15646c186e10ed39dc7109ca795d54d9dd3d8b Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Fri, 5 May 2017 13:44:37 -0700 Subject: [PATCH 18/77] updated git ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6ae5ad6..9d6dd80 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ # Build directories build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug/ +build-CasterSoundboard-Desktop_Qt_5_8_0_clang_64bit-Debug/ From f10dad42d488ef0eec6877d36e496a969914ca00 Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Fri, 5 May 2017 13:47:41 -0700 Subject: [PATCH 19/77] QT Editor files updated/created by editor. --- CasterSoundboard/CasterSoundboard.pro.user | 156 ++++++++--- .../CasterSoundboard.pro.user.2.7pre1 | 256 ++++++++++++++++++ 2 files changed, 374 insertions(+), 38 deletions(-) create mode 100644 CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 diff --git a/CasterSoundboard/CasterSoundboard.pro.user b/CasterSoundboard/CasterSoundboard.pro.user index 1a0df52..cc18c54 100644 --- a/CasterSoundboard/CasterSoundboard.pro.user +++ b/CasterSoundboard/CasterSoundboard.pro.user @@ -1,7 +1,11 @@ - + + + EnvironmentId + {f9433209-882a-4022-ba6b-030cc515e804} + ProjectExplorer.Project.ActiveTarget 0 @@ -13,15 +17,15 @@ false true - Cpp + Cpp - CppGlobal + CppGlobal - QmlJS + QmlJS - QmlJSGlobal + QmlJSGlobal 2 @@ -29,10 +33,14 @@ false 4 false + 80 + true true 1 true + false 0 + true true 0 8 @@ -51,29 +59,31 @@ ProjectExplorer.Project.Target.0 - Desktop Qt 5.1.0 clang 64bit - Desktop Qt 5.1.0 clang 64bit - qt.510.clang_64.essentials_kit + Desktop Qt 5.8.0 clang 64bit + Desktop Qt 5.8.0 clang 64bit + qt.58.clang_64_kit 0 0 0 + /Users/oscarcerna/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_clang_64bit-Debug true qmake - QtProjectManager.QMakeBuildStep - false - true + QtProjectManager.QMakeBuildStep + true false + false + false true Make - Qt4ProjectManager.MakeStep + Qt4ProjectManager.MakeStep -w -r @@ -85,14 +95,14 @@ 2 Build - ProjectExplorer.BuildSteps.Build + ProjectExplorer.BuildSteps.Build true Make - Qt4ProjectManager.MakeStep + Qt4ProjectManager.MakeStep -w -r @@ -104,35 +114,36 @@ 1 Clean - ProjectExplorer.BuildSteps.Clean + ProjectExplorer.BuildSteps.Clean 2 false Debug - Qt4ProjectManager.Qt4BuildConfiguration + Qt4ProjectManager.Qt4BuildConfiguration 2 - /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Debug true + /Users/oscarcerna/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_clang_64bit-Release true qmake - QtProjectManager.QMakeBuildStep + QtProjectManager.QMakeBuildStep false - true false + false + false true Make - Qt4ProjectManager.MakeStep + Qt4ProjectManager.MakeStep -w -r @@ -144,14 +155,14 @@ 2 Build - ProjectExplorer.BuildSteps.Build + ProjectExplorer.BuildSteps.Build true Make - Qt4ProjectManager.MakeStep + Qt4ProjectManager.MakeStep -w -r @@ -163,35 +174,98 @@ 1 Clean - ProjectExplorer.BuildSteps.Clean + ProjectExplorer.BuildSteps.Clean 2 false Release - Qt4ProjectManager.Qt4BuildConfiguration + Qt4ProjectManager.Qt4BuildConfiguration 0 - /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Release true - 2 + + /Users/oscarcerna/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_clang_64bit-Profile + + + true + qmake + + QtProjectManager.QMakeBuildStep + true + + false + true + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Profile + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 3 0 Deploy - ProjectExplorer.BuildSteps.Deploy + ProjectExplorer.BuildSteps.Deploy 1 Deploy locally - ProjectExplorer.DefaultDeployConfiguration + ProjectExplorer.DefaultDeployConfiguration 1 - true + false + false + 1000 + + true false false @@ -201,8 +275,12 @@ 0.01 10 true + 1 25 + 1 + true + false true valgrind @@ -222,18 +300,20 @@ 13 14 + -1 + CasterSoundboard - Qt4ProjectManager.Qt4RunConfiguration:/Users/oscarcerna/Desktop/castersb-code/CasterSoundboard/CasterSoundboard.pro - 2 + Qt4ProjectManager.Qt4RunConfiguration:/Users/oscarcerna/Documents/GIT/CasterSoundboard/CasterSoundboard/CasterSoundboard.pro + true CasterSoundboard.pro false - false - + 3768 - true + false + true false false true @@ -246,11 +326,11 @@ 1 - ProjectExplorer.Project.Updater.EnvironmentId - {c518f7b1-f3fd-45b5-8fdd-e02398dff7b3} + ProjectExplorer.Project.Updater.FileVersion + 18 - ProjectExplorer.Project.Updater.FileVersion - 12 + Version + 18 diff --git a/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 b/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 new file mode 100644 index 0000000..1a0df52 --- /dev/null +++ b/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 @@ -0,0 +1,256 @@ + + + + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + true + 1 + true + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop Qt 5.1.0 clang 64bit + Desktop Qt 5.1.0 clang 64bit + qt.510.clang_64.essentials_kit + 0 + 0 + 0 + + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Debug + true + + + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Release + true + + 2 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + true + + false + false + false + false + true + 0.01 + 10 + true + 25 + + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + CasterSoundboard + + Qt4ProjectManager.Qt4RunConfiguration:/Users/oscarcerna/Desktop/castersb-code/CasterSoundboard/CasterSoundboard.pro + 2 + + CasterSoundboard.pro + false + false + + + 3768 + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.EnvironmentId + {c518f7b1-f3fd-45b5-8fdd-e02398dff7b3} + + + ProjectExplorer.Project.Updater.FileVersion + 12 + + From 9f6bdd078d8aa77e10228a199c21d5a72944cd8f Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Fri, 5 May 2017 13:54:50 -0700 Subject: [PATCH 20/77] made volume sliders more touch friendly --- CasterSoundboard/CasterPlayer.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index 6ff0ea6..4218c37 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -88,6 +88,20 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) //subMenuButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); volumeSlider = new QSlider(Qt::Vertical); volumeSlider->setValue(100); + volumeSlider->setStyleSheet("QSlider:vertical {" + "min-width: 30px;" + "}" + "QSlider::groove:vertical { " + "border: 1px solid #999999; " + "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " + "margin: 8px 0; " + "} " + "QSlider::handle:vertical { " + "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " + "border: 2px solid #000000; " + "height: 40px;" + "margin: -8px 0px; " + "} ");// Style the volume slider (Touch Friendly) //Place Widgets mainLayout = new QVBoxLayout(this); From 5cc9de814ec5e40a509d3bc772290aadd63a7859 Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Fri, 5 May 2017 20:26:58 -0700 Subject: [PATCH 21/77] Added toolbar and moved buttons to it --- CasterSoundboard/CasterSoundboard.pro.user | 22 +++++++++++----------- CasterSoundboard/MainWindow.cpp | 15 +++++++++++++-- CasterSoundboard/MainWindow.h | 4 ++++ 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/CasterSoundboard/CasterSoundboard.pro.user b/CasterSoundboard/CasterSoundboard.pro.user index cc18c54..c4b2070 100644 --- a/CasterSoundboard/CasterSoundboard.pro.user +++ b/CasterSoundboard/CasterSoundboard.pro.user @@ -1,10 +1,10 @@ - + EnvironmentId - {f9433209-882a-4022-ba6b-030cc515e804} + {50358eb3-48cf-418f-8201-244c0b8cf771} ProjectExplorer.Project.ActiveTarget @@ -59,14 +59,14 @@ ProjectExplorer.Project.Target.0 - Desktop Qt 5.8.0 clang 64bit - Desktop Qt 5.8.0 clang 64bit - qt.58.clang_64_kit + Desktop Qt 5.8.0 GCC 64bit + Desktop Qt 5.8.0 GCC 64bit + qt.58.gcc_64_kit 0 0 0 - /Users/oscarcerna/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_clang_64bit-Debug + /home/oscar/Documents/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug true @@ -126,7 +126,7 @@ true - /Users/oscarcerna/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_clang_64bit-Release + /home/oscar/Documents/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Release true @@ -186,7 +186,7 @@ true - /Users/oscarcerna/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_clang_64bit-Profile + /home/oscar/Documents/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Profile true @@ -300,17 +300,17 @@ 13 14 - -1 + 2 CasterSoundboard - Qt4ProjectManager.Qt4RunConfiguration:/Users/oscarcerna/Documents/GIT/CasterSoundboard/CasterSoundboard/CasterSoundboard.pro + Qt4ProjectManager.Qt4RunConfiguration:/home/oscar/Documents/CasterSoundboard/CasterSoundboard/CasterSoundboard.pro true CasterSoundboard.pro false - + /home/oscar/Documents/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug 3768 false true diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index 2f9da2a..bca0b10 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -24,6 +24,7 @@ #include "CasterBoard.h" #include #include +#include #include #include #include @@ -39,17 +40,27 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) QGridLayout *layout = new QGridLayout; //INIT NEW TAB PUSH BUTTONS + //~~About Button~~ aboutButton = new QPushButton; aboutButton->setIcon(QIcon(":/res/img/about.png")); aboutButton->setIconSize(QSize(25,25)); aboutButton->setFixedSize(30,30); - layout->addWidget(aboutButton,0,0, Qt::AlignLeft); + //layout->addWidget(aboutButton,0,0, Qt::AlignLeft); + //~~New Tab~~ addNewTabButton = new QPushButton; addNewTabButton->setIcon(QIcon(":/res/img/newTab.png")); addNewTabButton->setIconSize(QSize(25,25)); addNewTabButton->setFixedSize(30,30); - layout->addWidget(addNewTabButton,0,1, Qt::AlignRight); + //layout->addWidget(addNewTabButton,0,1, Qt::AlignRight); + + //======Main Toolbar========= + mainToolbar = new QToolBar; + // Add buttons + mainToolbar->addWidget(addNewTabButton); + mainToolbar->addWidget(aboutButton); + // Add toolbar to layout + layout->addWidget(mainToolbar, 0, 0, Qt::AlignLeft); //INIT MAIN TAB CONTAINER mainTabContainer = new QTabWidget; diff --git a/CasterSoundboard/MainWindow.h b/CasterSoundboard/MainWindow.h index 6dfd4a3..579e0b2 100644 --- a/CasterSoundboard/MainWindow.h +++ b/CasterSoundboard/MainWindow.h @@ -28,6 +28,7 @@ //forward declarations class QTabWidget; class QPushButton; +class QToolBar; class MainWindow : public QWidget //inherit from QWidget { @@ -58,6 +59,9 @@ private: void restoreSettings(); //WIDGETS + //Toolbar + QToolBar *mainToolbar; + // Push Buttons QPushButton *addNewTabButton; QPushButton *aboutButton; QTabWidget *mainTabContainer; From 6baa9eac3520b6087841f56f738676430b174fb5 Mon Sep 17 00:00:00 2001 From: Michael Tunnell Date: Tue, 9 May 2017 11:12:48 -0500 Subject: [PATCH 22/77] fixed the build instructions for Debian/Ubuntu Changed build-essentials to *build-essential* Added dependency install for *qtmultimedia5-dev* tested in Ubuntu 16.04 and the build works now. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dd27db3..4af584e 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ commands for various platforms are listed below: *Debian and Ubuntu* ``` -# apt install qtdeclarative5-dev qt5-default build-essentials +# apt install qtdeclarative5-dev qt5-default qtmultimedia5-dev build-essential ``` *Mac OSX* From ad71942adcc7e330f53c4d484f38fe60685f8ad4 Mon Sep 17 00:00:00 2001 From: Simon Quigley Date: Tue, 9 May 2017 22:17:37 -0500 Subject: [PATCH 23/77] Initial Snapcraft file --- snap/snapcraft.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 snap/snapcraft.yaml diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000..9249676 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,16 @@ +name: my-snap-name # you probably want to 'snapcraft register ' +version: '0.1' # just for humans, typically '1.2+git' or '1.3.2' +summary: Single-line elevator pitch for your amazing snap # 79 char long summary +description: | + This is my-snap's description. You have a paragraph or two to tell the + most important story about your snap. Keep it under 100 words though, + we live in tweetspace and your description wants to look good in the snap + store. + +grade: devel # must be 'stable' to release into candidate/stable channels +confinement: devmode # use 'strict' once you have the right plugs and slots + +parts: + my-part: + # See 'snapcraft plugins' + plugin: nil \ No newline at end of file From 1266cddaf98a340920549b1e959d938c96982a5b Mon Sep 17 00:00:00 2001 From: Simon Quigley Date: Tue, 9 May 2017 23:19:44 -0500 Subject: [PATCH 24/77] Get the snap compiling (but not usable yet) --- snap/snapcraft.yaml | 16 ---------------- snapcraft.yaml | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 16 deletions(-) delete mode 100644 snap/snapcraft.yaml create mode 100644 snapcraft.yaml diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml deleted file mode 100644 index 9249676..0000000 --- a/snap/snapcraft.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: my-snap-name # you probably want to 'snapcraft register ' -version: '0.1' # just for humans, typically '1.2+git' or '1.3.2' -summary: Single-line elevator pitch for your amazing snap # 79 char long summary -description: | - This is my-snap's description. You have a paragraph or two to tell the - most important story about your snap. Keep it under 100 words though, - we live in tweetspace and your description wants to look good in the snap - store. - -grade: devel # must be 'stable' to release into candidate/stable channels -confinement: devmode # use 'strict' once you have the right plugs and slots - -parts: - my-part: - # See 'snapcraft plugins' - plugin: nil \ No newline at end of file diff --git a/snapcraft.yaml b/snapcraft.yaml new file mode 100644 index 0000000..43858cf --- /dev/null +++ b/snapcraft.yaml @@ -0,0 +1,22 @@ +name: castersoundboard +version: "0.0.1+git" +summary: A soundboard for hot-keying and playing back sounds. (For podcasting) +description: A soundboard for hot-keying and playing back sounds. (For podcasting) +grade: devel +confinement: devmode + +apps: + castersoundboard: + command: bin/CasterSoundboard + +parts: + main: + source: ./CasterSoundboard + plugin: qmake + qt-version: qt5 + build-packages: + - qtdeclarative5-dev + - qt5-default + - qtmultimedia5-dev + - build-essential + after: [qt57] From 530a62da4587f3f8aa3d797358884e9311ac469c Mon Sep 17 00:00:00 2001 From: Simon Quigley Date: Tue, 9 May 2017 23:25:59 -0500 Subject: [PATCH 25/77] Don't add the qt57 part, it breaks things. For now, just install the packages from Ubuntu. --- snapcraft.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 43858cf..45e61a1 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -19,4 +19,3 @@ parts: - qt5-default - qtmultimedia5-dev - build-essential - after: [qt57] From 88671df3108829ea1f29a3208bbd1a5f71c9f150 Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Wed, 10 May 2017 02:03:43 -0700 Subject: [PATCH 26/77] Deleting old project --- CasterSoundboard/.gitignore | 7 - CasterSoundboard/CSS.cpp | 306 ------------ CasterSoundboard/CSS.h | 70 --- CasterSoundboard/CasterBoard.cpp | 103 ---- CasterSoundboard/CasterBoard.h | 60 --- CasterSoundboard/CasterBoardLayout.cpp | 30 -- CasterSoundboard/CasterBoardLayout.h | 40 -- CasterSoundboard/CasterLabel.cpp | 2 - CasterSoundboard/CasterLabelColorPicker.cpp | 133 ----- CasterSoundboard/CasterLabelColorPicker.h | 88 ---- CasterSoundboard/CasterPlayer.cpp | 467 ------------------ CasterSoundboard/CasterPlayer.h | 119 ----- CasterSoundboard/CasterSoundboard.pro | 38 -- CasterSoundboard/CasterSoundboard.pro.user | 336 ------------- .../CasterSoundboard.pro.user.2.7pre1 | 256 ---------- .../CasterSoundboard.pro.user.f58cfa5 | 256 ---------- CasterSoundboard/ColorConversion.cpp | 60 --- CasterSoundboard/ColorConversion.h | 186 ------- CasterSoundboard/MainWindow.cpp | 173 ------- CasterSoundboard/MainWindow.h | 81 --- CasterSoundboard/main.cpp | 39 -- CasterSoundboard/res.qrc | 12 - CasterSoundboard/res/img/Key.png | Bin 1418 -> 0 bytes CasterSoundboard/res/img/about.png | Bin 1685 -> 0 bytes CasterSoundboard/res/img/app.png | Bin 39463 -> 0 bytes CasterSoundboard/res/img/down.png | Bin 4401 -> 0 bytes CasterSoundboard/res/img/newTab.png | Bin 9680 -> 0 bytes CasterSoundboard/res/img/pause.png | Bin 9493 -> 0 bytes CasterSoundboard/res/img/play.png | Bin 7289 -> 0 bytes CasterSoundboard/res/img/stop.png | Bin 11442 -> 0 bytes 30 files changed, 2862 deletions(-) delete mode 100644 CasterSoundboard/.gitignore delete mode 100644 CasterSoundboard/CSS.cpp delete mode 100644 CasterSoundboard/CSS.h delete mode 100644 CasterSoundboard/CasterBoard.cpp delete mode 100644 CasterSoundboard/CasterBoard.h delete mode 100644 CasterSoundboard/CasterBoardLayout.cpp delete mode 100644 CasterSoundboard/CasterBoardLayout.h delete mode 100644 CasterSoundboard/CasterLabel.cpp delete mode 100644 CasterSoundboard/CasterLabelColorPicker.cpp delete mode 100644 CasterSoundboard/CasterLabelColorPicker.h delete mode 100644 CasterSoundboard/CasterPlayer.cpp delete mode 100644 CasterSoundboard/CasterPlayer.h delete mode 100644 CasterSoundboard/CasterSoundboard.pro delete mode 100644 CasterSoundboard/CasterSoundboard.pro.user delete mode 100644 CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 delete mode 100644 CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 delete mode 100644 CasterSoundboard/ColorConversion.cpp delete mode 100644 CasterSoundboard/ColorConversion.h delete mode 100644 CasterSoundboard/MainWindow.cpp delete mode 100644 CasterSoundboard/MainWindow.h delete mode 100644 CasterSoundboard/main.cpp delete mode 100644 CasterSoundboard/res.qrc delete mode 100644 CasterSoundboard/res/img/Key.png delete mode 100644 CasterSoundboard/res/img/about.png delete mode 100644 CasterSoundboard/res/img/app.png delete mode 100644 CasterSoundboard/res/img/down.png delete mode 100644 CasterSoundboard/res/img/newTab.png delete mode 100644 CasterSoundboard/res/img/pause.png delete mode 100644 CasterSoundboard/res/img/play.png delete mode 100644 CasterSoundboard/res/img/stop.png diff --git a/CasterSoundboard/.gitignore b/CasterSoundboard/.gitignore deleted file mode 100644 index 35bdfe1..0000000 --- a/CasterSoundboard/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.qmake.stash -*.o -CasterSoundboard -*.app -Makefile -moc_* -qrc_* diff --git a/CasterSoundboard/CSS.cpp b/CasterSoundboard/CSS.cpp deleted file mode 100644 index 99214ae..0000000 --- a/CasterSoundboard/CSS.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "CSS.h" -#include -#include - -QString Generate_CSS(HSL_C hsl_color) -{ - RGB_C rgb_color = RGB_C(0,0,0); - QString CSS_STR = "CasterPlayerWidget{background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,stop:0.0 rgba("; - rgb_color = RGB_C(184,225,252); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.1)); - rgb_color = RGB_C(169,210,243); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.25)); - rgb_color = RGB_C(144,186,228); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.37)); - rgb_color = RGB_C(144,188,234); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.5)); - rgb_color = RGB_C(144,191,240); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.51)); - rgb_color = RGB_C(107,168,229); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.83)); - rgb_color = RGB_C(162,218,245); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(1.0)); - rgb_color = RGB_C(189,243,253); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(", 255));}"); - return CSS_STR; -} - -QString Generate_CSS_W(HSL_C hsl_color) -{ - RGB_C rgb_color = RGB_C(0,0,0); - QString CSS_STR = "QWidget{background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,stop:0.0 rgba("; - rgb_color = RGB_C(184,225,252); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.1)); - rgb_color = RGB_C(169,210,243); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.25)); - rgb_color = RGB_C(144,186,228); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.37)); - rgb_color = RGB_C(144,188,234); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.5)); - rgb_color = RGB_C(144,191,240); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.51)); - rgb_color = RGB_C(107,168,229); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(0.83)); - rgb_color = RGB_C(162,218,245); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(Generate_CSS_Gradient_Stop(1.0)); - rgb_color = RGB_C(189,243,253); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); - CSS_STR.append(", 255));}"); - return CSS_STR; -} - -QString Generate_CSS_Gradient_Stop(float stop) -{ - QString CSS_STR = ", 255),stop:"; - CSS_STR.append(QString::number(stop)); - CSS_STR.append(" rgba("); - return CSS_STR; -} - -float Clamp(float value, float lower, float upper) -{ - return Max(Min(value, upper), lower); -} - -float Max(float a, float b) -{ - if(a == b) - { - return a; - } - else if(a > b) - { - return a; - } - else - { - return b; - } -} - -float Max(float a, float b, float c) -{ - return Max(Max(a, b), Max(b, c)); -} - -float Min(float a, float b) -{ - if(a == b) - { - return a; - } - else if(a > b) - { - return b; - } - else - { - return a; - } -} - -float Min(float a, float b, float c) -{ - return Min(Min(a, b), Min(b, c)); -} - -float CSS::abs(float a) -{ - if (a >= 0) - { - return a; - } - else - { - return -a; - } -} - -int fSwitch(float value, float a, float b, float c) -{ - if(value == a) - { - return 1; - } - else if(value == b) - { - return 2; - } - else if(value == c) - { - return 3; - } - else - { - return 0; - } -} - -RGB_C::RGB_C(HSL_C hsl_color) -{ - float h = hsl_color.H; - float s = hsl_color.S; - float l = hsl_color.L; - float r; - float g; - float b; - - float c = ( 1 - CSS::abs( 2 * l - 1 ) ) * s; - float x = c * ( 1 - CSS::abs( fmod(( h / 60 ), 2 ) - 1 ) ); - float m = l - ( c / 2 ); - - if ( h < 60 ) - { - r = c; - g = x; - b = 0; - } - else if ( h < 120 ) - { - r = x; - g = c; - b = 0; - } - else if ( h < 180 ) - { - r = 0; - g = c; - b = x; - } - else if ( h < 240 ) - { - r = 0; - g = x; - b = c; - } - else if ( h < 300 ) - { - r = x; - g = 0; - b = c; - } - else - { - r = c; - g = 0; - b = x; - } - - R = ( r + m ) * 255; - G = ( g + m ) * 255; - B = ( b + m ) * 255; -} - -RGB_C RGB_C::operator +(RGB_C &color) -{ - return RGB_C( Clamp(R + color.R, 0, 360), - Clamp(G + color.G, 0, 1), - Clamp(B + color.B, 0, 1)); -} - -RGB_C RGB_C::addHSL(HSL_C &color) -{ - RGB_C temp_rgb = RGB_C(R,G,B); - HSL_C temp_hsl = HSL_C(temp_rgb); - temp_hsl = temp_hsl + color; - return RGB_C(temp_hsl); -} - -QString RGB_C::toStr() -{ - QString str = ""; - str.append(QString::number(R)); - str.append(","); - str.append(QString::number(G)); - str.append(","); - str.append(QString::number(B)); - return str; -} - -HSL_C::HSL_C(RGB_C rgb_color) -{ - float r = rgb_color.R / 255.0; - float g = rgb_color.G / 255.0; - float b = rgb_color.B / 255.0; - float max = Max(r, g, b); - float min = Min(r, g, b); - float h; - float s; - float l = (max + min) / 2.0; - float d = max - min; - if(d == 0) - { - h = 0; - s = 0; - } - else - { - s = d / ( 1 - abs( 2 * l - 1 ) ); - - switch(fSwitch(max, r,g,b)) - { - case 1: - h = 60 * ( fmod((( g - b ) / d ), 6.0 ) ); - break; - case 2: - h = 60 * ( ( b - r ) / d + 2.0 ); - break; - case 3: - h = 60 * ( ( r - g ) / d + 4.0 ); - break; - default: - break; - } - } - - H = h; - S = s; - L = l; -} - -HSL_C HSL_C::operator +(HSL_C &color) -{ - return HSL_C( Clamp(H + color.H, 0,360), - Clamp(S + color.S, 0, 1), - Clamp(L + color.L, 0, 1)); -} - -HSL_C HSL_C::addRGB(RGB_C &color) -{ - HSL_C temp_hsl = HSL_C(H,S,L); - RGB_C temp_rgb = RGB_C(temp_hsl); - temp_rgb = temp_rgb + color; - return HSL_C(temp_rgb); -} - -QString HSL_C::toStr() -{ - QString str = ""; - str.append(QString::number(H)); - str.append(","); - str.append(QString::number(S)); - str.append(","); - str.append(QString::number(L)); - return str; -} diff --git a/CasterSoundboard/CSS.h b/CasterSoundboard/CSS.h deleted file mode 100644 index d4254c5..0000000 --- a/CasterSoundboard/CSS.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef CSS_H -#define CSS_H - -#define CSS_GRAIENT_GREY "CasterPlayerWidget{background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,stop:0.0 rgba(218,218,218, 255),stop:0.1 rgba(206,206,206, 255),stop:0.25 rgba(186,186,186, 255),stop:0.37 rgba(189,189,189, 255),stop:0.5 rgba(192,192,192, 255),stop:0.51 rgba(168,168,168, 255),stop:0.83 rgba(204,204,204, 255),stop:1.0 rgba(221,221,221, 255));}" -#define CSS_GRAIENT_GREY_W "QWidget{background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,stop:0.0 rgba(218,218,218, 255),stop:0.1 rgba(206,206,206, 255),stop:0.25 rgba(186,186,186, 255),stop:0.37 rgba(189,189,189, 255),stop:0.5 rgba(192,192,192, 255),stop:0.51 rgba(168,168,168, 255),stop:0.83 rgba(204,204,204, 255),stop:1.0 rgba(221,221,221, 255));}" - -//Foward Declarations -class QString; -struct RGB_C; -struct HSL_C; - -struct RGB_C { - float R; - float G; - float B; - RGB_C(float red, float green, float blue) : R(red), G(green), B(blue) {} - RGB_C(HSL_C hsl_color); - RGB_C operator+(RGB_C &color); - RGB_C addHSL(HSL_C &color); - QString toStr(); -} ; - -struct HSL_C { - float H; - float S; - float L; - HSL_C(float hue, float sat, float light ) : H(hue), S(sat), L(light) {} - HSL_C(RGB_C rgb_color); - HSL_C operator+(HSL_C &color); - HSL_C addRGB(RGB_C &color); - QString toStr(); -}; - -QString Generate_CSS(HSL_C hsl_color); -QString Generate_CSS_W(HSL_C hsl_color); -QString Generate_CSS_Gradient_Stop(float stop); - -float Clamp(float value, float lower, float upper); -float Max(float a, float b); -float Max(float a, float b, float c); -float Min(float a, float b); -float Min(float a, float b, float c); -namespace CSS { -float abs(float a); -} -int fSwitch(float value, float a, float b, float c); - -#endif // CSS_H diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp deleted file mode 100644 index 7c4b097..0000000 --- a/CasterSoundboard/CasterBoard.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "CasterBoard.h" -#include "CasterPlayer.h" -#include - -//Constructor============================================= -CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) -{ - Qt::Key const keys[] = { - Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, - Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, - - Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, - Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, - - Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, - Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, - - Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, - Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Comma, - }; - - QString const letters = - "12345678" - "QWERTYUI" - "ASDFGHJK" - "ZXCVBNM,"; - - int offset = 0; - for (QChar const letter : letters) { - int posX = offset / 8; - int posY = offset % 8; - layout[keys[offset++]] = new CasterBoardLayout(letter, posX, posY); - } - - QGridLayout *boardLayout = new QGridLayout(this); - - for (int key : layout.keys()) { - CasterBoardLayout *value = layout.value(key); - CasterPlayerWidget *widget = new CasterPlayerWidget(); - value->widget = widget; - widget->setHotKeyLetter(value->letter); - boardLayout->addWidget(widget, value->posY, value->posX); - } -} - -void CasterBoard::saveLayout(QSettings &settings) -{ - for (int key : layout.keys()) { - CasterBoardLayout *value = layout.value(key); - CasterPlayerWidget *widget = value->widget; - QString keystr = QString::number(key); - if (!widget->soundFilePath->isEmpty()) - settings.setValue(keystr, *widget->soundFilePath); - } -} - -void CasterBoard::restoreLayout(const QSettings &settings) -{ - for (int key : layout.keys()) { - CasterBoardLayout *value = layout.value(key); - CasterPlayerWidget *widget = value->widget; - QString keystr = QString::number(key); - if (settings.contains(keystr)) - widget->assignFile(settings.value(keystr).toString()); - } -} - -void CasterBoard::keyReleaseEvent(QKeyEvent *event) -{ - //Handles All Hot Key Behavior - if (!layout.contains(event->key())) - return; - - CasterPlayerWidget *widget = layout.value(event->key())->widget; - - switch (widget->player->state()) { - case QMediaPlayer::PlayingState: widget->stopSound(); break; - case QMediaPlayer::PausedState: widget->playSound(); break; - case QMediaPlayer::StoppedState: widget->playSound(); break; - } -} diff --git a/CasterSoundboard/CasterBoard.h b/CasterSoundboard/CasterBoard.h deleted file mode 100644 index 86737a6..0000000 --- a/CasterSoundboard/CasterBoard.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef CASTERBOARD_H -#define CASTERBOARD_H -#include "CasterBoardLayout.h" -#include -#include -#include - -//forward declarations -class CasterPlayerWidget; - -class CasterBoard : public QWidget //inherit from QWidget -{ - Q_OBJECT -public: - //Constructor - CasterBoard(QWidget* parent = 0); //don't forget to pass the parent - - void saveLayout(QSettings &settings); - void restoreLayout(const QSettings &settings); - - //Properties - - -protected: - //======== - void keyReleaseEvent(QKeyEvent *event);//Capture Hot Keys - -private: - QHash layout; - -signals: - //SIGNALS - -public slots: - //SLOTS - -}; -#endif // CASTERBOARD_H diff --git a/CasterSoundboard/CasterBoardLayout.cpp b/CasterSoundboard/CasterBoardLayout.cpp deleted file mode 100644 index b67cac5..0000000 --- a/CasterSoundboard/CasterBoardLayout.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2017 aszlig - * - * This file is part of CasterSoundboard. An application for playing hot-keyed - * sounds. For more information, please visit: - * - * https://github.com/JupiterBroadcasting/CasterSoundboard - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "CasterBoardLayout.h" - -CasterBoardLayout::CasterBoardLayout(const QString &letter, int posY, int posX) -{ - this->letter = letter; - this->posY = posY; - this->posX = posX; -} diff --git a/CasterSoundboard/CasterBoardLayout.h b/CasterSoundboard/CasterBoardLayout.h deleted file mode 100644 index 2ff7dfa..0000000 --- a/CasterSoundboard/CasterBoardLayout.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2017 aszlig - * - * This file is part of CasterSoundboard. An application for playing hot-keyed - * sounds. For more information, please visit: - * - * https://github.com/JupiterBroadcasting/CasterSoundboard - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef CASTERBOARDLAYOUT_H -#define CASTERBOARDLAYOUT_H -#include - -#include "CasterPlayer.h" - -class CasterBoardLayout : public QObject -{ - Q_OBJECT -public: - CasterBoardLayout(const QString &letter, int posY, int posX); - - QString letter; - int posX, posY; - CasterPlayerWidget *widget; -}; - -#endif // CASTERBOARD_H diff --git a/CasterSoundboard/CasterLabel.cpp b/CasterSoundboard/CasterLabel.cpp deleted file mode 100644 index 139597f..0000000 --- a/CasterSoundboard/CasterLabel.cpp +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/CasterSoundboard/CasterLabelColorPicker.cpp b/CasterSoundboard/CasterLabelColorPicker.cpp deleted file mode 100644 index c3db5a7..0000000 --- a/CasterSoundboard/CasterLabelColorPicker.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "CasterLabelColorPicker.h" -#include "CSS.h" -#include -#include -#include -#include -#include -#include - -//CONSTRUCTOR -CasterLabelColorPicker::CasterLabelColorPicker(QWidget *parent) -{ - //SET WINDOW PROPETIES - this->setWindowTitle("Select Label Color"); - this->setWindowIcon(QIcon(":/res/img/app.png")); - - //SET CLASS PROPERTIES - ok = false; - currentCSS = Generate_CSS(HSL_C(0,0,0)); - - - //INIT WIDGETS - label_H = new QLabel; label_H->setText("H:"); - label_S = new QLabel; label_S->setText("S:"); - label_L = new QLabel; label_L->setText("L:"); - label_H_Value = new QLabel; label_H_Value->setText("0"); - label_S_Value = new QLabel; label_S_Value->setText("0"); - label_L_Value = new QLabel; label_L_Value->setText("0"); - slider_H = new QSlider; slider_H->setOrientation(Qt::Horizontal); slider_H->setFixedWidth(200); slider_H->setMinimum(-180); slider_H->setMaximum(180); - slider_S = new QSlider; slider_S->setOrientation(Qt::Horizontal); slider_S->setFixedWidth(200); slider_S->setMinimum(-100); slider_S->setMaximum(100); - slider_L = new QSlider; slider_L->setOrientation(Qt::Horizontal); slider_L->setFixedWidth(200); slider_L->setMinimum(-100); slider_L->setMaximum(100); - widget_Color_Label = new QWidget; widget_Color_Label->setFixedSize(150, 150); widget_Color_Label->setStyleSheet(Generate_CSS_W(HSL_C(0,0,0))); - button_Cancel = new QPushButton("Cancel"); button_Cancel->setFixedSize(80, 30); - button_Accept = new QPushButton("Accept"); button_Accept->setFixedSize(80, 30); - - //DENFINE LAYOUT - QGridLayout *layout = new QGridLayout; - QHBoxLayout *layout_top = new QHBoxLayout; - QHBoxLayout *layout_preview = new QHBoxLayout; - QVBoxLayout *layout_hsl = new QVBoxLayout; - QHBoxLayout *layout_hsl_h = new QHBoxLayout; - QHBoxLayout *layout_hsl_s = new QHBoxLayout; - QHBoxLayout *layout_hsl_l = new QHBoxLayout; - QHBoxLayout *layout_bottom = new QHBoxLayout; - - - //SET LAYOUT - layout_hsl_h->addWidget(label_H); - layout_hsl_h->addWidget(slider_H); - layout_hsl_h->addWidget(label_H_Value); - - layout_hsl_s->addWidget(label_S); - layout_hsl_s->addWidget(slider_S); - layout_hsl_s->addWidget(label_S_Value); - - layout_hsl_l->addWidget(label_L); - layout_hsl_l->addWidget(slider_L); - layout_hsl_l->addWidget(label_L_Value); - - layout_hsl->addLayout(layout_hsl_h); - layout_hsl->addLayout(layout_hsl_s); - layout_hsl->addLayout(layout_hsl_l); - - layout_preview->addWidget(widget_Color_Label); - - layout_top->addLayout(layout_preview); - layout_top->addLayout(layout_hsl); - - layout_bottom->addWidget(button_Accept, Qt::AlignRight); - layout_bottom->addWidget(button_Cancel, Qt::AlignRight); - - layout->addLayout(layout_top, 0,0); - layout->addLayout(layout_bottom, 1,0); - - this->setLayout(layout); - - //SET WINDOW - this->setModal(true); - this->setFixedSize(450, 230); - this->setLayout(layout); - - //MAKE CONNECTIONS - connect(slider_H,SIGNAL(valueChanged(int)),this,SLOT(slider_HSL_valueChanged(int))); - connect(slider_S,SIGNAL(valueChanged(int)),this,SLOT(slider_HSL_valueChanged(int))); - connect(slider_L,SIGNAL(valueChanged(int)),this,SLOT(slider_HSL_valueChanged(int))); - connect(button_Accept,SIGNAL(clicked()),this,SLOT(button_Accept_Clicked())); - connect(button_Cancel,SIGNAL(clicked()),this,SLOT(button_Cancel_Clicked())); - -} - -//SLOTS -void CasterLabelColorPicker::slider_HSL_valueChanged(int value) -{ - label_H_Value->setText(QString::number(slider_H->value())); - label_S_Value->setText(QString::number(slider_S->value()).append("%")); - label_L_Value->setText(QString::number(slider_L->value()).append("%")); - HSL_C hsl_input(slider_H->value(),slider_S->value()/100.0,slider_L->value()/100.0); - currentCSS = QString(Generate_CSS(hsl_input)); - widget_Color_Label->setStyleSheet(Generate_CSS_W(hsl_input)); -} - -void CasterLabelColorPicker::button_Accept_Clicked() -{ - ok = true; - this->close(); -} - -void CasterLabelColorPicker::button_Cancel_Clicked() -{ - this->close(); -} diff --git a/CasterSoundboard/CasterLabelColorPicker.h b/CasterSoundboard/CasterLabelColorPicker.h deleted file mode 100644 index 8ac73fa..0000000 --- a/CasterSoundboard/CasterLabelColorPicker.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef CASTERLABELCOLORPICKER_H -#define CASTERLABELCOLORPICKER_H -#include - -//forward declarations -class QWidget; -class QSlider; -class QLineEdit; -class QPushButton; -class QLabel; -class QString; - -class CasterLabelColorPicker : public QDialog //inherit from QWidget -{ - Q_OBJECT -public: - //Constructor - CasterLabelColorPicker(QWidget* parent = 0); //don't forget to pass the parent - - //PROPERTIES - bool ok; - QString currentCSS; - - //METHODS - - //WIDGETS - - -protected: - //PROPERTIES - - //METHODS - - //WIDGETS - -private: - //PROPERTIES - - //METHODS - - //WIDGETS - QLabel *label_H; - QLabel *label_S; - QLabel *label_L; - QLabel *label_H_Value; - QLabel *label_S_Value; - QLabel *label_L_Value; - QSlider *slider_H; - QSlider *slider_S; - QSlider *slider_L; - QWidget *widget_Color_Label; - QPushButton *button_Cancel; - QPushButton *button_Accept; - - -signals: - //SIGNALS - -public slots: - //SLOTS - void slider_HSL_valueChanged(int value); - void button_Accept_Clicked(); - void button_Cancel_Clicked(); - -}; -#endif // CASTERLABELCOLORPICKER_H diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp deleted file mode 100644 index 4218c37..0000000 --- a/CasterSoundboard/CasterPlayer.cpp +++ /dev/null @@ -1,467 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "CasterPlayer.h" -#include "CasterLabelColorPicker.h" -#include "CSS.h" -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//Constructor -CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) -{ - //Set Widget Defaults - this->setAcceptDrops(true); - - //Init Player - state = NoFile; - player = new QMediaPlayer(); - //Init Properties - soundFilePath = new QString(""); - hotKeyLetter = new QString("1"); - progress = 0.0; - volume = 100; - - //Set-Up Widget Layout - soundNameLabel = new QLabel(""); - soundNameLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); - QFont sNLF("Georgia",7,-1,false); sNLF.setBold(true); - soundNameLabel->setFont(sNLF); - soundNameLabel->setWordWrap(true); - //soundNameLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); - hotKeyLabel = new QLabel(*hotKeyLetter); - hotKeyLabel->setAlignment(Qt::AlignCenter); - hotKeyLabel->setFont(QFont("Georgia",13,-1,false)); - hotKeyLabel->setStyleSheet("background:url(:/res/img/Key.png) no-repeat;background-attachment:fixed;background-position:center;color:white;"); - //hotKeyLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); - timeLabel = new QLabel("-00:00"); - timeLabel->setAlignment(Qt::AlignHCenter | Qt::AlignRight); - QFont tLF("Georgia",8,-1,false); tLF.setBold(true); - timeLabel->setFont(tLF); - playStateButton = new QPushButton(""); - playStateButton->setIcon(QIcon(":/res/img/stop.png")); - playStateButton->setIconSize(QSize(16,16)); - playStateButton->setFlat(true); - //playStateButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); - subMenuButton = new QPushButton(""); - subMenuButton->setIcon(QIcon(":/res/img/down.png")); - subMenuButton->setIconSize(QSize(16,16)); - subMenuButton->setFlat(true); - //subMenuButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); - volumeSlider = new QSlider(Qt::Vertical); - volumeSlider->setValue(100); - volumeSlider->setStyleSheet("QSlider:vertical {" - "min-width: 30px;" - "}" - "QSlider::groove:vertical { " - "border: 1px solid #999999; " - "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " - "margin: 8px 0; " - "} " - "QSlider::handle:vertical { " - "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " - "border: 2px solid #000000; " - "height: 40px;" - "margin: -8px 0px; " - "} ");// Style the volume slider (Touch Friendly) - - //Place Widgets - mainLayout = new QVBoxLayout(this); - //mainLayout->setContentsMargins(0,0,0,0); - - subMainLayoutH = new QHBoxLayout; - subMainLayoutV = new QVBoxLayout; - - topLayout = new QHBoxLayout; - topLayout->addWidget(hotKeyLabel); - topLayout->addWidget(timeLabel); - - centerLayout = new QHBoxLayout; - centerLayout->addWidget(soundNameLabel); - - bottomLayout = new QHBoxLayout; - bottomLayout->addWidget(playStateButton); - bottomLayout->addWidget(subMenuButton); - - - subMainLayoutV->addLayout(topLayout); - subMainLayoutV->addLayout(centerLayout); - subMainLayoutV->addLayout(bottomLayout); - - subMainLayoutH->addLayout(subMainLayoutV); - subMainLayoutH->addWidget(volumeSlider); - - mainLayout->addLayout(subMainLayoutH); - - //Widget Styling - this->setMouseTracking(true); - this->setStyleSheet(CSS_GRAIENT_GREY); - QGraphicsDropShadowEffect * dse = new QGraphicsDropShadowEffect(); - dse->setBlurRadius(10); - this->setGraphicsEffect(dse); - - //Connect Sub-Widget Events - connect(playStateButton,SIGNAL(clicked()),this,SLOT(playerToggle())); - connect(volumeSlider,SIGNAL(valueChanged(int)),this,SLOT(volumeChanged(int))); - connect(subMenuButton,SIGNAL(clicked()),this,SLOT(openSubMenu())); - connect(player,SIGNAL(positionChanged(qint64)),this,SLOT(playerPositionChanged(qint64))); - connect(player,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(playerStateChanged(QMediaPlayer::State))); - connect(player,SIGNAL(metaDataChanged()),this,SLOT(playerMetaDataChanged())); - connect(player,SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),this,SLOT(playerNewMediaStatus(QMediaPlayer::MediaStatus))); - connect(player,SIGNAL(error(QMediaPlayer::Error)),this,SLOT(playerError(QMediaPlayer::Error))); -} - -//Set Properties -void CasterPlayerWidget::setHotKeyLetter(QString hotKey) -{ - hotKeyLabel->setText(hotKey); -} - -//----SIGNALS---- - -//-----SLOTS---- -void CasterPlayerWidget::playerToggle() -{ - //CURRENT PLAY STATE TOGGLE LOGIC - player->setVolume(volume); - if(player->state() == QMediaPlayer::PlayingState) - { - player->pause(); - } - else if (player->state() == QMediaPlayer::StoppedState) - { - player->play(); - } - else if(player->state() == QMediaPlayer::PausedState) - { - player->play(); - } -} - -void CasterPlayerWidget::volumeChanged(int value) -{ - //Update volume change - volume = value; - player->setVolume(volume); -} - -void CasterPlayerWidget::openSubMenu() -{ - //OPEN SUB MENU - CasterLabelColorPicker colorPicker(this); - colorPicker.exec(); - if(colorPicker.ok) - { - this->setStyleSheet(colorPicker.currentCSS); - } -} - -void CasterPlayerWidget::playerPositionChanged(qint64 position) -{ - if(player->duration() > 0) - { - progress = (float)(position) / (float)(player->duration()); - int timeLeft = player->duration() - position; - int seconds = (int) (timeLeft / 1000) % 60 ; - int minutes = (int) ((timeLeft / (1000*60)) % 60); - //int hours = (int) ((timeLeft / (1000*60*60)) % 24); - QString timeRemaining = "-" + QString("%1").arg(minutes,2,'i',0,'0') + ":" + QString("%1").arg(seconds,2,'i',0,'0'); - timeLabel->setText(timeRemaining); - this->update(); - } -} - -void CasterPlayerWidget::playerStateChanged(QMediaPlayer::State state) -{ - //CURRENT PLAY STATE - if(state == QMediaPlayer::PlayingState) - { - playStateButton->setIcon(QIcon(":/res/img/play.png")); - } - else if(state == QMediaPlayer::PausedState) - { - playStateButton->setIcon(QIcon(":/res/img/pause.png")); - } - else if (state == QMediaPlayer::StoppedState) - { - playStateButton->setIcon(QIcon(":/res/img/stop.png")); - - progress = 0; - int timeLeft = player->duration(); - int seconds = (int) (timeLeft / 1000) % 60 ; - int minutes = (int) ((timeLeft / (1000*60)) % 60); - QString timeRemaining = "-" + QString("%1").arg(minutes,2,'i',0,'0') + ":" + QString("%1").arg(seconds,2,'i',0,'0'); - timeLabel->setText(timeRemaining); - this->update(); - } - -} - -void CasterPlayerWidget::playerMetaDataChanged() -{ - //Update Meta Data - int timeLeft = player->duration(); - int seconds = (int) (timeLeft / 1000) % 60 ; - int minutes = (int) ((timeLeft / (1000*60)) % 60); - QString timeRemaining = "-" + QString("%1").arg(minutes,2,'i',0,'0') + ":" + QString("%1").arg(seconds,2,'i',0,'0'); - timeLabel->setText(timeRemaining); -} - -void CasterPlayerWidget::playerNewMediaStatus(QMediaPlayer::MediaStatus status) -{ - // If we are already in Error state, don't try to update the label at all. - if (state == Error) - return; - - if (status == QMediaPlayer::LoadingMedia) { - soundNameLabel->setText("Loading..."); - soundNameLabel->setStyleSheet("color:darkblue;"); - player->stop(); - state = Loading; - } else if (status != QMediaPlayer::InvalidMedia) { - // We want to change the label on all occasions except if we have - // InvalidMedia, where we also get an Error signal which is handled in - // playerError(). - QFileInfo fi(*soundFilePath); - QString text; - if (player->metaData(QMediaMetaData::Title).toString() != "") - //Use metadata title - text = player->metaData(QMediaMetaData::Title).toString(); - else //Use filename as title - text = QFileInfo(*soundFilePath).baseName(); - soundNameLabel->setText(text); - soundNameLabel->setStyleSheet(""); - state = Active; - } -} - -void CasterPlayerWidget::playerError(QMediaPlayer::Error error) -{ - if (error == QMediaPlayer::NoError) - return; - - soundNameLabel->setText("Error: " + player->errorString()); - soundNameLabel->setStyleSheet("color:red;"); - player->stop(); - state = Error; -} - -//-------------- - -//Private Methods -int CasterPlayerWidget::getProgressWidth() -{ - //Compute Progress width - return (int)(this->progress * (float)(this->width())); -} - -//Public Methods -//===============Player Methods================= -void CasterPlayerWidget::playSound() -{ - player->setVolume(volume); - player->play(); -} - -void CasterPlayerWidget::stopSound() -{ - player->setVolume(volume); - player->stop(); -} - -bool CasterPlayerWidget::assignFile(const QString &path) -{ - if(openFiles(QStringList(path))) - { - return true; - } - else - { - QMessageBox msgBox; - msgBox.setText("CasterSoundboard does not accept this file type.\nMake sure your system has the necessary codecs installed.\nCasterSoundboard can also play the audio from videos."); - msgBox.setInformativeText("Try: (*.mp3), (*.wav), (*.ogg), (*.flac), (*.m4a).\nAnd Try: (*.mp4), (*.mov), (*.ogv), (*.avi), (*.mpg), (*.wmv)."); - msgBox.setStandardButtons(QMessageBox::Close); - msgBox.setDefaultButton(QMessageBox::Close); - msgBox.setModal(true); - msgBox.exec(); - return false; - } - -} -//================================================== - -//Protected Methods -//=================DRAG_N_DROP============================= -void CasterPlayerWidget::dragEnterEvent(QDragEnterEvent *event) -{ - event->acceptProposedAction(); -} - -void CasterPlayerWidget::dragMoveEvent(QDragMoveEvent *event) -{ - event->acceptProposedAction(); -} - -void CasterPlayerWidget::dragLeaveEvent(QDragLeaveEvent *event) -{ - event->accept(); -} - -void CasterPlayerWidget::dropEvent(QDropEvent *event) -{ - const QMimeData* mimeData = event->mimeData(); - - if (mimeData->hasUrls()) - { - QString path = mimeData->urls().at(0).toLocalFile(); - if (assignFile(path)) { - playSound(); - event->acceptProposedAction(); - } - } -} - -void CasterPlayerWidget::mousePressEvent(QMouseEvent* event) -{ - if (event->button() != Qt::LeftButton) { - event->ignore(); - return; - } - - event->accept(); - QString path = QFileDialog::getOpenFileName( - this, "Open audio file", "", - "Audio files (*.mp3 *.wav *.ogg *.flac *.m4a);;" - "Video files (*.mp4 *.mov *.ogv *.avi *.mpg *.wmv)" - ); - if (!path.isNull() && assignFile(path)) - playSound(); -} - -bool CasterPlayerWidget::openFiles(const QStringList& pathList) -{ - //Determine File Type - QFileInfo fi(pathList[0]); - - if(fi.suffix() == "mp3" || - fi.suffix() == "wav" || - fi.suffix() == "flac" || - fi.suffix() == "ogg" || - fi.suffix() == "m4a" || - fi.suffix() == "mp4" || - fi.suffix() == "mov" || - fi.suffix() == "ogv" || - fi.suffix() == "avi" || - fi.suffix() == "mpg" || - fi.suffix() == "wmv") - { - soundFilePath = new QString(pathList[0]);//Sets File Path - // Put the state into NoFile here, so that we're not going to be stuck - // in the Error state forever. - state = NoFile; - player->setVolume(volume); - player->setMedia(QUrl::fromLocalFile(soundFilePath->toUtf8().constData())); - return true; - } - else - { - return false; - } -} - -//========================================================= - -//===========Focus Event=========== -void CasterPlayerWidget::mouseMoveEvent(QMouseEvent *event) -{ - this->setFocus(); -} - -//===========Paint Event=========== -void CasterPlayerWidget::paintEvent(QPaintEvent *event) -{ - //Make widget render it's own style sheet. - QStyleOption opt; - opt.init(this); - QPainter p(this); - style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); - - - //Draw Progressbar - QLinearGradient lgBrush(0,0,0,this->height()); - QRect rec(0,0,this->getProgressWidth(),this->height()); - if(player->state() == QMediaPlayer::PlayingState) - { - lgBrush.setColorAt(0.0,QColor(184,225,252,255)); - lgBrush.setColorAt(0.1,QColor(169,210,243,255)); - lgBrush.setColorAt(0.25,QColor(144,186,228,255)); - lgBrush.setColorAt(0.37,QColor(144,188,234,255)); - lgBrush.setColorAt(0.5,QColor(144,191,240,255)); - lgBrush.setColorAt(0.51,QColor(107,168,229,255)); - lgBrush.setColorAt(0.83,QColor(162,218,245,255)); - lgBrush.setColorAt(1.0,QColor(189,243,253,255)); - } - else if(player->state() == QMediaPlayer::PausedState) - { - lgBrush.setColorAt(0.0,QColor(243,252,70,255)); - lgBrush.setColorAt(0.1,QColor(226,244,60,255)); - lgBrush.setColorAt(0.25,QColor(206,235,41,255)); - lgBrush.setColorAt(0.37,QColor(206,239,41,255)); - lgBrush.setColorAt(0.5,QColor(210,243,41,255)); - lgBrush.setColorAt(0.51,QColor(200,232,16,255)); - lgBrush.setColorAt(0.83,QColor(246,243,56,255)); - lgBrush.setColorAt(1.0,QColor(253,217,75,255)); - } - else if (player->state() == QMediaPlayer::StoppedState) - { - lgBrush.setColorAt(0.0,QColor(252,70,79,255)); - lgBrush.setColorAt(0.1,QColor(244,60,60,255)); - lgBrush.setColorAt(0.25,QColor(235,50,41,255)); - lgBrush.setColorAt(0.37,QColor(239,54,41,255)); - lgBrush.setColorAt(0.5,QColor(243,54,41,255)); - lgBrush.setColorAt(0.51,QColor(232,27,16,255)); - lgBrush.setColorAt(0.83,QColor(246,56,78,255)); - lgBrush.setColorAt(1.0,QColor(253,75,128,255)); - } - p.fillRect(rec,lgBrush); - -} -//==================================== diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h deleted file mode 100644 index 19ff003..0000000 --- a/CasterSoundboard/CasterPlayer.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef CASTERPLAYER_H -#define CASTERPLAYER_H -#include -#include -#include - -//forward declarations -class QMediaPlayer; -class QVBoxLayout; -class QHBoxLayout; -class QLabel; -class QPushButton; -class QSlider; -class QString; - -class CasterPlayerWidget : public QWidget //inherit from QWidget -{ - Q_OBJECT -public: - //Constructor - CasterPlayerWidget(QWidget* parent = 0); //don't forget to pass the parent - - //Set Properties - void setHotKeyLetter(QString hotKey); - - //Media Player - QMediaPlayer *player; - - //Player Methhods - void playSound();//Plays sound - void stopSound();//Stops sound - bool assignFile(const QString &path); - - //Properties - QString *soundFilePath; - QString *hotKeyLetter; - float progress; - int volume; - -protected: - //Focus Event - void mouseMoveEvent(QMouseEvent *event); - //Paint Event - void paintEvent(QPaintEvent *event); //Overide Paint Event - //Drag-N-Drop Events - void dragEnterEvent(QDragEnterEvent *event); - void dragMoveEvent(QDragMoveEvent *event); - void dragLeaveEvent(QDragLeaveEvent *event); - void dropEvent(QDropEvent *event); - // Choose a file instead of dragging - void mousePressEvent(QMouseEvent* event); - bool openFiles(const QStringList &pathList); - -private: - //Private Methods - int getProgressWidth(); //Use to compute width of progress bar - - // Internal state property - enum State { - NoFile, - Loading, - Error, - Active - }; - - State state; - - //contained widgets: - QVBoxLayout *mainLayout; - QHBoxLayout *subMainLayoutH; - QVBoxLayout *subMainLayoutV; - QHBoxLayout *topLayout; - QHBoxLayout *centerLayout; - QHBoxLayout *bottomLayout; - QLabel *soundNameLabel; - QLabel *hotKeyLabel; - QLabel *timeLabel; - QPushButton *playStateButton; - QPushButton *subMenuButton; - QSlider *volumeSlider; - -signals: - //MyWidget's signals.... -public slots: - //MyWidget's slots example: - // void firstButtonClicked(); - //... - void playerToggle(); - void volumeChanged(int value); - void openSubMenu(); - void playerPositionChanged(qint64 position); - void playerStateChanged(QMediaPlayer::State state); - void playerMetaDataChanged(); - void playerNewMediaStatus(QMediaPlayer::MediaStatus status); - void playerError(QMediaPlayer::Error error); -}; -#endif // CASTERPLAYER_H diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro deleted file mode 100644 index 6a13c15..0000000 --- a/CasterSoundboard/CasterSoundboard.pro +++ /dev/null @@ -1,38 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2013-05-27T05:20:34 -# -#------------------------------------------------- - - -QT += core gui multimedia - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - -TARGET = CasterSoundboard -TEMPLATE = app - - -SOURCES += main.cpp\ - CasterPlayer.cpp \ - CasterBoard.cpp \ - CasterBoardLayout.cpp \ - MainWindow.cpp \ - CasterLabelColorPicker.cpp \ - CSS.cpp - -HEADERS += \ - CasterPlayer.h \ - CasterBoard.h \ - CasterBoardLayout.h \ - CSS.h \ - MainWindow.h \ - CasterLabelColorPicker.h - -FORMS += - -RESOURCES += \ - res.qrc - -target.path = $${PREFIX}/bin -INSTALLS += target diff --git a/CasterSoundboard/CasterSoundboard.pro.user b/CasterSoundboard/CasterSoundboard.pro.user deleted file mode 100644 index c4b2070..0000000 --- a/CasterSoundboard/CasterSoundboard.pro.user +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - EnvironmentId - {50358eb3-48cf-418f-8201-244c0b8cf771} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop Qt 5.8.0 GCC 64bit - Desktop Qt 5.8.0 GCC 64bit - qt.58.gcc_64_kit - 0 - 0 - 0 - - /home/oscar/Documents/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - true - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - /home/oscar/Documents/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - - /home/oscar/Documents/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Profile - - - true - qmake - - QtProjectManager.QMakeBuildStep - true - - false - true - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Profile - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 3 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - false - false - 1000 - - true - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - CasterSoundboard - - Qt4ProjectManager.Qt4RunConfiguration:/home/oscar/Documents/CasterSoundboard/CasterSoundboard/CasterSoundboard.pro - true - - CasterSoundboard.pro - false - - /home/oscar/Documents/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 18 - - - Version - 18 - - diff --git a/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 b/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 deleted file mode 100644 index 1a0df52..0000000 --- a/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop Qt 5.1.0 clang 64bit - Desktop Qt 5.1.0 clang 64bit - qt.510.clang_64.essentials_kit - 0 - 0 - 0 - - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Debug - true - - - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Release - true - - 2 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - true - - false - false - false - false - true - 0.01 - 10 - true - 25 - - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - CasterSoundboard - - Qt4ProjectManager.Qt4RunConfiguration:/Users/oscarcerna/Desktop/castersb-code/CasterSoundboard/CasterSoundboard.pro - 2 - - CasterSoundboard.pro - false - false - - - 3768 - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {c518f7b1-f3fd-45b5-8fdd-e02398dff7b3} - - - ProjectExplorer.Project.Updater.FileVersion - 12 - - diff --git a/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 b/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 deleted file mode 100644 index d8fa918..0000000 --- a/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {9bf0fa5d-dc1c-4228-bcea-48de4389f998} - 1 - 0 - 0 - - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/oscar/QT-Projects/build-CasterSoundboard-Desktop-Debug - true - - - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /home/oscar/QT-Projects/build-CasterSoundboard-Desktop-Release - true - - 2 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - true - - false - false - false - false - true - 0.01 - 10 - true - 25 - - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - CasterSoundboard - - Qt4ProjectManager.Qt4RunConfiguration:/home/oscar/QT-Projects/CasterSoundboard/CasterSoundboard.pro - 2 - - CasterSoundboard.pro - false - false - - - 3768 - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {f58cfa53-7051-4cd5-9297-7b90ec352035} - - - ProjectExplorer.Project.Updater.FileVersion - 12 - - diff --git a/CasterSoundboard/ColorConversion.cpp b/CasterSoundboard/ColorConversion.cpp deleted file mode 100644 index d9172aa..0000000 --- a/CasterSoundboard/ColorConversion.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "ColorConversion.h" -#include -#include - -int *getRGB_fromHLS(int H, int S, int L){ - int *ret = new int[3]; - - H = H % 360; - double S_ = S / 100.0; - double L_ = L / 100.0; - - double C = (1.0 - abs(2.0*L_-1.0)) * S_; - double X = C * (1.0 - abs(fmodf(H/60.0, 2.0)-1.0)); - double m = L_ - C/2.0; - - double R_, G_, B_; - - if(0 <= H && H < 60) - { - R_ = C; - G_ = X; - B_ = 0.0; - } - else if (60 <= H && H < 120) - { - R_ = X; - G_ = C; - B_ = 0.0; - } - else if (120 <= H && H < 180) - { - R_ = 0.0; - G_ = C; - B_ = X; - } - else if (180 <= H && H < 240) - { - R_ = 0.0; - G_ = X; - B_ = C; - } - else if (240 <= H && H < 300) - { - R_ = X; - G_ = 0.0; - B_ = C; - } - else if (300 <= H && H < 360) - { - R_ = C; - G_ = 0.0; - B_ = X; - } - - ret[0] = (int)(255.0*(R_+m)); - ret[1] = (int)(255.0*(G_+m)); - ret[2] = (int)(255.0*(B_+m)); - - return ret; -} diff --git a/CasterSoundboard/ColorConversion.h b/CasterSoundboard/ColorConversion.h deleted file mode 100644 index f18e1e0..0000000 --- a/CasterSoundboard/ColorConversion.h +++ /dev/null @@ -1,186 +0,0 @@ -#ifndef COLORCONVERSION_H -#define COLORCONVERSION_H -#include -#include - -struct RGB { - uint r; - uint g; - uint b; -} ; - -struct HSL { - uint h; - uint s; - uint l; -} ; - -void HSLtoRGB_Subfunction(uint& c, const double& temp1, const double& temp2, const double& temp3); - -// This function extracts the hue, saturation, and luminance from "color" -// and places these values in h, s, and l respectively. -HSL RGBtoHSL(const RGB& rgb) -{ - HSL hsl; - - uint r = rgb.r; - uint g = rgb.g; - uint b = rgb.b; - - double r_percent = ((double)r)/255; - double g_percent = ((double)g)/255; - double b_percent = ((double)b)/255; - - double max_color = 0; - if((r_percent >= g_percent) && (r_percent >= b_percent)) - max_color = r_percent; - if((g_percent >= r_percent) && (g_percent >= b_percent)) - max_color = g_percent; - if((b_percent >= r_percent) && (b_percent >= g_percent)) - max_color = b_percent; - - double min_color = 0; - if((r_percent <= g_percent) && (r_percent <= b_percent)) - min_color = r_percent; - if((g_percent <= r_percent) && (g_percent <= b_percent)) - min_color = g_percent; - if((b_percent <= r_percent) && (b_percent <= g_percent)) - min_color = b_percent; - - double L = 0; - double S = 0; - double H = 0; - - L = (max_color + min_color)/2; - - if(max_color == min_color) - { - S = 0; - H = 0; - } - else - { - if(L < .50) - { - S = (max_color - min_color)/(max_color + min_color); - } - else - { - S = (max_color - min_color)/(2 - max_color - min_color); - } - if(max_color == r_percent) - { - H = (g_percent - b_percent)/(max_color - min_color); - } - if(max_color == g_percent) - { - H = 2 + (b_percent - r_percent)/(max_color - min_color); - } - if(max_color == b_percent) - { - H = 4 + (r_percent - g_percent)/(max_color - min_color); - } - } - hsl.s = (uint)(S*100); - hsl.l = (uint)(L*100); - H = H*60; - if(H < 0) - H += 360; - hsl.h = (uint)H; -} - -// This function converts the "color" object to the equivalent RGB values of -// the hue, saturation, and luminance passed as h, s, and l respectively -RGB HSLtoRGB(const HSL& hsl) -{ - RGB rgb; - - uint r = 0; - uint g = 0; - uint b = 0; - - uint h = hsl.h; - uint s = hsl.s; - uint l = hsl.l; - - double L = ((double)hsl.l)/100; - double S = ((double)hsl.s)/100; - double H = ((double)hsl.h)/360; - - if(s == 0) - { - r = l; - g = l; - b = l; - } - else - { - double temp1 = 0; - if(L < .50) - { - temp1 = L*(1 + S); - } - else - { - temp1 = L + S - (L*S); - } - - double temp2 = 2*L - temp1; - - double temp3 = 0; - for(int i = 0 ; i < 3 ; i++) - { - switch(i) - { - case 0: // red - { - temp3 = H + .33333; - if(temp3 > 1) - temp3 -= 1; - HSLtoRGB_Subfunction(r,temp1,temp2,temp3); - break; - } - case 1: // green - { - temp3 = H; - HSLtoRGB_Subfunction(g,temp1,temp2,temp3); - break; - } - case 2: // blue - { - temp3 = H - .33333; - if(temp3 < 0) - temp3 += 1; - HSLtoRGB_Subfunction(b,temp1,temp2,temp3); - break; - } - default: - { - - } - } - } - } - rgb.r = (uint)((((double)r)/100)*255); - rgb.g = (uint)((((double)g)/100)*255); - rgb.b = (uint)((((double)b)/100)*255); -} - -// This is a subfunction of HSLtoRGB -void HSLtoRGB_Subfunction(uint& c, const double& temp1, const double& temp2, const double& temp3) -{ - if((temp3 * 6) < 1) - c = (uint)((temp2 + (temp1 - temp2)*6*temp3)*100); - else - if((temp3 * 2) < 1) - c = (uint)(temp1*100); - else - if((temp3 * 3) < 2) - c = (uint)((temp2 + (temp1 - temp2)*(.66666 - temp3)*6)*100); - else - c = (uint)(temp2*100); - return; -} - - -#endif // COLORCONVERSION_H diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp deleted file mode 100644 index bca0b10..0000000 --- a/CasterSoundboard/MainWindow.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "MainWindow.h" -#include "CasterBoard.h" -#include -#include -#include -#include -#include -#include - -//CONSTRUCTOR -MainWindow::MainWindow(QWidget *parent) : QWidget(parent) -{ - //SET WINDOW PROPETIES - this->setWindowTitle("CasterSoundboard"); - this->setWindowIcon(QIcon(":/res/img/app.png")); - - //DENFINE LAYOUT - QGridLayout *layout = new QGridLayout; - - //INIT NEW TAB PUSH BUTTONS - //~~About Button~~ - aboutButton = new QPushButton; - aboutButton->setIcon(QIcon(":/res/img/about.png")); - aboutButton->setIconSize(QSize(25,25)); - aboutButton->setFixedSize(30,30); - //layout->addWidget(aboutButton,0,0, Qt::AlignLeft); - - //~~New Tab~~ - addNewTabButton = new QPushButton; - addNewTabButton->setIcon(QIcon(":/res/img/newTab.png")); - addNewTabButton->setIconSize(QSize(25,25)); - addNewTabButton->setFixedSize(30,30); - //layout->addWidget(addNewTabButton,0,1, Qt::AlignRight); - - //======Main Toolbar========= - mainToolbar = new QToolBar; - // Add buttons - mainToolbar->addWidget(addNewTabButton); - mainToolbar->addWidget(aboutButton); - // Add toolbar to layout - layout->addWidget(mainToolbar, 0, 0, Qt::AlignLeft); - - //INIT MAIN TAB CONTAINER - mainTabContainer = new QTabWidget; - mainTabContainer->setTabsClosable(true); - layout->addWidget(mainTabContainer,1,0, 2, 0); - - //SET LAYOUT - this->setLayout(layout); - - restoreSettings(); - - //MAKE CONNECTIONS - connect(aboutButton,SIGNAL(clicked()),this,SLOT(aboutBox())); - connect(addNewTabButton,SIGNAL(clicked()),this,SLOT(addNewTab())); - connect(mainTabContainer,SIGNAL(tabCloseRequested(int)),this,SLOT(mainTabContainerTabClosedRequested(int))); -} - -void MainWindow::closeEvent(QCloseEvent *event) -{ - QSettings settings("Jupiter Broadcasting", "CasterSoundboard"); - - settings.beginWriteArray("boards"); - - for (int i = 0; i < mainTabContainer->count(); ++i) { - settings.setArrayIndex(i); - settings.setValue("title", mainTabContainer->tabText(i)); - - CasterBoard *cb; - cb = static_cast(mainTabContainer->widget(i)); - cb->saveLayout(settings); - } - - settings.endArray(); - - event->accept(); -} - -void MainWindow::restoreSettings() -{ - QSettings settings("Jupiter Broadcasting", "CasterSoundboard"); - - int size = settings.beginReadArray("boards"); - - for (int i = 0; i < size; ++i) { - settings.setArrayIndex(i); - - CasterBoard *cb = new CasterBoard; - mainTabContainer->addTab(cb, settings.value("title").toString()); - cb->restoreLayout(settings); - } - settings.endArray(); -} - -//SLOTS -void MainWindow::aboutBox() -{ - QMessageBox msgBox; - msgBox.setText("CasterSoundboard (v0.1)\nAuthor: Oscar Cerna\ne-mail: covarianttensor@gmail.com\nLicense: LGPL v3\n© 2013 Oscar Cerna"); - msgBox.setInformativeText("Special Note:\nDeveloped for Chris Fisher & Jupiter Broadcasting, because he's awesome!\nVisit www.jupiterbroadcasting.com.\nNOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); - msgBox.setStandardButtons(QMessageBox::Close); - msgBox.setDefaultButton(QMessageBox::Close); - msgBox.setModal(true); - msgBox.setWindowTitle("About"); - msgBox.setWindowIcon(QIcon(":/res/img/about.png")); - msgBox.exec(); -} - -void MainWindow::addNewTab() -{ - //ASK FOR SOUNDBOARD TAB - bool ok; - QString text = QInputDialog::getText( - this, - tr("String"), - tr("Enter a tab name:"), - QLineEdit::Normal, - tr(""), - &ok ); - if(ok) - { - //CREATE REQUESTED TABS - CasterBoard *cb = new CasterBoard; - if(text != "") - { - mainTabContainer->addTab(cb, text); - } - else - { - mainTabContainer->addTab(cb, "No Name"); - } - - } - -} - -void MainWindow::mainTabContainerTabClosedRequested(int tabIndex) -{ - //CONFIRM TAB CLOSE - QMessageBox msgBox; - msgBox.setText("Are you sure you want to close this tab"); - msgBox.setWindowIcon(QIcon(":/res/img/app.png")); - msgBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes); - msgBox.setDefaultButton(QMessageBox::No); - msgBox.setModal(true); - if(msgBox.exec() == QMessageBox::Yes) - { - //CLOSE REQUESTED TAB - mainTabContainer->removeTab(tabIndex); - } -} diff --git a/CasterSoundboard/MainWindow.h b/CasterSoundboard/MainWindow.h deleted file mode 100644 index 579e0b2..0000000 --- a/CasterSoundboard/MainWindow.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H -#include -#include - -//forward declarations -class QTabWidget; -class QPushButton; -class QToolBar; - -class MainWindow : public QWidget //inherit from QWidget -{ - Q_OBJECT -public: - //Constructor - MainWindow(QWidget* parent = 0); //don't forget to pass the parent - - //PROPERTIES - - //METHODS - - //WIDGETS - - -protected: - //PROPERTIES - - //METHODS - void closeEvent(QCloseEvent *event) override; - - //WIDGETS - -private: - //PROPERTIES - - //METHODS - void restoreSettings(); - - //WIDGETS - //Toolbar - QToolBar *mainToolbar; - // Push Buttons - QPushButton *addNewTabButton; - QPushButton *aboutButton; - QTabWidget *mainTabContainer; - - -signals: - //SIGNALS - -public slots: - //SLOTS - void aboutBox(); - void addNewTab(); - void mainTabContainerTabClosedRequested(int tabIndex); - -}; - -#endif // MAINWINDOW_H diff --git a/CasterSoundboard/main.cpp b/CasterSoundboard/main.cpp deleted file mode 100644 index edd178d..0000000 --- a/CasterSoundboard/main.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - * - * Copyright 2013 Oscar Cerna - * - * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. - * For more information, please visit http://sourceforge.net/projects/castersb. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE - * as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU LESSER GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "MainWindow.h" -#include - - -int main(int argc, char *argv[]) -{ - //START APPLICATION - QApplication a(argc, argv); - //CREATE MAIN WINDOW - MainWindow *w = new MainWindow; - //SET MAIN WINDOW SIZE - w->resize(1000, 500); - //SHOW MAIN WINDOW - w->show(); - //END APPLICATION - return a.exec(); -} diff --git a/CasterSoundboard/res.qrc b/CasterSoundboard/res.qrc deleted file mode 100644 index 7fc7356..0000000 --- a/CasterSoundboard/res.qrc +++ /dev/null @@ -1,12 +0,0 @@ - - - res/img/Key.png - res/img/down.png - res/img/app.png - res/img/pause.png - res/img/play.png - res/img/stop.png - res/img/newTab.png - res/img/about.png - - diff --git a/CasterSoundboard/res/img/Key.png b/CasterSoundboard/res/img/Key.png deleted file mode 100644 index 162377990eb9b58cbee5f41740c8eb3d851721bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1418 zcmV;51$Fv~P)U8P*7-ZbZ>KLZ*U+lnSp_Ufq@}0xwybFAi#%#fq@|}KQEO56)-X|e7nZL z$iTqBa9P*U#mSX{G{Bl%P*lRez;J+pfx##xwK$o9f#C}S14DXwNkIt%17i#W1A|CX zc0maP17iUL1A|C*NRTrF17iyV0~1e4YDEbH0|SF|enDkXW_m`6f}y3QrGjHhep0GJ zaAk2xYHqQDXI^rCQ9*uDVo7QW0|Nup4h9AW240u^5(W3f%sd4n162kpgNVo|1qcff zJ_s=cNG>fZg9jx8g8+j9g8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCG zm^qSpA@ds+OO_6nTdaDlt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JW@PU zd4+f<@d@)yL(o<5icqT158+-B6_LH7;i6x}CW#w~Uy-Pgl#@Irl`kzV zeL|*8R$ca%T%Wv){2zs_iiJvgN^h0dsuZZ2sQy$tsNSU!s;Q*;LF<6_B%M@UD?LHI zSNcZ`78uqV#TeU~$eS{ozBIdFzSClfs*^S+dw;4dus<{M;#|MXC)T}S9v!D zcV!QCPhBq)ZyO(X-(bH4|NMaZz==UigLj2o41F2S6d@OB6%`R(5i>J(Puzn9wnW{e zu;hl6HK{k#IWjCVGqdJqU(99Cv(K+6*i`tgSi2;vbXD1#3jNBGs$DgVwO(~o>mN4i zHPtkqZIx>)Y(Ls5-Br|mx>vQYvH$Kwn@O`L|D75??eGkZnfg$5<;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ->`6pHRCwB~R$FqzFbLdLxM1&pi~iU2 zL$<^MaVBXsli1b^Se6IBzLAE5_fU*LOc=x>1j{A+0#If%f=il$8xdywkkz!v4LW|0+BG4ntOJ>VjJYYCyx z-Z9;4JeSx=We~+g5fqp3x)2x=kJrYL$gI&`1956=BXGZ$$@J5eyx&H%@G6okp8IJ7 z|2xWsyrH>b_~gQeq)Nguggg|AWb9&=5|iIc4Ss{VJ)Xw0Qn#Z{&6Ovyk>XT+w{1{U zM}Vhb_}S=8x5uqlA<^K;zZDcQ8OdX{cupgAUaR8ra*j);ZP)(@)QKlTT^`9GrbtE` z-zfa!zAz#%ZeyX&GFad{ePQK9jfIY9xu7XDgrVtADoQR4MG>?8Z(Z4`@!DVKO_wpy zE=y`!>7eE)R7z{|cFwR$uvh?2`8Uae{GCKD8I_APXrXDEc3jn_Z Y07gg`1K@|$%K!iX07*qoM6N<$f;g~yPyhe` diff --git a/CasterSoundboard/res/img/about.png b/CasterSoundboard/res/img/about.png deleted file mode 100644 index e0109e7672f609d6b34546c83ff7aff4c9e8d0d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1685 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 diff --git a/CasterSoundboard/res/img/down.png b/CasterSoundboard/res/img/down.png deleted file mode 100644 index 6919d63ae912a76b02c5131c0d8288496858a7fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4401 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

~&~l>h9d-)Y=5pQ98$& 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 nY(OkfM*q*|&8?8n%eydK^zVPd3n_Z; diff --git a/CasterSoundboard/res/img/play.png b/CasterSoundboard/res/img/play.png deleted file mode 100644 index dfa29c2d8bb4ad46b8ce214d06554f6ff9c70b07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7289 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 LXv$Z~T88`|X`+-> diff --git a/CasterSoundboard/res/img/stop.png b/CasterSoundboard/res/img/stop.png deleted file mode 100644 index 1eb9d12a1853a593d0ee9d56f9d01d0979f9fcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11442 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 Date: Wed, 10 May 2017 02:07:00 -0700 Subject: [PATCH 27/77] Added new project. This commit makes CasterSoundboard feature-complete. --- CasterSoundboard/CSS.cpp | 306 ++++++++ CasterSoundboard/CSS.h | 70 ++ CasterSoundboard/CasterBoard.cpp | 739 ++++++++++++++++++ CasterSoundboard/CasterBoard.h | 106 +++ CasterSoundboard/CasterCuePicker.cpp | 216 +++++ CasterSoundboard/CasterCuePicker.h | 86 ++ CasterSoundboard/CasterLabel.cpp | 2 + CasterSoundboard/CasterLabelColorPicker.cpp | 226 ++++++ CasterSoundboard/CasterLabelColorPicker.h | 94 +++ CasterSoundboard/CasterPlayer.cpp | 700 +++++++++++++++++ CasterSoundboard/CasterPlayer.h | 134 ++++ CasterSoundboard/CasterPlayerState.cpp | 42 + CasterSoundboard/CasterPlayerState.h | 33 + CasterSoundboard/CasterSoundboard.pro | 37 + CasterSoundboard/CasterSoundboard.pro.user | 336 ++++++++ .../CasterSoundboard.pro.user.2.7pre1 | 256 ++++++ .../CasterSoundboard.pro.user.f58cfa5 | 256 ++++++ CasterSoundboard/ColorConversion.cpp | 60 ++ CasterSoundboard/ColorConversion.h | 186 +++++ CasterSoundboard/MainWindow.cpp | 333 ++++++++ CasterSoundboard/MainWindow.h | 90 +++ CasterSoundboard/main.cpp | 39 + CasterSoundboard/res.qrc | 27 + CasterSoundboard/res/img/Key.png | Bin 0 -> 1418 bytes CasterSoundboard/res/img/about.png | Bin 0 -> 1685 bytes CasterSoundboard/res/img/app.png | Bin 0 -> 39463 bytes CasterSoundboard/res/img/cog.png | Bin 0 -> 1742 bytes CasterSoundboard/res/img/colorPicker.png | Bin 0 -> 1786 bytes CasterSoundboard/res/img/cue.png | Bin 0 -> 3204 bytes CasterSoundboard/res/img/down.png | Bin 0 -> 4401 bytes CasterSoundboard/res/img/loop.png | Bin 0 -> 874 bytes CasterSoundboard/res/img/newTab.png | Bin 0 -> 9680 bytes CasterSoundboard/res/img/no_loop.png | Bin 0 -> 4262 bytes CasterSoundboard/res/img/notes.png | Bin 0 -> 2644 bytes CasterSoundboard/res/img/open.png | Bin 0 -> 2201 bytes CasterSoundboard/res/img/openMusic.png | Bin 0 -> 3765 bytes CasterSoundboard/res/img/pause.png | Bin 0 -> 9493 bytes CasterSoundboard/res/img/play.png | Bin 0 -> 7289 bytes CasterSoundboard/res/img/playState_paused.png | Bin 0 -> 309 bytes .../res/img/playState_playing.png | Bin 0 -> 456 bytes .../res/img/playState_stopped.png | Bin 0 -> 294 bytes CasterSoundboard/res/img/rename.png | Bin 0 -> 1459 bytes CasterSoundboard/res/img/save.png | Bin 0 -> 16288 bytes CasterSoundboard/res/img/save_as.png | Bin 0 -> 9788 bytes CasterSoundboard/res/img/stop.png | Bin 0 -> 11442 bytes CasterSoundboard/res/img/stopAll.png | Bin 0 -> 8964 bytes README.md | 2 +- 47 files changed, 4375 insertions(+), 1 deletion(-) create mode 100644 CasterSoundboard/CSS.cpp create mode 100644 CasterSoundboard/CSS.h create mode 100644 CasterSoundboard/CasterBoard.cpp create mode 100644 CasterSoundboard/CasterBoard.h create mode 100644 CasterSoundboard/CasterCuePicker.cpp create mode 100644 CasterSoundboard/CasterCuePicker.h create mode 100644 CasterSoundboard/CasterLabel.cpp create mode 100644 CasterSoundboard/CasterLabelColorPicker.cpp create mode 100644 CasterSoundboard/CasterLabelColorPicker.h create mode 100644 CasterSoundboard/CasterPlayer.cpp create mode 100644 CasterSoundboard/CasterPlayer.h create mode 100644 CasterSoundboard/CasterPlayerState.cpp create mode 100644 CasterSoundboard/CasterPlayerState.h create mode 100644 CasterSoundboard/CasterSoundboard.pro create mode 100644 CasterSoundboard/CasterSoundboard.pro.user create mode 100644 CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 create mode 100644 CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 create mode 100644 CasterSoundboard/ColorConversion.cpp create mode 100644 CasterSoundboard/ColorConversion.h create mode 100644 CasterSoundboard/MainWindow.cpp create mode 100644 CasterSoundboard/MainWindow.h create mode 100644 CasterSoundboard/main.cpp create mode 100644 CasterSoundboard/res.qrc create mode 100644 CasterSoundboard/res/img/Key.png create mode 100644 CasterSoundboard/res/img/about.png create mode 100644 CasterSoundboard/res/img/app.png create mode 100644 CasterSoundboard/res/img/cog.png create mode 100644 CasterSoundboard/res/img/colorPicker.png create mode 100644 CasterSoundboard/res/img/cue.png create mode 100644 CasterSoundboard/res/img/down.png create mode 100644 CasterSoundboard/res/img/loop.png create mode 100644 CasterSoundboard/res/img/newTab.png create mode 100644 CasterSoundboard/res/img/no_loop.png create mode 100644 CasterSoundboard/res/img/notes.png create mode 100644 CasterSoundboard/res/img/open.png create mode 100644 CasterSoundboard/res/img/openMusic.png create mode 100644 CasterSoundboard/res/img/pause.png create mode 100644 CasterSoundboard/res/img/play.png create mode 100644 CasterSoundboard/res/img/playState_paused.png create mode 100644 CasterSoundboard/res/img/playState_playing.png create mode 100644 CasterSoundboard/res/img/playState_stopped.png create mode 100644 CasterSoundboard/res/img/rename.png create mode 100644 CasterSoundboard/res/img/save.png create mode 100644 CasterSoundboard/res/img/save_as.png create mode 100644 CasterSoundboard/res/img/stop.png create mode 100644 CasterSoundboard/res/img/stopAll.png diff --git a/CasterSoundboard/CSS.cpp b/CasterSoundboard/CSS.cpp new file mode 100644 index 0000000..99214ae --- /dev/null +++ b/CasterSoundboard/CSS.cpp @@ -0,0 +1,306 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "CSS.h" +#include +#include + +QString Generate_CSS(HSL_C hsl_color) +{ + RGB_C rgb_color = RGB_C(0,0,0); + QString CSS_STR = "CasterPlayerWidget{background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,stop:0.0 rgba("; + rgb_color = RGB_C(184,225,252); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.1)); + rgb_color = RGB_C(169,210,243); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.25)); + rgb_color = RGB_C(144,186,228); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.37)); + rgb_color = RGB_C(144,188,234); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.5)); + rgb_color = RGB_C(144,191,240); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.51)); + rgb_color = RGB_C(107,168,229); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.83)); + rgb_color = RGB_C(162,218,245); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(1.0)); + rgb_color = RGB_C(189,243,253); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(", 255));}"); + return CSS_STR; +} + +QString Generate_CSS_W(HSL_C hsl_color) +{ + RGB_C rgb_color = RGB_C(0,0,0); + QString CSS_STR = "QWidget{background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,stop:0.0 rgba("; + rgb_color = RGB_C(184,225,252); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.1)); + rgb_color = RGB_C(169,210,243); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.25)); + rgb_color = RGB_C(144,186,228); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.37)); + rgb_color = RGB_C(144,188,234); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.5)); + rgb_color = RGB_C(144,191,240); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.51)); + rgb_color = RGB_C(107,168,229); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(0.83)); + rgb_color = RGB_C(162,218,245); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(Generate_CSS_Gradient_Stop(1.0)); + rgb_color = RGB_C(189,243,253); rgb_color = rgb_color.addHSL(hsl_color); CSS_STR.append(rgb_color.toStr()); + CSS_STR.append(", 255));}"); + return CSS_STR; +} + +QString Generate_CSS_Gradient_Stop(float stop) +{ + QString CSS_STR = ", 255),stop:"; + CSS_STR.append(QString::number(stop)); + CSS_STR.append(" rgba("); + return CSS_STR; +} + +float Clamp(float value, float lower, float upper) +{ + return Max(Min(value, upper), lower); +} + +float Max(float a, float b) +{ + if(a == b) + { + return a; + } + else if(a > b) + { + return a; + } + else + { + return b; + } +} + +float Max(float a, float b, float c) +{ + return Max(Max(a, b), Max(b, c)); +} + +float Min(float a, float b) +{ + if(a == b) + { + return a; + } + else if(a > b) + { + return b; + } + else + { + return a; + } +} + +float Min(float a, float b, float c) +{ + return Min(Min(a, b), Min(b, c)); +} + +float CSS::abs(float a) +{ + if (a >= 0) + { + return a; + } + else + { + return -a; + } +} + +int fSwitch(float value, float a, float b, float c) +{ + if(value == a) + { + return 1; + } + else if(value == b) + { + return 2; + } + else if(value == c) + { + return 3; + } + else + { + return 0; + } +} + +RGB_C::RGB_C(HSL_C hsl_color) +{ + float h = hsl_color.H; + float s = hsl_color.S; + float l = hsl_color.L; + float r; + float g; + float b; + + float c = ( 1 - CSS::abs( 2 * l - 1 ) ) * s; + float x = c * ( 1 - CSS::abs( fmod(( h / 60 ), 2 ) - 1 ) ); + float m = l - ( c / 2 ); + + if ( h < 60 ) + { + r = c; + g = x; + b = 0; + } + else if ( h < 120 ) + { + r = x; + g = c; + b = 0; + } + else if ( h < 180 ) + { + r = 0; + g = c; + b = x; + } + else if ( h < 240 ) + { + r = 0; + g = x; + b = c; + } + else if ( h < 300 ) + { + r = x; + g = 0; + b = c; + } + else + { + r = c; + g = 0; + b = x; + } + + R = ( r + m ) * 255; + G = ( g + m ) * 255; + B = ( b + m ) * 255; +} + +RGB_C RGB_C::operator +(RGB_C &color) +{ + return RGB_C( Clamp(R + color.R, 0, 360), + Clamp(G + color.G, 0, 1), + Clamp(B + color.B, 0, 1)); +} + +RGB_C RGB_C::addHSL(HSL_C &color) +{ + RGB_C temp_rgb = RGB_C(R,G,B); + HSL_C temp_hsl = HSL_C(temp_rgb); + temp_hsl = temp_hsl + color; + return RGB_C(temp_hsl); +} + +QString RGB_C::toStr() +{ + QString str = ""; + str.append(QString::number(R)); + str.append(","); + str.append(QString::number(G)); + str.append(","); + str.append(QString::number(B)); + return str; +} + +HSL_C::HSL_C(RGB_C rgb_color) +{ + float r = rgb_color.R / 255.0; + float g = rgb_color.G / 255.0; + float b = rgb_color.B / 255.0; + float max = Max(r, g, b); + float min = Min(r, g, b); + float h; + float s; + float l = (max + min) / 2.0; + float d = max - min; + if(d == 0) + { + h = 0; + s = 0; + } + else + { + s = d / ( 1 - abs( 2 * l - 1 ) ); + + switch(fSwitch(max, r,g,b)) + { + case 1: + h = 60 * ( fmod((( g - b ) / d ), 6.0 ) ); + break; + case 2: + h = 60 * ( ( b - r ) / d + 2.0 ); + break; + case 3: + h = 60 * ( ( r - g ) / d + 4.0 ); + break; + default: + break; + } + } + + H = h; + S = s; + L = l; +} + +HSL_C HSL_C::operator +(HSL_C &color) +{ + return HSL_C( Clamp(H + color.H, 0,360), + Clamp(S + color.S, 0, 1), + Clamp(L + color.L, 0, 1)); +} + +HSL_C HSL_C::addRGB(RGB_C &color) +{ + HSL_C temp_hsl = HSL_C(H,S,L); + RGB_C temp_rgb = RGB_C(temp_hsl); + temp_rgb = temp_rgb + color; + return HSL_C(temp_rgb); +} + +QString HSL_C::toStr() +{ + QString str = ""; + str.append(QString::number(H)); + str.append(","); + str.append(QString::number(S)); + str.append(","); + str.append(QString::number(L)); + return str; +} diff --git a/CasterSoundboard/CSS.h b/CasterSoundboard/CSS.h new file mode 100644 index 0000000..d4254c5 --- /dev/null +++ b/CasterSoundboard/CSS.h @@ -0,0 +1,70 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#ifndef CSS_H +#define CSS_H + +#define CSS_GRAIENT_GREY "CasterPlayerWidget{background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,stop:0.0 rgba(218,218,218, 255),stop:0.1 rgba(206,206,206, 255),stop:0.25 rgba(186,186,186, 255),stop:0.37 rgba(189,189,189, 255),stop:0.5 rgba(192,192,192, 255),stop:0.51 rgba(168,168,168, 255),stop:0.83 rgba(204,204,204, 255),stop:1.0 rgba(221,221,221, 255));}" +#define CSS_GRAIENT_GREY_W "QWidget{background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,stop:0.0 rgba(218,218,218, 255),stop:0.1 rgba(206,206,206, 255),stop:0.25 rgba(186,186,186, 255),stop:0.37 rgba(189,189,189, 255),stop:0.5 rgba(192,192,192, 255),stop:0.51 rgba(168,168,168, 255),stop:0.83 rgba(204,204,204, 255),stop:1.0 rgba(221,221,221, 255));}" + +//Foward Declarations +class QString; +struct RGB_C; +struct HSL_C; + +struct RGB_C { + float R; + float G; + float B; + RGB_C(float red, float green, float blue) : R(red), G(green), B(blue) {} + RGB_C(HSL_C hsl_color); + RGB_C operator+(RGB_C &color); + RGB_C addHSL(HSL_C &color); + QString toStr(); +} ; + +struct HSL_C { + float H; + float S; + float L; + HSL_C(float hue, float sat, float light ) : H(hue), S(sat), L(light) {} + HSL_C(RGB_C rgb_color); + HSL_C operator+(HSL_C &color); + HSL_C addRGB(RGB_C &color); + QString toStr(); +}; + +QString Generate_CSS(HSL_C hsl_color); +QString Generate_CSS_W(HSL_C hsl_color); +QString Generate_CSS_Gradient_Stop(float stop); + +float Clamp(float value, float lower, float upper); +float Max(float a, float b); +float Max(float a, float b, float c); +float Min(float a, float b); +float Min(float a, float b, float c); +namespace CSS { +float abs(float a); +} +int fSwitch(float value, float a, float b, float c); + +#endif // CSS_H diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp new file mode 100644 index 0000000..3d93d60 --- /dev/null +++ b/CasterSoundboard/CasterBoard.cpp @@ -0,0 +1,739 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "CasterBoard.h" +#include "CasterPlayer.h" +#include "CasterPlayerState.h" +#include +#include +#include +#include + +//Constructor============================================= +CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) +{ + QGridLayout *boardLayout = new QGridLayout(this); + + //Properties + soundBoardName = new QString("No Name"); + profileFilePath = new QString(""); + + //WIDGETS + player1 = new CasterPlayerWidget; + player1->setHotKeyLetter("1"); + player2 = new CasterPlayerWidget; + player2->setHotKeyLetter("2"); + player3 = new CasterPlayerWidget; + player3->setHotKeyLetter("3"); + player4 = new CasterPlayerWidget; + player4->setHotKeyLetter("4"); + player5 = new CasterPlayerWidget; + player5->setHotKeyLetter("5"); + player6 = new CasterPlayerWidget; + player6->setHotKeyLetter("6"); + player7 = new CasterPlayerWidget; + player7->setHotKeyLetter("7"); + player8 = new CasterPlayerWidget; + player8->setHotKeyLetter("8"); + + playerQ = new CasterPlayerWidget; + playerQ->setHotKeyLetter("Q"); + playerW = new CasterPlayerWidget; + playerW->setHotKeyLetter("W"); + playerE = new CasterPlayerWidget; + playerE->setHotKeyLetter("E"); + playerR = new CasterPlayerWidget; + playerR->setHotKeyLetter("R"); + playerT = new CasterPlayerWidget; + playerT->setHotKeyLetter("T"); + playerY = new CasterPlayerWidget; + playerY->setHotKeyLetter("Y"); + playerU = new CasterPlayerWidget; + playerU->setHotKeyLetter("U"); + playerI = new CasterPlayerWidget; + playerI->setHotKeyLetter("I"); + + playerA = new CasterPlayerWidget; + playerA->setHotKeyLetter("A"); + playerS = new CasterPlayerWidget; + playerS->setHotKeyLetter("S"); + playerD = new CasterPlayerWidget; + playerD->setHotKeyLetter("D"); + playerF = new CasterPlayerWidget; + playerF->setHotKeyLetter("F"); + playerG = new CasterPlayerWidget; + playerG->setHotKeyLetter("G"); + playerH = new CasterPlayerWidget; + playerH->setHotKeyLetter("H"); + playerJ = new CasterPlayerWidget; + playerJ->setHotKeyLetter("J"); + playerK = new CasterPlayerWidget; + playerK->setHotKeyLetter("K"); + + playerZ = new CasterPlayerWidget; + playerZ->setHotKeyLetter("Z"); + playerX = new CasterPlayerWidget; + playerX->setHotKeyLetter("X"); + playerC = new CasterPlayerWidget; + playerC->setHotKeyLetter("C"); + playerV = new CasterPlayerWidget; + playerV->setHotKeyLetter("V"); + playerB = new CasterPlayerWidget; + playerB->setHotKeyLetter("B"); + playerN = new CasterPlayerWidget; + playerN->setHotKeyLetter("N"); + playerM = new CasterPlayerWidget; + playerM->setHotKeyLetter("M"); + playerCOMMA = new CasterPlayerWidget; + playerCOMMA->setHotKeyLetter(","); + + //ADD TO LAYOUT + boardLayout->addWidget(player1, 0,0); + boardLayout->addWidget(player2, 0,1); + boardLayout->addWidget(player3, 0,2); + boardLayout->addWidget(player4, 0,3); + boardLayout->addWidget(player5, 0,4); + boardLayout->addWidget(player6, 0,5); + boardLayout->addWidget(player7, 0,6); + boardLayout->addWidget(player8, 0,7); + + boardLayout->addWidget(playerQ, 1,0); + boardLayout->addWidget(playerW, 1,1); + boardLayout->addWidget(playerE, 1,2); + boardLayout->addWidget(playerR, 1,3); + boardLayout->addWidget(playerT, 1,4); + boardLayout->addWidget(playerY, 1,5); + boardLayout->addWidget(playerU, 1,6); + boardLayout->addWidget(playerI, 1,7); + + boardLayout->addWidget(playerA, 2,0); + boardLayout->addWidget(playerS, 2,1); + boardLayout->addWidget(playerD, 2,2); + boardLayout->addWidget(playerF, 2,3); + boardLayout->addWidget(playerG, 2,4); + boardLayout->addWidget(playerH, 2,5); + boardLayout->addWidget(playerJ, 2,6); + boardLayout->addWidget(playerK, 2,7); + + boardLayout->addWidget(playerZ, 3,0); + boardLayout->addWidget(playerX, 3,1); + boardLayout->addWidget(playerC, 3,2); + boardLayout->addWidget(playerV, 3,3); + boardLayout->addWidget(playerB, 3,4); + boardLayout->addWidget(playerN, 3,5); + boardLayout->addWidget(playerM, 3,6); + boardLayout->addWidget(playerCOMMA, 3,7); +} +//PUBLIC +void CasterBoard::stopAllSounds() +{ + //WIDGETS + player1->stopSound(); + player2->stopSound(); + player3->stopSound(); + player4->stopSound(); + player5->stopSound(); + player6->stopSound(); + player7->stopSound(); + player8->stopSound(); + + playerQ->stopSound(); + playerW->stopSound(); + playerE->stopSound(); + playerR->stopSound(); + playerT->stopSound(); + playerY->stopSound(); + playerU->stopSound(); + playerI->stopSound(); + + playerA->stopSound(); + playerS->stopSound(); + playerD->stopSound(); + playerF->stopSound(); + playerG->stopSound(); + playerH->stopSound(); + playerJ->stopSound(); + playerK->stopSound(); + + playerZ->stopSound(); + playerX->stopSound(); + playerC->stopSound(); + playerV->stopSound(); + playerB->stopSound(); + playerN->stopSound(); + playerM->stopSound(); + playerCOMMA->stopSound(); +} + + +// PROTECTED +void CasterBoard::keyReleaseEvent(QKeyEvent *event) +{ + //Handles All Hot Key Behavior + //BOARD 1 + if(event->key() == Qt::Key_1) + { + if(player1->player->state() == QMediaPlayer::PlayingState) + { + player1->stopSound(); + } + else if (player1->player->state() == QMediaPlayer::PausedState) + { + player1->playSound(); + } + else if (player1->player->state() == QMediaPlayer::StoppedState) + { + player1->playSound(); + } + } + else if(event->key() == Qt::Key_2) + { + if(player2->player->state() == QMediaPlayer::PlayingState) + { + player2->stopSound(); + } + else if (player2->player->state() == QMediaPlayer::PausedState) + { + player2->playSound(); + } + else if (player2->player->state() == QMediaPlayer::StoppedState) + { + player2->playSound(); + } + } + else if(event->key() == Qt::Key_3) + { + if(player3->player->state() == QMediaPlayer::PlayingState) + { + player3->stopSound(); + } + else if (player3->player->state() == QMediaPlayer::PausedState) + { + player3->playSound(); + } + else if (player3->player->state() == QMediaPlayer::StoppedState) + { + player3->playSound(); + } + } + else if(event->key() == Qt::Key_4) + { + if(player4->player->state() == QMediaPlayer::PlayingState) + { + player4->stopSound(); + } + else if (player4->player->state() == QMediaPlayer::PausedState) + { + player4->playSound(); + } + else if (player4->player->state() == QMediaPlayer::StoppedState) + { + player4->playSound(); + } + } + else if(event->key() == Qt::Key_5) + { + if(player5->player->state() == QMediaPlayer::PlayingState) + { + player5->stopSound(); + } + else if (player5->player->state() == QMediaPlayer::PausedState) + { + player5->playSound(); + } + else if (player5->player->state() == QMediaPlayer::StoppedState) + { + player5->playSound(); + } + } + else if(event->key() == Qt::Key_6) + { + if(player6->player->state() == QMediaPlayer::PlayingState) + { + player6->stopSound(); + } + else if (player6->player->state() == QMediaPlayer::PausedState) + { + player6->playSound(); + } + else if (player6->player->state() == QMediaPlayer::StoppedState) + { + player6->playSound(); + } + } + else if(event->key() == Qt::Key_7) + { + if(player7->player->state() == QMediaPlayer::PlayingState) + { + player7->stopSound(); + } + else if (player7->player->state() == QMediaPlayer::PausedState) + { + player7->playSound(); + } + else if (player7->player->state() == QMediaPlayer::StoppedState) + { + player7->playSound(); + } + } + else if(event->key() == Qt::Key_8) + { + if(player8->player->state() == QMediaPlayer::PlayingState) + { + player8->stopSound(); + } + else if (player8->player->state() == QMediaPlayer::PausedState) + { + player8->playSound(); + } + else if (player8->player->state() == QMediaPlayer::StoppedState) + { + player8->playSound(); + } + } + //BOARD 2 + else if(event->key() == Qt::Key_Q) + { + if(playerQ->player->state() == QMediaPlayer::PlayingState) + { + playerQ->stopSound(); + } + else if (playerQ->player->state() == QMediaPlayer::PausedState) + { + playerQ->playSound(); + } + else if (playerQ->player->state() == QMediaPlayer::StoppedState) + { + playerQ->playSound(); + } + } + else if(event->key() == Qt::Key_W) + { + if(playerW->player->state() == QMediaPlayer::PlayingState) + { + playerW->stopSound(); + } + else if (playerW->player->state() == QMediaPlayer::PausedState) + { + playerW->playSound(); + } + else if (playerW->player->state() == QMediaPlayer::StoppedState) + { + playerW->playSound(); + } + } + else if(event->key() == Qt::Key_E) + { + if(playerE->player->state() == QMediaPlayer::PlayingState) + { + playerE->stopSound(); + } + else if (playerE->player->state() == QMediaPlayer::PausedState) + { + playerE->playSound(); + } + else if (playerE->player->state() == QMediaPlayer::StoppedState) + { + playerE->playSound(); + } + } + else if(event->key() == Qt::Key_R) + { + if(playerR->player->state() == QMediaPlayer::PlayingState) + { + playerR->stopSound(); + } + else if (playerR->player->state() == QMediaPlayer::PausedState) + { + playerR->playSound(); + } + else if (playerR->player->state() == QMediaPlayer::StoppedState) + { + playerR->playSound(); + } + } + else if(event->key() == Qt::Key_T) + { + if(playerT->player->state() == QMediaPlayer::PlayingState) + { + playerT->stopSound(); + } + else if (playerT->player->state() == QMediaPlayer::PausedState) + { + playerT->playSound(); + } + else if (playerT->player->state() == QMediaPlayer::StoppedState) + { + playerT->playSound(); + } + } + else if(event->key() == Qt::Key_Y) + { + if(playerY->player->state() == QMediaPlayer::PlayingState) + { + playerY->stopSound(); + } + else if (playerY->player->state() == QMediaPlayer::PausedState) + { + playerY->playSound(); + } + else if (playerY->player->state() == QMediaPlayer::StoppedState) + { + playerY->playSound(); + } + } + else if(event->key() == Qt::Key_U) + { + if(playerU->player->state() == QMediaPlayer::PlayingState) + { + playerU->stopSound(); + } + else if (playerU->player->state() == QMediaPlayer::PausedState) + { + playerU->playSound(); + } + else if (playerU->player->state() == QMediaPlayer::StoppedState) + { + playerU->playSound(); + } + } + else if(event->key() == Qt::Key_I) + { + if(playerI->player->state() == QMediaPlayer::PlayingState) + { + playerI->stopSound(); + } + else if (playerI->player->state() == QMediaPlayer::PausedState) + { + playerI->playSound(); + } + else if (playerI->player->state() == QMediaPlayer::StoppedState) + { + playerI->playSound(); + } + } + //BOARD 3 + else if(event->key() == Qt::Key_A) + { + if(playerA->player->state() == QMediaPlayer::PlayingState) + { + playerA->stopSound(); + } + else if (playerA->player->state() == QMediaPlayer::PausedState) + { + playerA->playSound(); + } + else if (playerA->player->state() == QMediaPlayer::StoppedState) + { + playerA->playSound(); + } + } + else if(event->key() == Qt::Key_S) + { + if(playerS->player->state() == QMediaPlayer::PlayingState) + { + playerS->stopSound(); + } + else if (playerS->player->state() == QMediaPlayer::PausedState) + { + playerS->playSound(); + } + else if (playerS->player->state() == QMediaPlayer::StoppedState) + { + playerS->playSound(); + } + } + else if(event->key() == Qt::Key_D) + { + if(playerD->player->state() == QMediaPlayer::PlayingState) + { + playerD->stopSound(); + } + else if (playerD->player->state() == QMediaPlayer::PausedState) + { + playerD->playSound(); + } + else if (playerD->player->state() == QMediaPlayer::StoppedState) + { + playerD->playSound(); + } + } + else if(event->key() == Qt::Key_F) + { + if(playerF->player->state() == QMediaPlayer::PlayingState) + { + playerF->stopSound(); + } + else if (playerF->player->state() == QMediaPlayer::PausedState) + { + playerF->playSound(); + } + else if (playerF->player->state() == QMediaPlayer::StoppedState) + { + playerF->playSound(); + } + } + else if(event->key() == Qt::Key_G) + { + if(playerG->player->state() == QMediaPlayer::PlayingState) + { + playerG->stopSound(); + } + else if (playerG->player->state() == QMediaPlayer::PausedState) + { + playerG->playSound(); + } + else if (playerG->player->state() == QMediaPlayer::StoppedState) + { + playerG->playSound(); + } + } + else if(event->key() == Qt::Key_H) + { + if(playerH->player->state() == QMediaPlayer::PlayingState) + { + playerH->stopSound(); + } + else if (playerH->player->state() == QMediaPlayer::PausedState) + { + playerH->playSound(); + } + else if (playerH->player->state() == QMediaPlayer::StoppedState) + { + playerH->playSound(); + } + } + else if(event->key() == Qt::Key_J) + { + if(playerJ->player->state() == QMediaPlayer::PlayingState) + { + playerJ->stopSound(); + } + else if (playerJ->player->state() == QMediaPlayer::PausedState) + { + playerJ->playSound(); + } + else if (playerJ->player->state() == QMediaPlayer::StoppedState) + { + playerJ->playSound(); + } + } + else if(event->key() == Qt::Key_K) + { + if(playerK->player->state() == QMediaPlayer::PlayingState) + { + playerK->stopSound(); + } + else if (playerK->player->state() == QMediaPlayer::PausedState) + { + playerK->playSound(); + } + else if (playerK->player->state() == QMediaPlayer::StoppedState) + { + playerK->playSound(); + } + } + //BOARD 4 + else if(event->key() == Qt::Key_Z) + { + if(playerZ->player->state() == QMediaPlayer::PlayingState) + { + playerZ->stopSound(); + } + else if (playerZ->player->state() == QMediaPlayer::PausedState) + { + playerZ->playSound(); + } + else if (playerZ->player->state() == QMediaPlayer::StoppedState) + { + playerZ->playSound(); + } + } + else if(event->key() == Qt::Key_X) + { + if(playerX->player->state() == QMediaPlayer::PlayingState) + { + playerX->stopSound(); + } + else if (playerX->player->state() == QMediaPlayer::PausedState) + { + playerX->playSound(); + } + else if (playerX->player->state() == QMediaPlayer::StoppedState) + { + playerX->playSound(); + } + } + else if(event->key() == Qt::Key_C) + { + if(playerC->player->state() == QMediaPlayer::PlayingState) + { + playerC->stopSound(); + } + else if (playerC->player->state() == QMediaPlayer::PausedState) + { + playerC->playSound(); + } + else if (playerC->player->state() == QMediaPlayer::StoppedState) + { + playerC->playSound(); + } + } + else if(event->key() == Qt::Key_V) + { + if(playerV->player->state() == QMediaPlayer::PlayingState) + { + playerV->stopSound(); + } + else if (playerV->player->state() == QMediaPlayer::PausedState) + { + playerV->playSound(); + } + else if (playerV->player->state() == QMediaPlayer::StoppedState) + { + playerV->playSound(); + } + } + else if(event->key() == Qt::Key_B) + { + if(playerB->player->state() == QMediaPlayer::PlayingState) + { + playerB->stopSound(); + } + else if (playerB->player->state() == QMediaPlayer::PausedState) + { + playerB->playSound(); + } + else if (playerB->player->state() == QMediaPlayer::StoppedState) + { + playerB->playSound(); + } + } + else if(event->key() == Qt::Key_N) + { + if(playerN->player->state() == QMediaPlayer::PlayingState) + { + playerN->stopSound(); + } + else if (playerN->player->state() == QMediaPlayer::PausedState) + { + playerN->playSound(); + } + else if (playerN->player->state() == QMediaPlayer::StoppedState) + { + playerN->playSound(); + } + } + else if(event->key() == Qt::Key_M) + { + if(playerM->player->state() == QMediaPlayer::PlayingState) + { + playerM->stopSound(); + } + else if (playerM->player->state() == QMediaPlayer::PausedState) + { + playerM->playSound(); + } + else if (playerM->player->state() == QMediaPlayer::StoppedState) + { + playerM->playSound(); + } + } + else if(event->key() == Qt::Key_Comma) + { + if(playerCOMMA->player->state() == QMediaPlayer::PlayingState) + { + playerCOMMA->stopSound(); + } + else if (playerCOMMA->player->state() == QMediaPlayer::PausedState) + { + playerCOMMA->playSound(); + } + else if (playerCOMMA->player->state() == QMediaPlayer::StoppedState) + { + playerCOMMA->playSound(); + } + } +} + +//Public Methods +void CasterBoard::reloadBoardFromPlayerStates() +{ + this->player1->reloadFromPlayerState(); + this->player2->reloadFromPlayerState(); + this->player3->reloadFromPlayerState(); + this->player4->reloadFromPlayerState(); + this->player5->reloadFromPlayerState(); + this->player6->reloadFromPlayerState(); + this->player7->reloadFromPlayerState(); + this->player8->reloadFromPlayerState(); + + this->playerQ->reloadFromPlayerState(); + this->playerW->reloadFromPlayerState(); + this->playerE->reloadFromPlayerState(); + this->playerR->reloadFromPlayerState(); + this->playerT->reloadFromPlayerState(); + this->playerY->reloadFromPlayerState(); + this->playerU->reloadFromPlayerState(); + this->playerI->reloadFromPlayerState(); + + this->playerA->reloadFromPlayerState(); + this->playerS->reloadFromPlayerState(); + this->playerD->reloadFromPlayerState(); + this->playerF->reloadFromPlayerState(); + this->playerG->reloadFromPlayerState(); + this->playerH->reloadFromPlayerState(); + this->playerJ->reloadFromPlayerState(); + this->playerK->reloadFromPlayerState(); + + this->playerZ->reloadFromPlayerState(); + this->playerX->reloadFromPlayerState(); + this->playerC->reloadFromPlayerState(); + this->playerV->reloadFromPlayerState(); + this->playerB->reloadFromPlayerState(); + this->playerN->reloadFromPlayerState(); + this->playerM->reloadFromPlayerState(); + this->playerCOMMA->reloadFromPlayerState(); + + this->update(); +} + + +//Operator Overloading +QDataStream &operator<<(QDataStream &ds, const CasterBoard &cb) +{ + return ds << *cb.soundBoardName + << *cb.player1->playerState << *cb.player2->playerState << *cb.player3->playerState << *cb.player4->playerState << *cb.player5->playerState << *cb.player6->playerState << *cb.player7->playerState << *cb.player8->playerState + << *cb.playerQ->playerState << *cb.playerW->playerState << *cb.playerE->playerState << *cb.playerR->playerState << *cb.playerT->playerState << *cb.playerY->playerState << *cb.playerU->playerState << *cb.playerI->playerState + << *cb.playerA->playerState << *cb.playerS->playerState << *cb.playerD->playerState << *cb.playerF->playerState << *cb.playerG->playerState << *cb.playerH->playerState << *cb.playerJ->playerState << *cb.playerK->playerState + << *cb.playerZ->playerState << *cb.playerX->playerState << *cb.playerC->playerState << *cb.playerV->playerState << *cb.playerB->playerState << *cb.playerN->playerState << *cb.playerM->playerState << *cb.playerCOMMA->playerState; +} + + +QDataStream &operator>>(QDataStream &ds, CasterBoard &cb) +{ + return ds >> *cb.soundBoardName + >> *cb.player1->playerState >> *cb.player2->playerState >> *cb.player3->playerState >> *cb.player4->playerState >> *cb.player5->playerState >> *cb.player6->playerState >> *cb.player7->playerState >> *cb.player8->playerState + >> *cb.playerQ->playerState >> *cb.playerW->playerState >> *cb.playerE->playerState >> *cb.playerR->playerState >> *cb.playerT->playerState >> *cb.playerY->playerState >> *cb.playerU->playerState >> *cb.playerI->playerState + >> *cb.playerA->playerState >> *cb.playerS->playerState >> *cb.playerD->playerState >> *cb.playerF->playerState >> *cb.playerG->playerState >> *cb.playerH->playerState >> *cb.playerJ->playerState >> *cb.playerK->playerState + >> *cb.playerZ->playerState >> *cb.playerX->playerState >> *cb.playerC->playerState >> *cb.playerV->playerState >> *cb.playerB->playerState >> *cb.playerN->playerState >> *cb.playerM->playerState >> *cb.playerCOMMA->playerState; +} diff --git a/CasterSoundboard/CasterBoard.h b/CasterSoundboard/CasterBoard.h new file mode 100644 index 0000000..3de3d2a --- /dev/null +++ b/CasterSoundboard/CasterBoard.h @@ -0,0 +1,106 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#ifndef CASTERBOARD_H +#define CASTERBOARD_H +#include +#include +#include + +//forward declarations +class CasterPlayerWidget; +class QString; +class CasterBoardState; + +class CasterBoard : public QWidget //inherit from QWidget +{ + Q_OBJECT +public: + //Constructor + CasterBoard(QWidget* parent = 0); //don't forget to pass the parent + + //Properties + QString *soundBoardName; + QString *profileFilePath; + + //WIDGETS + CasterPlayerWidget *player1; + CasterPlayerWidget *player2; + CasterPlayerWidget *player3; + CasterPlayerWidget *player4; + CasterPlayerWidget *player5; + CasterPlayerWidget *player6; + CasterPlayerWidget *player7; + CasterPlayerWidget *player8; + + CasterPlayerWidget *playerQ; + CasterPlayerWidget *playerW; + CasterPlayerWidget *playerE; + CasterPlayerWidget *playerR; + CasterPlayerWidget *playerT; + CasterPlayerWidget *playerY; + CasterPlayerWidget *playerU; + CasterPlayerWidget *playerI; + + CasterPlayerWidget *playerA; + CasterPlayerWidget *playerS; + CasterPlayerWidget *playerD; + CasterPlayerWidget *playerF; + CasterPlayerWidget *playerG; + CasterPlayerWidget *playerH; + CasterPlayerWidget *playerJ; + CasterPlayerWidget *playerK; + + CasterPlayerWidget *playerZ; + CasterPlayerWidget *playerX; + CasterPlayerWidget *playerC; + CasterPlayerWidget *playerV; + CasterPlayerWidget *playerB; + CasterPlayerWidget *playerN; + CasterPlayerWidget *playerM; + CasterPlayerWidget *playerCOMMA; + + //Methods + void stopAllSounds(); + void reloadBoardFromPlayerStates(); + + +protected: + //======== + void keyReleaseEvent(QKeyEvent *event);//Capture Hot Keys + +private: + //Private Methods + +signals: + //SIGNALS + +public slots: + //SLOTS + +}; + +//Operator Overloading +QDataStream &operator<<(QDataStream &ds, const CasterBoard &cb); +QDataStream &operator>>(QDataStream &ds, CasterBoard &cb); + +#endif // CASTERBOARD_H diff --git a/CasterSoundboard/CasterCuePicker.cpp b/CasterSoundboard/CasterCuePicker.cpp new file mode 100644 index 0000000..5dd5091 --- /dev/null +++ b/CasterSoundboard/CasterCuePicker.cpp @@ -0,0 +1,216 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "CasterCuePicker.h" +#include +#include +#include +#include +#include +#include +#include + +CasterCuePicker::CasterCuePicker(int _startTime, int _stopTime) +{ + this->setWindowTitle("CUE Sound"); + ok = false; + startTime = _startTime; + stopTime = _stopTime; + loop = false; + player = new QMediaPlayer(); + + // UI + label_StartTimeText = new QLabel("Start\nTime"); + label_StopTimeText = new QLabel("Stop\nTime"); + label_StartTime = new QLabel("00:00"); + label_StopTime = new QLabel("00:00"); + slider_StartTime = new QSlider(Qt::Horizontal); + slider_StartTime->setStyleSheet("QSlider:horizontal {" + "min-height: 30px;" + "}" + "QSlider::groove:horizontal { " + "border: 1px solid #999999; " + "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " + "margin: 8px 0; " + "} " + "QSlider::handle:horizontal { " + "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " + "border: 2px solid #000000; " + "width: 40px;" + "margin: -8px 0px; " + "} ");// Style the track bar (Touch Friendly) + slider_StopTime = new QSlider(Qt::Horizontal); + slider_StopTime->setStyleSheet("QSlider:horizontal {" + "min-height: 30px;" + "}" + "QSlider::groove:horizontal { " + "border: 1px solid #999999; " + "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " + "margin: 8px 0; " + "} " + "QSlider::handle:horizontal { " + "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " + "border: 2px solid #000000; " + "width: 40px;" + "margin: -8px 0px; " + "} ");// Style the track bar (Touch Friendly) + button_Preview = new QPushButton("Preview"); + button_Cancel = new QPushButton("Cancel"); + button_Accept = new QPushButton("Accept"); + + //Layout + layout_main = new QVBoxLayout(this); + layout_startTimeWidgets = new QHBoxLayout; + layout_stopTimeWidgets = new QHBoxLayout; + layout_buttons = new QHBoxLayout; + + // Set Layouts + layout_startTimeWidgets->addWidget(label_StartTimeText); + layout_startTimeWidgets->addWidget(slider_StartTime); + layout_startTimeWidgets->addWidget(label_StartTime); + layout_stopTimeWidgets->addWidget(label_StopTimeText); + layout_stopTimeWidgets->addWidget(slider_StopTime); + layout_stopTimeWidgets->addWidget(label_StopTime); + layout_buttons->addWidget(button_Accept); + layout_buttons->addWidget(button_Cancel); + layout_buttons->addWidget(button_Preview); + layout_main->addLayout(layout_startTimeWidgets); + layout_main->addLayout(layout_stopTimeWidgets); + layout_main->addLayout(layout_buttons); + + //Connect Sub-Widget Events + connect(button_Preview,SIGNAL(clicked()),this,SLOT(button_Preview_Clicked())); + connect(button_Cancel,SIGNAL(clicked()),this,SLOT(button_Cancel_Clicked())); + connect(button_Accept,SIGNAL(clicked()),this,SLOT(button_Accept_Clicked())); + connect(slider_StartTime,SIGNAL(valueChanged(int)),this,SLOT(slider_StartTime_valueChanged(int))); + connect(slider_StopTime,SIGNAL(valueChanged(int)),this,SLOT(slider_StopTime_valueChanged(int))); + connect(player,SIGNAL(positionChanged(qint64)),this,SLOT(playerPositionChanged(qint64)), Qt::QueuedConnection);//thread safe calls to player->stop() +} + + +void CasterCuePicker::slider_StartTime_valueChanged(int value) +{ + if(value >= slider_StopTime->value()){ + slider_StartTime->setValue(value - 1); + } + + this->startTime = (int)((slider_StartTime->value() * duration)/100.0); + this->label_StartTime->setText(this->getTimeString(this->startTime)); + player->setPosition(this->startTime); +} + +void CasterCuePicker::slider_StopTime_valueChanged(int value) +{ + if(value <= slider_StartTime->value()){ + slider_StopTime->setValue(value + 1); + } + + this->stopTime = (int)((slider_StopTime->value() * duration)/100.0); + this->label_StopTime->setText(this->getTimeString(this->stopTime)); +} + +void CasterCuePicker::button_Preview_Clicked() +{ + //CURRENT PLAY STATE + if(player->state() == QMediaPlayer::PlayingState) + { + player->stop(); + button_Preview->setText("Preview"); + } + else + { + player->setPosition(this->startTime); + player->play(); + button_Preview->setText("Stop"); + } +} + +void CasterCuePicker::button_Accept_Clicked() +{ + ok = true; + this->close(); +} + +void CasterCuePicker::button_Cancel_Clicked() +{ + this->close(); +} + +//=======Protected======= +void CasterCuePicker::closeEvent(QCloseEvent *event) +{ + player->stop(); + button_Preview->setText("Preview"); +} + +//======Get Private Methods====== + + +QString CasterCuePicker::getTimeString(int timeInMilliseconds) +{ + //Current Time + int seconds = (int) (timeInMilliseconds / 1000) % 60 ; + int minutes = (int) ((timeInMilliseconds / (1000*60)) % 60); + QString time = QString("%1").arg(minutes,2,'i',0,'0') + ":" + QString("%1").arg(seconds,2,'i',0,'0'); + return time; +} + +//======Set Properties====== + +void CasterCuePicker::setVolume(int _volume) +{ + player->setVolume(_volume); +} + +void CasterCuePicker::setFilePath(QString *_filePath, int _duration, bool _loop) +{ + player->setMedia(QUrl::fromLocalFile(_filePath->toUtf8().constData())); + duration = _duration; + loop = _loop; +} + +void CasterCuePicker::setStartTime(int _startTime) +{ + this->startTime = _startTime; + this->label_StartTime->setText(this->getTimeString(this->startTime)); + slider_StartTime->setValue(startTime / (float)duration * 100); +} + +void CasterCuePicker::setStopTime(int _stopTime) +{ + this->stopTime = _stopTime; + this->label_StopTime->setText(this->getTimeString(this->stopTime)); + slider_StopTime->setValue( stopTime / (float)duration * 100); +} + +void CasterCuePicker::playerPositionChanged(qint64 position) +{ + if((int)position >= this->stopTime) + { + if(loop){ + player->setPosition(this->startTime); + } else { + player->stop();//make sure to use Qt::QueuedConnection + } + } + +} diff --git a/CasterSoundboard/CasterCuePicker.h b/CasterSoundboard/CasterCuePicker.h new file mode 100644 index 0000000..ba5af2a --- /dev/null +++ b/CasterSoundboard/CasterCuePicker.h @@ -0,0 +1,86 @@ +#ifndef CASTERCUEPICKER_H +#define CASTERCUEPICKER_H +#include + +//forward declarations +class QMediaPlayer; +class QWidget; +class QSlider; +class QLineEdit; +class QPushButton; +class QLabel; +class QString; +class QVBoxLayout; +class QHBoxLayout; + + + +class CasterCuePicker : public QDialog +{ + Q_OBJECT +public: + //Constructor + CasterCuePicker(int _startTime, int _stopTime); //don't forget to pass the parent + + //PROPERTIES + bool ok;//DiagResult + int duration; + int startTime;// Milliseconds + int stopTime;// Milliseconds + bool loop; + QMediaPlayer *player;//Media Player + + //METHODS + void setVolume(int _volume); + void setFilePath(QString *_filePath, int _duration, bool _loop); + void setStartTime(int _startTime); + void setStopTime(int _stopTime); + + //WIDGETS + + +protected: + //PROPERTIES + + //METHODS + void closeEvent(QCloseEvent *event); + + //WIDGETS + +private: + //PROPERTIES + + //METHODS + QString getTimeString(int timeInMilliseconds); + + //WIDGETS + QLabel *label_StartTimeText; + QLabel *label_StopTimeText; + QLabel *label_StartTime; + QLabel *label_StopTime; + QSlider *slider_StartTime; + QSlider *slider_StopTime; + QPushButton *button_Preview; + QPushButton *button_Cancel; + QPushButton *button_Accept; + + QVBoxLayout *layout_main; + QHBoxLayout *layout_startTimeWidgets; + QHBoxLayout *layout_stopTimeWidgets; + QHBoxLayout *layout_buttons; + +signals: + //SIGNALS + +public slots: + //SLOTS + void slider_StartTime_valueChanged(int value); + void slider_StopTime_valueChanged(int value); + void button_Preview_Clicked(); + void button_Accept_Clicked(); + void button_Cancel_Clicked(); + void playerPositionChanged(qint64 position); + +}; + +#endif // CASTERCUEPICKER_H diff --git a/CasterSoundboard/CasterLabel.cpp b/CasterSoundboard/CasterLabel.cpp new file mode 100644 index 0000000..139597f --- /dev/null +++ b/CasterSoundboard/CasterLabel.cpp @@ -0,0 +1,2 @@ + + diff --git a/CasterSoundboard/CasterLabelColorPicker.cpp b/CasterSoundboard/CasterLabelColorPicker.cpp new file mode 100644 index 0000000..29d3c15 --- /dev/null +++ b/CasterSoundboard/CasterLabelColorPicker.cpp @@ -0,0 +1,226 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "CasterLabelColorPicker.h" +#include "CSS.h" +#include +#include +#include +#include +#include +#include + +//CONSTRUCTOR +CasterLabelColorPicker::CasterLabelColorPicker() +{ + //SET WINDOW PROPETIES + this->setWindowTitle("Select Label Color"); + this->setWindowIcon(QIcon(":/res/img/app.png")); + + //SET CLASS PROPERTIES + ok = false; + currentCSS = Generate_CSS(HSL_C(0,0,0)); + + + //INIT WIDGETS + label_H = new QLabel; label_H->setText("H:"); + label_S = new QLabel; label_S->setText("S:"); + label_L = new QLabel; label_L->setText("L:"); + label_H_Value = new QLabel; label_H_Value->setText("0"); + label_S_Value = new QLabel; label_S_Value->setText("0"); + label_L_Value = new QLabel; label_L_Value->setText("0"); + slider_H = new QSlider; slider_H->setOrientation(Qt::Horizontal); slider_H->setFixedWidth(200); slider_H->setMinimum(-180); slider_H->setMaximum(180); + slider_H->setStyleSheet("QSlider:horizontal {" + "min-height: 30px;" + "}" + "QSlider::groove:horizontal { " + "border: 1px solid #999999; " + "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " + "margin: 8px 0; " + "} " + "QSlider::handle:horizontal { " + "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " + "border: 2px solid #000000; " + "width: 40px;" + "margin: -8px 0px; " + "} ");// Style the track bar (Touch Friendly) + slider_S = new QSlider; slider_S->setOrientation(Qt::Horizontal); slider_S->setFixedWidth(200); slider_S->setMinimum(-100); slider_S->setMaximum(100); + slider_S->setStyleSheet("QSlider:horizontal {" + "min-height: 30px;" + "}" + "QSlider::groove:horizontal { " + "border: 1px solid #999999; " + "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " + "margin: 8px 0; " + "} " + "QSlider::handle:horizontal { " + "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " + "border: 2px solid #000000; " + "width: 40px;" + "margin: -8px 0px; " + "} ");// Style the track bar (Touch Friendly) + slider_L = new QSlider; slider_L->setOrientation(Qt::Horizontal); slider_L->setFixedWidth(200); slider_L->setMinimum(-100); slider_L->setMaximum(100); + slider_L->setStyleSheet("QSlider:horizontal {" + "min-height: 30px;" + "}" + "QSlider::groove:horizontal { " + "border: 1px solid #999999; " + "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " + "margin: 8px 0; " + "} " + "QSlider::handle:horizontal { " + "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " + "border: 2px solid #000000; " + "width: 40px;" + "margin: -8px 0px; " + "} ");// Style the track bar (Touch Friendly) + widget_Color_Label = new QWidget; widget_Color_Label->setFixedSize(150, 150); widget_Color_Label->setStyleSheet(Generate_CSS_W(HSL_C(0,0,0))); + button_Cancel = new QPushButton("Cancel"); button_Cancel->setFixedSize(80, 30); + button_Accept = new QPushButton("Accept"); button_Accept->setFixedSize(80, 30); + + //DENFINE LAYOUT + QGridLayout *layout = new QGridLayout; + QHBoxLayout *layout_top = new QHBoxLayout; + QHBoxLayout *layout_preview = new QHBoxLayout; + QVBoxLayout *layout_hsl = new QVBoxLayout; + QHBoxLayout *layout_hsl_h = new QHBoxLayout; + QHBoxLayout *layout_hsl_s = new QHBoxLayout; + QHBoxLayout *layout_hsl_l = new QHBoxLayout; + QHBoxLayout *layout_bottom = new QHBoxLayout; + + + //SET LAYOUT + layout_hsl_h->addWidget(label_H); + layout_hsl_h->addWidget(slider_H); + layout_hsl_h->addWidget(label_H_Value); + + layout_hsl_s->addWidget(label_S); + layout_hsl_s->addWidget(slider_S); + layout_hsl_s->addWidget(label_S_Value); + + layout_hsl_l->addWidget(label_L); + layout_hsl_l->addWidget(slider_L); + layout_hsl_l->addWidget(label_L_Value); + + layout_hsl->addLayout(layout_hsl_h); + layout_hsl->addLayout(layout_hsl_s); + layout_hsl->addLayout(layout_hsl_l); + + layout_preview->addWidget(widget_Color_Label); + + layout_top->addLayout(layout_preview); + layout_top->addLayout(layout_hsl); + + layout_bottom->addWidget(button_Accept, Qt::AlignRight); + layout_bottom->addWidget(button_Cancel, Qt::AlignRight); + + layout->addLayout(layout_top, 0,0); + layout->addLayout(layout_bottom, 1,0); + + this->setLayout(layout); + + //SET WINDOW + this->setModal(true); + this->setFixedSize(450, 230); + this->setLayout(layout); + + //MAKE CONNECTIONS + connect(slider_H,SIGNAL(valueChanged(int)),this,SLOT(slider_HSL_valueChanged(int))); + connect(slider_S,SIGNAL(valueChanged(int)),this,SLOT(slider_HSL_valueChanged(int))); + connect(slider_L,SIGNAL(valueChanged(int)),this,SLOT(slider_HSL_valueChanged(int))); + connect(button_Accept,SIGNAL(clicked()),this,SLOT(button_Accept_Clicked())); + connect(button_Cancel,SIGNAL(clicked()),this,SLOT(button_Cancel_Clicked())); + + // Set Slider Defaults + slider_H_Value = 0; + slider_S_Value = 0; + slider_L_Value = 0; + slider_H->setValue(slider_H_Value); + slider_S->setValue(slider_S_Value); + slider_L->setValue(slider_L_Value); + + +} + +//Properties +void CasterLabelColorPicker::set_slider_H_Value(int H_Value) +{ + slider_H_Value = H_Value; + slider_H->setValue(slider_H_Value); + label_H_Value->setText(QString::number(slider_H->value())); + //Update Diag UI + HSL_C hsl_input(slider_H->value(),slider_S->value()/100.0,slider_L->value()/100.0); + currentCSS = QString(Generate_CSS(hsl_input)); + widget_Color_Label->setStyleSheet(Generate_CSS_W(hsl_input)); +} + +void CasterLabelColorPicker::set_slider_S_Value(int S_Value) +{ + slider_S_Value = S_Value; + slider_S->setValue(slider_S_Value); + label_S_Value->setText(QString::number(slider_S->value()).append("%")); + //Update Diag UI + HSL_C hsl_input(slider_H->value(),slider_S->value()/100.0,slider_L->value()/100.0); + currentCSS = QString(Generate_CSS(hsl_input)); + widget_Color_Label->setStyleSheet(Generate_CSS_W(hsl_input)); +} + +void CasterLabelColorPicker::set_slider_L_Value(int L_Value) +{ + slider_L_Value = L_Value; + slider_L->setValue(slider_L_Value); + label_L_Value->setText(QString::number(slider_L->value()).append("%")); + //Update Diag UI + HSL_C hsl_input(slider_H->value(),slider_S->value()/100.0,slider_L->value()/100.0); + currentCSS = QString(Generate_CSS(hsl_input)); + widget_Color_Label->setStyleSheet(Generate_CSS_W(hsl_input)); +} + + + +//SLOTS +void CasterLabelColorPicker::slider_HSL_valueChanged(int value) +{ + label_H_Value->setText(QString::number(slider_H->value())); + label_S_Value->setText(QString::number(slider_S->value()).append("%")); + label_L_Value->setText(QString::number(slider_L->value()).append("%")); + HSL_C hsl_input(slider_H->value(),slider_S->value()/100.0,slider_L->value()/100.0); + currentCSS = QString(Generate_CSS(hsl_input)); + widget_Color_Label->setStyleSheet(Generate_CSS_W(hsl_input)); + + //Update Slider Values + slider_H_Value = slider_H->value(); + slider_S_Value = slider_S->value(); + slider_L_Value = slider_L->value(); + +} + +void CasterLabelColorPicker::button_Accept_Clicked() +{ + ok = true; + this->close(); +} + +void CasterLabelColorPicker::button_Cancel_Clicked() +{ + this->close(); +} diff --git a/CasterSoundboard/CasterLabelColorPicker.h b/CasterSoundboard/CasterLabelColorPicker.h new file mode 100644 index 0000000..a5e8a97 --- /dev/null +++ b/CasterSoundboard/CasterLabelColorPicker.h @@ -0,0 +1,94 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#ifndef CASTERLABELCOLORPICKER_H +#define CASTERLABELCOLORPICKER_H +#include + +//forward declarations +class QWidget; +class QSlider; +class QLineEdit; +class QPushButton; +class QLabel; +class QString; + +class CasterLabelColorPicker : public QDialog //inherit from QWidget +{ + Q_OBJECT +public: + //Constructor + CasterLabelColorPicker(); + + //PROPERTIES + bool ok; + QString currentCSS; + int slider_H_Value; + int slider_S_Value; + int slider_L_Value; + + //METHODS + void set_slider_H_Value(int H_Value); + void set_slider_S_Value(int S_Value); + void set_slider_L_Value(int L_Value); + + //WIDGETS + + +protected: + //PROPERTIES + + //METHODS + + //WIDGETS + +private: + //PROPERTIES + + //METHODS + + //WIDGETS + QLabel *label_H; + QLabel *label_S; + QLabel *label_L; + QLabel *label_H_Value; + QLabel *label_S_Value; + QLabel *label_L_Value; + QSlider *slider_H; + QSlider *slider_S; + QSlider *slider_L; + QWidget *widget_Color_Label; + QPushButton *button_Cancel; + QPushButton *button_Accept; + + +signals: + //SIGNALS + +public slots: + //SLOTS + void slider_HSL_valueChanged(int value); + void button_Accept_Clicked(); + void button_Cancel_Clicked(); + +}; +#endif // CASTERLABELCOLORPICKER_H diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp new file mode 100644 index 0000000..35fc5fa --- /dev/null +++ b/CasterSoundboard/CasterPlayer.cpp @@ -0,0 +1,700 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "CasterPlayer.h" +#include "CasterLabelColorPicker.h" +#include "CasterCuePicker.h" +#include "CasterPlayerState.h" +#include "CSS.h" +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Constructor +CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) +{ + //Set Widget Defaults + this->setAcceptDrops(true); + + //Init Player + player = new QMediaPlayer(); + playStateImage = new QImage; + playStateImage->load(":/res/img/playState_playing.png"); + //Init Properties + soundFilePath = new QString(""); + hotKeyLetter = new QString("1"); + progress = 0.0; + volume = 100; + trackBarWasChangedByPlayer = false; + playerState = new CasterPlayerState; + + //Diag + cuePicker = new CasterCuePicker(0, 0); + colorPicker = new CasterLabelColorPicker(); + + //Internal Properties + newMediaLoaded = false; + newMediaLoadedFromProfile = false; + + //Set-Up Widget Layout + soundNameLabel = new QLabel(""); + soundNameLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); + QFont sNLF("Georgia",10,-1,false); sNLF.setBold(true); + soundNameLabel->setFont(sNLF); + soundNameLabel->setWordWrap(true); + soundNameLabel->setMaximumWidth(150); + //soundNameLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); + hotKeyLabel = new QLabel(*hotKeyLetter); + hotKeyLabel->setAlignment(Qt::AlignCenter); + hotKeyLabel->setFont(QFont("Georgia",13,-1,false)); + hotKeyLabel->setStyleSheet("background:url(:/res/img/Key.png) no-repeat;background-attachment:fixed;background-position:center;color:white;"); + //hotKeyLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); + timeLabel = new QLabel("+00:00\n-00:00"); + timeLabel->setAlignment(Qt::AlignHCenter | Qt::AlignRight); + QFont tLF("Georgia",9,-1,false); tLF.setBold(true); + timeLabel->setFont(tLF); + /* Play Button */ + playStateButton = new QPushButton(""); + playStateButton->setIcon(QIcon(":/res/img/stop.png")); + playStateButton->setIconSize(QSize(18,18)); + playStateButton->setFlat(true); + //playStateButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); + /* Open File Button */ + openFileButton = new QPushButton(""); + openFileButton->setIcon(QIcon(":/res/img/openMusic.png")); + openFileButton->setIconSize(QSize(32,32)); + openFileButton->setFlat(true); + /* Set Cue Button */ + setCueButton = new QPushButton(""); + setCueButton->setIcon(QIcon(":/res/img/cue.png")); + setCueButton->setIconSize(QSize(32,32)); + setCueButton->setFlat(true); + /* Toggle Loop Button */ + toggleLoopButton = new QPushButton(""); + toggleLoopButton->setIcon(QIcon(":/res/img/no_loop")); + toggleLoopButton->setIconSize(QSize(32,32)); + toggleLoopButton->setFlat(true); + /* Sub Menu Button */ + colorPickerButton = new QPushButton(""); + colorPickerButton->setIcon(QIcon(":/res/img/colorPicker.png")); + colorPickerButton->setIconSize(QSize(16,16)); + colorPickerButton->setFlat(true); + //colorPickerButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); + /* Edit Notes Button */ + editNotesButton = new QPushButton(""); + editNotesButton->setIcon(QIcon(":/res/img/notes.png")); + editNotesButton->setIconSize(QSize(32,32)); + editNotesButton->setFlat(true); + /* Volume Slider */ + volumeSlider = new QSlider(Qt::Vertical); + volumeSlider->setValue(100); + volumeSlider->setStyleSheet("QSlider:vertical {" + "min-width: 30px;" + "}" + "QSlider::groove:vertical { " + "border: 1px solid #999999; " + "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " + "margin: 8px 0; " + "} " + "QSlider::handle:vertical { " + "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " + "border: 2px solid #000000; " + "height: 40px;" + "margin: -8px 0px; " + "} ");// Style the volume slider (Touch Friendly) + /* Track Bar */ + trackBar = new QSlider(Qt::Horizontal); + trackBar->setValue(0); + trackBar->setStyleSheet("QSlider:horizontal {" + "min-height: 30px;" + "}" + "QSlider::groove:horizontal { " + "border: 1px solid #999999; " + "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d6d6d6, stop:1 #999999); " + "margin: 8px 0; " + "} " + "QSlider::handle:horizontal { " + "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #565656); " + "border: 2px solid #000000; " + "width: 40px;" + "margin: -8px 0px; " + "} ");// Style the track bar (Touch Friendly) + + //Place Widgets + mainLayout = new QVBoxLayout(this); + //mainLayout->setContentsMargins(0,0,0,0); + + subMainLayoutH = new QHBoxLayout; + subMainLayoutV = new QVBoxLayout; + + topLayout = new QHBoxLayout; + topLayout->addWidget(hotKeyLabel); + topLayout->addWidget(timeLabel); + + centerLayout = new QHBoxLayout; + centerLayout->addWidget(soundNameLabel); + + /* Layout: Bottom Player Buttons */ + bottomLayout_TopButtons = new QHBoxLayout; + //bottomLayout_TopButtons->addWidget(playStateButton); + bottomLayout_TopButtons->addWidget(openFileButton); + bottomLayout_TopButtons->addWidget(setCueButton); + bottomLayout_TopButtons->addWidget(toggleLoopButton); + + bottomLayout_BottomButtons = new QHBoxLayout; + bottomLayout_BottomButtons->addWidget(colorPickerButton); + //bottomLayout_BottomButtons->addWidget(editNotesButton); + + bottomLayout = new QVBoxLayout; + bottomLayout->addLayout(bottomLayout_TopButtons); + bottomLayout->addLayout(bottomLayout_BottomButtons); + + + subMainLayoutV->addLayout(topLayout); + subMainLayoutV->addLayout(centerLayout); + subMainLayoutV->addLayout(bottomLayout); + + subMainLayoutH->addLayout(subMainLayoutV); + subMainLayoutH->addWidget(volumeSlider); + + mainLayout->addLayout(subMainLayoutH); + mainLayout->addWidget(trackBar); + + //Widget Styling + this->setMouseTracking(true); + this->setStyleSheet(CSS_GRAIENT_GREY); + QGraphicsDropShadowEffect * dse = new QGraphicsDropShadowEffect(); + dse->setBlurRadius(10); + this->setGraphicsEffect(dse); + + //Connect Sub-Widget Events + connect(playStateButton,SIGNAL(clicked()),this,SLOT(playerToggle())); + connect(volumeSlider,SIGNAL(valueChanged(int)),this,SLOT(volumeChanged(int))); + connect(trackBar,SIGNAL(valueChanged(int)),this,SLOT(trackBarChanged(int))); + connect(openFileButton,SIGNAL(clicked()),this,SLOT(openFileDiag())); + connect(colorPickerButton,SIGNAL(clicked()),this,SLOT(openColorPicker())); + connect(setCueButton,SIGNAL(clicked()),this,SLOT(openCuePicker())); + connect(toggleLoopButton,SIGNAL(clicked()),this,SLOT(toggleLooping())); + connect(player,SIGNAL(positionChanged(qint64)),this,SLOT(playerPositionChanged(qint64)),Qt::QueuedConnection); + connect(player,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(playerStateChanged(QMediaPlayer::State))); + connect(player,SIGNAL(metaDataChanged()),this,SLOT(playerMetaDataChanged())); + connect(player,SIGNAL(durationChanged(qint64)),this,SLOT(playerDurationChanged(qint64))); +} + +//Set Properties +void CasterPlayerWidget::setHotKeyLetter(QString hotKey) +{ + hotKeyLabel->setText(hotKey); +} + +//----SIGNALS---- + +//-----SLOTS---- +void CasterPlayerWidget::playerToggle() +{ + //CURRENT PLAY STATE TOGGLE LOGIC + player->setVolume(volume); + if(player->state() == QMediaPlayer::PlayingState) + { + player->stop(); + } + else if (player->state() == QMediaPlayer::StoppedState) + { + player->setPosition(playerState->startTime); + player->play(); + } + else if(player->state() == QMediaPlayer::PausedState) + { + player->setPosition(playerState->startTime); + player->play(); + } +} + +void CasterPlayerWidget::volumeChanged(int value) +{ + //Update volume change + volume = value; + player->setVolume(volume); + + //Update Player Save State + playerState->volume = volume; +} + +/* Track Barn Position Changed */ +void CasterPlayerWidget::trackBarChanged(int value) +{ + if(!trackBarWasChangedByPlayer) + { + qint64 position = (qint64)((float)(value) * (float)(player->duration()))/100.0; + player->setPosition(position); + } + +} + +/* Load Sound From Dialog */ +void CasterPlayerWidget::openFileDiag() +{ + QString _filePath = QFileDialog::getOpenFileName( + this, "Open audio file", "", + "Audio files (*.mp3 *.wav *.ogg *.flac *.m4a);;" + "Video files (*.mp4 *.mov *.ogv *.avi *.mpg *.wmv)"); + + if (!_filePath.isNull()) + { + QStringList pathList; + pathList.append(_filePath); + + if(!openFiles(pathList)) + { + QMessageBox msgBox; + msgBox.setText("CasterSoundboard does not accept this file type.\nMake sure your system has the necessary codecs installed.\nCasterSoundboard can also play the audio from videos."); + msgBox.setInformativeText("Try: (*.mp3), (*.wav), (*.ogg), (*.flac), (*.m4a).\nAnd Try: (*.mp4), (*.mov), (*.ogv), (*.avi), (*.mpg), (*.wmv)."); + msgBox.setStandardButtons(QMessageBox::Close); + msgBox.setDefaultButton(QMessageBox::Close); + msgBox.setModal(true); + msgBox.exec(); + } + } +} + +void CasterPlayerWidget::openColorPicker() +{ + //OPEN SUB MENU + if(playerState->backgroundCSSChanged){ + colorPicker->set_slider_H_Value(playerState->slider_H_Value); + colorPicker->set_slider_S_Value(playerState->slider_S_Value); + colorPicker->set_slider_L_Value(playerState->slider_L_Value); + } + + colorPicker->exec(); + if(colorPicker->ok) + { + this->setStyleSheet(colorPicker->currentCSS); + // Update Player State + playerState->PlayerBackgroundCSS = &colorPicker->currentCSS; + playerState->backgroundCSSChanged = true; + playerState->slider_H_Value = colorPicker->slider_H_Value; + playerState->slider_S_Value = colorPicker->slider_S_Value; + playerState->slider_L_Value = colorPicker->slider_L_Value; + + } +} + +void CasterPlayerWidget::openCuePicker() +{ + cuePicker->setFilePath(playerState->filePath, (int)player->duration(), playerState->loop); + cuePicker->setVolume(playerState->volume); + if(playerState->timeSet){ + cuePicker->setStartTime(playerState->startTime); + cuePicker->setStopTime(playerState->stopTime); + } else { + cuePicker->setStartTime(playerState->startTime); + cuePicker->setStopTime((int)player->duration()); + } + + cuePicker->exec(); + if(cuePicker->ok == true) + { + //Accept Changes + playerState->startTime = cuePicker->startTime; + playerState->stopTime = cuePicker->stopTime; + playerState->timeSet = true; + player->setPosition(playerState->startTime); + } +} + +/* Toggles Looping */ +void CasterPlayerWidget::toggleLooping() +{ + if(playerState->loop == true){ + toggleLoopButton->setIcon(QIcon(":/res/img/no_loop")); + playerState->loop = false; + } else { + toggleLoopButton->setIcon(QIcon(":/res/img/loop")); + playerState->loop = true; + } +} + +void CasterPlayerWidget::playerPositionChanged(qint64 position) +{ + if(player->duration() > 0) + { + //Player State Update + if(!playerState->timeSet && playerState->stopTime == 0){ + playerState->stopTime = player->duration(); + } + + //Current Time + int currentTime_seconds = (int) (position / 1000) % 60 ; + int currentTime_minutes = (int) ((position / (1000*60)) % 60); + QString currentTime = "+" + QString("%1").arg(currentTime_minutes,2,'i',0,'0') + ":" + QString("%1").arg(currentTime_seconds,2,'i',0,'0'); + //Time Remaining + progress = (float)(position) / (float)(player->duration()); + int timeLeft = player->duration() - position; + int timeLeft_seconds = (int) (timeLeft / 1000) % 60 ; + int timeLeft_minutes = (int) ((timeLeft / (1000*60)) % 60); + //int hours = (int) ((timeLeft / (1000*60*60)) % 24); + QString timeRemaining = "-" + QString("%1").arg(timeLeft_minutes,2,'i',0,'0') + ":" + QString("%1").arg(timeLeft_seconds,2,'i',0,'0'); + timeLabel->setText(currentTime + "\n" + timeRemaining);// Set Time Remaining Label + trackBarWasChangedByPlayer = true; + trackBar->setValue((int)(progress * 100)); + trackBarWasChangedByPlayer = false; + this->update(); + + /* Enforce Start Time And Stop And Looping */ + if(position >= playerState->stopTime) + { + if(playerState->loop){ + player->setPosition(playerState->startTime); + player->play(); + } else { + player->stop();//make sure to use Qt::QueuedConnection + player->setPosition(playerState->startTime); + } + } + if(position < playerState->startTime) + { + player->setPosition(playerState->startTime); + } + + } + +} + +void CasterPlayerWidget::playerStateChanged(QMediaPlayer::State state) +{ + //CURRENT PLAY STATE + if(state == QMediaPlayer::PlayingState) + { + playStateButton->setIcon(QIcon(":/res/img/play.png")); + } + else if(state == QMediaPlayer::PausedState) + { + playStateButton->setIcon(QIcon(":/res/img/pause.png")); + } + else if (state == QMediaPlayer::StoppedState) + { + playStateButton->setIcon(QIcon(":/res/img/stop.png")); + + progress = 0; + int timeLeft = player->duration(); + int seconds = (int) (timeLeft / 1000) % 60 ; + int minutes = (int) ((timeLeft / (1000*60)) % 60); + QString timeRemaining = "+00:00\n-" + QString("%1").arg(minutes,2,'i',0,'0') + ":" + QString("%1").arg(seconds,2,'i',0,'0'); + timeLabel->setText(timeRemaining); + this->update(); + + } + +} + +void CasterPlayerWidget::playerMetaDataChanged() +{ + //Update Meta Data + QFileInfo fi(*soundFilePath); + if(player->metaData(QMediaMetaData::Title).toString() != "") + { + //Use metadata title + soundNameLabel->setText(player->metaData(QMediaMetaData::Title).toString()); + } + else + { + //Use filename as title + soundNameLabel->setText(fi.baseName()); + } + + //Hack solution to prevent playing when when meadia loaded. + if(newMediaLoaded) + { + newMediaLoaded = false; + player->stop(); + } + +} + +void CasterPlayerWidget::playerDurationChanged(qint64 _duration) +{ + if(newMediaLoaded && !newMediaLoadedFromProfile){ + //reset player state + playerState->startTime = 0; + playerState->stopTime = _duration; + playerState->timeSet = false; + player->setPosition(playerState->startTime); + } else if (newMediaLoadedFromProfile){ + cuePicker->setFilePath(playerState->filePath, (int)player->duration(), playerState->loop); + cuePicker->setVolume(playerState->volume); + if(playerState->timeSet){ + cuePicker->setStartTime(playerState->startTime); + cuePicker->setStopTime(playerState->stopTime); + } else { + cuePicker->setStartTime(playerState->startTime); + cuePicker->setStopTime((int)player->duration()); + } + } +} + +//-------------- + +//Private Methods +int CasterPlayerWidget::getProgressWidth() +{ + //Compute Progress width + return (int)(this->progress * (float)(this->width())); +} + +//Public Methods +//===============Player Methods================= +void CasterPlayerWidget::playSound() +{ + player->setVolume(volume); + player->setPosition(playerState->startTime); + player->play(); +} + +void CasterPlayerWidget::stopSound() +{ + player->setVolume(volume); + player->stop(); +} +//================================================== + +//Protected Methods +//=================DRAG_N_DROP============================= +void CasterPlayerWidget::dragEnterEvent(QDragEnterEvent *event) +{ + event->acceptProposedAction(); +} + +void CasterPlayerWidget::dragMoveEvent(QDragMoveEvent *event) +{ + event->acceptProposedAction(); +} + +void CasterPlayerWidget::dragLeaveEvent(QDragLeaveEvent *event) +{ + event->accept(); +} + +void CasterPlayerWidget::dropEvent(QDropEvent *event) +{ + const QMimeData* mimeData = event->mimeData(); + + if (mimeData->hasUrls()) + { + QStringList pathList; + QList urlList = mimeData->urls(); + + for (int i = 0; i < urlList.size() && i < 32; ++i) + { + pathList.append(urlList.at(i).toLocalFile()); + } + + if(openFiles(pathList)) + { + event->acceptProposedAction(); + playSound(); + } + else + { + QMessageBox msgBox; + msgBox.setText("CasterSoundboard does not accept this file type.\nMake sure your system has the necessary codecs installed.\nCasterSoundboard can also play the audio from videos."); + msgBox.setInformativeText("Try: (*.mp3), (*.wav), (*.ogg), (*.flac), (*.m4a).\nAnd Try: (*.mp4), (*.mov), (*.ogv), (*.avi), (*.mpg), (*.wmv)."); + msgBox.setStandardButtons(QMessageBox::Close); + msgBox.setDefaultButton(QMessageBox::Close); + msgBox.setModal(true); + int ret = msgBox.exec(); + } + } +} + +bool CasterPlayerWidget::openFiles(const QStringList& pathList) +{ + //Determine File Type + QFileInfo fi(pathList[0]); + + if(fi.suffix() == "mp3" || + fi.suffix() == "wav" || + fi.suffix() == "flac" || + fi.suffix() == "ogg" || + fi.suffix() == "m4a" || + fi.suffix() == "mp4" || + fi.suffix() == "mov" || + fi.suffix() == "ogv" || + fi.suffix() == "avi" || + fi.suffix() == "mpg" || + fi.suffix() == "wmv") + { + soundFilePath = new QString(pathList[0]);//Sets File Path + player->setVolume(volume); + player->setMedia(QUrl::fromLocalFile(soundFilePath->toUtf8().constData())); + newMediaLoaded = true; + + //Update Player Save State + playerState->filePath = soundFilePath; // Save file path to player state + + return true; + } + else + { + return false; + } +} + +//========================================================= + +//===========Mouse Press/Touch Event=========== +/* When user touches wiget it toggles the player state (Play/Pause/Stop) */ +void CasterPlayerWidget::mousePressEvent(QMouseEvent *event) +{ + // Toggle play state + // Play/Pause + //CURRENT PLAY STATE TOGGLE LOGIC + player->setVolume(volume); + if(player->state() == QMediaPlayer::PlayingState) + { + player->pause(); + } + else if (player->state() == QMediaPlayer::StoppedState) + { + player->setPosition(playerState->startTime); + player->play(); + } + else if(player->state() == QMediaPlayer::PausedState) + { + player->play(); + } +} + +//========================================================= + +//===========Focus Event=========== +void CasterPlayerWidget::mouseMoveEvent(QMouseEvent *event) +{ + this->setFocus(); +} + +//===========Paint Event=========== +void CasterPlayerWidget::paintEvent(QPaintEvent *event) +{ + //Make widget render it's own style sheet. + QStyleOption opt; + opt.init(this); + QPainter p(this); + style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); + + + // Set Progressbar Dimensions + QLinearGradient lgBrush(0,0,0,this->height()); + QRect rec(0,0,this->getProgressWidth(),this->height()); + + // Draw Progressbar + if(player->state() == QMediaPlayer::PlayingState) + { + lgBrush.setColorAt(0.0,QColor(184,225,252,255)); + lgBrush.setColorAt(0.1,QColor(169,210,243,255)); + lgBrush.setColorAt(0.25,QColor(144,186,228,255)); + lgBrush.setColorAt(0.37,QColor(144,188,234,255)); + lgBrush.setColorAt(0.5,QColor(144,191,240,255)); + lgBrush.setColorAt(0.51,QColor(107,168,229,255)); + lgBrush.setColorAt(0.83,QColor(162,218,245,255)); + lgBrush.setColorAt(1.0,QColor(189,243,253,255)); + + playStateImage->load(":/res/img/playState_playing.png"); + } + else if(player->state() == QMediaPlayer::PausedState) + { + lgBrush.setColorAt(0.0,QColor(243,252,70,255)); + lgBrush.setColorAt(0.1,QColor(226,244,60,255)); + lgBrush.setColorAt(0.25,QColor(206,235,41,255)); + lgBrush.setColorAt(0.37,QColor(206,239,41,255)); + lgBrush.setColorAt(0.5,QColor(210,243,41,255)); + lgBrush.setColorAt(0.51,QColor(200,232,16,255)); + lgBrush.setColorAt(0.83,QColor(246,243,56,255)); + lgBrush.setColorAt(1.0,QColor(253,217,75,255)); + + playStateImage->load(":/res/img/playState_paused.png"); + } + else if (player->state() == QMediaPlayer::StoppedState) + { + lgBrush.setColorAt(0.0,QColor(252,70,79,255)); + lgBrush.setColorAt(0.1,QColor(244,60,60,255)); + lgBrush.setColorAt(0.25,QColor(235,50,41,255)); + lgBrush.setColorAt(0.37,QColor(239,54,41,255)); + lgBrush.setColorAt(0.5,QColor(243,54,41,255)); + lgBrush.setColorAt(0.51,QColor(232,27,16,255)); + lgBrush.setColorAt(0.83,QColor(246,56,78,255)); + lgBrush.setColorAt(1.0,QColor(253,75,128,255)); + + playStateImage->load(":/res/img/playState_stopped.png"); + } + p.fillRect(rec,lgBrush); + + // Draw Play State + p.drawImage(this->width()/2 - playStateImage->width()/2, this->height()/2 - playStateImage->height()/2, *playStateImage); + +} +//==================================== + +//==========Reload From Player State========== +void CasterPlayerWidget::reloadFromPlayerState() +{ + /* Reload Colors */ + colorPicker->set_slider_H_Value(playerState->slider_H_Value); + colorPicker->set_slider_S_Value(playerState->slider_S_Value); + colorPicker->set_slider_L_Value(playerState->slider_L_Value); + if(playerState->PlayerBackgroundCSS->toUtf8() != "") + { + this->setStyleSheet(playerState->PlayerBackgroundCSS->toUtf8()); + } + /* Reload Loop UI */ + if(playerState->loop){ + toggleLoopButton->setIcon(QIcon(":/res/img/loop")); + } + /* Reload Player Settings */ + QStringList pathList; + pathList.append(playerState->filePath->toUtf8()); + newMediaLoadedFromProfile = true; + openFiles(pathList); + player->setVolume(playerState->volume); + volumeSlider->setValue(playerState->volume); + newMediaLoadedFromProfile = false; + +} diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h new file mode 100644 index 0000000..bc6e17a --- /dev/null +++ b/CasterSoundboard/CasterPlayer.h @@ -0,0 +1,134 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#ifndef CASTERPLAYER_H +#define CASTERPLAYER_H +#include +#include +#include + +//forward declarations +class QMediaPlayer; +class QVBoxLayout; +class QHBoxLayout; +class QLabel; +class QPushButton; +class QSlider; +class QString; +class QImage; +class CasterPlayerState; +class CasterCuePicker; +class CasterLabelColorPicker; + +class CasterPlayerWidget : public QWidget //inherit from QWidget +{ + Q_OBJECT +public: + //Constructor + CasterPlayerWidget(QWidget* parent = 0); //don't forget to pass the parent + + //Set Properties + void setHotKeyLetter(QString hotKey); + + //Media Player + QMediaPlayer *player; + QImage *playStateImage; + + //Player Methhods + void playSound();//Plays sound + void stopSound();//Stops sound + + //Properties + QString *soundFilePath; + QString *hotKeyLetter; + float progress; + int volume; + bool trackBarWasChangedByPlayer;// Used to prevent player from tiggering track bar progress changed event + CasterPlayerState *playerState; + + //Methods + void reloadFromPlayerState(); + +protected: + //Focus Event + void mouseMoveEvent(QMouseEvent *event); + //Paint Event + void paintEvent(QPaintEvent *event); //Overide Paint Event + //Drag-N-Drop Events + void dragEnterEvent(QDragEnterEvent *event); + void dragMoveEvent(QDragMoveEvent *event); + void dragLeaveEvent(QDragLeaveEvent *event); + void dropEvent(QDropEvent *event); + bool openFiles(const QStringList& pathList); + // Press/Touch Events + void mousePressEvent(QMouseEvent *event); + +private: + //Private Methods + int getProgressWidth(); //Use to compute width of progress bar + + //contained widgets: + QVBoxLayout *mainLayout; + QHBoxLayout *subMainLayoutH; + QVBoxLayout *subMainLayoutV; + QHBoxLayout *topLayout; + QHBoxLayout *centerLayout; + QHBoxLayout *bottomLayout_TopButtons; + QHBoxLayout *bottomLayout_BottomButtons; + QVBoxLayout *bottomLayout; + QLabel *soundNameLabel; + QLabel *hotKeyLabel; + QLabel *timeLabel; + QPushButton *playStateButton; + QPushButton *openFileButton; + QPushButton *setCueButton; + QPushButton *toggleLoopButton; + QPushButton *colorPickerButton; + QPushButton *editNotesButton; + QSlider *trackBar; + QSlider *volumeSlider; + + // Diag + CasterCuePicker *cuePicker; + CasterLabelColorPicker *colorPicker; + + //Internal Properties + bool newMediaLoaded; + bool newMediaLoadedFromProfile; + +signals: + //MyWidget's signals.... + +public slots: + void playerToggle(); + void volumeChanged(int value); + void trackBarChanged(int value); + void openFileDiag(); + void openColorPicker(); + void openCuePicker(); + void toggleLooping(); + void playerPositionChanged(qint64 position); + void playerStateChanged(QMediaPlayer::State state); + void playerMetaDataChanged(); + void playerDurationChanged(qint64 _duration); +}; +#endif // CASTERPLAYER_H diff --git a/CasterSoundboard/CasterPlayerState.cpp b/CasterSoundboard/CasterPlayerState.cpp new file mode 100644 index 0000000..e120671 --- /dev/null +++ b/CasterSoundboard/CasterPlayerState.cpp @@ -0,0 +1,42 @@ + +#include "CasterPlayerState.h" +#include + +//Constructor +CasterPlayerState::CasterPlayerState() +{ + //Set Default Property Values + filePath = new QString(""); + volume = 100; + startTime = 0; + stopTime = 0; + loop = false; + timeSet = false; + // Set Slider Defaults + slider_H_Value = 0; + slider_S_Value = 0; + slider_L_Value = 0; + PlayerBackgroundCSS = new QString(""); + backgroundCSSChanged = false; +} + +//Operator Overloading +QDataStream &operator<<(QDataStream &ds, const CasterPlayerState &cps) +{ + return ds << *cps.filePath << cps.volume + << cps.startTime << cps.stopTime + << cps.loop << cps.timeSet + << cps.slider_H_Value << cps.slider_S_Value + << cps.slider_L_Value << *cps.PlayerBackgroundCSS + << cps.backgroundCSSChanged; +} + +QDataStream &operator>>(QDataStream &ds, CasterPlayerState &cps) +{ + return ds >> *cps.filePath >> cps.volume + >> cps.startTime >> cps.stopTime + >> cps.loop >> cps.timeSet + >> cps.slider_H_Value >> cps.slider_S_Value + >> cps.slider_L_Value >> *cps.PlayerBackgroundCSS + >> cps.backgroundCSSChanged; +} diff --git a/CasterSoundboard/CasterPlayerState.h b/CasterSoundboard/CasterPlayerState.h new file mode 100644 index 0000000..be9a9a6 --- /dev/null +++ b/CasterSoundboard/CasterPlayerState.h @@ -0,0 +1,33 @@ +#ifndef CASTERPLAYERSTATE_H +#define CASTERPLAYERSTATE_H +#include +#include + +//forward declarations +class QString; + +class CasterPlayerState +{ +public: + //Constructor + CasterPlayerState(); + + // Properties + QString *filePath; + int volume; + int startTime;// Milliseconds + int stopTime;// Milliseconds + bool loop; + bool timeSet; + int slider_H_Value; + int slider_S_Value; + int slider_L_Value; + QString *PlayerBackgroundCSS; + bool backgroundCSSChanged; +}; + +//Operator Overloading +QDataStream &operator<<(QDataStream &ds, const CasterPlayerState &cps); +QDataStream &operator>>(QDataStream &ds, CasterPlayerState &cps); + +#endif // CASTERPLAYERSTATE_H diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro new file mode 100644 index 0000000..66f41f8 --- /dev/null +++ b/CasterSoundboard/CasterSoundboard.pro @@ -0,0 +1,37 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2013-05-27T05:20:34 +# +#------------------------------------------------- + + +QT += core gui multimedia + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = CasterSoundboard +TEMPLATE = app + + +SOURCES += main.cpp\ + CasterPlayer.cpp \ + CasterBoard.cpp \ + MainWindow.cpp \ + CasterLabelColorPicker.cpp \ + CSS.cpp \ + CasterPlayerState.cpp \ + CasterCuePicker.cpp + +HEADERS += \ + CasterPlayer.h \ + CasterBoard.h \ + CSS.h \ + MainWindow.h \ + CasterLabelColorPicker.h \ + CasterPlayerState.h \ + CasterCuePicker.h + +FORMS += + +RESOURCES += \ + res.qrc diff --git a/CasterSoundboard/CasterSoundboard.pro.user b/CasterSoundboard/CasterSoundboard.pro.user new file mode 100644 index 0000000..9f148fa --- /dev/null +++ b/CasterSoundboard/CasterSoundboard.pro.user @@ -0,0 +1,336 @@ + + + + + + EnvironmentId + {50358eb3-48cf-418f-8201-244c0b8cf771} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop Qt 5.8.0 GCC 64bit + Desktop Qt 5.8.0 GCC 64bit + qt.58.gcc_64_kit + 0 + 0 + 0 + + /home/oscar/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug + + + true + qmake + + QtProjectManager.QMakeBuildStep + true + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + true + + + /home/oscar/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Release + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + + /home/oscar/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Profile + + + true + qmake + + QtProjectManager.QMakeBuildStep + true + + false + true + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Profile + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 3 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + false + false + 1000 + + true + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + 2 + + CasterSoundboard + + Qt4ProjectManager.Qt4RunConfiguration:/home/oscar/Documents/GIT/CasterSoundboard/CasterSoundboard/CasterSoundboard.pro + true + + CasterSoundboard.pro + false + + /home/oscar/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug + 3768 + false + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 18 + + + Version + 18 + + diff --git a/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 b/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 new file mode 100644 index 0000000..1a0df52 --- /dev/null +++ b/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 @@ -0,0 +1,256 @@ + + + + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + true + 1 + true + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop Qt 5.1.0 clang 64bit + Desktop Qt 5.1.0 clang 64bit + qt.510.clang_64.essentials_kit + 0 + 0 + 0 + + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Debug + true + + + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Release + true + + 2 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + true + + false + false + false + false + true + 0.01 + 10 + true + 25 + + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + CasterSoundboard + + Qt4ProjectManager.Qt4RunConfiguration:/Users/oscarcerna/Desktop/castersb-code/CasterSoundboard/CasterSoundboard.pro + 2 + + CasterSoundboard.pro + false + false + + + 3768 + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.EnvironmentId + {c518f7b1-f3fd-45b5-8fdd-e02398dff7b3} + + + ProjectExplorer.Project.Updater.FileVersion + 12 + + diff --git a/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 b/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 new file mode 100644 index 0000000..d8fa918 --- /dev/null +++ b/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 @@ -0,0 +1,256 @@ + + + + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + true + 1 + true + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop + {9bf0fa5d-dc1c-4228-bcea-48de4389f998} + 1 + 0 + 0 + + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + /home/oscar/QT-Projects/build-CasterSoundboard-Desktop-Debug + true + + + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + /home/oscar/QT-Projects/build-CasterSoundboard-Desktop-Release + true + + 2 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + true + + false + false + false + false + true + 0.01 + 10 + true + 25 + + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + CasterSoundboard + + Qt4ProjectManager.Qt4RunConfiguration:/home/oscar/QT-Projects/CasterSoundboard/CasterSoundboard.pro + 2 + + CasterSoundboard.pro + false + false + + + 3768 + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.EnvironmentId + {f58cfa53-7051-4cd5-9297-7b90ec352035} + + + ProjectExplorer.Project.Updater.FileVersion + 12 + + diff --git a/CasterSoundboard/ColorConversion.cpp b/CasterSoundboard/ColorConversion.cpp new file mode 100644 index 0000000..d9172aa --- /dev/null +++ b/CasterSoundboard/ColorConversion.cpp @@ -0,0 +1,60 @@ +#include "ColorConversion.h" +#include +#include + +int *getRGB_fromHLS(int H, int S, int L){ + int *ret = new int[3]; + + H = H % 360; + double S_ = S / 100.0; + double L_ = L / 100.0; + + double C = (1.0 - abs(2.0*L_-1.0)) * S_; + double X = C * (1.0 - abs(fmodf(H/60.0, 2.0)-1.0)); + double m = L_ - C/2.0; + + double R_, G_, B_; + + if(0 <= H && H < 60) + { + R_ = C; + G_ = X; + B_ = 0.0; + } + else if (60 <= H && H < 120) + { + R_ = X; + G_ = C; + B_ = 0.0; + } + else if (120 <= H && H < 180) + { + R_ = 0.0; + G_ = C; + B_ = X; + } + else if (180 <= H && H < 240) + { + R_ = 0.0; + G_ = X; + B_ = C; + } + else if (240 <= H && H < 300) + { + R_ = X; + G_ = 0.0; + B_ = C; + } + else if (300 <= H && H < 360) + { + R_ = C; + G_ = 0.0; + B_ = X; + } + + ret[0] = (int)(255.0*(R_+m)); + ret[1] = (int)(255.0*(G_+m)); + ret[2] = (int)(255.0*(B_+m)); + + return ret; +} diff --git a/CasterSoundboard/ColorConversion.h b/CasterSoundboard/ColorConversion.h new file mode 100644 index 0000000..f18e1e0 --- /dev/null +++ b/CasterSoundboard/ColorConversion.h @@ -0,0 +1,186 @@ +#ifndef COLORCONVERSION_H +#define COLORCONVERSION_H +#include +#include + +struct RGB { + uint r; + uint g; + uint b; +} ; + +struct HSL { + uint h; + uint s; + uint l; +} ; + +void HSLtoRGB_Subfunction(uint& c, const double& temp1, const double& temp2, const double& temp3); + +// This function extracts the hue, saturation, and luminance from "color" +// and places these values in h, s, and l respectively. +HSL RGBtoHSL(const RGB& rgb) +{ + HSL hsl; + + uint r = rgb.r; + uint g = rgb.g; + uint b = rgb.b; + + double r_percent = ((double)r)/255; + double g_percent = ((double)g)/255; + double b_percent = ((double)b)/255; + + double max_color = 0; + if((r_percent >= g_percent) && (r_percent >= b_percent)) + max_color = r_percent; + if((g_percent >= r_percent) && (g_percent >= b_percent)) + max_color = g_percent; + if((b_percent >= r_percent) && (b_percent >= g_percent)) + max_color = b_percent; + + double min_color = 0; + if((r_percent <= g_percent) && (r_percent <= b_percent)) + min_color = r_percent; + if((g_percent <= r_percent) && (g_percent <= b_percent)) + min_color = g_percent; + if((b_percent <= r_percent) && (b_percent <= g_percent)) + min_color = b_percent; + + double L = 0; + double S = 0; + double H = 0; + + L = (max_color + min_color)/2; + + if(max_color == min_color) + { + S = 0; + H = 0; + } + else + { + if(L < .50) + { + S = (max_color - min_color)/(max_color + min_color); + } + else + { + S = (max_color - min_color)/(2 - max_color - min_color); + } + if(max_color == r_percent) + { + H = (g_percent - b_percent)/(max_color - min_color); + } + if(max_color == g_percent) + { + H = 2 + (b_percent - r_percent)/(max_color - min_color); + } + if(max_color == b_percent) + { + H = 4 + (r_percent - g_percent)/(max_color - min_color); + } + } + hsl.s = (uint)(S*100); + hsl.l = (uint)(L*100); + H = H*60; + if(H < 0) + H += 360; + hsl.h = (uint)H; +} + +// This function converts the "color" object to the equivalent RGB values of +// the hue, saturation, and luminance passed as h, s, and l respectively +RGB HSLtoRGB(const HSL& hsl) +{ + RGB rgb; + + uint r = 0; + uint g = 0; + uint b = 0; + + uint h = hsl.h; + uint s = hsl.s; + uint l = hsl.l; + + double L = ((double)hsl.l)/100; + double S = ((double)hsl.s)/100; + double H = ((double)hsl.h)/360; + + if(s == 0) + { + r = l; + g = l; + b = l; + } + else + { + double temp1 = 0; + if(L < .50) + { + temp1 = L*(1 + S); + } + else + { + temp1 = L + S - (L*S); + } + + double temp2 = 2*L - temp1; + + double temp3 = 0; + for(int i = 0 ; i < 3 ; i++) + { + switch(i) + { + case 0: // red + { + temp3 = H + .33333; + if(temp3 > 1) + temp3 -= 1; + HSLtoRGB_Subfunction(r,temp1,temp2,temp3); + break; + } + case 1: // green + { + temp3 = H; + HSLtoRGB_Subfunction(g,temp1,temp2,temp3); + break; + } + case 2: // blue + { + temp3 = H - .33333; + if(temp3 < 0) + temp3 += 1; + HSLtoRGB_Subfunction(b,temp1,temp2,temp3); + break; + } + default: + { + + } + } + } + } + rgb.r = (uint)((((double)r)/100)*255); + rgb.g = (uint)((((double)g)/100)*255); + rgb.b = (uint)((((double)b)/100)*255); +} + +// This is a subfunction of HSLtoRGB +void HSLtoRGB_Subfunction(uint& c, const double& temp1, const double& temp2, const double& temp3) +{ + if((temp3 * 6) < 1) + c = (uint)((temp2 + (temp1 - temp2)*6*temp3)*100); + else + if((temp3 * 2) < 1) + c = (uint)(temp1*100); + else + if((temp3 * 3) < 2) + c = (uint)((temp2 + (temp1 - temp2)*(.66666 - temp3)*6)*100); + else + c = (uint)(temp2*100); + return; +} + + +#endif // COLORCONVERSION_H diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp new file mode 100644 index 0000000..2a2b201 --- /dev/null +++ b/CasterSoundboard/MainWindow.cpp @@ -0,0 +1,333 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "MainWindow.h" +#include "CasterBoard.h" +#include "CasterPlayer.h" +#include "CasterPlayerState.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//CONSTRUCTOR +MainWindow::MainWindow(QWidget *parent) : QWidget(parent) +{ + //SET WINDOW PROPETIES + this->setWindowTitle("CasterSoundboard"); + this->setWindowIcon(QIcon(":/res/img/app.png")); + + //DENFINE LAYOUT + QGridLayout *layout = new QGridLayout; + + //INIT NEW TAB PUSH BUTTONS + //~~New Tab~~ + addNewTabButton = new QPushButton; + addNewTabButton->setIcon(QIcon(":/res/img/newTab.png")); + addNewTabButton->setIconSize(QSize(40,40)); + //addNewTabButton->setFixedSize(30,30); + //layout->addWidget(addNewTabButton,0,2, Qt::AlignRight); + + //~~Open Tab~~ + openTabButton = new QPushButton; + openTabButton->setIcon(QIcon(":/res/img/open.png")); + openTabButton->setIconSize(QSize(40,40)); + //openTabButton->setFixedSize(30,30); + + //~~Save Tab~~ + saveTabButton = new QPushButton; + saveTabButton->setIcon(QIcon(":/res/img/save.png")); + saveTabButton->setIconSize(QSize(40,40)); + //saveTabButton->setFixedSize(30,30); + + //~~Save As Tab~~ + saveAsTabButton = new QPushButton; + saveAsTabButton->setIcon(QIcon(":/res/img/save_as.png")); + saveAsTabButton->setIconSize(QSize(40,40)); + //saveAsTabButton->setFixedSize(40,40); + + //~~Stop ALL Sounds~~ + stopAllSoundsButton = new QPushButton; + stopAllSoundsButton->setIcon(QIcon(":/res/img/stopAll.png")); + stopAllSoundsButton->setIconSize(QSize(40,40)); + + //~~Rename Tab~~ + renameCurrentTabButton = new QPushButton; + renameCurrentTabButton->setIcon(QIcon(":/res/img/rename.png")); + renameCurrentTabButton->setIconSize(QSize(40,40)); + + //~~About Button~~ + aboutButton = new QPushButton; + aboutButton->setIcon(QIcon(":/res/img/about.png")); + aboutButton->setIconSize(QSize(40,40)); + //aboutButton->setFixedSize(30,30); + //layout->addWidget(aboutButton,0,0, Qt::AlignLeft); + + //======Main Toolbar========= + mainToolbar = new QToolBar; + // Add buttons + mainToolbar->addWidget(addNewTabButton); + mainToolbar->addWidget(openTabButton); + mainToolbar->addWidget(saveTabButton); + mainToolbar->addWidget(saveAsTabButton); + mainToolbar->addWidget(renameCurrentTabButton); + mainToolbar->addWidget(stopAllSoundsButton); + mainToolbar->addWidget(aboutButton); + // Add toolbar to layout + layout->addWidget(mainToolbar, 0, 0, Qt::AlignLeft); + + //INIT MAIN TAB CONTAINER + mainTabContainer = new QTabWidget; + mainTabContainer->setTabsClosable(true); + layout->addWidget(mainTabContainer,1,0, 2, 0); + + //SET LAYOUT + this->setLayout(layout); + + //MAKE CONNECTIONS + connect(aboutButton,SIGNAL(clicked()),this,SLOT(aboutBox())); + connect(addNewTabButton,SIGNAL(clicked()),this,SLOT(addNewTab())); + connect(mainTabContainer,SIGNAL(tabCloseRequested(int)),this,SLOT(mainTabContainerTabClosedRequested(int))); + connect(saveTabButton,SIGNAL(clicked()),this,SLOT(saveTab())); + connect(saveAsTabButton,SIGNAL(clicked()),this,SLOT(saveAsTab())); + connect(openTabButton,SIGNAL(clicked()),this,SLOT(openProfile())); + connect(renameCurrentTabButton,SIGNAL(clicked()),this,SLOT(renameCurrentTab())); + connect(stopAllSoundsButton,SIGNAL(clicked()),this,SLOT(stopAllSounds())); + + // Properties + +} + +//SLOTS +void MainWindow::aboutBox() +{ + QMessageBox msgBox; + msgBox.setText("CasterSoundboard (v1.0) BETA\nAuthor: Oscar Cerna\ne-mail: covarianttensor@gmail.com\nLicense: LGPL v3\n© 2013-2017 Oscar Cerna"); + msgBox.setInformativeText("Special Note:\nDeveloped for Chris Fisher & Jupiter Broadcasting, because he's awesome!\nVisit www.jupiterbroadcasting.com.\nNOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); + msgBox.setStandardButtons(QMessageBox::Close); + msgBox.setDefaultButton(QMessageBox::Close); + msgBox.setModal(true); + msgBox.setWindowTitle("About"); + msgBox.setWindowIcon(QIcon(":/res/img/about.png")); + msgBox.exec(); +} + +void MainWindow::addNewTab() +{ + //ASK FOR SOUNDBOARD TAB + bool ok; + QString text = QInputDialog::getText( + this, + tr("String"), + tr("Enter a tab name:"), + QLineEdit::Normal, + tr(""), + &ok ); + if(ok) + { + //CREATE REQUESTED TABS + CasterBoard *cb = new CasterBoard; + if(text != "") + { + cb->soundBoardName = new QString(text); + mainTabContainer->addTab(cb, text); + } + else + { + mainTabContainer->addTab(cb, "No Name"); + } + + } + +} + +void MainWindow::mainTabContainerTabClosedRequested(int tabIndex) +{ + //CONFIRM TAB CLOSE + QMessageBox msgBox; + msgBox.setText("Are you sure you want to close this tab"); + msgBox.setWindowIcon(QIcon(":/res/img/app.png")); + msgBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes); + msgBox.setDefaultButton(QMessageBox::No); + msgBox.setModal(true); + if(msgBox.exec() == QMessageBox::Yes) + { + //CLOSE REQUESTED TAB + mainTabContainer->removeTab(tabIndex); + } +} + +void MainWindow::saveTab() +{ + if(mainTabContainer->count() > 0) + { + if(dynamic_cast(mainTabContainer->currentWidget())->profileFilePath->toUtf8() != ""){ + /* Save */ + QFile file; + QDataStream out; + + file.setFileName(dynamic_cast(mainTabContainer->currentWidget())->profileFilePath->toUtf8()); + file.open(QIODevice::WriteOnly); + out.setDevice(&file); + out.setVersion(QDataStream::Qt_5_8); + out << *dynamic_cast(mainTabContainer->currentWidget()); + file.flush(); + file.close(); + } else { + /* Save As.. */ + QString _filePath = QFileDialog::getSaveFileName(this, "Save Sound Board Profile As...", "", + "Sound Board Profile (*.caster)"); + + if (!_filePath.isNull()) + { + /* Save Profile As... */ + QFile file; + QDataStream out; + + file.setFileName(_filePath.toUtf8() + ".caster"); + file.open(QIODevice::WriteOnly); + out.setDevice(&file); + out.setVersion(QDataStream::Qt_5_8); + out << *dynamic_cast(mainTabContainer->currentWidget()); + file.flush(); + file.close(); + + //Set Save Path + dynamic_cast(mainTabContainer->currentWidget())->profileFilePath = new QString(_filePath.toUtf8() + ".caster"); + } + } + } + +} + +void MainWindow::saveAsTab() +{ + //Debug + /* + QString *temp = dynamic_cast(mainTabContainer->currentWidget())->player1->playerState->filePath; + QMessageBox msgBox; + msgBox.setText("File Path: " + temp->toUtf8() ); + msgBox.setStandardButtons(QMessageBox::Close); + msgBox.setDefaultButton(QMessageBox::Close); + msgBox.setModal(true); + msgBox.setWindowTitle("About"); + msgBox.setWindowIcon(QIcon(":/res/img/about.png")); + msgBox.exec(); + */ + + if(mainTabContainer->count() > 0) + { + QString _filePath = QFileDialog::getSaveFileName(this, "Save Sound Board Profile As...", "", + "Sound Board Profile (*.caster)"); + + if (!_filePath.isNull()) + { + /* Save Profile As... */ + QFile file; + QDataStream out; + + file.setFileName(_filePath.toUtf8() + ".caster"); + file.open(QIODevice::WriteOnly); + out.setDevice(&file); + out.setVersion(QDataStream::Qt_5_8); + out << *dynamic_cast(mainTabContainer->currentWidget()); + file.flush(); + file.close(); + + //Set Save Path + dynamic_cast(mainTabContainer->currentWidget())->profileFilePath = new QString(_filePath.toUtf8() + ".caster"); + } + } + + + +} + +void MainWindow::openProfile() +{ + //File Diag + QString _filePath = QFileDialog::getOpenFileName( + this, "Open Sound Board Profile", "", + "Sound Board Profile (*.caster)"); + + if (!_filePath.isNull()) + { + //Load Profile Data + CasterBoard *cb = new CasterBoard(this); + QFile file; + QDataStream in; + file.setFileName(_filePath); + file.open(QIODevice::ReadOnly); + in.setDevice(&file); + in.setVersion(QDataStream::Qt_5_8); + in >> *cb; + file.close(); + + //Set Save Path + *cb->profileFilePath = _filePath; + + // Load Profile Into New Board + cb->reloadBoardFromPlayerStates(); + mainTabContainer->addTab(cb, cb->soundBoardName->toUtf8()); + } + +} + +void MainWindow::stopAllSounds() +{ + for(int i = 0; i < mainTabContainer->count(); i++) + { + dynamic_cast(mainTabContainer->widget(i))->stopAllSounds(); + } +} + +void MainWindow::renameCurrentTab() +{ + if(mainTabContainer->count() > 0){ + //ASK FOR SOUNDBOARD TAB + bool ok; + QString text = QInputDialog::getText( + this, + tr("String"), + tr("Enter a new tab name:"), + QLineEdit::Normal, + tr(""), + &ok ); + if(ok) + { + //CREATE REQUESTED TABS + if(text != "") + { + mainTabContainer->setTabText(mainTabContainer->currentIndex(), text); + dynamic_cast(mainTabContainer->currentWidget())->soundBoardName = new QString(text); + } + + } + } + +} diff --git a/CasterSoundboard/MainWindow.h b/CasterSoundboard/MainWindow.h new file mode 100644 index 0000000..3af760d --- /dev/null +++ b/CasterSoundboard/MainWindow.h @@ -0,0 +1,90 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H +#include + +//forward declarations +class CasterBoard; +class QTabWidget; +class QPushButton; +class QToolBar; + +class MainWindow : public QWidget //inherit from QWidget +{ + Q_OBJECT +public: + //Constructor + MainWindow(QWidget* parent = 0); //don't forget to pass the parent + + //PROPERTIES + + //METHODS + + //WIDGETS + + +protected: + //PROPERTIES + + //METHODS + + //WIDGETS + +private: + //PROPERTIES + + //METHODS + + //WIDGETS + //Toolbar + QToolBar *mainToolbar; + // Push Buttons + QPushButton *addNewTabButton; + QPushButton *openTabButton; + QPushButton *saveTabButton; + QPushButton *saveAsTabButton; + QPushButton *stopAllSoundsButton; + QPushButton *renameCurrentTabButton; + QPushButton *aboutButton; + //Lower window area + QTabWidget *mainTabContainer; + + +signals: + //SIGNALS + +public slots: + //SLOTS + void aboutBox(); + void addNewTab(); + void mainTabContainerTabClosedRequested(int tabIndex); + void saveTab(); + void saveAsTab(); + void openProfile(); + void stopAllSounds(); + void renameCurrentTab(); + +}; + +#endif // MAINWINDOW_H diff --git a/CasterSoundboard/main.cpp b/CasterSoundboard/main.cpp new file mode 100644 index 0000000..edd178d --- /dev/null +++ b/CasterSoundboard/main.cpp @@ -0,0 +1,39 @@ +/* + * + * + * Copyright 2013 Oscar Cerna + * + * This file is part of CasterSoundboard. An application for playing hot-keyed sounds. + * For more information, please visit http://sourceforge.net/projects/castersb. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU LESSER GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "MainWindow.h" +#include + + +int main(int argc, char *argv[]) +{ + //START APPLICATION + QApplication a(argc, argv); + //CREATE MAIN WINDOW + MainWindow *w = new MainWindow; + //SET MAIN WINDOW SIZE + w->resize(1000, 500); + //SHOW MAIN WINDOW + w->show(); + //END APPLICATION + return a.exec(); +} diff --git a/CasterSoundboard/res.qrc b/CasterSoundboard/res.qrc new file mode 100644 index 0000000..4afcbbb --- /dev/null +++ b/CasterSoundboard/res.qrc @@ -0,0 +1,27 @@ + + + res/img/Key.png + res/img/down.png + res/img/app.png + res/img/pause.png + res/img/play.png + res/img/stop.png + res/img/newTab.png + res/img/about.png + res/img/cog.png + res/img/save.png + res/img/save_as.png + res/img/open.png + res/img/notes.png + res/img/cue.png + res/img/colorPicker.png + res/img/openMusic.png + res/img/playState_playing.png + res/img/playState_paused.png + res/img/playState_stopped.png + res/img/loop.png + res/img/no_loop.png + res/img/stopAll.png + res/img/rename.png + + diff --git a/CasterSoundboard/res/img/Key.png b/CasterSoundboard/res/img/Key.png new file mode 100644 index 0000000000000000000000000000000000000000..162377990eb9b58cbee5f41740c8eb3d851721bf GIT binary patch literal 1418 zcmV;51$Fv~P)U8P*7-ZbZ>KLZ*U+lnSp_Ufq@}0xwybFAi#%#fq@|}KQEO56)-X|e7nZL z$iTqBa9P*U#mSX{G{Bl%P*lRez;J+pfx##xwK$o9f#C}S14DXwNkIt%17i#W1A|CX zc0maP17iUL1A|C*NRTrF17iyV0~1e4YDEbH0|SF|enDkXW_m`6f}y3QrGjHhep0GJ zaAk2xYHqQDXI^rCQ9*uDVo7QW0|Nup4h9AW240u^5(W3f%sd4n162kpgNVo|1qcff zJ_s=cNG>fZg9jx8g8+j9g8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCG zm^qSpA@ds+OO_6nTdaDlt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JW@PU zd4+f<@d@)yL(o<5icqT158+-B6_LH7;i6x}CW#w~Uy-Pgl#@Irl`kzV zeL|*8R$ca%T%Wv){2zs_iiJvgN^h0dsuZZ2sQy$tsNSU!s;Q*;LF<6_B%M@UD?LHI zSNcZ`78uqV#TeU~$eS{ozBIdFzSClfs*^S+dw;4dus<{M;#|MXC)T}S9v!D zcV!QCPhBq)ZyO(X-(bH4|NMaZz==UigLj2o41F2S6d@OB6%`R(5i>J(Puzn9wnW{e zu;hl6HK{k#IWjCVGqdJqU(99Cv(K+6*i`tgSi2;vbXD1#3jNBGs$DgVwO(~o>mN4i zHPtkqZIx>)Y(Ls5-Br|mx>vQYvH$Kwn@O`L|D75??eGkZnfg$5<;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ->`6pHRCwB~R$FqzFbLdLxM1&pi~iU2 zL$<^MaVBXsli1b^Se6IBzLAE5_fU*LOc=x>1j{A+0#If%f=il$8xdywkkz!v4LW|0+BG4ntOJ>VjJYYCyx z-Z9;4JeSx=We~+g5fqp3x)2x=kJrYL$gI&`1956=BXGZ$$@J5eyx&H%@G6okp8IJ7 z|2xWsyrH>b_~gQeq)Nguggg|AWb9&=5|iIc4Ss{VJ)Xw0Qn#Z{&6Ovyk>XT+w{1{U zM}Vhb_}S=8x5uqlA<^K;zZDcQ8OdX{cupgAUaR8ra*j);ZP)(@)QKlTT^`9GrbtE` z-zfa!zAz#%ZeyX&GFad{ePQK9jfIY9xu7XDgrVtADoQR4MG>?8Z(Z4`@!DVKO_wpy zE=y`!>7eE)R7z{|cFwR$uvh?2`8Uae{GCKD8I_APXrXDEc3jn_Z Y07gg`1K@|$%K!iX07*qoM6N<$f;g~yPyhe` literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/about.png b/CasterSoundboard/res/img/about.png new file mode 100644 index 0000000000000000000000000000000000000000..e0109e7672f609d6b34546c83ff7aff4c9e8d0d8 GIT binary patch literal 1685 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 literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/cog.png b/CasterSoundboard/res/img/cog.png new file mode 100644 index 0000000000000000000000000000000000000000..be6f1900f229f21d200c7f7df2b2f84b05aa4668 GIT binary patch literal 1742 zcmZ{leKgaHAIHC&VR;zW!z`u{B_hi1a)pwOaT{HP7G|p`Q+b*&48OyoP~?_oa$UEa zXcm>PI1O-EI8*BIsJ_s+UWPw%OmpqQVA0Ddp{>3FYOA(Ct{^ z5|j1+DE29Tqr`fm|4^+-$%ebL4I%5+W3Kq>gt|)7B#9=3b1o{gvpUtSQA#f66SrME z;vrgd+I1%uRcoHgi_#gdk0%SJXKfqHc3>$-BMXdMx5QqbRSE$uTs{eXr+04Vkl4xn zugyQ4fQXmI(o!`IdQDxS0Js*Ve8o{1=ot_N7&wZs{jXj2{J#EWDn#h<4d(c4$e2uL z{_qqy0~L@^*8oMG{yg0GM!0`9`^up-wHt95hZ~)W+q@72X-VeEGL2(2ETD9CS5V6nDh2`CYgq zRT4_3+)c&HoAi;jd-gE{pv#JyMhyynF()%C6 zF5bmt26ezDyO#Ycnd%Kc^D`2J>qd5(Tknsz9*gY1o>NgLK2}_{H!j%gXi@rfp1&=> zWH9zMb4NF{Y0c(OSMQ%*E=J$K1W#pRGyD!1*B!xAj&@7e5avzFGwIFx%`#;?mNQDD zj6*JDBzh{i9U~fGY}1iXr`#T$kp~99A2_NRfvrSQA-ZPhN?9M-Z=^EsJs>dP5K9^g zvwI@}9{vP=#27-Kjgg=<$!GsTEuQcID^4QNl@MAtzU$W(gEfRn(;hHwEvb7MHmQ6a z+DG-{lIn>MAAw3B*0Hw)*zfz|wj(Aa*XDKZqw&AMR=tMJPCPO_A3cSSP2T1YT%5k6 zLJ#-umVQvF$=42pGTg>1WL@)s+?*DBgRebxstcRh?2yEtk0)cp@3)IhJHD?;v~_1Z zf41en-gJ;UmFis7uFe}<#0)lA1f}zS=*y3@{oeVVbtk7iWuv!G%B7Iph}={h_B&o3 zi&{n{&FhH_V>w&r;tPtL-#S5iFaxHwFilq3pXQB+l9HIMqv+{TJri3jZXx6AWJNv~ zk+9J;R)HwsBY!++2p&cx2%NC4ngv+;e=in@1oncjhfjo~z+T@dvCuFZ;#&AEI0c4U zMvvJbVl2RygE0Yp1W=7}pG_VZJjtCyk(||keB9+rTYVassVh<6*%wt*M)hWOL->&4{m_OXntph|R3$d@GPldj=84?t1K{}52J zhVLHv!xA63f_6ZrnHd!My<*(SLSFHxff~6HQ(!%j0B-M1tG0KOkQUtTbe8&O@pywu zNDUYYt!lX})@hli(7uZU9$&y5=xTUp3At|4AL2$qL3U2d!(QbEA+a2xj1sMzs4Z6g zXI}i9MzQL}m<`?oQRZFITxzd=wL>GbS^L>g9lzHGA>i@0|WQgxztvWSXim z60x6a=zJ{(lh@atEvn!$tiw;zj}3FS&Va)XBcUBQl%~cDrR|2?;f2(-zBF3U*M!oQ hxpAEP|MDwTt~{~W+4jZmq~-2I0th&wd#xKe^WQZkJ7@p^ literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/colorPicker.png b/CasterSoundboard/res/img/colorPicker.png new file mode 100644 index 0000000000000000000000000000000000000000..6e8aef36579658f2f094ef8f56947259b1fe7bed GIT binary patch literal 1786 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 literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/notes.png b/CasterSoundboard/res/img/notes.png new file mode 100644 index 0000000000000000000000000000000000000000..563cd28dcd691496d79771b057e848f00edcc5d1 GIT binary patch literal 2644 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 literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/open.png b/CasterSoundboard/res/img/open.png new file mode 100644 index 0000000000000000000000000000000000000000..44bf960ddf0cdd4707b7cb59959f9147b1fdd13f GIT binary patch literal 2201 zcmb_e`#;l-7yo=dZ5mq0T)vjv`esZN66wogQd2gvJ)`NF+{xvehumUwr$}W&E)ybh zzpF9H<#EZq2sKF*n#%LIyx1Q8hVS=>bI$9W_v?LL=XK8ObJAg9J^(<_FXGSH1;1a(@${gPQH(*Yi*A4RyXfXDU&RVAQOXwil;{hk zrrWau^Y)^IrhImkazbFf>PANin}RAzLOa-~6m>Z~F0_$KV%xQwS)7})PM>Ua`4IfZ z`%0M|mY-wHcm2Lec<4Es+c?cXzWyPAAB-DPxHoF7YKYPtLfHN5{7#1qd@fbLdfB13cR#PS3XM7W0Oi z6g&e33YbXHpa95Gcn<^BHhlHhz2Rr^$tkguOU>2($>xK{@ll8Un`iuMqmfS?i+%q<~`TnI`ezk`xFH4 z`pxD8X;!i7>%_|@rCw-N#vKh=@zlYhZuer-w%^AM@PJ&vOL609=u#4JMiufnD4IIx z-n~w|eGFPeh?2DBy4P=?RDlfPu10Wkr`63J1n1V9KW{`Q-nQs8SI zs|gkxE}LF9hFz+taLF4a)&~!yyvr5#5JIGQ`q>VfRxB}>QE^`-^9|mLqK>0q5gV~8 zVO_qhNfvy9npR3pk zICaCZBSw>j|5fn%GCXDCdU|w$Ox=8q5j)}Yb)(#OI0+a_U-`Dw{n0Cn9Op#UzFLVU zX|UKCgBp{kJO9WBG_Y{AChj!F#L;u@{AKkPnpV@!O6aL71}m@1p~(rVt7|ahb5l2s z@-92i%b{;S$zpk;=wn{9aiT*<63yIe#J&3Zstj-SGk=ZMy-b3pee3-@U&SXB3RJ9^QAAH+a-hH#*Dv0O4I2sIg>D2w$-dN&hu%l?{jld zix}pY0E}%fp%n~1ZYHlus4QMvi@4lJUJ2 zJmGbUdOG}5EOrd&JwH&-DO)b?H+=@Hje}LYyGwO`nT_7mlkrZ4njQv@H z0I4j(Ni~u7%@Xinrdp~lh}pR_!u4Ri=}bGy)YXfFmS+)#mlzkcM1J58Y0m3@9vOl6 z_e+YcqAitOp`#BRB~$Q4;u(2bl!&|73|%mEYyW`JEqwsL?;M2w_ymyihhI6y<-M=% zKMW{9PxI-_WJL`3IITSmQKgH#`@j?~XsJ9rjHb8@)8CexqQ!EjcpPC6-KjT4Y{UXg6s4BS(E5(is zeobq=dyF~cBFRjSrfx3yi@3;fmwvT#SKrSW0c#M(k(<4Y2P@_e^l0Oha#<^>73Guy~%_xW8~xh0QG)iDS{KXNEFavwU^&%43xiXRCeS} zhsQy*H;QRwhW}A0(WTL7Uxphb{+xPEVxx^N!}uV0CZmjHYRp=r=*D~Gk{#j>P;*G$ zbc4$IJk!{~pG)yJXPiVS|2Pd&D3H})5#62wITzV#+=|@zu(bRi?;Ft2`nNTSAtR&8+IJ9-WOs;qOo?-8#fi75J z4>p3t@=|%)(|;PqmX0bt54Yc+fb=48w*C_6n2_tis}Q10NeUN$2L_}-eM{KT;s1vt afL%FRT47!vq_z8U02eK+@fBwDsDA+Tj^$VY literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/openMusic.png b/CasterSoundboard/res/img/openMusic.png new file mode 100644 index 0000000000000000000000000000000000000000..6be6ecb5647485fa20a635c49f3d0f0bfd876ee7 GIT binary patch literal 3765 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

~&~l>h9d-)Y=5pQ98$& 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 nY(OkfM*q*|&8?8n%eydK^zVPd3n_Z; literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/play.png b/CasterSoundboard/res/img/play.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa29c2d8bb4ad46b8ce214d06554f6ff9c70b07 GIT binary patch literal 7289 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 LXv$Z~T88`|X`+-> literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/playState_paused.png b/CasterSoundboard/res/img/playState_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..f93d956e15499c228c2783c5ead4fdb1ba86f56d GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPtD<_AhX!Dwmqd=iUo-U3d6}R5rxyX4yfycoyc-Q|^ zFIoNy`<}SV6jjmn_hb}M5gKsN4XkaRIrFxinbN9tm8T!`oKa(7RA68^;FJG4e#U(9 zZ|B1Qoc(%-fdeesz#zcD|Ar-gY-f`q(bYyS|)O}a~ zberJ8QyjvV|L;{^@oJr+;BufDs9;a_Im=qE-%|gh8VrvK`0rroTENh?p?ULjX7d9N zoyw$-a4+CE$Z5cx$FRMTNuvqK+RKz^l8YX$?r& M)78&qol`;+0Cx7A6#xJL literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/playState_stopped.png b/CasterSoundboard/res/img/playState_stopped.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf10a53cfd414bf724a18ac22239755c97ef0ff GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPtD<_AB$+decZvllid%8G=RNQ)d=OizK0tbVm!MFQH z+Zqjm8x3E7HDm%RKm#vSck``Tm374>ecPPZ$-HmW7#I~8SPuAI&#n6Y`Y7K64hIGf yuuubo00R?=90%?De}ygHiWgc#wK8CWHQyNyPvglr^W2jeBE{C+CT2&k9+Uup3i+`xVktfVKuM-03}D7 zotxY;KMNWq*X@*3&j3LF>}Y4>5i>N)&H8EhdqPUFe!%{uT+CY+deo(J$p&~GF7GL7 z4kdw)>7mIs6G|1B0w=ZvMK>g`CjDZ~SxJ~`F7YdX5fTM7j>kCLEbA9EvsU7}lq&~A z;uB{5UJ0fiUtH(2%2?atMVXZ7zE85-!K2E$amSj7`HwGXe>a>64l>bIELO&18h&F) z-A)V@n|j?HcIE@p5glMh18Lt~HyaNRs0pY8joui*s@<#R>sR zYRmQH<@}SLxO&J)p!gD&o(OE=-Vd^*_(XPxE7gpq%_4C;&6Df?JsSe!X{2=U?M>#8 zuhwx=_=fQyf!x3J;e0dOnRzW5k>7EfwRJot7-AZER^vUd^yGgk7d*~{uE(e|9C?c` zg%yittp>ngU8PKod!N$V{z%mesV;5bS^Ut9PtHl_TPb_I()QsTXC4&0)mnWV5{~T> z;_4|6s)R*_>TFO>uGd(!UGpi}5$I$!AydGFQ37_UO`_r=Y9xUU0}FmMW(=u?$7kfD zJ`PRg{o2903Ib`mZEZdcnlvVZe%fIN2UQ?zIdaY$D%Cyr$j0CD=D?KwXaBaKKdMXk zBnze;$ppf=cFyokxqk&FIza3_h|a5Ef(9aVzyTan6GP30iBmr+lH&Y2x};^!X$!Hf z7RC^R60tvyg?KF>e6Rsdk=`1;9y5{XK*ONsrC8<7qZT%|BIF4K&NZN5WQK%9EiT7AXw+J_*9&F4^REu{b8lHJau|LyPC%H1gcTjpP()i) zQL#IaKzA0wOqJ@ z38S4{p$S9lh8&>!6^Jv|N>0)LG1pUyG;gH4Cv6117IG#^!Z0dd20D3y^#BibcLM!R zah9V0Wk@ugwx?ar*wF;@2w<(XHk4*3<$Nn+ydRqP3oI$lRt;<_tz{B*sNP?U<}2JH zb;R7Nw2qOgOZ7fI=}G5JHui7N12Z(^YDf~dj}wStqrSP*7%#FbOAcQxW2L!m&j%lT zS8DG`bF5uGAo-eAEX~JH+@RKx290HTbt*V9Bdn@;tmHsGR7)S9uSK3VwS+j?|CFR>s48jY^0YH4aSqDo|K(j6i_d5W~Ys6Fbf@`q8NL%2EUpNXE3=!{GDxSOP zfj%U@ya6<+4aUvhof%(ThA^(FV`sa1M6*+sZWQ8ZPByU+n9c$3Nd3g|%?@(9WlND~AXM#x1U zy}uJO&jxpF%AXD0q?%vPttFI1wKv&i&-+s!Sf-pIfKs-&)FvO_X4YUrIjvVfb@EMJ zZm_R}n5S&FoEP0n7R^aBccxlh^@-Ii2$9{JY+dCZFzy?Dsp-|bp literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/save.png b/CasterSoundboard/res/img/save.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9c9f99f4f47633dd0802dbbd87eac112665830 GIT binary patch literal 16288 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⪼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 literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/stop.png b/CasterSoundboard/res/img/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb9d12a1853a593d0ee9d56f9d01d0979f9fcba GIT binary patch literal 11442 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index dd27db3..4af584e 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ commands for various platforms are listed below: *Debian and Ubuntu* ``` -# apt install qtdeclarative5-dev qt5-default build-essentials +# apt install qtdeclarative5-dev qt5-default qtmultimedia5-dev build-essential ``` *Mac OSX* From 643433bd388f4b4b2b694ce41c6f56612e82a1b8 Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Wed, 10 May 2017 02:43:57 -0700 Subject: [PATCH 28/77] Added screenshot to readme --- README.md | 3 +++ docs/img/screenshot.png | Bin 0 -> 236210 bytes 2 files changed, 3 insertions(+) create mode 100644 docs/img/screenshot.png diff --git a/README.md b/README.md index 4af584e..dcf7d74 100644 --- a/README.md +++ b/README.md @@ -70,3 +70,6 @@ And finally run make install to install the app: ``` Now you're good to go! + +### Screenhot ### +![Alt text](/docs/img/screenshot.png?raw=true "Running on Ubuntu") diff --git a/docs/img/screenshot.png b/docs/img/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e518e7e45458542268c97479221d9d9edc5dbd9c GIT binary patch literal 236210 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 z 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 literal 0 HcmV?d00001 From 0336528329f614cc984079d12780822e5b256709 Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Wed, 10 May 2017 02:47:58 -0700 Subject: [PATCH 29/77] Fixed spelling error --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dcf7d74..aa5e32e 100644 --- a/README.md +++ b/README.md @@ -71,5 +71,5 @@ And finally run make install to install the app: Now you're good to go! -### Screenhot ### +### Screenshot ### ![Alt text](/docs/img/screenshot.png?raw=true "Running on Ubuntu") From cc55b38ded6bd5d7b010332a290d978c359665d2 Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Wed, 10 May 2017 12:34:00 -0700 Subject: [PATCH 30/77] Create .gitignore --- CasterSoundboard/.gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 CasterSoundboard/.gitignore diff --git a/CasterSoundboard/.gitignore b/CasterSoundboard/.gitignore new file mode 100644 index 0000000..759dc82 --- /dev/null +++ b/CasterSoundboard/.gitignore @@ -0,0 +1,8 @@ + +.qmake.stash +*.o +CasterSoundboard +*.app +Makefile +moc_* +qrc_* From 3312dbfee5c0ca135822105b7b78bc9f31d7c03e Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Wed, 10 May 2017 12:42:41 -0700 Subject: [PATCH 31/77] Changed Object Serializer to default compiled verion to make satisfying build dependancies easier. --- CasterSoundboard/CasterSoundboard.pro.user | 2 +- CasterSoundboard/MainWindow.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CasterSoundboard/CasterSoundboard.pro.user b/CasterSoundboard/CasterSoundboard.pro.user index 9f148fa..080ab83 100644 --- a/CasterSoundboard/CasterSoundboard.pro.user +++ b/CasterSoundboard/CasterSoundboard.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index 2a2b201..5083186 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -194,7 +194,7 @@ void MainWindow::saveTab() file.setFileName(dynamic_cast(mainTabContainer->currentWidget())->profileFilePath->toUtf8()); file.open(QIODevice::WriteOnly); out.setDevice(&file); - out.setVersion(QDataStream::Qt_5_8); + out.setVersion(QDataStream::Qt_DefaultCompiledVersion); out << *dynamic_cast(mainTabContainer->currentWidget()); file.flush(); file.close(); @@ -212,7 +212,7 @@ void MainWindow::saveTab() file.setFileName(_filePath.toUtf8() + ".caster"); file.open(QIODevice::WriteOnly); out.setDevice(&file); - out.setVersion(QDataStream::Qt_5_8); + out.setVersion(QDataStream::Qt_DefaultCompiledVersion); out << *dynamic_cast(mainTabContainer->currentWidget()); file.flush(); file.close(); @@ -254,7 +254,7 @@ void MainWindow::saveAsTab() file.setFileName(_filePath.toUtf8() + ".caster"); file.open(QIODevice::WriteOnly); out.setDevice(&file); - out.setVersion(QDataStream::Qt_5_8); + out.setVersion(QDataStream::Qt_DefaultCompiledVersion); out << *dynamic_cast(mainTabContainer->currentWidget()); file.flush(); file.close(); @@ -284,7 +284,7 @@ void MainWindow::openProfile() file.setFileName(_filePath); file.open(QIODevice::ReadOnly); in.setDevice(&file); - in.setVersion(QDataStream::Qt_5_8); + in.setVersion(QDataStream::Qt_DefaultCompiledVersion); in >> *cb; file.close(); From afca3eddde3cc8ccfc27732c52133f3c530291b7 Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Wed, 10 May 2017 13:17:51 -0700 Subject: [PATCH 32/77] Added back change to pro file INSTALL app in /bin/ --- CasterSoundboard/CasterSoundboard.pro | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index 66f41f8..4fda3fe 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -35,3 +35,6 @@ FORMS += RESOURCES += \ res.qrc + +target.path = $${PREFIX}/bin +INSTALLS += target From 9a2db847d59ea42464b8e800f2e5c0967b9223ca Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Wed, 10 May 2017 13:45:09 -0700 Subject: [PATCH 33/77] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index aa5e32e..4cd77ef 100644 --- a/README.md +++ b/README.md @@ -71,5 +71,14 @@ And finally run make install to install the app: Now you're good to go! +### Troubleshooting ### +Problem: On Ubuntu you get error: +``` +defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer" +``` +Solution: Install missing qt5 multimedia plugins +``` +sudo apt-get install libqt5multimedia5-plugins +``` ### Screenshot ### ![Alt text](/docs/img/screenshot.png?raw=true "Running on Ubuntu") From 58c70dea4fc33eb0728156e30033e5293ccce9dd Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Wed, 10 May 2017 17:20:48 -0700 Subject: [PATCH 34/77] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 4cd77ef..29cd16b 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,11 @@ CasterSoundboard is written in C++ Qt5. CasterSoundboard is not packaged for any platforms at this time see Building from Source for installation instructions. +## Packages +### Arch AUR +Thanks to git user @j605 for creating a PKGBUILD for people on Arch who want to try this software: +https://aur.archlinux.org/packages/castersoundboard-git + ### Building From Source First clone the repository using git, if you don't have git installed From df654bcd519f748f6f311ae1481d73c91d2b9ef1 Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Wed, 10 May 2017 17:22:51 -0700 Subject: [PATCH 35/77] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 29cd16b..bc62fc2 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Building from Source for installation instructions. ## Packages ### Arch AUR -Thanks to git user @j605 for creating a PKGBUILD for people on Arch who want to try this software: +Thanks to git user [@j605](https://github.com/j605 "Jagannathan Tiruvallur Eachambadi") for creating a PKGBUILD for people on Arch who want to try this software: https://aur.archlinux.org/packages/castersoundboard-git ### Building From Source From 3e635316353ebcc2b65a47af847af3660459e8ba Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Sat, 13 May 2017 12:53:43 +0100 Subject: [PATCH 36/77] strip images of profiles to avoid libpng warnings Used ImageMagick's `mogrify -strip` command to strip the images of all profiles and comments to avoid a libpng warning: `libpng warning: iCCP: known incorrect sRGB profile` This also decreases their size without compromising the quality --- CasterSoundboard/res/img/Key.png | Bin 1418 -> 587 bytes CasterSoundboard/res/img/about.png | Bin 1685 -> 1248 bytes CasterSoundboard/res/img/app.png | Bin 39463 -> 40659 bytes CasterSoundboard/res/img/cog.png | Bin 1742 -> 1444 bytes CasterSoundboard/res/img/colorPicker.png | Bin 1786 -> 1067 bytes CasterSoundboard/res/img/cue.png | Bin 3204 -> 2208 bytes CasterSoundboard/res/img/down.png | Bin 4401 -> 1795 bytes CasterSoundboard/res/img/loop.png | Bin 874 -> 732 bytes CasterSoundboard/res/img/newTab.png | Bin 9680 -> 6491 bytes CasterSoundboard/res/img/no_loop.png | Bin 4262 -> 2730 bytes CasterSoundboard/res/img/notes.png | Bin 2644 -> 1478 bytes CasterSoundboard/res/img/open.png | Bin 2201 -> 1631 bytes CasterSoundboard/res/img/openMusic.png | Bin 3765 -> 2577 bytes CasterSoundboard/res/img/pause.png | Bin 9493 -> 6924 bytes CasterSoundboard/res/img/play.png | Bin 7289 -> 5325 bytes CasterSoundboard/res/img/playState_paused.png | Bin 309 -> 152 bytes .../res/img/playState_playing.png | Bin 456 -> 304 bytes .../res/img/playState_stopped.png | Bin 294 -> 147 bytes CasterSoundboard/res/img/rename.png | Bin 1459 -> 1025 bytes CasterSoundboard/res/img/save.png | Bin 16288 -> 15066 bytes CasterSoundboard/res/img/save_as.png | Bin 9788 -> 7844 bytes CasterSoundboard/res/img/stop.png | Bin 11442 -> 9532 bytes CasterSoundboard/res/img/stopAll.png | Bin 8964 -> 6312 bytes 23 files changed, 0 insertions(+), 0 deletions(-) diff --git a/CasterSoundboard/res/img/Key.png b/CasterSoundboard/res/img/Key.png index 162377990eb9b58cbee5f41740c8eb3d851721bf..683d6cd7cb99738f430c42167d1f9b494c6f776c 100644 GIT binary patch delta 543 zcmV+)0^t3M3(EwMBntv!OGiWi|A&vvzmXvqe*y1FL_t(Y$E{Xdw%i~LlNoQY``<`0QdWrO%s5v|D2`iEd>DowYFTe zJz%&*26@{C*hIkK*K3$x4L_!b5F5F~UfBwdfza^hn_uL7A2aCvmUBCtnAm$B__y4a ze=KjO|Ade|&K8E(U#Z#$o@dKL<{*fTofc?o9ZjDk4ze0_V4LD&yxZt4U{j$IrYlRC ziJ~a{nCW%9m+WBG$do3aOLFc8U`RdY#!<+u)!qwndh3I@f3|7m(UrR2$6=udU*$MJ z6kFl{98ICU&|EQmQ1~HtC+ulrAGSg*eh!zvCbovC zUL*vS{FA3Wr8kD(8>i6y^O{viHAKm82Sq~ODi|MblQT$_Ygb%Zu61c;TmBBB4xgaD zJeH6<8mFhj(4*OMAA-Pmt%WY#s&dWu)KKr86VGZxQ)mocfk(3m=>5XP)}jRfe?PSy z#i|m%Q-~YZU|*^d9#OnZv)n);F${Y2R(Wcc+zZtmuK??9taY#r@|C8%7>t`TKgwn+ z-f+j+Y;@k*zhxOw{vfD5+t#@Oaho^Tk}G=Zp_(*|T&juLcDYv5NX~5irpj?*U#w&N hU1KH8jxPZG21ZC11CIJ`X#fBK2>?k&PDHLkV1m{+3rzq3 delta 1382 zcmV-s1)2KG1d0ogB#|-{e*+k4LqkwdXm50Hb7*gHAW1_*AaHVTW@&6?004N}V_;yO z;OOGy$|S(RP*7A-Aje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqn zGBA9*#=ywHz`$@>*U`nvm4P(Cnp{v+!oa|AfPsO*C?&NxnSp`fe+vTxLwb2hK?wr` zV+;cWgGf?#K?wr`V*vvLgGhErkTU}VV+#WV6HiHMMF|4~1A}vZL1j^9dPa$Yp{1pz zf@4a4QmR65WpPPrZn1)AUUGg>L4HwUNoooM0|V3!1_lNOUYGn51^2|vJOv{IRR$`9 zh{z}f2n!KD2r&dme=aR5g9jx8g8+j9g8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3Pl zV+vxLz;uCGm^qSpA@ds+OO_6nTdaDlt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8} zZcXk5JW@PUd4+f<@d@)yL(o<5icqT158+-Be-)9vqT!-n#3qRwiC>YZ zkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvjt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS| z_9UHDT`N67y;u523>FyH8pRmfn#h|no4z!=V7}90iRA>VI_q4UINLxwS9@y*V@Dk) zHD@Ik1y^}De+74C4|PvnFB5MYA9vqizXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2*=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&G zHH@`hbyMpfHtIFiG@osiYb$I&+9};t)P1^FwXd=Nf9^z^NwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x z|AT`$hkhPuKPG;B#YyW^=guUb{dIoQMeR#RuOwdmcYV%Hn_GA9)ZbISf8t@@W3eau zpJl!fe|dTEb^crVcNac1eKP(0>g$5<;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({U zO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ->`6pHRCwB~R$Fqz zFbLdLxM1&pi~iU2L$<^MaVBXsli1b^Se6IBf4-51gZO;d0S7=h2nWvhJvT)FT+i$4 z61`^uz<$=2BW!mNhs;6Vwty(YLD+F?=DX(m)DR*A%SMr(pQm=uEfAf2~&`(csCy6%;WU$z!#6P9t?*tK#xJe+F$2Qmod=f>Mj^PY02PU#*BUG=1qsgr^PbXLRH5yz}`?Jueqc&T;;`3 zc2T5zDfLksrZ70Y9Jkh9R_io^8<@&HV|w-`b#aNftAw>R7z{|cFwR$uvh?2`8Uae{ oGCKD8I_APXrXDEc3jn_Z07gg`1K@|$%K!iX07*qoM6N<$f+tsbhX4Qo diff --git a/CasterSoundboard/res/img/about.png b/CasterSoundboard/res/img/about.png index e0109e7672f609d6b34546c83ff7aff4c9e8d0d8..b04eecb239150639fa173392563361d8f2baa2e2 100644 GIT binary patch delta 1220 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 diff --git a/CasterSoundboard/res/img/cog.png b/CasterSoundboard/res/img/cog.png index be6f1900f229f21d200c7f7df2b2f84b05aa4668..ef7112148f582c1b62cad0cc2535e65d30abf06c 100644 GIT binary patch delta 1417 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 M07*qoM6N<$f;|g96951J diff --git a/CasterSoundboard/res/img/colorPicker.png b/CasterSoundboard/res/img/colorPicker.png index 6e8aef36579658f2f094ef8f56947259b1fe7bed..8f3e465aca50f14bde0a0ec77b01882c590677c6 100644 GIT binary patch delta 1057 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 X?M(iYX4=mb00000NkvXXu0mjf6*f+! diff --git a/CasterSoundboard/res/img/cue.png b/CasterSoundboard/res/img/cue.png index c7c6eab04d488d6653604c3f8b48061cdf758fce..70229d920424bfb959f0aa7a8f704be3beaa4ffb 100644 GIT binary patch delta 2207 zcmV;Q2w?Yw8K4o68Gi%-003z>sXzb#00Lr5M??VshmXv^000PCNklA=$g*$SMk0B;3&D!@|#o(g6koR}+d^#_u`+2a=i zLfmt7btM!eJ;96wTWqnx8f$X)f)ma-;fF;IA(3H=4YrbP7k`{_!U?~oW?$fl-`Zb` z1G1T@AJ7`CJE9o>fSob>{#PT9NztV{!!!7a_TtrhZ5*Wr2`Q(sbxa? zz%d_vHwlITU6DFLBb9xk$#h=&t`a1YA2dC;Cz9b;a?30J($YU+Wu3Z5iZwP^kv`=L z!1ew3f(x!VTL)6n;w!e=0B7KrJCvtu>8B`gaBRM69Dh(4n^YGskW)+5o7R$}H~Kja zQpIxpH8^M^k(&gxBDD0vPPpKs?&qkO26gPOL#33#Ef&y%CXG8iJvH(t*pKK&+x%MW z*}`#a5hNdY0#M-Xp5P6CYUrCnUy2tz3u!pq`jZ!-Pj?H88;g72@G=OJF5&Qq=lk(9 z{<)p%Reu@Z?MV%95H(5^7B9{j3Y3PBSq<#8_kvW8c8OK^)6-9I(1fvaQ*`wAig4Fp@8R7r#aC>C27Yl%SWsKc$;g zeShTY*jPxg;|2I2V@toA@?RIw9>`%*K80kjSpq5=X$Fr@^xMf@o!))xi8*Cb|G*@{ zk+2|1TIfPwqj5H}B@Bjb92q6EDL;bQ`^S4x1SuI%rU9nZF;;b3^ zqWk+cGNb^aPdCDqihpL#(5E_f0p9gP3XlkqK=j>;ugy z4*+Qk7=IpmKtVo${T|e?Sm;@-ZGSp+M|0ch39&qY#x!G>E(zZMi!Z?7lL!jA3OtkJ zx4>q_17-3oUXlgaetH46`lMa73J|jj&`Kb+Y@!EbQ+u9)LSs4ZR>`(~M<21L0LBO)2 z0&M2CFd7I`I(d3EG25MEC2~vc6NKrP(V55)=j}WU_!w|?&L@2U`YbD70<0#Pc3GML zYv;^=OzJzlMiGEzXLO>cMFGwvd4HUFz_E}J0nYS- z$^!=fM}KfoHYZ&|_1CqJ4f^G?7RN|mh{cBTy9fDQ;B-G)1^GmN9u)T9J*1zq5>zf< zzBQy0e2$iY&K_yZ$#+Dpc@{?S4M#?a{?pP2MCn#S-VaN8}?C7!)Xpr#LS>x_pMAy+(6?2&kr zKu`Y$et(fVz)<>*CEqc-B6yO(hCaaU==X7luia=f92DEQsCPr0EP*Zk8**iX)Ef2* zgCSq_#=4Cm-$@d<(Z4~zNpFo3xn+MLMQ+$?$!;TED}M=|m~(FX_=zIC7(TMS;%wMz z%e39r1uyv9(wxjH#lglr=H8&dB(&b6br;*cdUNSJ$|-#@yX zxZUC{*p1z*jF-S5KLhi{{cVdABp0d&_w_M002ovPDHLkV1jKjHA4UZ literal 3204 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 BO056@ delta 843 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 A2mk;8 delta 4238 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 Ofa7+jAcn2q)&BwKChSZA diff --git a/CasterSoundboard/res/img/notes.png b/CasterSoundboard/res/img/notes.png index 563cd28dcd691496d79771b057e848f00edcc5d1..04b1d397e4ee5f4dd5053e435bfff09ee8bb9c71 100644 GIT binary patch delta 1471 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 diff --git a/CasterSoundboard/res/img/open.png b/CasterSoundboard/res/img/open.png index 44bf960ddf0cdd4707b7cb59959f9147b1fdd13f..19f5810a3511b79ebba80af7eef30327cd080613 100644 GIT binary patch literal 1631 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 afL%FRT47!vq_z8U02eK+@fBwDsDA+Tj^$VY diff --git a/CasterSoundboard/res/img/openMusic.png b/CasterSoundboard/res/img/openMusic.png index 6be6ecb5647485fa20a635c49f3d0f0bfd876ee7..55b06a39bc6da584dbf3acb57356f62143dc5a80 100644 GIT binary patch literal 2577 zcmV+s3hwoZP)uv@)Q)!6ITDWRS;5ZPD`VSU?bp;Z@}o=m3?$gjaYZBq7Q6kHFpEx%ckf z&F;N>v%7xJKj)r3kKgaR=bn4+@0|NP3HV1E1L)6#+)YbD!xc(6$W}h)bci*$hAtFP zj@PD8!+QF=uD)lc@`d$OTeOwpfouISrEwtg^3I#8^t+GU-B3u!7I?_ri{}ioM z@jbWI_F;q&teCqUYv(q;5H0N^*=@z^;Ng@eR4q?B+E#1+Cny-}w(50wUWl~B@zx#_ zv&>?exUD?E4o#qIw2DA`3k2b#!>=w}WQw`p+=#SzJD0Q;_qwe<{7U>E-6PcIG|^@U zw+SfFL^&R@HrqS?#!*c%g)HYqx&;zuuU6>22-1GYVFF}0&a1TcFUmPB<4X}FU|j?W z@ZzPCh30mxL^8B^aRdq2AHlW&JdEZTBg}sCvGhy?1!}>;2={@y@DWW_LEM^*UZ59! zXy#DuiKLN17T>3v?yYkO9T~(KndD9nh!onACnoxJLHDv3+XMilFp7%`1^eZV5c>oG zv|)=v!J2p@0FqduQ1HumBLEV3S7>|j)&wAa2!JHzMwlIc1V9@x9A4)RY_`S*b3mQVw@CopZ0H@s6D`<#y@bC#p)nb?2)+=b(ItKVq>$YA& z%3;$Hy&@!8`0SQ{TPa;*moVqnJi>e?P~14|teD7V6Z$!lw8j zpfw+`UH65um*sS3g)bpiZ-ErXF@-c;>H)^ELrscJ0&*F|_Sho8Lmv6urc2$;Z`tFoNGuUBkh$EeODiFt_pA)|u|hxx=J2#Gt(wJ5 z4zyeo3j{P_5)%wY{m&W0!N7&1pMW9EGC2J>OCBHM4X%Q4cZk@#)wX`<#3sY0rz&O` zp8qPkv)j%sGHwyjlo=+QvNzGivQ#b&Ct#te-Ct#>fiBAGJ;%Lbde;yK}^C=)VVV__e|FFoL%qXV%w+BQg0TNv; zSGD`Fz~Hj$3OmWYbrJpc0RQT@W;xpo_JCz%vC@|i{XM`ODU4^bVLq^rF>;Gs>=N)e za}D-@i{!J!Xb*_~TR@L?tY))L{aO~&iNBa_;bzNOQF9au|&W?=Fw4? zR>DNyw|Xs#m0O?#pYW+p{c7fsMS=BOVJ!53Cgk(7!5*-cv3wP{aP$-KEN>d@0cXf# zRdDuz=qF%}?z)QE{3&=x(9utTij9otXnhLA${+}Ek|E^QPyN{G0Ts+(dMF;tqmuyr zROj!E=VWMAMJECB4X}uDYzV!o=p;a{^mGgF)BNZpK*CD>6nfB&wxmmyJby$YM1q8jYgQNvp02db7*i1d10gmC`;OOY?v_B#_Te^BrL~;i0$h zBGzt!1Qzm}`V?sR1T-U)#?(;CH$i-wJ<*_kH7B`DGHv~xm(@_m01rd?Kyip#!EUC~ z75`(v{lb-lmm91gS4^5R8O_(xu`=Xgg5s4#4WB6v`X$zg^h2gccqH*Vg`}_vNO6FG z2RLjoh8zAt4e4UF_=xbBt;aCM-X|3W?Ps{SZA&=~EwreE}AWgy-rZ@I7L@{>BCmLcb8*Kh-klAA*_))v$_O;Y#l= z#^@$OH@_R`BDRl|27T&_hn=D-JC5fVqt$jkK+YHZ5FmX;`sRa06tZ6&C2}iV@I5yQ zMDkIKDTEJ6tPo{R+u}KJn5eP6WzLyez7pLp2`mb7{&0;S`iiv@?y$TZ4cH4(y> z<_+aEonpny3*I+Gq#N1n}3NBG)nmw zH#8YOWq|VQMYeI6^LWUlC)vtMmX~K(XIZz0?sVf$(y8Q|FBEu5gsL*ELxIA1%&*bZjDlA^SbFTspQay nuCybSTF!BTy=>utz0Ln0W==5Pv^mV700000NkvXXu0mjf30~_A literal 3765 zcmV;m4odNfP)q>i1c{ds}z*f1l^Q_v~}--QTr->%ac{?0fb;XMfM$zx~_4{oA9Y z9F|hqUS(^Q4OQN(vV6&VmBq6vkE#4YW(}F*iq%XQhgWSEuL37MCCi7 zD^h1<5#Sh=DLL}h84!Tp;Kk4tsUt?Eq@OMJ;?gir{(kVJq}RE|pd-S1USQn_5^mCz5Nc!yYTwR1|IYgKlT*b^)S9|86e z8}ogbuktyS^To98x?v}kX)13>xc+^WkE{GQbVcg|mjG+4+^({yC+}>rFX+#qE1iKi zs{Bl4kA$vpPAnldJZA}}lLu?tCMt77SGFJ)SGi7QQ_r=##7OXR=t_o0n*gs>c|c`V=Q?90Cf{p9SF|M1 z1#VMW*>mk+v6;?LqfLNGDi?UJqwMV;x{_UDOO@+oqy>|nZM+Qm)UZu}n^fNATw9>B zn%Mll>EKKMv?rakb3#`xBp|>lV&l6zBREs#(9jj^5tdc?o66EoItHu_Lsu>&Xmq;x zX`XBAi7mAb3Qkb@k|&*BZg%L(g#rX%?4RVM^R>J!bme-C@nQ|#1};Dg1=d7jF@iu@1)JTA7d(uu=WriOm1 zKHv(mm1D7CX2OeCLn;%F8(oxQmKMYvRK@oRokhG8QB!0P#Kl_f)0q#!V4;f%|0y}Fo*8zN^ZwXAuti056$ z8AbvO65gb;raXjgnY_VrwQN=%8I*UlITFqohxz>mW>9N-d% zYg{D2fCHW2UKyzvz96=r^RY;P!N+G*&hn&xS>=RCfWb$SyWjmPYeWJJ2iW9uiYI+S z6A3Uz%+GJ4%0^<_!x-b1?&6+J18w$2pE+V(-G2hsxk`)`^9^{b*cP|VB|Byl+u_!C6YEHTFNnn+NCJ+X zUsL(9q-;{a;rKlsAB7auQ_i@oYKd2J{ zn9DP#UBPpWDa{AOrZN%Pz|H?kF^{2C)QJF0TR!DUr|~zF=ENqb3)t~=qhyevE(91a zX0IOOq@(DeI07NHoy;X=$d~Ag;XBgl$uh)S9m~)qK z(iZYvkLU?#{L|dTIuO8D{)be4TG^`^4lt!Y(@m@^0Ya}v4kElUpd$f>2gC`O?j|M? zV0V>^E2>x|KsDG^Yze&+&&M8Mcz|7nU{ak5_oa~l!v%aS*(LNAm0zgr9|;78*Hp)j{x4*V?5Uv zL;?&Z*iXsg4?C<@NXr-rFnGX?9&6t_^JI<$7#t8pnlBz_n%q08BLSKZ;sN6I%b7^a z6#a1|K(oQNa5l@Xmyz#Tv15U^buUB$G!vYNihmy`yQG~Lz`OmS%8_D?Ki$m`3D7LC z%jXc4uZYD2NCV;FIT-V%*8hb(f+7Lx2V(x>)VX#>K7v7WE)pk*b#AMR1ZXG-kN0(P z;{1E?s#pvl4#)JJ7#0c8FtBMBUw#^N@r=B`6Lb5%EhSGRK!ZRulrtnd-VZ0BLlE4( zU(LuH3D5u#^@~{kJ7we}94uozfgqpCdGAPo8iNpTL`Nf-LsoF7--v1VMGy9l1gI(4 z2KNoI102%uPcfa~N8*2HS%?Iv8P*V6wAm&j-%Db{0;b+)OO}N{0A~no;$DaZs2;Bq zGvpA@FDv*pu@epzJ1V{m@CSf6_ydggWrzf*78rBBC)x4)h?zilKci$htOgPpoYle9 z(E5=8)q#eXE!G1hfy10I`p|ICmn?^F{w(oy_dY}dREG~s`WO9kF+2b4lJ|#T5Qi^6 z`UBJuUM*Z~!zK-XRmuC}>xVx8zJJjlpvFid05*UZO5T&hpz-$2;}3ANSTOE|5D8En zk_a%W;C%r80EEonQ?mU5h_#46z;+Vt0720U0x)f4T8Ifa%O8M~#IP9tHm&?ffa=gK z0f?o@0#TMfz>{JNL>PXeKR}I8mH=$yqPx%I4?v^i3^Ffo`H=wCp(p_e>&iKadHexz z_~eY>+l!VT2~Zu15CDGw+`m@KxF`MqN4M^qwLlaJ5Eyv~fIk2YpA{z=e}Hqu))b!U zru;~N>X1eNYyoujbop8S05^zr_eIZ7iUbIZBm$t^q2y)x18`;%3q-_kjQ#)(L=pkA zz&XHE#ZFOuuEg(C%Z~)84rK_yNh%nA{?f1VBLS*I5dzFnIb3=hF+CC>F!B(9MIlc3 zIz{ZH)V`M=2~Zsl6q~vw;c~I=eomjtj|2z|Z@hl712gdlxVq2fM*;*!(h$JBzlvk; zBLM=Vm;L~NrQ!8e))jLy#RHfrBddY9m9Z``H>>-N&tP|vl{^fw4;Vy|ALxQ3#0l5A}mE$B~b4NFb1gH*W2*5RhKpohx zN<{*655{4lc%aSWg7vh@!!q*J^D+cr$M8uR<+C(AM{HRb7jYEA@8qgN06qOVyky7-4-RlI%4CtFUBv8&Iw>_GrLhn?jl;HRY#mcQ+)^{0rG=} z$5O|V>2ddRcMr2F$YzjvSvPfn&%wpMvPfV7!aY|Wv*q+YJgkdx2@kWi*m37| z0Pb0rNVa2US@;O>e({@zu>o9HvYbm*cJUSdpxBtv34G0t@6!W!0!!ANp7ae9(yPX1 zVniI49 zKphxwS4y~!w$E2}Z7U!Dx3zFWw(qF2rR1CEyXXf2_E(waq`gAn>_-QoB zU8}p{0rTbReJ(c-=mC%Mq!Y4*^?KIrvq(x0$L7t=Q}Toy0%lV9BuhpUTV&?CrOB(uwPHMv40|g=9{@mgid15aH_`0mIFn zt@~vmYZ|y!yKu&v13Vcfsa#m*4Q7DDi!qM4nl(KF?$NIlzGH8(x97R(`U$|WpyWNV z=bz|FFJlNo41E=%Z4rSfv;hf zn1<~FU1Vwx%PI>DHfK9&bi2!SanB@$H%&=o+t>AB{Vye9`d9O0x9)jQ3q*pI~^ zdN2-;xVc?G8!L*LE5~_$1PQj6?s|eH#2P7KUqeq8zjodR z7CN*_j74d70`v(COlZzKNb*>BtC;Dxta8;aFb%#q;o3c|cZ4hV%L#d~qa50j#XQ#; z@*qc1|9^r_qOj9*EUbAH67tMPhc3)Z-{bcJMFf~I*LcztXzLD4$n-s5)9uzJ8iZ1F+S;PRwDHO#I z+W{XW;p2Typm>d z|864a(x-UR>Baa`H|{|h%-{L2vZi*GAb2KoW!V=RkhBZBq~ zWyW`Ufi1+Qc65uZ+_7k~RL2AM%Xy+7VBE+0IHkaEuxX%; frQ$rUTfy)@ZjHWZg0N|@A%j^8-A^#H=#(#ZC(qjBS!?09Sk_SBh zuZq7`rTv#+yDGnN2LN!P{}T|9n-2p3DC)j(J$^~^t)fUd) z1jk*bzU~cb)7`zU9y{VO-3bM|5`1@4nqm} z{U3U85s95WfK{LW-|%nl!*y}h{(f1U3WpRgkuKj!JJtmv?YoeT<7Tt!}kho}G0$YUxjW&giTvDCxI2grQi zL~Hg@)QHxx1{8}FDz+4){pl%L_tx6BYN|-;OcoIxjVz0y(cfV$MFp?)OfRb?e0Zn# z8qcVy*3xzmZT|klNnhzl;<>r;am^mwA#Swu$HxG{w6Yj#{lx5*yNnf%1uRDP(uJv? zF7QXRK58&lQjd+cXyDWR<=ohXxTIuX_GpVk!?;Pak$UJbJX;4mh+dh`@#0Scxk&vB zTR)wQIZde(7OZjfVn(Y44p=iR1;Ac5*ba- zC(0a7dDMPuJAb~;l$HWWiG4Ery#WbxL8TL@-f})%9nMvmMVJ#peAI95pF@3p=Ih^t zAkeRC=bhZe>96FZTtZn^+PwmN?k=^tostO&CnF>KqQ|0s$|}~rfABlmuLBEDKNW3^ ze23U~122%(J#q2Kzs4r-frUjyNz8v!iyIx$eBJJ>?Z3YQabQ4R14GNcUcOkXvIHHU zUybwhJI&@J|98}0Nby|dy+aAfu}pqy)glP3v1Ef;va}uX>OI!VToqlgsSA3hF+f0~ z8(hZSDMwElm5Xm@1vZ~`1FVE=K*jX3KfHGDR#>VRC0p$H_fisOUmdmO{iz-{O#(Lk z`a2}_TMprrCtR0_ywtMCD73<&xRyo6A8~{cS8v1-ZC8Avickc{xxDp5?q~PNp)l1r`<-CcW#6Fky)# z96po^z}Bi7P;cRJLW}81#Ij}6CdE{gx5vP^e^E;FOSd2pLw$xCiWBi2??KKZ8c9RG za|=c|OXC>UR6m|H1)Fe#$2p~Wb?9BZ70YlBU_^=N=rF-C^1KIzI_rJymth&Q%9sYFwCSQ z>1WN-(pUSfpFhu~OnjPuPjG*i8xr_QtZ|el?PvsG--tf<8DooUQQF4(w4RB*FF)B1ui%Eb_ZhMq z;cgu*0(Xi^7x?|kB=;LW$1hpP5~l5-fL|`9pvvY*Rd4jJkgz9K=|V__CV7hOp!-Wq z4Y&vyybm`$Tl*BrKy8h0v6>!V{wXS!VWPSKo*ytaS}Cz2N#AS|%KPi$71g{5B~ft? zZU>|CR2KnEu3YEPfF(BA<+4{QT<|sgfMzSTPt0Oxlr`zrZj|v7(xhpv51>M`I~q3k zWloU^irwYElnVvSAc+{}@paw?^jfuIh3HbRnS)`wQ)wy=D}>w9S*?RBawF$@?5cgB zlS15xitCz|O-UJqD$vzj7^yURyAxn9J~9TuQ2dE+6r+e$F)9${m|LVKbn#1R_SxX& z_CiISD5`Py&wIGKtgJbKo@GZ%cWbHvuTF-ivl%n5G@%A&jr@!qX`+Vu907@=YNrx< z_F3{38_9Hr@|r*N$uDmup*=`;LBVRGT|6N3HaQk%+qqH;2%jtU+Egbrc>FZ{Mr=*7j1~-oqEYG1tSgw&bpe` z92uH{yIEI!FNFANiwk%b8#>7l2pF4_<`^066O2EE3IUm||L~)RDm~nFs@2cw>y`HO zNs6+nuy2ilb_CSM!`S*&V8rVbVJOK z-d5rFU5#D7mqaLXS@R^3ogN)n;&|7zD48n6_TT^Ikj>h%d)0vyH+LKt2*m<_^&J=i z5Y)UW-i@nP0O;fPc==J*mijTxREqG*si+hi?864Jt|GJxuIoIh^@O?kyI3FB$Uoh= z@xyU{&9WkXyQ*%=Bf09s(fB@VrQ0JXz5}{hELoMuk<&H+-YMrHq0RTqdrP{rhy6MC zqVLerH$3}*)*?{3?C2#Bkh2g^c3jhD<7;YJBhh(`CKorr9dly1trqPQoJ3sYnsLpG zds^hPg*e^Dt6A2Z9}`eUpYa69YIAwoKrE?yQRYBHe9U(X7V2hUsL^o`DJP^zwgl7! zDiZw5sG=l2U0ra1(_APC>y#jbc!%nNv%LJXu}kA9>F_i|D=lX!E67C02y+DPK=Q!I z6iSGl=M3C)Q@ zbwwNE4G{#fRQ9_zv0tXBCJq+a{0LJ@@k6$C-rcSl)oJm)sBW9HDa6lc^LW)}gNC?f zXTroPYi#jwqPkqU`;-3Ol*LsWJ1bz;=5lOb4D@DFw27>hcP&7&8-F^aEyiXE6G^2E zPn%>r>1>PS4iTco&k1Gbr*polf?wB5T(mUykEok)GP|kqi(kCv5^zs@&md>Bs4eXf z)MLUXXW@oHhcT|WKlryfJo!AAPdf6S3}YI0yu|qKU6#-Y;w+O+IjvIMV7|G5gyWW3 zrEP?G^6*%2@pF#Eq$Jx~GXmnKxK%mjg|6INdFXj&wz_@?xPul$6 zG}^O;*gD{_HH(J*I-uQeo4C-7IYknn*>elrRp`oIqFj^1?bVYMW@Fq~pi1&y)mSDm zKwhXF>7R<(Bk;8EAjb6wii@cDIh-GHuv*m84q^P4S8*)6LNln`D78)g_7m z35&T0bCh&jz5i=ILKaVYp5db-k)AXu)c7!KIP{~lEpCLxg5HW; z_`zvQur-UK!gZ>wX^YHn2A43v*W@LI{8JwN#c$RMXTao$SGR#SnWhF_Q;G__-DD-X5_@7UxCt5KAn*zk!fk)5ycApR1|ItM?+JYSt*fbcZj61cM zXECGFfVIFp5#2l~I<}ekLDd zpHkbfMpV4yfwAB+1GkUbP%0-{fi=1Z!uA*=eW&u1rH5J!+jflYJ(bpNH+ht6U)2z7 zUs&qcwe+zB<*fE|c?(TQJO{P-p+`9UyVxq1*(uL`Uixz%q*8ww%s z4BQ}>7Ga$fK7nwHE)NVBkF}#Y&;a$s(20DT4*l4KS)>Fv)3$9O-)vjdetIZ92#Rl! zeiL5{T%*_W_*<3j)t*%UISlEDapdKc%}qw6h$^6LCpP5UcJ2Ofp4VjHx2P}ec@T0O zI2o?ww%6EFbheqa2I}ImL5O$v2suZ`(Hr2Pza~tX|5@?__3D%F7G`x2jX_F5 zNF~TkVqK|$(TWK0-k-vTw=djiow?&VuhwJ-Z@Xyh4u*el2?nI~@IBc0nq*^|>ropo zO-kmfX%eGTXf4~su(Cmw$_+>`f_;`v-Eg;B=Y5R7{0317f26FBoc(}jzmE`h_%`Nt ztx%FZaUhbs@co`1KNaX3#FlVgAV~yGpRTF!b?+n~#n7a8$XjtL9Qa;-i6G&E+H-sO zfUAkPGgWwrYKC7JegJAY3N-Stt={FTQ??5R=NSx6NZT6GEop=mocUT|Z-rLjE#Rvm z#>;HaBTMrP>nTHwDyM>+EtscYIbG3UBD)a5VT|!9R>cz*kh*dx8zVIii-$Y&Ib@;S z3vq@QTSDvg%|8PCB9)lETDgwxQ}>afio?$ra|L5zncVnuDxP*nQVdJklb76Gm9V#4 z>h1LQI*`ZnX`&0+lDRK9W#WN0Fp?Sz&Ee<3HVW7g zdlU}#Mwr{1GRl|~`|j1BqvgbZwrX_oFy!fIn{9Genne=LsN+pI0<|T|1k{b|1FemS z+LVvyHC#FVSjBF?$=K#!Xd8~D_l`TK0rzFPY(*PUX|7;sN7#zLRiP;%elY!tCyU>X zN>%I2v!wiY2yYmOEfr(4+AcRZlcMh%sVdIFD`xF_`&E%&$`=AM97Ol_i}&#ExBGG zrQPpj-Jgte00!IigRlHeB_ky{_4Cj#&BsY6gKD67YHrgWgjNHfWGaEgMJM2UOY0!K zRu3yt^8w7mKvA;6ViVEIACwKJiQJyRibA^En~RCJU_R6Auu2uTq546mL7-cNZm~+7 zV-lM9l5S}0F({D&NaSlDHG^WBJwA)}#Q4OeC(ihG!p&_J50O+rsU+5wTv8-Qsz7jR z)Ej9%{edl=jW^Bx z4X`uo+7!}w+s+Q#JENc>Tb)KnSCI4kBdE{=FuNX1p~nF*$X^er89!p>w7rpzBQg-j zh(zu`GM!RXA#a^a=D>XepU3q&OweFF@9;+uENt;%E~Yv88- z?Yr@EcK%fTr8b(cG3Aq0kM1%b?XCIn5$N5=sc^= z+KD_zbx(I{?p=xYkQ$GFZTPuX0=gLn&LQwL7H!zfXknp`M_RY^Uc~l<-6{>MO?|%o z_MBq{4ih4;Ye87ILiUZC7xOtbT?ujJ1{|(#36V_boGR+E)A#xYi62w7xMbHQGyy9@jh z*$nt`AS&^<9H3$lr!a8KKr}k9v2A^lqu-^!{_(ddz-#5~^)R!rywH~LdnX*I=oZCcKt-XrHVFMazB_XTFCf4|$Ow1J)CXBt3W{X_?axmwq8$@^Lg2t4c_&YCwhH`q5mK zKt_o3l@(AxU9cwomZIO2Gnbjl4yNYx0a6-q=SLIsnYgW6Bieh(#Y{nBa_x}zB|&|DGDV0PGpt2HD1X2+jFMhf5V zehhU9Pk4C)2^+34_b`qmip&-RiMZUC?~ugl{!ssw?M8wbMGjGq=GjD4L==m?=iADK zdE51tw^&mGB_MoOrf!q;DJleWIRz>-i^Lhk)JM`3q_wxCSp-3(C=1T{kmmU5yXD_( z`aPIr>WhBVuk_IwL=Q%s&ePte3^E&AkN%@2Zhp$(YlB&r#)7NkYV?E5zBMn)L9Fn; z^Ogvzzbul7S$NfpDWTi0PDp|aVeNRE*q}jj=<)Z6l%3o0$PT1nT&ZD=HGo|Fx;-3n zXG5$biwYF#9y`p!jFjHKH*Y&RhN< zzQ#jlQ~0+dWs$#9PkG9DXNvs|%02-|4W&$>-Q!!#D>}3@w95h2?%bXlT{I0W0 zYP^8RHcTCq`kw0rPD|fac=X<#l7dG_N*g&^=!zpoD79Ed7&e{Bcq#ZY=M8q@$3i;n z5u3UEzr&po?1BB(dk_+Y+eDNDACAY)Fh_FGtcc6pcZ6Z)y~0i!UFVO(HeDK47B{dunL^ z5l%=%vMvM7?5Kbt5Q4%Ch8*UQg|d{Ze(8B*-Ioi~Le6>;@?2pKc~pp7949!122)w3 zM$(A)+b;gX5hDzOsEE?|97zvymgZ)9aE>lJi{5DCygWHdpM%2s zSrFsPyv*r)_~ZMs>b)D4d{-$ytyk%I>GCpv(4Dx`*__gm`*erax=tx5073VG7ef4X zzXrttP|0{XY5zx>fIyF*(ruO+MZ6Bf^pYk#r9Lhqr^C7f^4(cmyX{XjQdEz4R%8Wvu_ssOM1#gBWwK^G*_ zo!-Ghx`G16(8Qw0Br2$msbeCNr@6Z0-EIIrb|S5M>Dj2 zj8EB8bZC|UF1t0U2+=R0aRHZ8A3BovGdjpX+4W3OKQGH>pBO&%JK)=?b-lefPFs@5z@L@JK}QH=`fjsmx9f z_nB8)Bk)$yEG5(#6X8rhH;T9|`Z@{eo;-;&(r$9ZBC}BUcr1|~wfB+;_D$A_GIeN& z!w{VPbnsE*_Imp7+QtTr!VW7tG9cA;S>Rznx`&2j-f%2@G#RI~*M^HlD)8~<_kV1m zH~2Z394hg{>yiF#w}IOA^A#|KvEN`}O0CnD4hcb5{nsK;;EJOpMgY#nHmr&Kv+dS2EQs)zyx01@1R)MCHOE$#RaW zIPj#ZqEQg+1S&c*1a#SOvfO1Hl^zTU3236>oN%bvSV%OE3IlQ^;u730Szc^Vet6`_ z)1PnowhJBi`{S>Ti-HFg*O~Q`aNY38-=*1AI3dWTq8~7}f`TikDs5Oyc_Np0P>tgf(N=4GP+ra!`{%2MStjnAiMNd_cvd zW~2n5%>rOs$o2C8ON;=EjFyEoP}2-_PoN{!0r1EGi%NJ1Edc!uFdC+y@C1T?0N9dO zTKt#vRph=0Tz!t!Pwsk!Q z067Ub@29spi|QGVX!*Wc_8N9;z1aQp zG@0OfpN}FJscGO^3asg6SM9 zo*sS8R!ANpnn*kFY39vrdz0Y_N^p}CsId_QeM?|0F))R?lcPr0cI)202Y{<~$DTPF zcqoWf(4R?cshm#$#6l*~834YBQ!=TK)C)Aur=09}m;(M=CNLpLmO56oH* z(z6j)uqb7JuPC}Gq8WtP#fY{dP?RQgyoQ9%h%M ztB0l|00CNL7#_=*Y$Y6I5~)oQ3y=3BqYNR@;hBV2Q zfD4!>Okc7sfo~XK3w#dkkYY^^s8bP`Lv9pnE#W2%mdrz%GIL{1kHgK$m~v?#6o}@^ zJ(w!DLR*Ow6dPjcKE#J(@3&)N8tfCT{mg)nWI9?)UV&UbNLZs;0o5LHYdTr$0gV|T z(T%_b?IB8P{6R!oTV7jnNxFoTn34ly1%Vp@Dp;kLnmnmQu7Roz<6l3%2^(vewlo99 z0%jZ*Gy1o1v3_n!%m^_y>ehI$Ol^Vs4CajFjDsr05kqMPhcqEY((e^B+d4R&WCl|D z;gH?T-M(G+U7}sGD?P+a6Jh6q2eoY))e#$6f<5#-jy+iOG&T{9{B+gzl3aBR&NyAs z%G@T^YL&1OEDrZ{p79`D8M(sByp&l&D?F=v>*_Q2S3n$IBICqHPQLtB#a=Y$fi)G z5YaKKmzEWkZImHtTx*P~$CZ9j^R1H9U{~8IMVR|uu2Gh$e4<9AW?9Nt5>{qe;;1fE z;HUEv0jtv|-=`#2ppsK-xYIF6ieySq@5w-Bi&7ry9>Cd8RXe`y^OdeW?S-U0N}#MX zmq(0UmR+k}^*Y%?2yQ3M`QfLVBEkVpaq6{SU+f=?Z>5m6Ve648VONnS@c9QgogMi}n1@y` zRm2SXgvAPtQ;bvp1Shmk^XJb?#z>+?TMz2*Q0~|d+7ISa!BUY?$tfHwoTsZQv=-48 z@yYYa4~>tF=Z!D?;LH$UU1U4RILKJc*lae^_0(l(Drsslm#N#;Ez&t}>Tn3r<wn9$+yin=0yMwC2SeBoJ5zz&$Yn?n^%)}BYooMxsdO`&G#c_OYKSY$tCukCah7~ ze(OxNj9Dp5Jj+(spzH9c2)V#frc^)#qI2 z*5_es*<&2pv{^dru2X%(Vp}SE(?UquDJ-^|6@E%$N&%LQ2NcYv%n4eRi#5%K9%c8& z7kGkqf-c!Rf;;@&8*CdohGX2_&BM*3N_~!5h9R3`{uFO!Z{BayKr!SK$Py|dKqNp9 z{Pf`ML)H~5#Jg&KSGRm75}ng3f+G?aSQ)t2Q%Pnud>UU#c7KpIkuYJ68lvoXxG)80 zyl))U=Z8!k5*DHrDirG!u1z@2n#$=hy(Z?mDgG$_U3??Ml2wVPno*XMPOyy0hJS^- zjiXIykjX-4Y+gH4TgFa~n1_k3ip#<7*XHxtb=Y?1Hqy>Fyfo%v11GQCiQb!#V%$k*LcFtR8JR*-ljX7HzQxzk3iFV< z*8zv9X66qmaKCNq<11iv7!jL9iw@OwX%^|=>MYH*EV{-cMtHuLXVH(Jjn$8=#&iF? z$bLJ+?8W?(*i;xQr^QI3z28}3!&Ara?6r!xg9Ae!stH@c-xAqGXFso0ex{XL<=08& ztzaAQrDr6trx9d(f~0}C7vg)ews>Zsq|L0e*=YP2nn@&x6A@X3y^5EL)J;%I+^F-s5ids*s!Dyjp@@=62Bre?$0?VZFbbLu$FYI{(V zSZjV4e@lmX@$ZRoJ|Xo2^&9m^b*}T7^+w~x2Z!l%qHi5{9H;ZEdL8#Kg1>*QYJfBp z<}K#UpJblu?}e%&%8nksKiL~pD%v}r4MEL7y}(hRHZ8W!&6CUssH?^;(4R=54t@Of znt9>Dh{A=U5%Y6!o5D%lYxn3LVe|e23h&C-=x-H&;ATI5C9x!7wh>LgN|($~OMlWc z(Q8v06P#W+-tc~wTK$OjlY?K!OZHm*xAn?V;B1oR)ns&LN~W(L)4w&N)x4%}2c{F7 zHfW9)ZRl=)W+dLC4){9wCiJgb+^*_Y_pr2Dw9>124egKJj`?4cW|fB8f3~Mrwd&ip zo_lvTezUkgBFf^PSikA?y2O23n9t%7Sns^{cDx_Bzum-L_j93snHX(f_Mkqm>`>}3 zyb(SVSr%Iln-|i1U0b?X^S9~t$hn?gle&iu37ULOxQ#;-gNgeQHyVl(dXn{7kcVem z$mQkexmaw{Y?3Mq?=|mrv8xch{ldUddO@WZd) zp6sk&ZZx0HdOX%VNG|d>(Uf+5Nd0Nvtp3&Bs!bI?B@rYgy+K2zT|b+$Gp@etO;S^7 zRRsX>{`9Uxg8<;)+q*pi0CyGuI5q+R-ZTKfb4)ZGkOTliVHt4|b!^}v`2GQ4Ww!?QZVz7F5gNz_EjnKt{z-xV*Kbj5 zI4@*A@9spygW1_X2wr^aS=$VWY+MYU^zyo=4#HLJpILPMELc8oGcHeZ)rOkE&&Qgh~N17Rm`^f!< z4OB#w)K}Bv#hqk)^JnhzxF&OMZOh+1kAjT;JGbZE*X%B+ragm~N;e69m*v6E6y5NpQb^GzL$~s!jPNG zzOeBEP`ql_(^E#$JzElDa(JWVh5txD9Z}9P-OtIAOArk_aoFEH|Bd~V#cInHp3yxU zlspIclTqHf<+}k3>n_11kKq)iNy|(Od_%yRQ9SVPpT2*30oP5y-d@^RuQTWDCz5`n zJ2Hy??Tg!vk?pHcz!3^>_?!g9Gg_S5bD^J#{>*yNzxW6@2N%)Q|B$1N=Y#;y9z_1 zhjZKDRlqE#uK>G05%5(?FT2vk^JBNI3w$U%9l$OLz2Xjma}BzAeNhKZ6{3pUaxL@C zZQtzc&H8#-hvAFxH$fuG=he6H18Ke=fr5XNft`6t2;i%jzMO_z*(Xq3KVX8vFu@i$ zBxqY-Ipv*7e2@^QDM{JP0XGr^-~pvH-=k_muv%mNh=IbasA-y+YLPcuP-s$*CDV^& z2=&Vtplneja-CQUJJQdM%S#18Hp+2{B9oN9*yzk)0@CD>jlQ-N`@7raM39950~jbo zYs?)h<$Xa?*P!w!Jig?ML_;}fs}v82%-OZ6Ig?>Dk$g>Yy%>5^AYGTAw~z*K>Sk~O zPJ59|q3Y7MmAgTVGLnZ!vSc1V`>V;;NA6sIy)(1)`2NLm9vK|8T7)s(`4bfKJh+Yb zL0C7FkX3OJ{O&+%>?C|6Bx;UqEl}p!7=e5oXKp*bh8nVsss2U55(ZeH383rvhJd%Z z0M+7$d#Im-8&dM{O;pjDY#s98UvzV~zFG=4D$Y-Y-T#!-L*P0Q5)-mjXC2bmT)0Vt zs!Y~047;`=UtH`T0|!{efY&Ab%4Io%Dvr?f+L89F`%xgh_&J5vYM)X%~N zd@@=5)y|wAU$JJjSrzVg)t*iJ?8`ZeEoEg12)`LTCO4&|-wuM9ChyImXe?@OP_$X# z%fWrr`I>mM8UC<9*}p|j-(bEU60TttaMDdmiOk|+yK!I!bX{EX%vd}8)|Ps;!0z

~&~l>h9d-)Y=5pQ98$& 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 nY(OkfM*q*|&8?8n%eydK^zVPd3n_Z; diff --git a/CasterSoundboard/res/img/play.png b/CasterSoundboard/res/img/play.png index dfa29c2d8bb4ad46b8ce214d06554f6ff9c70b07..4ada1f3803ff6c5894de4993f499cc31577ac224 100644 GIT binary patch literal 5325 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 literal 7289 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 LXv$Z~T88`|X`+-> diff --git a/CasterSoundboard/res/img/playState_paused.png b/CasterSoundboard/res/img/playState_paused.png index f93d956e15499c228c2783c5ead4fdb1ba86f56d..8308ab32bf6348f8178085bafd9dfb214079e31e 100644 GIT binary patch delta 136 zcmdnWG=p)1L_H$|5WIGcNdr<$B|(0{3=CzH&su*9ohhX4QNH~jzapWRshhX02Am42=sE}lHbUr*Ws f4Y=5Z7#M;#?u%7(T5Jl`$>8bg=d#Wzfw2hy!Z;_> literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPtD<_AhX!Dwmqd=iUo-U3d6}R5rxyX4yfycoyc-Q|^ zFIoNy`<}SV6jjmn_hb}M5gKsN4XkaRIrFxinbN9tm8T!`oKa(7RA68^;FJG4e#U(9 zZ|B1Qoc(%-fdeesz#zcDjs&9u-r19A+wcZCF|J ze{tij>mNNU=hUWej@w(ewzEKahlARhmfnJT0l!9{3c(4l{FnTC>?8OtJ?E@&kgcvY z!`e!z%#2!fqr7}boFyt=akR{0EK~XKL7v# delta 421 zcmdnMbb@(;gfs^m0|UchyTsE#iY>|8-G$*l2rk&WeDXwFiF)=DPhVH|hpe0&YAT_x zrWi0VFot@%IEGZ*dV9x_kI|9AB~bTW{nKrN2TySbU;e*WdBv-BhJwq5fu^B=J=y0h zYq@?){f}xeJSO13gQ05yL)V7p&Ci+54?J`#lRm<|fa4&i0e2q5_C_X+CLn7sQ;zM` z`p<5Ax_u5LGum-p)6ofGaQ(nj!2fx2rohi6{>FLyi-bR{6^@(Vx^y4gEY|moXPhdT z&NN9M(9vj!G+<0~WE45bQehXsaGqW5fX)uaGfhl0ScMbB?l1tQD#|_zZc%q&d=$?q z`oR04{MXn9CKms_OdN5HUDx+AS$ySE_))-E&mynauz!B1*nyS(Vh$f3GVOS`n6=>5 zVpf5g9SrM!XE4tBmBGj&uiNmTK6z(7m*^j}(|*9m}hG+j13L1_v$vde0UvXf?fd^s>yz@XZ4vY*{ XOQ!2iPfAS(YGUwo^>bP0l+XkKjV&c$ literal 294 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 diff --git a/CasterSoundboard/res/img/save.png b/CasterSoundboard/res/img/save.png index 6d9c9f99f4f47633dd0802dbbd87eac112665830..2aec4eaaa8c3679ea51fad43f61bc809b0fa715f 100644 GIT binary patch literal 15066 zcmV<0Iwi%4P)ogfuKv{X*{p5CkF0d>qisSdC{fR#L{%hH6_V^Dq~SokPV_E9()S>w;W|P9DJ38!q?C}5kP?8D5NaPF zAw{w-ga7~t^SaD>vIs=C)5k@8EC@L`7Z6fF@(>UH`F<2jB{+_gz9$g>rr$N*FBzph z0|SF!x$&kOud^l#{wK~k_x+U7n@&3UWc2Rt#p+e7@=uhA8!c&Lf>|?X;{N;B;+Quc zhaG)`@v*jo7hPoDLSl~!X&`fA{Lh?V(nl@<d>^# zHvIB`Zo$z<9gW`J-c*f zE3O0paLzF_G?Y5WaU7INrP1!vNc5DZ_enq!4gAD3S03On??jsH9}RFs;8oW=iGknT z4rk^pxC<7-UAh#`+<#J`lqzQm?&P?uExoQ>s zzz3r&)|s_h4Tml}6dfHMIdzaph0`jy0g;#k$6M!d&`E=ECe1I;zEgemN(_ACVhpTW zh1SCl2cJC~)jNL+xE}1K2c!Lz(_k5O9+TVSdK%|7CC)w6heio}pH7+p0Hmle3`4ZH zwZU;5P)ZSoA%=%XP^;CNQfuDsn5gnDnT+X5M%_#uAk8i(1pbEg7`*x_SfvtXzw2EX ze)?%tpM4h2+_`Y)wZZnQ7`W~l&^hzadB(dyi$&x5%(F9gM^-8|s+Oo-A|rIq2|-8! zI*F#tEsRlEmW@K8fMT%-$8o?IYa+uC8-*mNq9khTsa=eF)A5{_)0>gi3WmP3JiFcQYvBSkw-ARVg<_2JOfrJz%97wyZ$>U|K-7kd&Ag{dKs$cL2~M!As!k3 z+w&qNFeMToO#lp*WuaIs!FFs&DPdWx8U77LpElm}CsT5J0eQ#Gjljp?HQ$059Ef@~ zLVyc_{yXnP$Fawvx?ux)fBRcd*M+xmAxg`Zq2svY5I+4Rde=XPX=j}c!dQIMTy7^h z@3&XlLr$ImvLeWFTpW1dfoN$d!M1FaD;2c0w_|v4C|6wRezfL*=(Q3RuyIHK-l#c% z3AQN#q~HjC_7$|Pje0s#2nf#OrT4D8(DtS`0o5wX&pn6A+O?>xU5mco{~nzuoPh3A zPQmjRT?Bd72S8g|8y}HFar@8hYS!>c|9=mQlv6+e*+MBre}6wHA#hw5Bg4bv>#Ah9 zKsQFn#ZM1Pj?nYm!gdM9_LvjvY zsbKf*w`1V``!Vm_b5XhOTd2SPW1tvzrF?kyx>&+S(8bYO7L9JFp zxjcd(46$?P&e&kdF3q|!WN$BdJ2Ff12lPL+91Hjl(9&k3{mrXTJZM`Qd?7%>5Hl(j z$RI$QZDY|{XTk37j_VW-3}E9oz5&{|8}<*bgB<9O?Tq-j+4^Vf7N|FB)}9kxrrZb= zoTFZ=VWeEf$nXfNl?v*0e@ug=5f74Xm?>OH3fu(b?4rxi#$RE2-`CLI>cVk6IIfGC zCvQX7Q9ZE~kYR}FHE2D z5bsM_f6bj+dr~B(zzEE8Z%b<{UU=aJIL>wu0tg}D`*rNMcySXOz;F&56;m#LESb}Z zsVroi2lZ<2<_91)o`>n(HXNq_+x6gh1rS2fe&i+u=*P~x=3!c;0*7<(Ac&W+T!#N& z|Ai(0_HWp7!wu-W>#q3zeRte}_G6Ag+YhhB{4al{iMP;*Pbf*CZ6@86ld%D?H*A1| zmM)D0AaR{YV&FA-lLm0~=@y$>Aw|Y{ga8=oU5lL$oPl{=61G!><9cx10tjUY>Qw~w zD!haH5bhX;d;c7WFa!@n2xAF$?7-H~e;%{`^wH8uwl|3mEdqD*Nks)XVRO;NAx!V7nu zin$%b5!bsOY_|Z$Y=nLde!U9cuVH&H!Kd$`_}uU?YD)Z@i{Ko=?%mkgt z9fd%FC;^N-`6M>|$A7@zvL$*`QwJDPMrm9#Wo2&|fqS;(5QMpqF`PDIEb+BD_sv^G zSjE~u{2$CIZGz(#BGK;@VA&3Wpbo!YL*UmjRJC!z_dBs`(8fc)kMpWk44Fh=tOp|_ z*m3>!aD5+S_H6h7gaWj(ZXGsUZ~>4p>_lWE=X1Jhw|&kCoJ<)D9BM4%0e#GKQ_s`J zp~Ta7ycaXrV{knWw&O;(19sK)EEm*hBjo<&tAiz2GI(l*>f!5XK z6)RBe?}u=llqA^k)1P8w^=bvW!TE|1^ogqDG$lo1ACUlgH6o*mYo!`SS;o4)VNrze z?7jbj&ibt=6g*||7hpLaI1eK5>oss$z~w(L;o)Zz@P!Zv!w~CyA0MyRu|bHGBuJH7 z4L0Ynk2nHoX^E3HwtoBDu|$+vLO@#lH%}^=$g&q=0h1~QOYWr};Hb+BE0)9C^-YwD z5%{)SfbA9_1&?%oy@n7Te(=WdcDv0aZbICM`*f$&2OT3#u+Fa zZ~*+?Ueq>j%vS;WdFKBqu)SV-2@t1=WxHW}AjZcn?$dw$+a5*lBkw_1o2@K<1wH`3 zR)t@$A`li~Vf`JaU}kF{ z9Jd&Ye#UIo&#xln1Vi#5{NHcw#=uB&7gO(N!8eV*u2$fh^9iQSCXo9}4BRXlzy|=g zy&Z?&a8r`Kn-%*qT@N`5e@vuJUUC9xcq5~Mn;e>w!oxb&{^1>%;jV+@6k%(N-*ynx zYY6-*f)MbXWw_vqK5XghPgHu)A)HC}Z{TOEB0XS|E zwo_2uJ=NFuYw!aBSv(Av+*rjE&y-Wwo1#Cv==Pulxa1?iVM}P-*n|?yID(?^MF)>x z>LV-z#BnkIn(tv~{{9Gd4#KjmXsm;hh;zDIBky32NZ2Ry0rvcDkRoj%WR!JV4{|7e zyy39?#u-|33Fd{rfLAOqJP z0&jT@i{0Rq5?Cx+rZ1y-!`D1Kd{G^(pZW^u!H1zz3n0K?+mS0hex8&n{A<=~>g3@| zF9G!Env{8yc)YTQ;0qr`XS)l>Yk}jn!uDDKLJ-tO;QLib?*MEZT8b}R`3Qm_?YXPi#mn~u|1G!ph-&r z?2WA83BQBMWoCnGV~S3O_oGr9-irRe`~zmR@rdiacG!g$71ysI@GB7ZJPhE~_{=x{ zg2CZh>iY5M{dv=Y<>wI;T?IZd!6z~JzV|Bhc76$##i9&q7X3075e{QCRcEPmVA4zp z=wb?(Z=WFmi8L_?DRadB#EBuS525G2cVI?KA6%~;PN5BUp$&}L2>c3yS_PbT!!N!O zpZ$-=uw{F?*D)Tw-(CW)`82__j)-$9i9olMxYyuwdm(x{E&(A9ptGRkTtH<92&sm^ zDHRa2e@>Th3c`Z>gbHYkbpcXj_7GsA%1`nDTkd~P)YtdgVHY|g@GTEPP(e_uB18eQ z^F&Fo{gHkRJEE#S&e5-gr$aJ~V4Bn2p7bzyVIr2y@KWq=+JOIKZgAtgwT zzE3r?as>-De0)#KK4Ao!?%+Hl(5&>t_+MhnUp|Fy@gSU*4mgEQIE8jtwudmRN6sF> zz^0#u4<1lW%<*|nAvqoQ@-v8toz$r&Dm7kD+ZyDe-i(+%}3#eGHfCWR`Lyd`+ z=62TYEAu6Q+McWgkYXQ`0H(D&83U(p{m)U@c`1r*9dL@%;1oJwxy2|yFQ_B*L$L0@ z!vm`sF2D9q4N0tdqTh`80l*o@0v|dp3qDN@KSp6$1l!z?V}QL8md^K6;yw}mY8w;) zQMOOo>z4`v8Ii!rG9R#y*Z|0}0ve6L@hO1e?SF=~;WKDy?}SsF2D{J+%Pm1l8R>n$ z4$^rn*6x^&FJ1a`)a&(z_Zds?A9E=1#rM(}d}e}gCE)L}-;N#D>0q&_*Hh=vh6GqG z1qeuD7&qwsWF1Iy0w>e<`-TL_>FmZvV2u0N6|D_Ci*U_9qr0sIZgD#7LKkee6(B(9 zml4#fAZ@QjZ*UMkci|5)FgVn3kG$j#Q|}+N0J!WN3frPF_*M@1gY5O#WPJpTMDrM# z950E=Q`UqKgKs2(W?cV`et@ZAzI{Rh>~_ zD+v55NXucUx<}!&U;YWUY}?gvkFlIRv$}xg=M%IPMhCw_mtrmb7Z4dm0b~76k{TqS zDgq#x4B$-CM=nuJ))9n#z!4-&6<}EU%_^3+SA-Retav|Ww2Z(h&V*B(4%=-7r3^t3 z`S+!}A7uLp`0Ceg#pPQv#^Hz8w5Ns#o?OU3DVs^ ztpXC!A48o3wz;j^Oipg#>^`9avWjlPMxYcJeEeL@@HWC}nFG7n4a;ow4;K2Db0-xoBFKH`Q$uA)wQC~mq+EFd~(?kFg zPh=Nyf1(3aYowYcS;vfgj(x3P1hDpVafxL7uVn{+Hel9DPV+z$Ks~1wNrR{yg#-42Wr9 zmJh}Rn8hPsKjYE56)N9917jQ(<6u_e6Uc^r0idhZYsi(*5+Pfc3Aeoz`+x*6OU4KU z0sJsu%n<-`%S~9wZ-du94|Zt=Y_}cE_7L&_Vd#TP8}{sXgBS+87Gw|fP8ZNs0r>It|4SIhxXAkEbZ+$)R@wZbI)r-Kktt6&zvB(x!Ir2_y ztQ`r)w7xfIM5W21W;u;|1r&rvegCY|Pbo!#1_==F5&sJ^f<)HRh3*cG;_Mh+g}H+l zqNQUtoR>yiQnl5mIu5p^uPrSkq3yw*FRp;leA?-#^eWI%hP|&pF5I4g$XX0SZPF zF>it&xqB(rSC7M*kyF7K&48=GhAHBcDQ>Br2ay;wkOc@vUPR6b`-CHC(h(`q80I;B}h4`_MaL*z$C91W?Fbk1w_AQew_6C;jI58y4nkHTIa*|ronPb03itd zD#D-!()wxyg(Gp{SFXlWPp?ZQY{d5-C7-{$P2%cL6LhrDM)0i!{9&;W4-bC=l-gjF zrsDaGQZUNYeiHAu8I6d*veZPH%AC!W07UuwlVCuD64)0UL3^t-R8G_(pE(cHTk3FH z7s2+X!*Zge4j$AHhCWE~V9>6UaOIUZ;{FF$j0t{raV?JJpCXtyJu&d?IH;3=Uq?6Y zANVvl@gh&35#Eiucjj#A6wn?&s?>z)`f%K_(ML;!H%%>D=b<*{e*&F}mSBO@ad*8A^2S>oMqPQ<>YEPTrV-(mz0^q!6F zwS&Mc#DD`CzzyHN?gmmy!59M}5%_Elpn$2!2beM=FsC6z?|qm) z{5=%A_JdQL2g~aKwLAzBg7W}eFxWFs$J*!naq*=$ps%lQ!g~KLuMzn4yC`gnB?+84 z;IAAw73<1JtG+&oM=z(wm}m7rrJywG0T2>#e}107834*@V+jzJK07v?CyCulE&+5t zfPNv(Lt^-8boYH7rOt)0OABCmU0{}{`uZU_7hv6Q!Hz!Q-!Hrd+qd_?_x%Y4c@AA1 z;^GfeI0}5Gz_*Qz9*YsIA2|{$`cH`+J;=uM^N4{^P}LQrG>Qs}4CgmC;V8zSG~C3o z%_IOhi2>gGLN^dbH&EY9)O*m;^KWSFoDHXCF>J3J%q{?s;Gqw}1JL%PFcMD3SHE^8 zHax#^!bacRX(7IO9zjci83~+JS^Y`3ucvk(?(I1<(%fE(IUX5v1kJu_7jU@9hw%Ife5E`oDF0;`^Q0zyiNa2PF{FF;2}JKWa&V0qI) z?G}JAHRp~GQd$P?EX99bc_W@!^>l3XWlJ-?-&P25&H2Fejtux#8vMaA8DLHe2qBTd#{RsMfhjIL4B`8J)D4|X*(X#0A?WJvM!jCgnaAzGYnOGyZ94#VVGfuRC3SEf zfiJD;VC_fahd=!le)a2nn_B$M26J#8;^L2Rym~218F;aeUu}bU_|aeg4s(}ySYS?g zsmJkA8WRBwqF|K9?qEGOP)Z3dgbLh5-xkpG2ZkY6BaPCdj-umg1QOQ-oSa*!RM6hu z4rW=CYJY)!zz8ISU|LrngZI)le_8+^DO%V3ulfVrKZ%z@xxv`7l8 z^B6q(*VXv;_ix3(z(B6i2Q(M`?>a8T`%g}Dx{mAH%KB%F;)-9+z(Y?LLDUz@hyVzU zV)#@5ga}AVKm}FniU^GMh%=g}AX>LK%hY%RCs9deS=fJ01!upx4~4EnVV4$xx!quv z2O&7P;NU`lwZ9h6ZP0-L{fy!#_jcmehuTwsYHy$3 zCffU#99CaDjePsA909rZ( zJ-f=d=(3++^X4tF(brg)e7(PPUVyKERKjs+oV#y=uQPk@S=EB?{>F0x=7S-sIV ziNU8vT;Oj2`l!wD64?NhQgpOPeB`7}m^SMGIBomG@@9kDMMw#75rFeLNMSLCDi$uj z>?W*R{{kwNO76^?&Gi1v&Jf=`PoT9x<8EFa=RdizfQx=SBXX<8teyuxQrpA;Ur#st zH^KQvyS?ZWMG`_#EHHfVEiYi+g2iy!4}w*g3+l9j5G$H0HS_^{7V4rMmtB1eR;_ss z<#IU}d?0_a#-bZy`FSB`cG6hSTPFA_KEJis!3EdPL=YxTk)3LgWY!|ik3>FI7XQ?D z_FjbYVygf`2yDl~S;ua|K?lx_z%MQUbJ{@&Roy)wlC?ruGx6Q;-G&GLvZ|@Y59I58 zf&iC)JjDKU)8N|{jfZjB7R6AN;WO9H#9)O*Uno%l9BB;Mj>c~$RzS+nuPpw*HPLTk z_oAr)LI^C&!rPDBh9eK_fYWgZ?9yT|rvrrA5Ilh30VEjU%)^g=eiwfIhlepVGz8!G z^G6Hk=zY#ZeD$9~yzXF<3%;em4+X_%ubYXjyX{!K>p@yE*fR0{CdVVAkNqtgeGTn5 z1!>{qsWt&X8N;!M?7)dfx^O!VgVVAE%0G0LmC% zxo80IJkE#Pc^K^013}#xAeILyLKWWiLEJfb=#iDU_U3!g*VosyuMgyhc;EK=03SY0 z8reLCwXeXp7{Qgl=)^rw6jUyLbUzZ$K%#>>Nh|5E2~a}R96mFW*(@Wr$F znBf2HzE=GB?p7q@^kK}-k$gKS9>a&k_smegv=s!-`TGr+K4*V8 z9fyLI7J=IB02ri*IA0P6{r!WuWceSkZo_7j%jI!{&pAhTTYztUGC+IFXy8*kz1hX* zukV704LgEt=Z)mlK?iwKKK_>)xv469YkmMi2pk*u@QLfOaN$C@9f!ec*&ocA1`r0p zeekdXAvh{kj!TyR7Hghz+OrVrkvl;9zb>k9q&B-v7YKb)4}gGrDK?`I7+8FP}Ua3tzbe z`@LFC$*RZZF%}zj@pP@~m}A@UJP)m{t!Qm)L!nTJ=I|#Zj?t^OYuXNZ+vYwgC04Ck zh5x$gChX|hq3)NT92lz(^()kHVb^srYvxQ?)}BK+rE>%kLU73ZKD_sYK6qWPf!%pH ztl|<7yDJh~yb5010Up+I&wY>M+Mhgu!NI|%E?!--Is7Lb;o}ph3j=7<2);$|`!z>k z<<|XSS&=x82WF1)Ya8IVx3{BID#3A_y^_{-!U-o}{`~p)2_*FB7n{{3bYyAFlhc{r?=gF&3>kc2^oW$@ZI@Suzp zD^}yO>sMf4V6dr+SC_2OcleS3U-_pn1%C3IfdAlg`{Q@3mV&XN6v(43kQ^gn}^(j%`QYMFn(12rx3I1%!wsA|V8|dTmnU1E<6Ylv1LzrH1oP zU5k!sOW<_A5?1RnPsT=nkHTwm1cWL zB>}Y8ab#%35z_-%iZ|(2I_4gkGAt~4x@2!C)%ERZnZVG%lhT%skZCVFS zI9yro*=L&dq)ZPTi+l}P(XU7WQl*7+5&_4l0A+M?1Ta|@@aLP4bSndEuy}q8-1dXv zbi5L*xHz)-c@4a_9YJ|L`gd=^SC>DEbuaXd2|ke4`;Haj%5!R1FvFOci|IT*oy$is zP%YuR_Z|l>y?8GEtccfR^vs1)3fFbf($W&^eEklZ!%Si^8_)dJ$FtWo13xAtomFH^ z6a^reF$`)7IV$7(CVq^`c_b%A0BdeNp74Q(Za857Hn?p|BJf)d0<11b;e*${H=BSj zB*k~{J{sExJ99bTXJV~MJmFVzfovTq% zdEm!^%CsQ>$T)8$e%C#|1s2t zH{!P<k#ee-KK-~`}4E~#6Rmb^f_)6y|Gj^EWKS~L1{p(U(_lvEN7)pN_y20Yt!{G!7 zp$K`@joP?zBTjqkX<&>saDB7))KYA`F#!#}Sr1CPCctA55&_xZS9&=mcLEc9{V zKiA<{rj>6@$*RDAVC_8I{`kQVa&sCCl3AcWL!q*Jq>;@lgn;Y14SKto&exK}Jg)E4 z%Ape~2Oav+DwB$uLO*kYa)0wF*L!S)8*sJbE+tL#%P_43ZRtWsV&{O>Au6&qzfsu zjoQV?sn(79)fAE8XInNXqp|3ZFEhlv20cp%`n)``u8Wo``WHa_;R(|Qi1Ux6BGC9A z#(HWPxOzXCNP|5kfeEXCzCQVmrEfY5ySHz^A{s#QD)`8=@Q2r--oFOVZ|cF9uV?5V z9-mG!MSp7{z_&h8!L)V~gKt?hHANex1Y7!AaP=Lpg^&!4rXzDP5#+5BfD#I?;6)Qq z2!SvNV<0uqCYPEbyBW|X(PWS18GeoX)w#qBAvcP6Jtv@P^6A;e_B1VRLIm*WZC@;u zM{shn)Pn8BkD%0h4ccmVBa|-c!<(>kS0BE7LlN8iD8`d2YJ$&5h|51#!Q$Bl_?Zzr zloIrpU0m^-*P$9X(QF;D=+6f~!adrdd)PtUkG{1dBF^!BzrlJp?FaLH&5}3mY_^M+ zwf@a#r0jvrM8G8bym(z^dIc|HFQ8iCC$-NypacN3W-rF(?Vp6)@;~UnUqOQ%xabG1 zSi8j<7x=n?qUc_Li~qTdS05ma(K^N;P6d9=XSm|mN1(4=UZe>sOhI5|6dC)Zl&OiqUX*U&!@s`F9_ihFn&lQCcnu<~frnKH zUW4Zd9QUT9anD0r@Z_^w$MsMx`p4)_3Y<2?uA@fW7YV&4qp#P>y` z1c(N4MBp>3rfO#tHl^U4gE88`$)-CuMM@d#KPw4Lm0)g<<_*+Syd)V#Io(0S$kTQ} z$|!s>jKJDR|M6`z7IuoT3Z5YV9@IcY9q&EkHTcREJ5j9#;{yMfLu&ZkyX%eMvo!es z{lIMe@yP`#@XaOCpTro$kyz1s5Qn8EW#)pwwk-HT06@a`0|Y^kaS}DUjGKA#%-%u@ zv`o>&lf8d@FJ%m7i6~15FbD;vglO{IQn9F}q>s)NLZVVhKENS`7++TK;Es*&Xqz@S z0zIrIzd^FSa842LIC*J2HA-I5qW{3TbzJhnDjeGk=_>H;1pM0{WVq^oTH}Nc9neXI zc+u!gBgP;O%Tl9w)L9mbX7aWy8;;||MA^(utzE!6kYt9CO}inlo?6_SfhD1)h-t6~ zw3V+2B9;v1evNgeXV7e6mKto!qa+fGvDEQ#jSG12R~ONtom>Bp?YSwgH>H7I{_gd& zF*rDc-`u;YfhcvO%xL#<)j4If6pgWaIp9C?G{O1bvN3&TS{!HN_<*VVl@1_Ksb0}E zZGFeJkE}OB0q+ZBKd$s z6Q`B=EIk*qL^3;>d3;O)sFw#{-!^T|EFLP*L#+a8QJR;r4Oz$Aj-P>|8{pQvdrh_`QR``!06S zHxza6C?yRMJyQ)tXe0zd8I3;H5Kq!b5)Kdoe!UJq2vx(#lvQp9c$#(Z^uA{9->g&^ z&3+IfNgJ0sr94AasdX*7g-rDvni7DNiE2>8916$Jxzd2HD<(SqLHVBp0!505w)X5g+vXCO1s2Cn{=e zKY-BnYN7(hB!EBOeBNuAVV9S``idZ>XCj)NB$aqyB(Om_xhSz(;Bp9NnC;M^-H z9$y=Qs6nxsw)R& z2#O|BsH39;K@g;RH`)%(Q_;!9l=4m<4J% zU@RhlmbMN&xvdXJF4@)q{`YPJzI&UB+p7dfNfWNtsal@r!EqdTo(I=;;kqsy+g8)E zM`QL)ksouC0Z0&r2z)=9y;CC1jiY$;vY=-(L-QpMG=lt#=;7ivVbL}cIuG70(T3Rq`)+~6QheDwc6M^G6 zae7w_vXlT1jTTE*g%Aiik9q)1;|Dh&HHf9m7bP{q%nH{ zF@?q3Qi|9vYL*sWtyWPgmEik+$_@gePb(!ck(+SN6)YMRqr|x972vvVEZS$xn1Mx$ z7Df9EN09aba5Y#$#^0OIip{9Kos76apA2`)AH8c?p**@MSFO z0|*fU>I>F{S}Gq;gP#xpV;-300>s6$&+WjU{`?G9J~N12gGGQ)6bgEbUZlqflmUZi z3|xDAd($jj9aPFXa7^%H@YFs%VYA32XqZ4Z13fDN^47D1QOx^jf{TenefU8@f|y?e zZ$bz{=087M{2)NFP>7^}DvUAI>h)ATatYwyKlQFx{qo`AW$&9kggMig0^f(=n&ZQm z>m#4L6@4LtS|HRmM86BhTnK67$)|VV!G||s&H6s<8VEoLMZqhk`uBtYg@PWH6V<+; zjFv2iB?Q0`1PK8o9pUS(-&gybOx#Qyx@>h zP2xaEB=$ig3BW8+8gV{jE<(<*ZhbEvS+N;wHVk4%pASkY3SOasOJXWjmcBIe<&1`C zOuXRnIC@P0GGYG|0RV|;)PS48pwYa4rvKgqlylw?5Xusbxj&mADue_T5}>jvN9T1l zrLrAH^8;|sV*)qdWlRasH|(Ds1OX~RfbabH8GP`Jd6+-bQb`md0UwdrCzL79w?V0k zAf(u`c^Hqa+>Vv&2GP@32c-m#>n2mIX#JUeX%#cjWAe2Dm#13+;FQx&!-Eezn2`Vx z_=yxqh=N&B{NJ`L9C_rCsf?gzqCI-uBq`MF3Npr0vznM)MF6RQk&cI?K-2a}798Vv zYM)5DfLY?mE7fWh?H%nH92m?ctOf%3&{=p zDA4q$QD|iKQwx;Y2m*?}T~$1~YB&D+Odoa))ImrTg3Wn)x}tiwc2;D@<7@GpHOk)k z&UfN{?|a{<&KtAB=KApPFnW7?8$`LeZE}2r8@I_bvQnTS6S&#=IT6X`4x#AiSOfq7 z1N{TJ`*R7v5BM3rAI-a~=ijYXLtK92v-r?IEWoRlwy95}CE$kv#b9q(U9o28)_Yd$ z+<$N+vOIMxdLju6oOAd=082{Ps?Vyq#tf_K3hds!d(`e)c023H$r_M(d4OhWSJqjS zy?Wos&)^?VU4WC{G#`{QgmsGQ zuMiA~?T<*p}hT)$(MFc#7l;a!eoAhR6(kI-*(jWo;?${&e_ViYkH6ws93~~L> zpTVCV*@k~Q_0X+Sh^v0|+f_H+|JRK^fC7M)bsN@ycE5#-mV2J}nmu_b?VH!7UaQ65 z1I%mCi4cM2VDnztM2#%K&73`1Ns&h+I^QsFs8|A~5eXb80mSPV+Xfh|G~@$>oWHwP z=fng&O9Y-n2S!HfSN`-5tCur|;Wg`aSO7c#41g1aAzA;z^Iu=QVBuE_g~BT){89!` z+C`e>u53eO``g({n%u2NC}#oF-BEqMw(j-)W#+xI-oPy3nb(`(We1p=;E#&{U?ho* z^P0RuNHj}piU10p{mxwjHRKUMYth;aDgV=Rt!r05vo$z)$qd4UVC8C{Yf05&g`ATO z8(+A2(Sn5^FBS?5C-P$Yi`;pA;%1^cOAuM&(A~Z)*P8&Ez?uo4Kzgo#v79j3gw?D= zsPUTzTA=6q0dk2T>F4e-0l2PpytpufLAZptT4Y|n}f3|IFqOQaQz=b%oTJvcT z1Q3GDY3>FK}I4+0Vfq3t*}kwTKep$fQ=R7%MJ*Z^EaA2zdqcy<;kgy0*u zY+f~g&fM3OipBQE7tcmL06*|S!eo?BUw0E+-DAcSyVb#*0^N|QtBbTkCf2|8sjNe)Yy9|W!&c42bF+8Qe!IO97DAo6O;r9O~oRl z$>lWLeUr)k2mvUiQs2*%08&cq?CBBu8A#joP1|Tx;%Ks;QYr}{QV79?lvU1o&$gcJ z*I8l6X{AzehKEMh_3hqq!LGjH?T9$JI|IH3ff~=!$1Eh0fFYXJt^#0ZR8QHrW!u(G z>KM&=S1k!;XJ;qt>guAMot>n!v%_w0Z+AVmIMR<2T%tvtQw|_NIKZYIV9&LMTCX4q?9%Q z$Fi&fW6Y(L6320onx&AEp(mqMZ7c6N4pot>Rdp-^y3rIO=$9<^+(XOP%jh;W!tu^l+tj5z)pk!G&X^OP0jNCKv;|hoD0YZxEj*jpS1y+ zEv8LiAyEsKalb4Pr5xK*N>MJC?OnTeS(H*o2*Eh#%=0{AB!&{@EhGR^iK1%s4pGD) z)jrL!%5Ng2dQatKBq@&PoD0WssG=GKLBNF&LO)*@J)0O~OcFwbvi4Q%N(j!mAcRQY z_eBr{-1mJR1c3xlR})3ZYPBjxMn-t0QVD$D4}~5soG{i@5`f9*p;`i~RuA+;wTQ?w z__FI{lyjKzYc6@*-|(U%BO@{h0*s7|kW#6HLSz)ifHKCUQUg-EaT#L-NH|y%f&$fy z#qrWq9g6!+$svUhQu`vxoiW+fzx zk~oN(#VhF!WJU}bgGXd0bxUTr9ytU66Wk0@z?3dV=r=w-fBt+4#L_8#$1n_q@B0XX zfCNE+dc97n)oPsW9EM?Dn@?qtnMGJ*oSdbgu}U+d0P+dSz>H`PHv=>>3`5QJ=;-Jm zW?bF`Hk(|M1yf%K0Q2Y1Pe}!Hl+kGS0D!DyFmnX*<|PIahZW}>j^n`heOawmNf?GY wyP1?qCCr>TlT<1d)a!Mfsy5YXpaI+e2Q1W~dOy7UQ2+n{07*qoM6N<$f+B#me*gdg literal 16288 zcmV;RKVQI!P)O*6L5h?XcPZK;0fN&uDHRGu6TDcVK!GHX zkRWl-Mb2e!b^h=BX5Q?Z+1btA?NQ+0KA4Q{%+0*d=c`Xf!T-vCby2?Q2l!w4X3PHw z@Lyj3M}YtG@;?InmzVz$;J>{5j{yJW<$nbDFE0Z^fD?{C;pAvEdP`ApQC)t1zM`rs z6h%o}RC5h+j9nXx#nIK(iGB9lA4x^yzfn~U0k4PshTTV{ebv0y*jMd=ba1 zD5+zLl6Jz{R>UFxJkk&O-?Lvw`?{{vKYY#qW4rWE(mVz_mP~CYlSzJcQohcyom!GG zZYRzst#h$>0*OSD-G?1Z#PR;W-bG%1K72l({holewm++NT-Q{!v9-1B`q^`4Kaw*6 z&O7JaQ&ml!GxeZ@(6qe?pDkY8d-ky!t*orXyYIe>dmelgTbkRfbA`bGuRyuzdarNo z_&aGwq<Vimf+;PXDv9S@azyA99ITPUApP#d#y1KgVnB$JcqE8p$?YG|Q)AdC~MfiCBeEjw4 zxoGQ(SjS89gGj?$Pus{+l=Pam&M0Ze6$i?0Kq!uTW>hTJ^-iLtU#B<;;{1(y->t1( z*7<^<562vF7$!`ZfN*zrpX!^}ZAl53#>VI|qZ@N3z&U6CJkHddCiWAF1lrr%ZNDKk z#Y}_i^~J@-i~t|w@u%mZRU$xXf#df&SFZhfMmNBv`prNR=|l!D5qROHOVIk_Jou`r z;U6>@{?Vi1tE;#FUdbf!I|g3-yREI$y51td`0?oO2LVJGGj?n;X9Apc#+kY-Jqthi z1kqR&8nffVX7=>-VEnl89BgMH4KRPfd_4ZlJevkcBY<3b%Y$CLU7B)MGGFdA1(DAd zq4_sAqm`Mxf}MAUucn6kC-4X09X%FBhfISd$d?RrB4%*WrJwG*JMFl21> z)9z<1O4eQ52_@6z43+4rm1w!`M!xTDXh6poUm(fA@YU79UtbS@Z7rf(w?eJ0N6GYK zq2}dD*E{~U!|!lvCEDC#5`eY~@)!XQpN8=hmG`;p3!poK+Fk}dVBSs*=$lzl{=-IRh!QJ;lXs^jx{01f68I*prrKQu_ClfIJ z@M$@lfT6>_1_CTvyojmwV(w^oeO`1he}FvI^73+2R_vGnqLdf?2MAzoDA~`;JIuVb z+|6 z&AO?Zw5Mwbg%O~``pv)*U})|HICI7sHUfP4)mNA}aUw#Ye0V)xbg>8AwtX8q+S*Z3 zQIU3i5i`ygzP&q%exw*soU1*>PFmwP2aK_JO*a)y-;X(`RD$3Id zKu+L%Mt~>hzGNdn<=0IBWrqiBN18vMg}RQLQCt{g4sIU0{{20)EiO+HfPjw0P~F)H zg{>3J0gjCsgAFgegqW19QJ5*HI{tVh%PSE-`AmZZO6I>kc5pf076hO(qydgR>|h>Q zed`GD@y8#duD*@|Tf#y?Rtc;!R>%=Q;Dtblp?`MptGftf$wGOIMV{O=)oWY4D5At=Ai5I&u#ZC zJ@7!Feh`#Pu7kofWv1uaX-GL=Z*G$E04xePa$4>L7%~t9nDNt}rTG9YOy&ES!$ZVQ zCUr!k5losm33+BHBo|JA1q<*L5uiIofNGNfaWj`bP(|tGNwL|q{yjAP>mbyYfdS9J z4+L45pU2{T4bh%%Z2zzTTVJn7d1n`bB>4>Zm`MOySWJwvtFFR^Kl}mBufJ~lb47da zjlwDWqv5*iGh_=Dcr=x7ZDJaLj!`v&D6Tx{2L7h)z}fefVMI6|zxH~eL?U()n4}<|pyasY(6nR;+W!4- zc+AJ4C2zzCOnmcA`0E>t?5X+AR`OdnG=L}t14V!#13-YEo&M7SAix4V^MaiKwWaA{ zQh)!D(#I2tSQty^9)KF}0tAAl&1VGgGFu&E<}7N0-`1_++YXWvIf0tdbZS!U%*y3f^sODo-op1ui{^c*J_q35-XHKBKE#SyQ55_o(0&*|` z-#P+x$OI@W$a>w5{%D_HOqeJ=iO*g<2IaB2%x4L5@X6+TeL=+IQB&=+CGNwe4+rt# zmwxLO6b;m|0?;-Q z;HYW26JYQ_5a6e$ot`rR77zhme8on9y7IzYAFW^I%eO8>e)GKu<&)YsY`&MRlZm(i zeoq*2-H+cq9>ClWyw-K(_fW(`ODT&4Zeja%k|uDLZcT%_^UhGd{1RZ%18IVqv(CbZ z`yb%vb=d@fQo$*p4GnM*&jaM*1P&fD_*+JRaEbu+-v9wtFPH_a_$3MpQsC1<89;9H z8Tc^<{-0jY!$Z%j)^)tcjtRb4f~F=I)zg#KlO@WeeFM`1akf3_%rnvb{PT#iP}x^j zhTS(eLO24l39u0$&ySC>2q22fTW?-A7wsQU zM_G~2u=#;JuKKAM;CCaI^x}<0rMUKY%$}P!A@E7PQwIwIo?1V}wnCbKfw{Y+{u3tn zJxoLJG&1|m?iXEz2#XNH%a>!f7}!uzlu2L|lM#Hv$saW}#j$|y6mMrrZ6=CXI z|3uN)vF82l&)#GbfVPYB{e}~mqX`)Fts{Uf3Mk0ot~)M?cm!X(a1bih_qnYX;hx9G zV*N-D2R|Cq5%rD3FYao_r(dQjn!uMO-nj_L_Olr8_m?V|I6^bJnX_XppX&JhKBoSq zz(Do-@crlKqI&Or82LPqvq7SAo7%(H?+f!yCooq63>uU>0Zu*nl$;4by@;N5_y8gg zux?9Re{Y?!5I`*-pN*R2vk3A;kCEo}`k7}QGh_WIQ_*=7@ax%Oy!`Gq+x4>DcP>J* zX}H22=K??6RkPCIs!F+i1s%(QPi|*sgJGvI!VS9rQIzgE8A0|8L;yb4!88F>4|I96 zjQ{~=0;Xcz_x^t(z>BXr+5$rS#h0yba#7#CeQftfYhQXR>U(A(KQG^qei7@(qlkpN zc;gj96Y=Og6~B9Wt?gPjyD!Kf+x<&U08TzI9elocRCI6D@!?Go6kKo%@~0fk`%VOy zgXr}deJMp5QeDLF(b8ep0Mp3__%;yWl#@=*F$`n`SojGy0dB2<%QrL)Xf)Wl`Y)*7 zehG{93HW?t@td)JxPwc-o<9yReq4+jAN<1RsL6KUNdVdw<-{KXm;J;T~D>Z4bOYpGg2OCjf5*0ui8?3qnh0k9Ged(*%tB-uH4MK*P6!09*qY1d#g# zR+WejA=fZ@isP_pI}lot6p@cuvnUz4ScGVmik9nb@#F@H@1etGLB4BV7N z_tx(3zcX;xd8*ZnOTtXs0(_0H6*PKJz_PwBL4Di zCIRTL6mt_W5Cmw*od75Q?}NPqz`0l5-@28Mk4>8G3k zZ4v=0it=)}tG)DeY((RmQ&1Ud=2Gtu7Qq_~@j<9D^7g~6h-=koRrbKouKG7NY_>a| zy|MfC6-KyMUTlCz>YpUtV@f;$N#I8Vld!dX7W4dr9DI*S03w5r5y0c{0eE3GoT?k0 z6M%exu{-V5uc2Y0G&Fn*G(cftAr>uKglC8V63fdO0kZef>s^UQ+OhGCAE7d^f`MNI zU$Brbn&w3;%E0e#LtH69B>x9E_t*2W_>0Z9>w9DOievn&z%52 zIpM?sAi!r_1GF*|AReeB6wKwe*t+O;gtp&~d_e@C{opgRe0{tk1h19f2vP#A|%5nrq<$Xq-4E z0ThD(y3`=h)sspc7Kg|On2OP(M=|F$(z^#Jo4;Jqb2TzunPL?ZS|6n5XOiC5VD>H7iK zo#q0*CH)2wHu=xNcHhxV^Q5GluSo-_0(_GcT>2G@0LH@@MCgvhto`Bw!v`2OY9xD~ zXm6_}tqceOPCWjEoC&aG=@LBi;y-Kzpk#;3lnpy99h?6JEIpn@7a?(7lGe z7bbvf098Z)j1X*FA#>rP{;7l+0mN=e$S?sTM~-3y_=Yt=t^}ZoBbF{*%Ae2AD0)CHJq>I^o7Ty)?f~NRH%(&>!ShrzI+C4Ja z{ixZgbIc%M_7y5Z!R+9-X_K+ScQpgwXL;24Ah`{10*AIE2(uil~Emlv}8)uk-fzgl5yEi3rl>S!$0 zZeDDs%jUa*A5*LGsd77#Y8eC9o3i^}+3VMAIRF|$$L+s45=0LF z#AYOx(g39eh6bP+KH}2xzLsx=1_%a&_~OeiOai2m8u@`<5zW1(UyLOj9QkJ5KO*wEzqC z+YnI)nbPg$U~Aq~yzeD-Z#sQK`iZDK^i#|xAUy@VC{e3jLgyNQe1PG@hT9sUz7YZ( zf9!EN5rA62XguLF4ik{)H@aMJZ%a>g$`74fc@ygOc?cHNnUY_~q|ML3j~L+VK6t8+ z$6udcjF}HSZP{`ed{Xb(?EVcu1&;W>mP+!l#cQ?f8Q?3b7w>jniPq#!R&1|Xv3<(h z*V0UYVfV#6h0e+(X{Tc}Phjd;kZXWpLx& zruu7`o9?I{{LV%9NsM~fPii#`X3)R6JV6ncJRg|9K4LoG~wX%b-sjUJ(zi=kj zZ`hP(D}~*6>(Wiz|2JC40~fJy((4YsW}1MN;VJmA?KBB&2goAXqlqLCMFpzS=tGh( zwf#E_RcyJL5>H4#mlYZW7(8fjTF>JDJOPeACN~237y(wSz|$|K2*8hfjFvTLe}H(` zS_GG$iqhgdCix9K)~6IN6&kfm(ytcpgLaI=`Ip>MYQ@TxHVwd!d$hFQ>d_V`pP!71f*5>-gWwC4 zGqs=3B`D6ok3~D7geD>$+8oJ;pDJn1~(o9vqTP5mJJZMe$44OhOk86NI4GlSAS3?t9ep?A3 zx>Q*u8G*j^3{>Vd!e2OqNj~%VeIY(mM}opVCiw^qhgyCZelv46o_YQap5xz<-Io`i z7RT=|Q!s9rYFGQbQ76^2CxSA((R>YJN?9tD6H?E~;I(D_gl3?3rJg@@+{pKf>bJ># z8Y6Vafigw_(f|#V$l1|khhH}Vj+uURP6Qz7ShZ>uHvw|rcTMEP6{BT5`PHSU@+?Mx zz|X6KhY~%kk`u8ASNlm%CA`(g;t!8Kheu{VV|n~;@xEKKC&?m*yUz!v?5t%4KdI#5 zjixKmp$|&6eYD4K>*bpNI?uwte%PL$qHHvy^#fB;A5NC0B+nl)?E2|$X!`CU{r--uA@Q26p2;0YA7iVZ+d##yKrW*Q&? zPt}oFzP1Y&U2z9CZrsEHb!+6wWcPota~!vyqw=W3>cHtyP4%Awe^Kk9__Y176zFbo zz0|*t6ToZq@+I(j_@~N!{oGN{Y%Ql^%et?FIPdrN3p4R3APWeA67P?A!zIY&*rC*3~pArEB;As*M01KH7)C_nI+(ra6gq7tham zNQ8q_Dwq#&++hcD8%}@g8zsQ>TnWG`W$n7Pc=BcQ_+J zb&WBYwBH1%8UO+uab!*eAduE?*nn$qxdSyrM?pz+qF~K=C}+U<3r8@uU%|l7;}uBZ zUYx+s8-qk}XZ-rMhw#Q*AMn8u32CwgQ8FcaLjEZJc%{y}ai_d|huWu39q}4Gv*rTC z5wf~%+0(m@?4Oph`ThV&f56Q33%%xm+C}AOs!R|6c$UK7aqGGj`1O^S@b4}8eZ6ls zcb2LF(EtNLfYobOqrAKVq5J^OJa{8^pHL2e(I^({*Ff_bqj$*TC#O&MG0(SXAKd%E zpYSw`_3868ahJ&!GTD613i-sb)=m%3xVskH+I(5RfF}CziQ~L& zU$pOMnIJQlLX%5uZ)(EeL4$JA0Q3!qoS*Kf90@?Bt-TGgXbh)KZN=eJ$`B~tiG_Q0 z41A+gMR4Wh$e1M zI&CfHxp=}jF8`Kt95j@?tgI}jdaoQ10{r-hoP7Xd@&4ntVEPmtff5EjdHnto9(PmI zE=}B+)R}rM+aIs|;{)7z-`~*O+{`n5ZcbmONt=E-J%&>cvV$$!^#ut?ny-4S9v^*G zV1jK(c-C!2v83MU;Gx>2zdsE&xis?hwhRaXj?9q&1pY3=+i?2S4&;@OV;=udXbgPn zOi6R|CE`6CP*2JC@$n~L;l|tlg3X&ZbEnU(DKt~E=a~IsxZ)?s2)<^v@89)oCFcIS z*aof>Z2mDz>%*0XcHq*lX=cCvuSfL{bRi!icLE&#<9-u>)aA&!FwQx23ks{o!&g8~ zUpWu=lF5VtK81UQyJ5we?YQcuKVsdw^_J7;ESc>7^IV-dOzGfzq|P0Wzg>cd zUMiQ`=pA4yh9jof_EW%nzC++s84v;-(N6+Uh1HfNaKVq)qr7$}?(}&A)eQWgVJjK% zJlxA4i!IGbTzh|e4g=R;4fJl#03x5Fo#Rq0r)8bsH*Xe zV=D<{I*8w;Qt?d?fGRIP&x3OgUWKt^hQePm4xYRQ?(tLl*9!MMWr(5zH{bOH-g)m6 z9`3p2_^G%hdjj4lW?vS=h&t7l-SZ0YHDhGY#wH)mWZ_;%*kcdzBxz6Emu?X?M0Cx_rK-GzDlBe=&;U8<=)J`p#2?fQrE{`-$T@fHW4a{O-K zyG`CevHlIGMKNtJWCcH-RB`UCYAjtF$gJjFNFjsIr*!*{f={KqqC9s39Nr58&>zuw ztiKH>{K$hq*{<*vj%MJq2Qb6EWIW6@0GQo>@zoD--|t`JADncH^{HfV%|cHc+e!lfzG zqg?Wn42+i6Fs}aXJS<+al7pXVz@wYpFD-~-&Sg>5mMdAo|6;u#Gwv)$B(A1`oH^Dv z!8d#KeixHH*$Oo#<@_eo4n8D}08~MKpMvubU4ijCH6T#FC%i@DnbTLrPHHLe6A^TW z6S)4)7x2--l^L6MMRD4FzbA%AFYdwE!E%Bp9sI^tFHXL#f;aJ|fHlLrw6#6f=aO%> z@n-|ytwoZrjU8*!2kUr-^?#HAJKAXwBi9ZugC^dl}E1+DU%ETAydg~RL+qugX_tW? zX#$OQ{@tJ7#*;5B;jw-;@SS#_+S0H5Nf<}%t6QGF8~916IP=a@EL`Ews_N6cej)^W z4+7m|cID2c`}McAl$H(v0S-OrU<);>yzlR{1*c8zLSDu0@Rd)7Cw~+aZ?VCA27bJ! zk#}l%X5NQ*=&zqz;AaZ=-0c48Q+sgUkx5%)PAcY49eZ}kLHKmTaI2-xnw`Va1X|iT z>cdA8Pt(^G6c+LcEJVVGo+W)OPwF|d?aRk#y?F6r{Bh14Y-!wL-p{>rpk+GDHAz3M z{eD0HAa^c3f(C>DhfF<47vPT@)Pf6+*urA{UEwd^8{UF(P<$0;xW_#E?)41J9=!F= zC%En51q}SQj457GoZuh0YXrB3$VSZb%)?PCvBQEEQ_{$@j z%zf@yuOMd$?R;+3675H*@ zuHyU{13!#GRoTJc*iwSKUONEsq`%kT3)L@!PpVbK{Fw@!%k&P`u(pK#>tIfxNXyLl z+0XdE5k6Hsi$Zjlk)b?@Od1C$GN75kqC|jb1a&pF-y8w{_1GT%?$$LuJC6zS1|9<6 zQ?v_D>+000qh}+c9bchk`vzQb$H(~eiyebcMYj7MHHwFS6~=^NNQ?0`$q#4^=i|;- z4n#*JKO^9B_bquL@X6*2@CERe<7ZZ|T+!k;^1IM^5vn;saWf@EfHP;zFbQD)P=rwZ z*1o9$5=o=Sa5NT0539@C>Y9GzmlFY&KEJ<`X#L>NRTYIN21~~?@b`nKWG^WGdL!Hm zZ$Px|Gjz8%;`)2%E)6BF3>1%Gs-JoMW&1(N8^KANU^YM6@(Fr6H{;IVe}Wg@?d&!9ayRaa zj}7C5AHMCaaV;?NrQqyZ^PX=H1_(ir)Jc|I$>i6HvftXH77xxlf*Tgpc z&2!KGxios%?gZ+NZIMLc8BwMIs7@;@`roaqxW5Eg^jPtX%Hr4~fr5I)U$zH}_xFPu zn!r4MFAw#iE%VXSu@i?#s$CG z$ekohQjtE4OU$l8VH6RBM%&PFlDvEFz1MR37be=@+%~9M@zGQ*{)&B=-QN$o zx7q}MJ|Znk@UQu6aP99B=_Xzy=mephSJG*e1Fn25u7gpKmC`%vUBeRJ?fg zl~-+&?xqQZ3LyK*J9uzk!uUATgAYCAn4@2}*?wmzD4PT~wJy%dVWLl$&<{Tenk_3pOvq)nkf6o0t56GLkp;7i@Q2>cDrA>8uZK8Pd?wf)M= zuj~+fMNGoXjt7DPV*-k#(W3Uq?;dpp+HJJ46KE%CoabaM;3SA3z$F)5Y$SqwUTeA+ z`FjC25}7162A0NoCa}1uxL@G+nE)Tpy(-w%iESfxKRkc)rd4Q2+>gS14RPI%NXI&C z-PVjt9?rw^jow~KzHIjuJ&Fe|=)^7~b!nWQXx>eM-_qsBjnC|jmhO<{)xZ4G%NfD9 zreIZ6YvvK^&65<(v~2&8M;}RZ_}qK}C$MhQ(8wS=wS&`lpktJOxct(~EFXZI0B1h| zW5-+@sbFKYu;B;vS&F4n*q3YH`P=136jY9UwqnpY{&0<(*FxX^G>WkRYHSOx`C|b- zUY6hMKQ6$J$D_FUr=6I(Thiv_$<7~v-xJkv^Rs(meTzNTf9Zu6Y~aHIzUcNPY(9aX zNEmJKRL653`=d<*xW(&YEw@^_NwpJT5iQ81k*^^FTzUEB##ckB>6yKcJMbo{(lkIE zMJ$5(j}Tz)JtsXj{(zsJ?4hr0Cs<6M2=m^&9qny+=b!(;tT`X{`VY%?|NJ95aq5Bb z)ciay;L~ieGhf^li`G@8#riMKd%*%4E*gNY7c+RkOsP^7K$1j0z#nGMww}wWqMa&S zJ|}Ox5k}sZLr~H0L1=)hue{2fK+-u%MvdPGDhg$@Ae0cX&IS zHg6d<`REer$jN*1#=}OZPPQG5bmO|;{2fca+PK4e$#(y!eY$bQ36ZSeQ~BK+WAN7J zLtLA2=RH5yRP!$2o5>r|se|{>fnu2->izTJ!w;u{mnvi5i9;y!Xy$cg`rTtoxolb;GciH>cG6Bs#hzAjAIq&AVAF6U%qN1 zuD|PLgnMEc?<3p&y~cLq&a=ZT{BeL!-o7^l{@>rL!87y6yJqre{rq#!Ie-^7JT-`e z7KLk)B)^UtQWAVdjwBv>CiM|YBZtr}eQTI&kKPb~ssD#YPd@T2Zy;bvJs-&v7i2J& zd9N?QXlZ#2OB&)uZ9Z{4_Y)Lw^HbHFXB4_n$m zkRTfE##1kUg%{sm2PX%F-LEKQvHm3;s4PKN@IU%O!3j6`QBhUTKaVEcetG-Zr=OP8 ze=1>PIaa(C(2ziq7>czcJ;tmf^oS2X@`zQzPJo>D-OcH9J0>4@55$iX*QMpt)T~U0pp!jvDC-K5ak!)KfMS zU<~5WEbw`3t$@e;L;(6g1)oin@5gx}D3b%%8^nz7eT$*kZvwE;iAGJv&P45_9M9FH13+EV|{DB!8T|J@1!xp`pV z`#ffEUNL^pbe#A!aqRCzV{x7irplEGAUE*1g?E|Ky-uG%20okrKm@qu#+$6U1vOQb z`+=l8qT)W32S^%zKq#9AVCSNIxV)hOXimY7&eS)U=-M3;;Kc`ix_bC-Q--9x|MVyz z;n)}EAr@iI;f5GqdM}D2_uPi*-;ZVmpT3ZO^fewVT$WPl4TA^s&!juY<_SV@0>GH8 z$r!;ylQsIdJ(bhIoB-4Z5yt0NgyVegtXZyJylm66dGc=BK@>NCLCkPM+tdPi>n*pi zdhl3;HBU-2iQ2b0i3ohNUqChuKme1rvk1WcUT0qj@Wx}m*j4ic=2s3KVFABm@KgJw zs%Qi-RA$S4%P^#(+sfVL*>RJ`(`eeh+&pazU)1jytB{{4w3t+sk$OPzx^ zW&7)AQWx$Cn@Oky?tkEZ3+znEooqm7O8q)DiO>piTL1y_n_F))asZ|VuT<+lw2 zD2g9i&r<9$d{Y|ukIn_IdQ`O}nGf4CC4JD~K^Q+_g4JiAUV_$Cd9=)$dABuJpEZl8 zT!H3VgiaI%P*Mdu>rsL^9lw)Qg-kh+er&}nx{X; zpH$)F?tE=KDKz9`19UT`ok0UoA#l5y*0p>H^B#G0+%yAu*$D95tkbTnsI9&^ zuPEOJc3e{R1U#vGok=~-^kD!&;CoX9;NTl1AZ?&4K7_m45NY}lK7Ad2daH&=OtaKD z4aOvp#FVQOCQZZvKm4I_Oiafnb=|t?SHH5 zat|J-O;0m3k`|Hk39=TE$v_0S`_8*;&aEvEAQ3>f-p4QlVz6i?AAtM{GNJOcdK3i+ zQ^*NGnZis2`15Tiel}*(sBsG7DVr}OpG&+U_0$7c7hkpH88`uciU0(>=JB)hetfxn z3;y}9FR|#$Mr>=Nhm&X8RL$NwDRsWbUVGxuY16FAcBV@&IRAXBl`d05iUl5wSXlI{ zqe{H{o_qT2-Dhhj5X6wv#PWSa|42cAduGlwKQ3iA0hx%96eEz$cgW@h<}r=QwSdqH z4Dc=~6`YX(*Isb!q^0Y^pPX{UNYs{VrsPNL>Yjs7SuGiS4|n`hs-FgE_}N2y8Sq>2 z{)elubY(NPwZ^Pmz3}Xf=2}XR=9yiyjkn)rw_P#y;DaqmasqVzx#w99kI0o9pxXyl z>PBxcZbpO#px=`d=q8zH4 zfNG9#Ceo4Vbau|Ax^N}HIj8;j`jwk|uG7>cPCs%m>MArF@HEC>=k4hR_Uekh)7OuzARc+YP9JQ%%w~iOYO8V3a2Z-(Oyvxp<0HV^I&KmWqjq))B zDFWyz@wX9x3eUKi-ZuT+JMX$HtsTJ4@e@v$SY$w*A*Yix@^N{ep5wlIXIazFWEySc z7HW$51+wJs(pG~hvLzRbn_*~`dam(iNG4}Ko zOfLDP+53UHR9;v%%Qwxu0+CBTdm4<5Oyv1eH<7PqEe^=L_)bxZ?> z*7*#3uP051PvuS@5BV7Qv6zbHZ4rFDcsmw+Nvb~5=h3x(^FvFTIqrSZ&Xe#XMgUQ{ za$HLbjc%bA$(Fp4L6EoU`+_tVq4T%SUOa9Z!OiDzBZwf6Gr|xAckASPiHYH|F;3HafG2inx|j*>0e_T{eKx*03W_jKzA=;jD!O8&T! zz>O4w0G0-j2BT)}QE6&3?gOx`TnIpBAq}A;58Z$9rtRJ1odhuE<%#3?LkHoYeH-{R zD)ESlaEIRV;inrOed_fkvsZ3tOAH$_bT$h&_U`XPaSh=2TTb9a<^u>5AT&T3qrrk<-Y|;bd-k0@+;9Zyua=pY=hi-b_Oyq8Z-1NjE(Ge%G~=06*Gq zkGjqX)<>c-#f<>s*vKJ;IPK8!8yO4l{>w{?=e)aME$L-?k`R;H%3*_t%wp`?wLcFf zQoW*(4?s?!TkBe1Nx!GJ0 zT~x%D6818+LkA7Mf!Uay`ub3${sVr$B|+btFdkD6Iw-A@o&ENlz{`^DCf#mMp8R{^ z-HYOEEp$GM^Y1&a7w4S=OdlW(;4lGM31EFr-t1P^PXY*Gusz`+Kiunsb&VZ+x)Got z&$AwS{I>zW=iwz^ZH$c_Ua7D!L|ePD#T$tx{Ot0ONdWqkRTcB%hYcAt_~%ST4erZ> zkqPkfZ{Zo#y6JTKS(YD+wtq?p9c( zXlnHCu+T7aB9TzTq$ys+6a_g!@~iO_efw>{v|s!Twfdx`FMK z;!JV4Q=&7O3OAKcMFvQ2C6vK-mQ;@4xIayREtiKMe6UX%Kvb0ocl$#CVPcs-)nz^L zZWBkJ*U^JnMpiAMmlgWnibkS$Y}nHJk7$hf1hKfn{-~lS*)6+2cQt4 zge?_pA;}-bUTRoFZQZVn1V!nu$TbR<2tDCsRn~+;<*#`|_wv z9C?m_9fh?{vWaJP(;C#NRkIRfy`PIv+{Y*ROT8%+VvD{JY+0_24+oK?Qhc48B%gN%(ycldIj9r}iY-#*AW1j1 z2&KdP{Hvt}blE3J3*YqA{dg~BRn^7)WD`L5-rCrh6n_J@h(B{3Wdk_VMf42pdFZ*B z?CN1g_{L3*n;%gs%1X5E?rz`M5e+lfZrt+dw&sq_?DrlMSQ&f)f-3zjan2)=fSf_{ z2gn?d>L+bL!26|pI-gY+OG!zIR$5xBvbDk%Z&6VZi&g^6H}tS~P!%SD3g0k9OdM0q zZIymUi((Ypwt0;r?^7`)R*`JAZkhs}RTQr{TG%#$MaUUl&dpf_QEFLmRmCOM5Famhl;;X2r z2o@F=GKJt*7ztEnyNCsx07L|~uL&}!MiHAFO(KRMj$-Inev*(gf2fGHsh)Y|nMB|f zXG%8*QXDsJI_)P-Es+qwo5vFdulR9YoMX}-Yin!kAW|`)lLYv-ZQFX*uV3G_Zr!>r zMuI5w5%}X_$3^eOZ{*(+2`O9;n?#_cQz>NbeS1f@04-=rs!RaIWpT1pk;vkeh~Ss@ zWiq)+KUG?Fb+x~?wl+WnC@3iK7Z(@%Oz;)6W2h>$fZ3=dfL6=~CRGC0dPc=Wi&P-} z-qaepkW$WK<9dq+=Di`FjTULTnIt_6KWR!h{RxvabYHXoX_BrZ@DmL5D3kh5woUtb zI2=we&?7{ERjXEonKp) zS$?BQYk6^#{(_Ui-iOWBAB3BY>}x(vqZaAv5sx*49?tbQ0aP zY%bv2giInrBHN7>$J%+!x$UM6+?>cvBoNbhK#+h!7BgnGdPHf)*E?z;S^5c6i(q3PT>?z z;jIGHC(*}$?c=|ZB*~|C&+lHDOeQ3R01?$5VgAF00Z7vfM@NVF>7V@oG)V{|2q7_w zBM=FYAP6B$-uyQS0YRn?L8hTpYq`8NT|TU%}2~g27-=EfXmISKC^IvlQaS z-Mjbx{PWL!{&QWljk*&2?(cl^H-!|>{lbSnggdwI;9J+Og%dIgq?I@(JaX|OzVelC z<9+Xc7B^qNSHztgkMc}z5samPYHUo-UoU~nA3+8R=c8bL8{yUGzf&-ICGhUS6l|g% z+B=6Y{oB9dy+8F{+_`h7(j#&U3=H3$$%H=kv5#H4apT56T)K2=@TpIK>hIfd*U13P z{8twqx_~F2d=iHThd4YuT!c0dLg4V|2;<2a>>)0~_a#x5K06022e)v!S_)qB5fBl)pLOK~hDJ9*} z^UZ75kfaHukj0!io6YdpFbby1D74HPQf+o79+54pL_60O*m6?c4}gj2BQ0A zbdL6-pH8|)=3H_0ik&3M^Gw+2;P*Z&uFhn2-?s<=;nYvN?_&pU@*ix z-ti8cIWs{V#W*@X#<|^H9NgOviYseJ=Odt;-R%2|H{aMq&jBom(}F1da&<|tc19{w zy#2}p;R0Nr!jjM@@4^y52!S`=cmsk6gW(W|2M7I36>k(+WMoP&-N6N_>`36IjGG)s|Y8D4wsHSF!}g*mQ)i^==HcA(CH zh3a0E;FV}&t^D0I)W4eX_{g_Pdd4++DXR>*nl#yYKhAb zyOxCdF&u@Y(3()vhjkW~0B6pg#r5mgF&MlGB0y_KlFaeM6mfx*;MD+_mDE+RLD>aL<}(bT7OAob?G)j@6kgDp!#JeawJ`CBQqMe!5ryDLYFwSF6{O z8j5W4NOt-v76R%SLoJD$6g+=~cPn}!!q?X&3ZhrAh040hGSDag!VCc9ir}I^uI7hw z3Lw+tRsCLV1Z_+o{1H+gC>)M%g8Oy_kz?aCL$9g-LD+;6xNsXBaTY|B`QbW=76n=` zqB%Xa#y7id(Ma%0-wZA+1C;%3Ql3}C|3;L+RUo`z5{~a``oelrlY6&4X>*-TeuE0Z zQ5ogszv`f1FMh=_*Bghx2}yuZkElcY-=w3kt?D-GF*NHJOB&9w4iVfJ^ESOd@B4UL zO#*cLSWZ*|RFHWBuHcR)Gz3y(n##yFB-0KBDpsoHZK8+ZDPI|wy6b>0C z4UO!2`fh^P7$jg5thygyE35$P31kmR+M`B==1cUM`^0wG+dh$NW)%^fH z(wwXk=ysa9DQXkd1%EVcN)5=6pfqio>zC0H>UzLB5U>SPK(UwJLz6b;zI5~6y1Luk zhCZ>pK%Pbgu91W4Q;lJg%MYG43UQr7wsJLa`PNjipf!UCn9kDxzWQp1yio9hNm|k` z$TTfek7hQ@zi#rAGXzh-3}naY;Rr@{o)E@P5L)YBL^7BJebN+CF*Jn~_*r#R=r%}z z%Di81oD~eKScLsh)Q^(A%35UcrVtk49PY8MBKi81fX);r<_fN9%O>FJ#ocxFw%YAp z(?EEnb6fhRbWMb=c?1JxgcxcKdji+88n`Mnxj3x^5aI;9L5;+%E0@~8D?mh!538oy&ru|L=Ft!MVv-u z{(woiu4Ta%IGOzbz6k(;wHIP{hAdrCdtjGY$1RZ|hN?495AUFtvEl#&!*4kQkXegqjMv#hbgP z?stiMCtZW?-c01;N7%HhmBI~ijFlw->n)Q2E<#sTaF%OKw^y*YWN09AsE#h{fn6Vo zuOMz1PS_P(LR|@5)f#B`@3-d)1vE&81||x*fkT9@;-;b8!WFz4{PO30*%7u>Yq@9C zqRbP>>&HHDb_9k$9T+oEuj&Zewr$~_5(om4Yye5M44*V9W zvML^Y*t`;`HA<7F-tqf16FB&3R|ebj_Ko1iU)CD({DXOjUQG$y3LQZEnl9{#*pqX1 z^o2!~#BH)R>mXk4kR(A+s4>=PLj z%1y@KUoHmJCV_2m1Z@gV!VggQ?sb>mdo92d3qkjAps-N+^|gZ%M_q?#SA`QX1FcM} zYzVO;V4eM2T8ZPX*8pBRN^0@})c@sZAg@fej-cglP}vFzP}vdWgcplJ8_;u>DYA;I z7I7blu8r?DsZjk>gjKH2E@y?6PEoJtikMZEz{>t_&)KnB$x9%lE1)T=o3L(o{Z!ms z6g=5bzFP^vD{#O%_5-X<3G_SJQE*qc`?agvBh;rHt|e?IZoS-+>P@-=$!h9CaqiX6 z<#Due31IgF*amei1})O~g^a&D+zxLlP+5i~ zNg$WFkFf$^7oS-Se;8sPqC-ZV2<>tb2f4Rha>)@I=*e^*LDWf`(eNj4%LuWIfI%7e!1=ubCo49rGs)&9z!HerL`UC>upUp~DRSSu@Me?%r?5WQ z3P;c>+&}0u1+4e7{!`d4IGqCC+Hg7ryv1QHw}qdQ|4j^QaRr}BfHy6iDuHitSc?v@ zP5bswVKF$B0B?2JhWi0F4aMi@oNpJFUnR94rYOG@;x8QaT}Z0kZeF?B(_HbwPI$xr zlZ1_ZH*gbR322vg?J}WtmuO4XqWl%HLJsU1<%iRI%)=SwpMUP6h*8vMqd(#xis5tE8u}0<6Of z+_dP*vJ5}@p7-FFKk_Ts+w;C7>>Zb?T&UcXrcb_5IVjiYo8r3g;)?rg*RJ6opL-5B zZ`?HHH61>&djs?T+8h@i4u^Q;;>DGAQEkN?L0$0nr=G&^|KT6t=;#Pasg2fklJLO~ zeh`m7`Y3+ylb97EU*p8f^e#m;FBtr=OCfrv1h&sI7gxE3XFlM;ZLp;Wf9 z^0xt^C_)^^h~gNsvcuQ=a8#iKDWj0`%2&j!<)+Y0Fo50UNkoX_0i=|{E76K;(;daI ztvza7t(hDOO{E zZPWpzlo*Xhg}KA5k)~;Vx2{2`J8Fn1$P}Try6G&T-QB&`;&4T*OTdu*PDHglZd?e2 zF-3(nL5-Tp&WEB11QuMBo9he|WZFewD;dBYS-H(F3j$dJyM*ea7&3EFZqwz8uAjl? zX+yA$bEO0`7m~}(=ho@Ix0lvu5@6k{fm&-MNn!{9WGbs6s$`Jr$aJMa zh|sPC@#AbAE^+)RLw20P2}ugKtRV9?oCYmFL|st?iqlf%SIK$#YxK8qN03Wgtu-0QJ~CjN;x5Vam5SFBo}QD_|R^fHX~!rfE^GRiv6m*O$NerB3glMR=BF zU;s%nht?Wj|DUhp{Xg^mBArjbP&u})wlqGt(#0}FQI>J?gmeo3y;Km(LxuPKiy`Y~ zfYE4#crXAPqL0Trh@z+r<8-Ki3DS*0i*EHwbbqL>5@JF^k%I)J% zKU(YZeg`skIXR-=f7hr=h86M8J>2T|MFQ9|bL6U4M@O&f&Czqsd8eg}5D|epOpqit{F0cgF&K@^G?O4pvtnermWC^B+&R3-ittChAMWO@hnuwIE+N-NeDQrn zRP~{nqPPHTtrZ}IKpaJ81c^%AGWE0RtX2v~hlfbB6e?3jA4qEYMaWsyWHq?IeG|{u z{@pq%`atC-2(H|eTJ0lyR>3w{0c&P}*tkaFXt%9(^sT=b(HT^xptS-s3jM;j|NRjQ zj-$yXd`JTL@2<7b))wD|ZPONI8D%iE zsO2&O97cgFAsXtP?CgLFD~6#pm+;bAC0ft^YELa*N93jiac( z*PsLLiyuH`!bo}Xix+3O;631Ft+_}a9X)_*}Iq-C^n|L@m+9VmV>PokfdqFO&S`dy=H)7$8PRi zl2HUAflOsV;<^2D=kicG7Y`vuX;LUlCD0O*5$Tw z=2Fau2vjP7=2J1Kr>}LJ+1$5i(revVeiNLy1jw?iVs9sDk}u+zdLrW>3N4-F^UV`_(W7Y^5hq z5LJ}GK|H7|2Du})O9`rU)DU$v8euw{7R$nRgJqM;*8kroM%yF_Q1=chrSj1%N(L>; z@^D+0!_WX&oArPmQ$W$S;@b>md>7o89YI3M!X4_asfR{tKPA8!!N%1rg#@Ci6US9F z-8tM9>;BFnU&{~8{XTP497Sf^8?-Lg`+4oA0IXl$5&7m`o-}lBCoj*gC>u93LI!`M1#uuv@~xTzuNJZB%6{gEIHaVOe+;XfWrXJdSGrg+A9Hl1Q>+?5PqKARy;)8KNd73tP$sEtsIJo}h1dttNoHfXrzHW9s2 zenYiTUt@27}y7n;IBFbGUvVk~GE6c$`ZC15!%N=JSPUcj8t+JRIgO zOWS}bZd^{y6&r;#Eg7Knkd;mp>j)x3VPOa&kaaqtc^TMO>|8gmzu@Dq_4^XQmf`Ci z8i3Hwp1%ru>uV#W#n7$<&t|h?)Q?7^d>vrjR)E&}--+nw*Tnz?KuGC0E!wqftyOW3 z-ZFskoB|#L0HtWO1a}vM+Pr^Oqb}U529#2@1tGt^Zn(ceRBMLN3AWZXFDu%$6{Fse@JE zLUSts{Njf{jIaLJS3L<}8OQON8-9>czWyIa5uSPGnaVmtlV}I3n?hYvP)b=@pmI$` z0F{j2!+S^Siir_g*c|OrcU~#aX8Gg@+!ZTeojl z3T$M6E0-?QY(9rb(^;CPzk2q}nJ)?&8l+jr#n3S?*>pt~E%cNY2OhfKZ@Q`8v1SOXR8H$b7>_DI_XI`<6> zUU=!nZ14Q}OsPznB8!7b%?vP|K}tc)Oi7YR0O~v6`|fW&@z~?f4F`kwE!!v|1mZXb z5h_czHqJ7`B1HEQAJW+UL!JJ+`yXDL{He*ECVW4EKV9U6CouOr>04SeT-t<7f~ju| zVD`q{yS%frV|l7u0?d;+q>!Xp3jh*8G*1%#?)SgY2@o zZDApVF2V%<1`XG$unr-gz)jAcro$vI5$%4%&{46Hn9fRIPX;L7(X9itftlKNY*Dk> z%$OD^8X2`^b{rR$2?lAF(f6*u@R`Sd>tG~T79$#IgVbZ#RO-Bjg{rT>ZEH^xKbgRie zcNH_2utkmJ6b&ZgMk->)Fk*Qos!yCyq4 zl(*>##kD`f6=thonN=B92d7Ki;=6d{OTo8*fBL zi)0AJMNw4vJc#<;%uDtd*%HSA27^K2k5Edz(pgtWTzKT=D(dt2eaMMwdMrakLD-A>2`QzJQWE7ug@{N9AtVtA z`$SPBrIfnMs? zYpwF^B`~uBptCGfhlhvrEX(wKKIi@YeXW`GE3dqg+`4sZc6fNG(llkKoz#JUZU_&h zOAT#q1God=u6Zocm7!(D8MMe0kfJ(|XyjAD>&Q)wA*yptkO2V1gTY`p8jXf$&z_x} zJ9ln08ja+5JeF}BM?#2#xN#gyp8?EcmK3CjqDY$G(lU)zUPXRJjD!%v61*~+^7bI- z5v|RLW;5co8Bwg1QkEH*SrJiwlHXwjX4Yw%X7}#hJIJz3CrQF*&z{ZVIG$;(k7u*l z(QGzLjGv<~1M~%J+9ihIN9H*MaBRX;lct{^z-xqdDsU^D0l0_!!>2Lonx@aC{Ln)W zjjvw4x^wB$rP1#0?)bum3#0LPECz!C2_YzoBAN352}3|(rGp*O`2ZCH02%R00LYAJ zWh8@y8P!^AZN5EROc7dZ5<-v_`DRLD!!TfGEzQwoGwSU?U}NuF24Da>O;aVMOy=|X zVVb5agwRSUedf%W`D8LV9u9|7DW%mA`!K*F;40~aH-);HEb&uQ zaO6Bz{013-nfczmdxMu>emUOR*%`)h9PRJ#M_HDMIF9Xyr3DdD9LEH})w0QO1w~OL zgb*B9ys`73@J1R8Az3NKaU2U~CUaqxGNYgDDx%gJQ4|SNKNAs~izb+vSt+H>bbhh|)7fm6ITC0S4B#s3nR%?zo}oSk^kx7% zXKClRYZcg09}@l5f|&WnjT@XK2@Vbp=*pEV^x%UJ;_TV86vr_;Ul*r1j@gKI7)f9i zMtJ8Z=Kh&EJGZ}EQG-E@iBIGc323(aU5ef z9AZ2kLrRG(%L+oed+%IghfFqi?_V3S7Xka}cQOgTVlU!2q+_jHQ&Ml)}!= z4w59HG)-~&@?|$p{>HX9PyQ3;z$1Lv_R(#c#j>0000NjK6+ z3&@Y}-@h~G&fI&?ne)t@`@Ziy?=usnsqvHmmlhWQK%k|q=(@q!E%x^Zn6t7zco2zx?c=r@H5aiGruW6@zaS~%(wdqDjs-+W z9*Wzc^b|b*_Rz`6speKDBE$|tVHC%NMVc7DW_p#qxI54?Gcyx#wa`R;5pOP?Q78HR zuCyLpZ;18`ITSxVdo|j4h3#A5_X&Z%G4Tb{!~g%LiwxLh26oT1pb8<4en?8Ui+9B}uyW!2JX~Dw&_^~~RS!v($$}b5{z69Ay zF1pq8;&|i2vxM%ZR^{~Fvvdy;I@}0xD>qMERd$)PQ__7AVwG8i-`ewBLJ+Y9g zRY)MApJfy|4{IkOk5X`ZBF00iba1;W^&u-MbZmV5iyO1`Kcj;Q{HYshb9o(|WA*1e zewI;!AjQnTPh7gyWu~AnNozG$>EtM!VBvQ=mywxS?1JBc)Hl?T_BSWH>IOa;?j%+w zzQ%oVhh>RBJ!960Lw{vRVs??ru$|=Fov5Ak6IWG~j;f>z!SoBG4{?t^x=YhaIS4yA zI;wH~9VeB@M?1sja;tdn<}QeTq~;I$BySj#N%<#AZ zveU}GNk+IP?drH{Z1gk75K=yZP;t-ijP=6;t5ZxgaqYA{1_L3W8cNgo{eU8CeI?tR zyxVqYxRxaW=U1~|-8wbDPQ88nM{@&%NQlAvkEZ`<9aaG65LxV0l$-j6#rud6x@?8? z)%bWjdV@qGY$82bvPf5*Cs(b_4HHimu~5Cl-#G4pRD3#N&c-jf5B6fe?|Z0C*MsZf zFn15>^RlZ$d2)Ps0%OW**}(4B7E&IY=)n(4I1eVh=G90ww^_9TxDT3q)-j<7E1{wE zcacbePP{g;V(WXos3kn5-cLCA+as-=en^F< z?*9F}7a#)ji}QReWz0ozv-`R3*UHKnm+*r@r49nHW%$m7eI-h=a` zxi~3}ylb=RWit2_-AKB~t5J7yKxxPY%fVBOIrd0jV^Xh5_%QZ6T=7V7M?P+*wsc}H zoOx+2ZT!C&bj#`K*7jlnHTv}aq*b+0U^4D8ogKy;ol6w;|2al2SNE39pSlib9Cg&csY;# zLub7mpYjfV*D^Fr+q;IEV3l<#V%+(@Dtteu2FSNI<>!Lt~EI zM_<3FL`vqAq+UOc1Outz;ROJ_XyUH!0GY0TNmf!`uEf^W#VN%C+jDkSlJwqFSk|1T zN9*&0OgJaEFqpn}vOJwrVBPN!w;#oWrf(vTv?oKcPr2A+7Y`f-;`-GoK!5<4dI)u0 zzN9h$2H&0OOLmMSemr}YAVc7f);L*D$xunq)N??9OpFLMdec0h1B!g356kHyQ0|pu zEphF49=!Y&>Y&;u0Rv}fc&dmM?q|c#P}f1vsX|KhM5%s$$@astX=W3OlUz;Cw=D}* z@E0f!Ox;EM$0>j{hMrU31Lcq;g#mOk$dY(J+_`_EMX%M>B{6{Nbb6s8#gsn?@G z;{|%P3?in()B}BevEOvt>ppEmaY$HCKj4&xHWChJQkxyqVKd8~ zRF~2K^$~bokygioxB0okt#M@m5xn57th@|4c<2V5{q-wR1Fr&1nFX0TKtL4k zGpj6FK>=V83h^PUIRxbQfrpzAdX-^t9mRooKCpa5FO{~kcSD+UazJbKrF024&<^lv z1PwmZgXry@@>c0nz{-q|UjN!0#fu!l|5^ZuM<--mb?oO5aZ^48FaNlbn=e~7hkW}u zX7~7ht7iw4zfY9{cv7S9lS9OAo3cLvbd7!2jvnwm2AV2oaz-JNnQ>Dl=aP>p@VKkI zAd{xAq>JFb^pe4oEoj5>!kjiuJWWn0K<~ITSsXxe!Vo#E!>3I?RO-{C|JDJ8$JNNbKv;c}8h`nr-05x~Gx{!;RhD|P51tl=JeHdj- zR%yJarMF#O@1fBz7#7o&In)uH!zET|-vL!)-vbXdP)?@2jYowUXUyQ270~r214pGk z>8k>kL$NncA168Mh@C&z!!iK9Lr9K2UXbZM)ZhTfDRS>VHf5p02)$i({Zk*ZBK;yW z+^oE0v)I1TLhG^I}6c4nkAM)ovs}8ne_E4SwckIPW_H47AKR#w>8v zNmZnxunfuet5adizmn)lBKHg>JLk~cFn987u4E<$%-T<9V0M^;KsHH5KAsfR)NBPuVdj3GqC9h}3wF+PGKJ)#`UEN8JRTklWXVLS`O-&9>3bb^< z2yfkd2{uOD?pBuuP%EA!F2O3i(6^4SG#)z)uS`hzNcZI8jAq@dq7oq|RYnv)+y4gQ zqhio1_J?iTV9xi-$?qQEUZngBecc!8a_y4O+T28m<15#8k74Dtf5=EZxs)dbynxY0 zKV|}&i7$;=0GQ{)62_IZcMHt<11_j_b8tq>OEm+U&y@Og0wn!NqQlqt)l{AoVXQ2> z4txCGR3pr&!!`srL^BjpAMkH)9v@T!Y;c{5F;jFz_G%ozPqprvCGZ_DD5@v@-6Z%v z?E2j=Gx*wa1{ZMEy+hE3APKNhEwsQc`%SVSV6+4n#1b#^P41ByQY`V;5n$4LKDQ_K zMq_F|)>~poWwf#L`4aTn;|bE;cmPTa3f1Kh+)$v1+4J@g0*98pPZ$sYUJHHro;izMEqMhp^3gC?^M*)3DSc$>F4o~fq~LS zt$|WT5a9YD#S;8f`tA0a15f2A3HjqDJrYlqH}T5(B$BP4q|S!0fGaNGw=_W-;jk-#Rai7zKrTc>|6t*bu<^<^UO7A4^vGVjT@); z5_>o^SJCsz<#DWO&KDNzaH@?EBK~^>)UHh1yITr{0_JE4PJd=E!t;Jg;J~|y< zf3@J(NCi^GR>q&pu+^XoC#O4*DMfXX%19H(1_!*4I+8(8*pg6GCa zq2D-RgD{LNHscZ+MyLq|Jjgm&{C`>RrEjl=93cy`-;FFan3}FfCRVq5|5qCk>$P!q8 zLiA2tidt&3oAsX*e@K#fLFKvDy? zUpfG5>zp8$Uy;dQ{d=HDTVL8sr|JLvT~bP>AI9E$^0`il{S8y=i{xzeS{AKRH~`xY zJC1xS?92cI!(-Sr17kvCqlM}jI6(3<5uh5x@sI&|tSiEedxz;LR}(HL(m2=XM}4B8 zcuz;Qs6bsq8;0R3DuKkuLZ+K&c!OB5!M*1~8y|P0k3iwHpm&oO@|?arFhZUz&poMf z8NdA+5L2#`n}+0y5x~IBrOI%2%qLRV;gUSwPavjFf<`i-9|v82>Vn1}3b&qID9nbP zV96yN5qQjBDi@jNC1#ady~);$Yl!<)ZvgN{iVE4=epWoQv0*c+ILvJ(1CNE2QldZB zyPYkl7WW61Jym8->f$phBE<&===5!eo+!~Kzy;xS$u62mGz^ z|1-=)uay&@(zD}JF#+)!$aK&<>k&)0WXdIGpbsl8E$t=$+lLDdNAkkv@xTE4-_t4c zd@4BbPoJW>Bu%k)o;Lc~nCjQ(Z2Zrw8h0|tHZ`vQ_ovHnB0wN6ZT<)7>gwf$#ZYoV zUB~)Nq3GzBs(Pfqxzv8nWjt+63wTM_oeoEbI12myRTzthCB5e0rl6okKV`UE%g7Z0 zdWqM#b{a%_|Mn5x*ehJ|3ou(5bwV_9PcgWt?P#=wEb>8s-%)&UA_YJt2!d)2Z77hw zt@7js6}WpCkowiWDDUM^sFK>cJ1ziOLFndS^)JDjTg<4`!rXlz&m z7+gov0*+EBT77o%)=`nK+{C65@VBD8B_M7S2VHZS1FCw=WoS8;7COy=57sBt~LwD&w&a4hLSWG{>t!xFcDH^0s6uXIgJ@)VB$u_m}u z@7X&l)CBzH{6yp5v7FGu@B+5PstAzj>FJuUjJe-X8(=Dfs|W%u+Fu4{T_-v*N+s`y zy7yjoOZb}-^?fV-^m5$pRizuZyy4oLX8~=it)}gW^|sP zfr?gK4|ZO^zg!}q@OfIJJ`5ufa^XUio+VFvql6<0UhInf`IW%xwXl`UhyJ}`0wkuY zIj?R6J{5e!lDa$@zrqG;!DX*fJdYE*4p>52-h0Z>Xfw?AI9&zUiVFOuwViJ(P!*%3 zG!{b^Ffs@iMu~o)GLGXdyPxVsP`z(eo+0)u8Rt!((6jd4owa)9&RwtAZ7tGrTy-}U z0pIQO)p3`Jo%&wK?jp|Jbj1c7?4QtH|u6@6uZn@BaktDtfQZK zY<?0MxRC8&n}%#^yxszmilEUa-qg&tjQH&)2)Lr2F-;Rjx$)^*_xt3vXh^+mOM{ z56NS-!pz~mX!hd>AOe_!>;T&XIC%Y|K0j8jht5w;-!#t{Uf3&nHBhbmNP`F~vQ>`p zNiw!ah7XPAnN>FQ10!yjCMTWTsb@eE!;!A8$=iR2yVZBYNE7?43ZWKq=AjL`J~H); za;5-FP3}W%e7)_K0e$ipuH^UKso$pp4=?P#`|T<)bj(k?k5~D$Ac;dwO&mDJb3B=`Lc?yNajiEG-P!{wBk=iYfcv9*G&J7%4W;eh z%d0RrK$CQ|X%c⪼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 diff --git a/CasterSoundboard/res/img/stop.png b/CasterSoundboard/res/img/stop.png index 1eb9d12a1853a593d0ee9d56f9d01d0979f9fcba..60ae6e856656a52c32350d6847461232c0dc8952 100644 GIT binary patch literal 9532 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 literal 11442 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 From 851bfcc75e22465e77f09560afc8ae8f0c5f9928 Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Sat, 13 May 2017 11:06:33 -0700 Subject: [PATCH 37/77] preview unfinished implementation of Open SOund Control implementation --- CasterSoundboard/CasterBoard.cpp | 734 ++----------- CasterSoundboard/CasterBoard.h | 42 +- CasterSoundboard/CasterLabel.cpp | 2 - CasterSoundboard/CasterPlayer.cpp | 71 +- CasterSoundboard/CasterPlayer.h | 48 +- CasterSoundboard/CasterSoundboard.pro | 100 +- CasterSoundboard/CasterSoundboard.pro.user | 2 +- CasterSoundboard/MainWindow.cpp | 220 ++++ CasterSoundboard/MainWindow.h | 17 +- CasterSoundboard/libs/osc/OscAPI.h | 56 + .../libs/osc/OscPatternMatching.cpp | 395 +++++++ .../libs/osc/OscPatternMatching.h | 63 ++ CasterSoundboard/libs/osc/OscVersion.h | 37 + .../libs/osc/composer/OscBundleComposer.cpp | 172 +++ .../libs/osc/composer/OscBundleComposer.h | 101 ++ .../libs/osc/composer/OscContentComposer.cpp | 99 ++ .../libs/osc/composer/OscContentComposer.h | 82 ++ .../libs/osc/composer/OscMessageComposer.cpp | 543 ++++++++++ .../libs/osc/composer/OscMessageComposer.h | 230 +++++ .../exceptions/BooleanConversionException.h | 38 + .../osc/exceptions/BytesConversionException.h | 38 + .../osc/exceptions/CharConversionException.h | 38 + .../exceptions/DoubleConversionException.h | 38 + .../osc/exceptions/FloatConversionException.h | 38 + .../libs/osc/exceptions/GetBundleException.h | 39 + .../libs/osc/exceptions/GetMessageException.h | 38 + .../exceptions/IntegerConversionException.h | 38 + .../osc/exceptions/LongConversionException.h | 38 + .../osc/exceptions/MalformedArrayException.h | 38 + .../osc/exceptions/MalformedBundleException.h | 38 + .../osc/exceptions/MidiConversionException.h | 38 + .../libs/osc/exceptions/OSC_ALL_EXCEPTIONS.h | 46 + .../osc/exceptions/OutOfBoundsReadException.h | 38 + .../osc/exceptions/ReadMessageException.h | 38 + .../osc/exceptions/RgbaConversionException.h | 38 + .../exceptions/StringConversionException.h | 38 + .../exceptions/SymbolConversionException.h | 38 + .../exceptions/TimetagConversionException.h | 38 + .../libs/osc/exceptions/UnknownTagException.h | 38 + .../libs/osc/reader/OscBundle.cpp | 109 ++ CasterSoundboard/libs/osc/reader/OscBundle.h | 84 ++ .../libs/osc/reader/OscContent.cpp | 41 + CasterSoundboard/libs/osc/reader/OscContent.h | 54 + .../libs/osc/reader/OscMessage.cpp | 202 ++++ CasterSoundboard/libs/osc/reader/OscMessage.h | 87 ++ .../libs/osc/reader/OscReader.cpp | 105 ++ CasterSoundboard/libs/osc/reader/OscReader.h | 94 ++ CasterSoundboard/libs/osc/reader/OscValue.cpp | 167 +++ CasterSoundboard/libs/osc/reader/types/Midi.h | 90 ++ .../libs/osc/reader/types/OscAddress.cpp | 111 ++ .../libs/osc/reader/types/OscAddress.h | 65 ++ .../libs/osc/reader/types/OscArrayBegin.cpp | 59 ++ .../libs/osc/reader/types/OscArrayBegin.h | 53 + .../libs/osc/reader/types/OscArrayEnd.cpp | 49 + .../libs/osc/reader/types/OscArrayEnd.h | 51 + .../libs/osc/reader/types/OscBlob.cpp | 115 +++ .../libs/osc/reader/types/OscBlob.h | 66 ++ .../libs/osc/reader/types/OscChar.cpp | 76 ++ .../libs/osc/reader/types/OscChar.h | 60 ++ .../libs/osc/reader/types/OscDouble.cpp | 96 ++ .../libs/osc/reader/types/OscDouble.h | 63 ++ .../libs/osc/reader/types/OscFalse.cpp | 55 + .../libs/osc/reader/types/OscFalse.h | 46 + .../libs/osc/reader/types/OscFloat.cpp | 84 ++ .../libs/osc/reader/types/OscFloat.h | 62 ++ .../libs/osc/reader/types/OscInfinitum.cpp | 80 ++ .../libs/osc/reader/types/OscInfinitum.h | 56 + .../libs/osc/reader/types/OscInteger.cpp | 85 ++ .../libs/osc/reader/types/OscInteger.h | 64 ++ .../libs/osc/reader/types/OscLong.cpp | 96 ++ .../libs/osc/reader/types/OscLong.h | 63 ++ .../libs/osc/reader/types/OscMidi.cpp | 97 ++ .../libs/osc/reader/types/OscMidi.h | 64 ++ .../libs/osc/reader/types/OscNil.cpp | 64 ++ .../libs/osc/reader/types/OscNil.h | 54 + .../libs/osc/reader/types/OscRGBA.cpp | 97 ++ .../libs/osc/reader/types/OscRGBA.h | 65 ++ .../libs/osc/reader/types/OscString.cpp | 134 +++ .../libs/osc/reader/types/OscString.h | 64 ++ .../libs/osc/reader/types/OscSymbol.cpp | 134 +++ .../libs/osc/reader/types/OscSymbol.h | 64 ++ .../libs/osc/reader/types/OscTags.cpp | 130 +++ .../libs/osc/reader/types/OscTags.h | 65 ++ .../libs/osc/reader/types/OscTimeTag.cpp | 126 +++ .../libs/osc/reader/types/OscTimetag.h | 66 ++ .../libs/osc/reader/types/OscTrue.cpp | 64 ++ .../libs/osc/reader/types/OscTrue.h | 57 + .../libs/osc/reader/types/OscValue.h | 95 ++ CasterSoundboard/libs/osc/reader/types/RGBA.h | 82 ++ .../libs/osc/reader/types/Symbol.h | 46 + CasterSoundboard/libs/tools/ByteBuffer.cpp | 975 ++++++++++++++++++ CasterSoundboard/libs/tools/ByteBuffer.h | 698 +++++++++++++ CasterSoundboard/libs/tools/ByteOrder.cpp | 35 + CasterSoundboard/libs/tools/ByteOrder.h | 49 + CasterSoundboard/libs/tools/NtpTimestamp.cpp | 111 ++ CasterSoundboard/libs/tools/NtpTimestamp.h | 141 +++ .../exceptions/BufferOverflowException.h | 49 + .../exceptions/BufferUnderflowException.h | 49 + .../exceptions/IllegalArgumentException.h | 49 + .../exceptions/IndexOutOfBoundsException.h | 49 + CasterSoundboard/res.qrc | 4 + CasterSoundboard/res/img/33_percent.png | Bin 0 -> 3673 bytes CasterSoundboard/res/img/duck.png | Bin 0 -> 2273 bytes .../res/img/open_sound_control.png | Bin 0 -> 14603 bytes CasterSoundboard/res/img/unduck.png | Bin 0 -> 6059 bytes 105 files changed, 9402 insertions(+), 746 deletions(-) delete mode 100644 CasterSoundboard/CasterLabel.cpp create mode 100644 CasterSoundboard/libs/osc/OscAPI.h create mode 100644 CasterSoundboard/libs/osc/OscPatternMatching.cpp create mode 100644 CasterSoundboard/libs/osc/OscPatternMatching.h create mode 100644 CasterSoundboard/libs/osc/OscVersion.h create mode 100644 CasterSoundboard/libs/osc/composer/OscBundleComposer.cpp create mode 100644 CasterSoundboard/libs/osc/composer/OscBundleComposer.h create mode 100644 CasterSoundboard/libs/osc/composer/OscContentComposer.cpp create mode 100644 CasterSoundboard/libs/osc/composer/OscContentComposer.h create mode 100644 CasterSoundboard/libs/osc/composer/OscMessageComposer.cpp create mode 100644 CasterSoundboard/libs/osc/composer/OscMessageComposer.h create mode 100644 CasterSoundboard/libs/osc/exceptions/BooleanConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/BytesConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/CharConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/DoubleConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/FloatConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/GetBundleException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/GetMessageException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/IntegerConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/LongConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/MalformedArrayException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/MalformedBundleException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/MidiConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/OSC_ALL_EXCEPTIONS.h create mode 100644 CasterSoundboard/libs/osc/exceptions/OutOfBoundsReadException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/ReadMessageException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/RgbaConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/StringConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/SymbolConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/TimetagConversionException.h create mode 100644 CasterSoundboard/libs/osc/exceptions/UnknownTagException.h create mode 100644 CasterSoundboard/libs/osc/reader/OscBundle.cpp create mode 100644 CasterSoundboard/libs/osc/reader/OscBundle.h create mode 100644 CasterSoundboard/libs/osc/reader/OscContent.cpp create mode 100644 CasterSoundboard/libs/osc/reader/OscContent.h create mode 100644 CasterSoundboard/libs/osc/reader/OscMessage.cpp create mode 100644 CasterSoundboard/libs/osc/reader/OscMessage.h create mode 100644 CasterSoundboard/libs/osc/reader/OscReader.cpp create mode 100644 CasterSoundboard/libs/osc/reader/OscReader.h create mode 100644 CasterSoundboard/libs/osc/reader/OscValue.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/Midi.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscAddress.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscAddress.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscArrayBegin.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscArrayBegin.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscArrayEnd.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscArrayEnd.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscBlob.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscBlob.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscChar.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscChar.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscDouble.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscDouble.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscFalse.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscFalse.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscFloat.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscFloat.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscInfinitum.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscInfinitum.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscInteger.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscInteger.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscLong.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscLong.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscMidi.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscMidi.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscNil.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscNil.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscRGBA.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscRGBA.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscString.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscString.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscSymbol.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscSymbol.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscTags.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscTags.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscTimeTag.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscTimetag.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscTrue.cpp create mode 100644 CasterSoundboard/libs/osc/reader/types/OscTrue.h create mode 100644 CasterSoundboard/libs/osc/reader/types/OscValue.h create mode 100644 CasterSoundboard/libs/osc/reader/types/RGBA.h create mode 100644 CasterSoundboard/libs/osc/reader/types/Symbol.h create mode 100644 CasterSoundboard/libs/tools/ByteBuffer.cpp create mode 100644 CasterSoundboard/libs/tools/ByteBuffer.h create mode 100644 CasterSoundboard/libs/tools/ByteOrder.cpp create mode 100644 CasterSoundboard/libs/tools/ByteOrder.h create mode 100644 CasterSoundboard/libs/tools/NtpTimestamp.cpp create mode 100644 CasterSoundboard/libs/tools/NtpTimestamp.h create mode 100644 CasterSoundboard/libs/tools/exceptions/BufferOverflowException.h create mode 100644 CasterSoundboard/libs/tools/exceptions/BufferUnderflowException.h create mode 100644 CasterSoundboard/libs/tools/exceptions/IllegalArgumentException.h create mode 100644 CasterSoundboard/libs/tools/exceptions/IndexOutOfBoundsException.h create mode 100644 CasterSoundboard/res/img/33_percent.png create mode 100644 CasterSoundboard/res/img/duck.png create mode 100644 CasterSoundboard/res/img/open_sound_control.png create mode 100644 CasterSoundboard/res/img/unduck.png diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp index 3d93d60..2662123 100644 --- a/CasterSoundboard/CasterBoard.cpp +++ b/CasterSoundboard/CasterBoard.cpp @@ -37,151 +37,55 @@ CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) soundBoardName = new QString("No Name"); profileFilePath = new QString(""); - //WIDGETS - player1 = new CasterPlayerWidget; - player1->setHotKeyLetter("1"); - player2 = new CasterPlayerWidget; - player2->setHotKeyLetter("2"); - player3 = new CasterPlayerWidget; - player3->setHotKeyLetter("3"); - player4 = new CasterPlayerWidget; - player4->setHotKeyLetter("4"); - player5 = new CasterPlayerWidget; - player5->setHotKeyLetter("5"); - player6 = new CasterPlayerWidget; - player6->setHotKeyLetter("6"); - player7 = new CasterPlayerWidget; - player7->setHotKeyLetter("7"); - player8 = new CasterPlayerWidget; - player8->setHotKeyLetter("8"); + // MAPs + // int_to_player_key + int_to_player_key = new QMap(); + int_to_player_key->insert(0, "1"); int_to_player_key->insert(1, "2"); int_to_player_key->insert(2, "3"); int_to_player_key->insert(3, "4"); int_to_player_key->insert(4, "5"); int_to_player_key->insert(5, "6"); int_to_player_key->insert(6, "7"); int_to_player_key->insert(7, "8"); + int_to_player_key->insert(8, "Q"); int_to_player_key->insert(9, "W"); int_to_player_key->insert(10, "E"); int_to_player_key->insert(11, "R"); int_to_player_key->insert(12, "T"); int_to_player_key->insert(13, "Y"); int_to_player_key->insert(14, "U"); int_to_player_key->insert(15, "I"); + int_to_player_key->insert(16, "A"); int_to_player_key->insert(17, "S"); int_to_player_key->insert(18, "D"); int_to_player_key->insert(19, "F"); int_to_player_key->insert(20, "G"); int_to_player_key->insert(21, "H"); int_to_player_key->insert(22, "J"); int_to_player_key->insert(23, "K"); + int_to_player_key->insert(24, "Z"); int_to_player_key->insert(25, "X"); int_to_player_key->insert(26, "C"); int_to_player_key->insert(27, "V"); int_to_player_key->insert(28, "B"); int_to_player_key->insert(29, "N"); int_to_player_key->insert(30, "M"); int_to_player_key->insert(31, ","); + // keyboard_key_to_player_key + keyboard_key_to_player_key = new QMap(); + keyboard_key_to_player_key->insert(Qt::Key_1, "1"); keyboard_key_to_player_key->insert(Qt::Key_2, "2"); keyboard_key_to_player_key->insert(Qt::Key_3, "3"); keyboard_key_to_player_key->insert(Qt::Key_4, "4"); keyboard_key_to_player_key->insert(Qt::Key_5, "5"); keyboard_key_to_player_key->insert(Qt::Key_6, "6"); keyboard_key_to_player_key->insert(Qt::Key_7, "7"); keyboard_key_to_player_key->insert(Qt::Key_8, "8"); + keyboard_key_to_player_key->insert(Qt::Key_Q, "Q"); keyboard_key_to_player_key->insert(Qt::Key_W, "W"); keyboard_key_to_player_key->insert(Qt::Key_E, "E"); keyboard_key_to_player_key->insert(Qt::Key_R, "R"); keyboard_key_to_player_key->insert(Qt::Key_T, "T"); keyboard_key_to_player_key->insert(Qt::Key_Y, "Y"); keyboard_key_to_player_key->insert(Qt::Key_U, "U"); keyboard_key_to_player_key->insert(Qt::Key_I, "I"); + keyboard_key_to_player_key->insert(Qt::Key_A, "A"); keyboard_key_to_player_key->insert(Qt::Key_S, "S"); keyboard_key_to_player_key->insert(Qt::Key_D, "D"); keyboard_key_to_player_key->insert(Qt::Key_F, "F"); keyboard_key_to_player_key->insert(Qt::Key_G, "G"); keyboard_key_to_player_key->insert(Qt::Key_H, "H"); keyboard_key_to_player_key->insert(Qt::Key_J, "J"); keyboard_key_to_player_key->insert(Qt::Key_K, "K"); + keyboard_key_to_player_key->insert(Qt::Key_Z, "Z"); keyboard_key_to_player_key->insert(Qt::Key_X, "X"); keyboard_key_to_player_key->insert(Qt::Key_C, "C"); keyboard_key_to_player_key->insert(Qt::Key_V, "V"); keyboard_key_to_player_key->insert(Qt::Key_B, "B"); keyboard_key_to_player_key->insert(Qt::Key_N, "N"); keyboard_key_to_player_key->insert(Qt::Key_M, "M"); keyboard_key_to_player_key->insert(Qt::Key_Comma, ","); + // players + players = new QMap(); - playerQ = new CasterPlayerWidget; - playerQ->setHotKeyLetter("Q"); - playerW = new CasterPlayerWidget; - playerW->setHotKeyLetter("W"); - playerE = new CasterPlayerWidget; - playerE->setHotKeyLetter("E"); - playerR = new CasterPlayerWidget; - playerR->setHotKeyLetter("R"); - playerT = new CasterPlayerWidget; - playerT->setHotKeyLetter("T"); - playerY = new CasterPlayerWidget; - playerY->setHotKeyLetter("Y"); - playerU = new CasterPlayerWidget; - playerU->setHotKeyLetter("U"); - playerI = new CasterPlayerWidget; - playerI->setHotKeyLetter("I"); + /* Create Players */ + int _board_column = 0; int _board_row = 0; + for(int i=0; i < int_to_player_key->count(); i++){ + // Initialize player + players->insert(int_to_player_key->value(i), new CasterPlayerWidget); + players->value(int_to_player_key->value(i))->setHotKeyLetter(int_to_player_key->value(i)); - playerA = new CasterPlayerWidget; - playerA->setHotKeyLetter("A"); - playerS = new CasterPlayerWidget; - playerS->setHotKeyLetter("S"); - playerD = new CasterPlayerWidget; - playerD->setHotKeyLetter("D"); - playerF = new CasterPlayerWidget; - playerF->setHotKeyLetter("F"); - playerG = new CasterPlayerWidget; - playerG->setHotKeyLetter("G"); - playerH = new CasterPlayerWidget; - playerH->setHotKeyLetter("H"); - playerJ = new CasterPlayerWidget; - playerJ->setHotKeyLetter("J"); - playerK = new CasterPlayerWidget; - playerK->setHotKeyLetter("K"); + // Add to layout + boardLayout->addWidget(players->value(int_to_player_key->value(i)), _board_row, _board_column); - playerZ = new CasterPlayerWidget; - playerZ->setHotKeyLetter("Z"); - playerX = new CasterPlayerWidget; - playerX->setHotKeyLetter("X"); - playerC = new CasterPlayerWidget; - playerC->setHotKeyLetter("C"); - playerV = new CasterPlayerWidget; - playerV->setHotKeyLetter("V"); - playerB = new CasterPlayerWidget; - playerB->setHotKeyLetter("B"); - playerN = new CasterPlayerWidget; - playerN->setHotKeyLetter("N"); - playerM = new CasterPlayerWidget; - playerM->setHotKeyLetter("M"); - playerCOMMA = new CasterPlayerWidget; - playerCOMMA->setHotKeyLetter(","); - - //ADD TO LAYOUT - boardLayout->addWidget(player1, 0,0); - boardLayout->addWidget(player2, 0,1); - boardLayout->addWidget(player3, 0,2); - boardLayout->addWidget(player4, 0,3); - boardLayout->addWidget(player5, 0,4); - boardLayout->addWidget(player6, 0,5); - boardLayout->addWidget(player7, 0,6); - boardLayout->addWidget(player8, 0,7); - - boardLayout->addWidget(playerQ, 1,0); - boardLayout->addWidget(playerW, 1,1); - boardLayout->addWidget(playerE, 1,2); - boardLayout->addWidget(playerR, 1,3); - boardLayout->addWidget(playerT, 1,4); - boardLayout->addWidget(playerY, 1,5); - boardLayout->addWidget(playerU, 1,6); - boardLayout->addWidget(playerI, 1,7); - - boardLayout->addWidget(playerA, 2,0); - boardLayout->addWidget(playerS, 2,1); - boardLayout->addWidget(playerD, 2,2); - boardLayout->addWidget(playerF, 2,3); - boardLayout->addWidget(playerG, 2,4); - boardLayout->addWidget(playerH, 2,5); - boardLayout->addWidget(playerJ, 2,6); - boardLayout->addWidget(playerK, 2,7); - - boardLayout->addWidget(playerZ, 3,0); - boardLayout->addWidget(playerX, 3,1); - boardLayout->addWidget(playerC, 3,2); - boardLayout->addWidget(playerV, 3,3); - boardLayout->addWidget(playerB, 3,4); - boardLayout->addWidget(playerN, 3,5); - boardLayout->addWidget(playerM, 3,6); - boardLayout->addWidget(playerCOMMA, 3,7); + // Update Next Layout + _board_column += 1; + if(_board_column > 7){ + _board_row += 1; + _board_column = 0; + } + } } //PUBLIC void CasterBoard::stopAllSounds() { - //WIDGETS - player1->stopSound(); - player2->stopSound(); - player3->stopSound(); - player4->stopSound(); - player5->stopSound(); - player6->stopSound(); - player7->stopSound(); - player8->stopSound(); + // Iterate through players + foreach(QString _letter, players->keys()){ + players->value(_letter)->stopSound(); + } +} - playerQ->stopSound(); - playerW->stopSound(); - playerE->stopSound(); - playerR->stopSound(); - playerT->stopSound(); - playerY->stopSound(); - playerU->stopSound(); - playerI->stopSound(); - - playerA->stopSound(); - playerS->stopSound(); - playerD->stopSound(); - playerF->stopSound(); - playerG->stopSound(); - playerH->stopSound(); - playerJ->stopSound(); - playerK->stopSound(); - - playerZ->stopSound(); - playerX->stopSound(); - playerC->stopSound(); - playerV->stopSound(); - playerB->stopSound(); - playerN->stopSound(); - playerM->stopSound(); - playerCOMMA->stopSound(); +void CasterBoard::setAllAudioDuckingStates(int state) +{ + // Iterate through players + foreach(QString _letter, players->keys()){ + players->value(_letter)->setAudioDuckState(state); + } } @@ -189,488 +93,15 @@ void CasterBoard::stopAllSounds() void CasterBoard::keyReleaseEvent(QKeyEvent *event) { //Handles All Hot Key Behavior - //BOARD 1 - if(event->key() == Qt::Key_1) - { - if(player1->player->state() == QMediaPlayer::PlayingState) - { - player1->stopSound(); - } - else if (player1->player->state() == QMediaPlayer::PausedState) - { - player1->playSound(); - } - else if (player1->player->state() == QMediaPlayer::StoppedState) - { - player1->playSound(); - } - } - else if(event->key() == Qt::Key_2) - { - if(player2->player->state() == QMediaPlayer::PlayingState) - { - player2->stopSound(); - } - else if (player2->player->state() == QMediaPlayer::PausedState) - { - player2->playSound(); - } - else if (player2->player->state() == QMediaPlayer::StoppedState) - { - player2->playSound(); - } - } - else if(event->key() == Qt::Key_3) - { - if(player3->player->state() == QMediaPlayer::PlayingState) - { - player3->stopSound(); - } - else if (player3->player->state() == QMediaPlayer::PausedState) - { - player3->playSound(); - } - else if (player3->player->state() == QMediaPlayer::StoppedState) - { - player3->playSound(); - } - } - else if(event->key() == Qt::Key_4) - { - if(player4->player->state() == QMediaPlayer::PlayingState) - { - player4->stopSound(); - } - else if (player4->player->state() == QMediaPlayer::PausedState) - { - player4->playSound(); - } - else if (player4->player->state() == QMediaPlayer::StoppedState) - { - player4->playSound(); - } - } - else if(event->key() == Qt::Key_5) - { - if(player5->player->state() == QMediaPlayer::PlayingState) - { - player5->stopSound(); - } - else if (player5->player->state() == QMediaPlayer::PausedState) - { - player5->playSound(); - } - else if (player5->player->state() == QMediaPlayer::StoppedState) - { - player5->playSound(); - } - } - else if(event->key() == Qt::Key_6) - { - if(player6->player->state() == QMediaPlayer::PlayingState) - { - player6->stopSound(); - } - else if (player6->player->state() == QMediaPlayer::PausedState) - { - player6->playSound(); - } - else if (player6->player->state() == QMediaPlayer::StoppedState) - { - player6->playSound(); - } - } - else if(event->key() == Qt::Key_7) - { - if(player7->player->state() == QMediaPlayer::PlayingState) - { - player7->stopSound(); - } - else if (player7->player->state() == QMediaPlayer::PausedState) - { - player7->playSound(); - } - else if (player7->player->state() == QMediaPlayer::StoppedState) - { - player7->playSound(); - } - } - else if(event->key() == Qt::Key_8) - { - if(player8->player->state() == QMediaPlayer::PlayingState) - { - player8->stopSound(); - } - else if (player8->player->state() == QMediaPlayer::PausedState) - { - player8->playSound(); - } - else if (player8->player->state() == QMediaPlayer::StoppedState) - { - player8->playSound(); - } - } - //BOARD 2 - else if(event->key() == Qt::Key_Q) - { - if(playerQ->player->state() == QMediaPlayer::PlayingState) - { - playerQ->stopSound(); - } - else if (playerQ->player->state() == QMediaPlayer::PausedState) - { - playerQ->playSound(); - } - else if (playerQ->player->state() == QMediaPlayer::StoppedState) - { - playerQ->playSound(); - } - } - else if(event->key() == Qt::Key_W) - { - if(playerW->player->state() == QMediaPlayer::PlayingState) - { - playerW->stopSound(); - } - else if (playerW->player->state() == QMediaPlayer::PausedState) - { - playerW->playSound(); - } - else if (playerW->player->state() == QMediaPlayer::StoppedState) - { - playerW->playSound(); - } - } - else if(event->key() == Qt::Key_E) - { - if(playerE->player->state() == QMediaPlayer::PlayingState) - { - playerE->stopSound(); - } - else if (playerE->player->state() == QMediaPlayer::PausedState) - { - playerE->playSound(); - } - else if (playerE->player->state() == QMediaPlayer::StoppedState) - { - playerE->playSound(); - } - } - else if(event->key() == Qt::Key_R) - { - if(playerR->player->state() == QMediaPlayer::PlayingState) - { - playerR->stopSound(); - } - else if (playerR->player->state() == QMediaPlayer::PausedState) - { - playerR->playSound(); - } - else if (playerR->player->state() == QMediaPlayer::StoppedState) - { - playerR->playSound(); - } - } - else if(event->key() == Qt::Key_T) - { - if(playerT->player->state() == QMediaPlayer::PlayingState) - { - playerT->stopSound(); - } - else if (playerT->player->state() == QMediaPlayer::PausedState) - { - playerT->playSound(); - } - else if (playerT->player->state() == QMediaPlayer::StoppedState) - { - playerT->playSound(); - } - } - else if(event->key() == Qt::Key_Y) - { - if(playerY->player->state() == QMediaPlayer::PlayingState) - { - playerY->stopSound(); - } - else if (playerY->player->state() == QMediaPlayer::PausedState) - { - playerY->playSound(); - } - else if (playerY->player->state() == QMediaPlayer::StoppedState) - { - playerY->playSound(); - } - } - else if(event->key() == Qt::Key_U) - { - if(playerU->player->state() == QMediaPlayer::PlayingState) - { - playerU->stopSound(); - } - else if (playerU->player->state() == QMediaPlayer::PausedState) - { - playerU->playSound(); - } - else if (playerU->player->state() == QMediaPlayer::StoppedState) - { - playerU->playSound(); - } - } - else if(event->key() == Qt::Key_I) - { - if(playerI->player->state() == QMediaPlayer::PlayingState) - { - playerI->stopSound(); - } - else if (playerI->player->state() == QMediaPlayer::PausedState) - { - playerI->playSound(); - } - else if (playerI->player->state() == QMediaPlayer::StoppedState) - { - playerI->playSound(); - } - } - //BOARD 3 - else if(event->key() == Qt::Key_A) - { - if(playerA->player->state() == QMediaPlayer::PlayingState) - { - playerA->stopSound(); - } - else if (playerA->player->state() == QMediaPlayer::PausedState) - { - playerA->playSound(); - } - else if (playerA->player->state() == QMediaPlayer::StoppedState) - { - playerA->playSound(); - } - } - else if(event->key() == Qt::Key_S) - { - if(playerS->player->state() == QMediaPlayer::PlayingState) - { - playerS->stopSound(); - } - else if (playerS->player->state() == QMediaPlayer::PausedState) - { - playerS->playSound(); - } - else if (playerS->player->state() == QMediaPlayer::StoppedState) - { - playerS->playSound(); - } - } - else if(event->key() == Qt::Key_D) - { - if(playerD->player->state() == QMediaPlayer::PlayingState) - { - playerD->stopSound(); - } - else if (playerD->player->state() == QMediaPlayer::PausedState) - { - playerD->playSound(); - } - else if (playerD->player->state() == QMediaPlayer::StoppedState) - { - playerD->playSound(); - } - } - else if(event->key() == Qt::Key_F) - { - if(playerF->player->state() == QMediaPlayer::PlayingState) - { - playerF->stopSound(); - } - else if (playerF->player->state() == QMediaPlayer::PausedState) - { - playerF->playSound(); - } - else if (playerF->player->state() == QMediaPlayer::StoppedState) - { - playerF->playSound(); - } - } - else if(event->key() == Qt::Key_G) - { - if(playerG->player->state() == QMediaPlayer::PlayingState) - { - playerG->stopSound(); - } - else if (playerG->player->state() == QMediaPlayer::PausedState) - { - playerG->playSound(); - } - else if (playerG->player->state() == QMediaPlayer::StoppedState) - { - playerG->playSound(); - } - } - else if(event->key() == Qt::Key_H) - { - if(playerH->player->state() == QMediaPlayer::PlayingState) - { - playerH->stopSound(); - } - else if (playerH->player->state() == QMediaPlayer::PausedState) - { - playerH->playSound(); - } - else if (playerH->player->state() == QMediaPlayer::StoppedState) - { - playerH->playSound(); - } - } - else if(event->key() == Qt::Key_J) - { - if(playerJ->player->state() == QMediaPlayer::PlayingState) - { - playerJ->stopSound(); - } - else if (playerJ->player->state() == QMediaPlayer::PausedState) - { - playerJ->playSound(); - } - else if (playerJ->player->state() == QMediaPlayer::StoppedState) - { - playerJ->playSound(); - } - } - else if(event->key() == Qt::Key_K) - { - if(playerK->player->state() == QMediaPlayer::PlayingState) - { - playerK->stopSound(); - } - else if (playerK->player->state() == QMediaPlayer::PausedState) - { - playerK->playSound(); - } - else if (playerK->player->state() == QMediaPlayer::StoppedState) - { - playerK->playSound(); - } - } - //BOARD 4 - else if(event->key() == Qt::Key_Z) - { - if(playerZ->player->state() == QMediaPlayer::PlayingState) - { - playerZ->stopSound(); - } - else if (playerZ->player->state() == QMediaPlayer::PausedState) - { - playerZ->playSound(); - } - else if (playerZ->player->state() == QMediaPlayer::StoppedState) - { - playerZ->playSound(); - } - } - else if(event->key() == Qt::Key_X) - { - if(playerX->player->state() == QMediaPlayer::PlayingState) - { - playerX->stopSound(); - } - else if (playerX->player->state() == QMediaPlayer::PausedState) - { - playerX->playSound(); - } - else if (playerX->player->state() == QMediaPlayer::StoppedState) - { - playerX->playSound(); - } - } - else if(event->key() == Qt::Key_C) - { - if(playerC->player->state() == QMediaPlayer::PlayingState) - { - playerC->stopSound(); - } - else if (playerC->player->state() == QMediaPlayer::PausedState) - { - playerC->playSound(); - } - else if (playerC->player->state() == QMediaPlayer::StoppedState) - { - playerC->playSound(); - } - } - else if(event->key() == Qt::Key_V) - { - if(playerV->player->state() == QMediaPlayer::PlayingState) - { - playerV->stopSound(); - } - else if (playerV->player->state() == QMediaPlayer::PausedState) - { - playerV->playSound(); - } - else if (playerV->player->state() == QMediaPlayer::StoppedState) - { - playerV->playSound(); - } - } - else if(event->key() == Qt::Key_B) - { - if(playerB->player->state() == QMediaPlayer::PlayingState) - { - playerB->stopSound(); - } - else if (playerB->player->state() == QMediaPlayer::PausedState) - { - playerB->playSound(); - } - else if (playerB->player->state() == QMediaPlayer::StoppedState) - { - playerB->playSound(); - } - } - else if(event->key() == Qt::Key_N) - { - if(playerN->player->state() == QMediaPlayer::PlayingState) - { - playerN->stopSound(); - } - else if (playerN->player->state() == QMediaPlayer::PausedState) - { - playerN->playSound(); - } - else if (playerN->player->state() == QMediaPlayer::StoppedState) - { - playerN->playSound(); - } - } - else if(event->key() == Qt::Key_M) - { - if(playerM->player->state() == QMediaPlayer::PlayingState) - { - playerM->stopSound(); - } - else if (playerM->player->state() == QMediaPlayer::PausedState) - { - playerM->playSound(); - } - else if (playerM->player->state() == QMediaPlayer::StoppedState) - { - playerM->playSound(); - } - } - else if(event->key() == Qt::Key_Comma) - { - if(playerCOMMA->player->state() == QMediaPlayer::PlayingState) - { - playerCOMMA->stopSound(); - } - else if (playerCOMMA->player->state() == QMediaPlayer::PausedState) - { - playerCOMMA->playSound(); - } - else if (playerCOMMA->player->state() == QMediaPlayer::StoppedState) - { - playerCOMMA->playSound(); + if(keyboard_key_to_player_key->contains(event->key())){ + if(players->contains(keyboard_key_to_player_key->value(event->key()))){ + // Play or stop sound based on player's play state + if(players->value(keyboard_key_to_player_key->value(event->key()))->player->state() == QMediaPlayer::PlayingState) + players->value(keyboard_key_to_player_key->value(event->key()))->stopSound(); + else if (players->value(keyboard_key_to_player_key->value(event->key()))->player->state() == QMediaPlayer::PausedState) + players->value(keyboard_key_to_player_key->value(event->key()))->playSound(); + else if (players->value(keyboard_key_to_player_key->value(event->key()))->player->state() == QMediaPlayer::StoppedState) + players->value(keyboard_key_to_player_key->value(event->key()))->playSound(); } } } @@ -678,41 +109,10 @@ void CasterBoard::keyReleaseEvent(QKeyEvent *event) //Public Methods void CasterBoard::reloadBoardFromPlayerStates() { - this->player1->reloadFromPlayerState(); - this->player2->reloadFromPlayerState(); - this->player3->reloadFromPlayerState(); - this->player4->reloadFromPlayerState(); - this->player5->reloadFromPlayerState(); - this->player6->reloadFromPlayerState(); - this->player7->reloadFromPlayerState(); - this->player8->reloadFromPlayerState(); - - this->playerQ->reloadFromPlayerState(); - this->playerW->reloadFromPlayerState(); - this->playerE->reloadFromPlayerState(); - this->playerR->reloadFromPlayerState(); - this->playerT->reloadFromPlayerState(); - this->playerY->reloadFromPlayerState(); - this->playerU->reloadFromPlayerState(); - this->playerI->reloadFromPlayerState(); - - this->playerA->reloadFromPlayerState(); - this->playerS->reloadFromPlayerState(); - this->playerD->reloadFromPlayerState(); - this->playerF->reloadFromPlayerState(); - this->playerG->reloadFromPlayerState(); - this->playerH->reloadFromPlayerState(); - this->playerJ->reloadFromPlayerState(); - this->playerK->reloadFromPlayerState(); - - this->playerZ->reloadFromPlayerState(); - this->playerX->reloadFromPlayerState(); - this->playerC->reloadFromPlayerState(); - this->playerV->reloadFromPlayerState(); - this->playerB->reloadFromPlayerState(); - this->playerN->reloadFromPlayerState(); - this->playerM->reloadFromPlayerState(); - this->playerCOMMA->reloadFromPlayerState(); + // Iterate through players + foreach(QString _letter, players->keys()){ + players->value(_letter)->reloadFromPlayerState(); + } this->update(); } @@ -721,19 +121,25 @@ void CasterBoard::reloadBoardFromPlayerStates() //Operator Overloading QDataStream &operator<<(QDataStream &ds, const CasterBoard &cb) { - return ds << *cb.soundBoardName - << *cb.player1->playerState << *cb.player2->playerState << *cb.player3->playerState << *cb.player4->playerState << *cb.player5->playerState << *cb.player6->playerState << *cb.player7->playerState << *cb.player8->playerState - << *cb.playerQ->playerState << *cb.playerW->playerState << *cb.playerE->playerState << *cb.playerR->playerState << *cb.playerT->playerState << *cb.playerY->playerState << *cb.playerU->playerState << *cb.playerI->playerState - << *cb.playerA->playerState << *cb.playerS->playerState << *cb.playerD->playerState << *cb.playerF->playerState << *cb.playerG->playerState << *cb.playerH->playerState << *cb.playerJ->playerState << *cb.playerK->playerState - << *cb.playerZ->playerState << *cb.playerX->playerState << *cb.playerC->playerState << *cb.playerV->playerState << *cb.playerB->playerState << *cb.playerN->playerState << *cb.playerM->playerState << *cb.playerCOMMA->playerState; + /* Properties */ + ds << *cb.soundBoardName; + /* All Player Properties */ + // Iterate through players + foreach(QString _letter, cb.players->keys()){ + ds << *cb.players->value(_letter)->playerState; + } + return ds; } QDataStream &operator>>(QDataStream &ds, CasterBoard &cb) { - return ds >> *cb.soundBoardName - >> *cb.player1->playerState >> *cb.player2->playerState >> *cb.player3->playerState >> *cb.player4->playerState >> *cb.player5->playerState >> *cb.player6->playerState >> *cb.player7->playerState >> *cb.player8->playerState - >> *cb.playerQ->playerState >> *cb.playerW->playerState >> *cb.playerE->playerState >> *cb.playerR->playerState >> *cb.playerT->playerState >> *cb.playerY->playerState >> *cb.playerU->playerState >> *cb.playerI->playerState - >> *cb.playerA->playerState >> *cb.playerS->playerState >> *cb.playerD->playerState >> *cb.playerF->playerState >> *cb.playerG->playerState >> *cb.playerH->playerState >> *cb.playerJ->playerState >> *cb.playerK->playerState - >> *cb.playerZ->playerState >> *cb.playerX->playerState >> *cb.playerC->playerState >> *cb.playerV->playerState >> *cb.playerB->playerState >> *cb.playerN->playerState >> *cb.playerM->playerState >> *cb.playerCOMMA->playerState; + /* Properties */ + ds >> *cb.soundBoardName; + /* All Player Properties */ + // Iterate through players + foreach(QString _letter, cb.players->keys()){ + ds >> *cb.players->value(_letter)->playerState; + } + return ds; } diff --git a/CasterSoundboard/CasterBoard.h b/CasterSoundboard/CasterBoard.h index 3de3d2a..7876b89 100644 --- a/CasterSoundboard/CasterBoard.h +++ b/CasterSoundboard/CasterBoard.h @@ -25,6 +25,7 @@ #include #include #include +#include //forward declarations class CasterPlayerWidget; @@ -41,47 +42,14 @@ public: //Properties QString *soundBoardName; QString *profileFilePath; - - //WIDGETS - CasterPlayerWidget *player1; - CasterPlayerWidget *player2; - CasterPlayerWidget *player3; - CasterPlayerWidget *player4; - CasterPlayerWidget *player5; - CasterPlayerWidget *player6; - CasterPlayerWidget *player7; - CasterPlayerWidget *player8; - - CasterPlayerWidget *playerQ; - CasterPlayerWidget *playerW; - CasterPlayerWidget *playerE; - CasterPlayerWidget *playerR; - CasterPlayerWidget *playerT; - CasterPlayerWidget *playerY; - CasterPlayerWidget *playerU; - CasterPlayerWidget *playerI; - - CasterPlayerWidget *playerA; - CasterPlayerWidget *playerS; - CasterPlayerWidget *playerD; - CasterPlayerWidget *playerF; - CasterPlayerWidget *playerG; - CasterPlayerWidget *playerH; - CasterPlayerWidget *playerJ; - CasterPlayerWidget *playerK; - - CasterPlayerWidget *playerZ; - CasterPlayerWidget *playerX; - CasterPlayerWidget *playerC; - CasterPlayerWidget *playerV; - CasterPlayerWidget *playerB; - CasterPlayerWidget *playerN; - CasterPlayerWidget *playerM; - CasterPlayerWidget *playerCOMMA; + QMap *int_to_player_key; + QMap *keyboard_key_to_player_key; + QMap *players; //Methods void stopAllSounds(); void reloadBoardFromPlayerStates(); + void setAllAudioDuckingStates(int state); protected: diff --git a/CasterSoundboard/CasterLabel.cpp b/CasterSoundboard/CasterLabel.cpp deleted file mode 100644 index 139597f..0000000 --- a/CasterSoundboard/CasterLabel.cpp +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index 35fc5fa..f665388 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -59,12 +59,14 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) playStateImage = new QImage; playStateImage->load(":/res/img/playState_playing.png"); //Init Properties + playerState = new CasterPlayerState; soundFilePath = new QString(""); hotKeyLetter = new QString("1"); progress = 0.0; - volume = 100; + playerState->volume = 100; trackBarWasChangedByPlayer = false; - playerState = new CasterPlayerState; + + isAudioDucked = false; //Diag cuePicker = new CasterCuePicker(0, 0); @@ -100,17 +102,17 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) /* Open File Button */ openFileButton = new QPushButton(""); openFileButton->setIcon(QIcon(":/res/img/openMusic.png")); - openFileButton->setIconSize(QSize(32,32)); + openFileButton->setIconSize(QSize(28,28)); openFileButton->setFlat(true); /* Set Cue Button */ setCueButton = new QPushButton(""); setCueButton->setIcon(QIcon(":/res/img/cue.png")); - setCueButton->setIconSize(QSize(32,32)); + setCueButton->setIconSize(QSize(28,28)); setCueButton->setFlat(true); /* Toggle Loop Button */ toggleLoopButton = new QPushButton(""); toggleLoopButton->setIcon(QIcon(":/res/img/no_loop")); - toggleLoopButton->setIconSize(QSize(32,32)); + toggleLoopButton->setIconSize(QSize(28,28)); toggleLoopButton->setFlat(true); /* Sub Menu Button */ colorPickerButton = new QPushButton(""); @@ -121,7 +123,7 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) /* Edit Notes Button */ editNotesButton = new QPushButton(""); editNotesButton->setIcon(QIcon(":/res/img/notes.png")); - editNotesButton->setIconSize(QSize(32,32)); + editNotesButton->setIconSize(QSize(28,28)); editNotesButton->setFlat(true); /* Volume Slider */ volumeSlider = new QSlider(Qt::Vertical); @@ -231,7 +233,7 @@ void CasterPlayerWidget::setHotKeyLetter(QString hotKey) void CasterPlayerWidget::playerToggle() { //CURRENT PLAY STATE TOGGLE LOGIC - player->setVolume(volume); + volumeSlider->setValue(playerState->volume); if(player->state() == QMediaPlayer::PlayingState) { player->stop(); @@ -250,12 +252,12 @@ void CasterPlayerWidget::playerToggle() void CasterPlayerWidget::volumeChanged(int value) { - //Update volume change - volume = value; - player->setVolume(volume); - //Update Player Save State - playerState->volume = volume; + playerState->volume = value; + if(isAudioDucked) + player->setVolume(playerState->volume * 0.33); + else + player->setVolume(playerState->volume); } /* Track Barn Position Changed */ @@ -484,16 +486,46 @@ int CasterPlayerWidget::getProgressWidth() //===============Player Methods================= void CasterPlayerWidget::playSound() { - player->setVolume(volume); + volumeSlider->setValue(playerState->volume); player->setPosition(playerState->startTime); player->play(); } +void CasterPlayerWidget::pauseSound() +{ + volumeSlider->setValue(playerState->volume); + player->pause(); +} + void CasterPlayerWidget::stopSound() { - player->setVolume(volume); + volumeSlider->setValue(playerState->volume); player->stop(); } + +void CasterPlayerWidget::setLoopState(int state) +{ + if(state == 0){ + toggleLoopButton->setIcon(QIcon(":/res/img/no_loop")); + playerState->loop = false; + } else if(state == 1) { + toggleLoopButton->setIcon(QIcon(":/res/img/loop")); + playerState->loop = true; + } +} + +void CasterPlayerWidget::setAudioDuckState(int state) +{ + if(state == 0){ + isAudioDucked = false; + player->setVolume(playerState->volume); + } else if(state == 1) { + isAudioDucked = true; + player->setVolume(playerState->volume * 0.33); + } + this->update(); +} + //================================================== //Protected Methods @@ -563,7 +595,7 @@ bool CasterPlayerWidget::openFiles(const QStringList& pathList) fi.suffix() == "wmv") { soundFilePath = new QString(pathList[0]);//Sets File Path - player->setVolume(volume); + volumeSlider->setValue(playerState->volume); player->setMedia(QUrl::fromLocalFile(soundFilePath->toUtf8().constData())); newMediaLoaded = true; @@ -587,7 +619,7 @@ void CasterPlayerWidget::mousePressEvent(QMouseEvent *event) // Toggle play state // Play/Pause //CURRENT PLAY STATE TOGGLE LOGIC - player->setVolume(volume); + volumeSlider->setValue(playerState->volume); if(player->state() == QMediaPlayer::PlayingState) { player->pause(); @@ -670,6 +702,12 @@ void CasterPlayerWidget::paintEvent(QPaintEvent *event) // Draw Play State p.drawImage(this->width()/2 - playStateImage->width()/2, this->height()/2 - playStateImage->height()/2, *playStateImage); + // Draw Audio Ducking Indicator + if(isAudioDucked){ + playStateImage->load(":/res/img/33_percent.png"); + p.drawImage(this->width()/2 - playStateImage->scaled(64,64).width()/2, this->height()/2 - playStateImage->scaled(64,64).height()/2, playStateImage->scaled(64,64)); + } + } //==================================== @@ -693,7 +731,6 @@ void CasterPlayerWidget::reloadFromPlayerState() pathList.append(playerState->filePath->toUtf8()); newMediaLoadedFromProfile = true; openFiles(pathList); - player->setVolume(playerState->volume); volumeSlider->setValue(playerState->volume); newMediaLoadedFromProfile = false; diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h index bc6e17a..da40f77 100644 --- a/CasterSoundboard/CasterPlayer.h +++ b/CasterSoundboard/CasterPlayer.h @@ -53,15 +53,38 @@ public: QMediaPlayer *player; QImage *playStateImage; + //contained widgets: + QVBoxLayout *mainLayout; + QHBoxLayout *subMainLayoutH; + QVBoxLayout *subMainLayoutV; + QHBoxLayout *topLayout; + QHBoxLayout *centerLayout; + QHBoxLayout *bottomLayout_TopButtons; + QHBoxLayout *bottomLayout_BottomButtons; + QVBoxLayout *bottomLayout; + QLabel *soundNameLabel; + QLabel *hotKeyLabel; + QLabel *timeLabel; + QPushButton *playStateButton; + QPushButton *openFileButton; + QPushButton *setCueButton; + QPushButton *toggleLoopButton; + QPushButton *colorPickerButton; + QPushButton *editNotesButton; + QSlider *trackBar; + QSlider *volumeSlider; + //Player Methhods void playSound();//Plays sound + void pauseSound();//Pauses sound void stopSound();//Stops sound + void setLoopState(int state);//Sets loop state + void setAudioDuckState(int state);//Set duck state //Properties QString *soundFilePath; QString *hotKeyLetter; float progress; - int volume; bool trackBarWasChangedByPlayer;// Used to prevent player from tiggering track bar progress changed event CasterPlayerState *playerState; @@ -83,29 +106,12 @@ protected: void mousePressEvent(QMouseEvent *event); private: + //Proeprties + bool isAudioDucked; + //Private Methods int getProgressWidth(); //Use to compute width of progress bar - //contained widgets: - QVBoxLayout *mainLayout; - QHBoxLayout *subMainLayoutH; - QVBoxLayout *subMainLayoutV; - QHBoxLayout *topLayout; - QHBoxLayout *centerLayout; - QHBoxLayout *bottomLayout_TopButtons; - QHBoxLayout *bottomLayout_BottomButtons; - QVBoxLayout *bottomLayout; - QLabel *soundNameLabel; - QLabel *hotKeyLabel; - QLabel *timeLabel; - QPushButton *playStateButton; - QPushButton *openFileButton; - QPushButton *setCueButton; - QPushButton *toggleLoopButton; - QPushButton *colorPickerButton; - QPushButton *editNotesButton; - QSlider *trackBar; - QSlider *volumeSlider; // Diag CasterCuePicker *cuePicker; diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index 4fda3fe..34b99aa 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -5,7 +5,7 @@ #------------------------------------------------- -QT += core gui multimedia +QT += core gui multimedia network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets @@ -20,7 +20,39 @@ SOURCES += main.cpp\ CasterLabelColorPicker.cpp \ CSS.cpp \ CasterPlayerState.cpp \ - CasterCuePicker.cpp + CasterCuePicker.cpp \ + libs/osc/composer/OscBundleComposer.cpp \ + libs/osc/composer/OscContentComposer.cpp \ + libs/osc/composer/OscMessageComposer.cpp \ + libs/osc/reader/types/OscAddress.cpp \ + libs/osc/reader/types/OscArrayBegin.cpp \ + libs/osc/reader/types/OscArrayEnd.cpp \ + libs/osc/reader/types/OscBlob.cpp \ + libs/osc/reader/types/OscChar.cpp \ + libs/osc/reader/types/OscDouble.cpp \ + libs/osc/reader/types/OscFalse.cpp \ + libs/osc/reader/types/OscFloat.cpp \ + libs/osc/reader/types/OscInfinitum.cpp \ + libs/osc/reader/types/OscInteger.cpp \ + libs/osc/reader/types/OscLong.cpp \ + libs/osc/reader/types/OscMidi.cpp \ + libs/osc/reader/types/OscNil.cpp \ + libs/osc/reader/types/OscRGBA.cpp \ + libs/osc/reader/types/OscString.cpp \ + libs/osc/reader/types/OscSymbol.cpp \ + libs/osc/reader/types/OscTags.cpp \ + libs/osc/reader/types/OscTimeTag.cpp \ + libs/osc/reader/types/OscTrue.cpp \ + libs/osc/reader/OscBundle.cpp \ + libs/osc/reader/OscContent.cpp \ + libs/osc/reader/OscMessage.cpp \ + libs/osc/reader/OscReader.cpp \ + libs/osc/reader/OscValue.cpp \ + libs/osc/OscPatternMatching.cpp \ + ColorConversion.cpp \ + libs/tools/ByteBuffer.cpp \ + libs/tools/ByteOrder.cpp \ + libs/tools/NtpTimestamp.cpp HEADERS += \ CasterPlayer.h \ @@ -29,7 +61,69 @@ HEADERS += \ MainWindow.h \ CasterLabelColorPicker.h \ CasterPlayerState.h \ - CasterCuePicker.h + CasterCuePicker.h \ + libs/osc/composer/OscBundleComposer.h \ + libs/osc/composer/OscContentComposer.h \ + libs/osc/composer/OscMessageComposer.h \ + libs/osc/exceptions/BooleanConversionException.h \ + libs/osc/exceptions/BytesConversionException.h \ + libs/osc/exceptions/CharConversionException.h \ + libs/osc/exceptions/DoubleConversionException.h \ + libs/osc/exceptions/FloatConversionException.h \ + libs/osc/exceptions/GetBundleException.h \ + libs/osc/exceptions/GetMessageException.h \ + libs/osc/exceptions/IntegerConversionException.h \ + libs/osc/exceptions/LongConversionException.h \ + libs/osc/exceptions/MalformedArrayException.h \ + libs/osc/exceptions/MalformedBundleException.h \ + libs/osc/exceptions/MidiConversionException.h \ + libs/osc/exceptions/OSC_ALL_EXCEPTIONS.h \ + libs/osc/exceptions/OutOfBoundsReadException.h \ + libs/osc/exceptions/ReadMessageException.h \ + libs/osc/exceptions/RgbaConversionException.h \ + libs/osc/exceptions/StringConversionException.h \ + libs/osc/exceptions/SymbolConversionException.h \ + libs/osc/exceptions/TimetagConversionException.h \ + libs/osc/exceptions/UnknownTagException.h \ + libs/osc/reader/types/Midi.h \ + libs/osc/reader/types/OscAddress.h \ + libs/osc/reader/types/OscArrayBegin.h \ + libs/osc/reader/types/OscArrayEnd.h \ + libs/osc/reader/types/OscBlob.h \ + libs/osc/reader/types/OscChar.h \ + libs/osc/reader/types/OscDouble.h \ + libs/osc/reader/types/OscFalse.h \ + libs/osc/reader/types/OscFloat.h \ + libs/osc/reader/types/OscInfinitum.h \ + libs/osc/reader/types/OscInteger.h \ + libs/osc/reader/types/OscLong.h \ + libs/osc/reader/types/OscMidi.h \ + libs/osc/reader/types/OscNil.h \ + libs/osc/reader/types/OscRGBA.h \ + libs/osc/reader/types/OscString.h \ + libs/osc/reader/types/OscSymbol.h \ + libs/osc/reader/types/OscTags.h \ + libs/osc/reader/types/OscTimetag.h \ + libs/osc/reader/types/OscTrue.h \ + libs/osc/reader/types/OscValue.h \ + libs/osc/reader/types/RGBA.h \ + libs/osc/reader/types/Symbol.h \ + libs/osc/reader/OscBundle.h \ + libs/osc/reader/OscContent.h \ + libs/osc/reader/OscMessage.h \ + libs/osc/reader/OscReader.h \ + libs/osc/OscAPI.h \ + libs/osc/OscPatternMatching.h \ + libs/osc/OscVersion.h \ + ColorConversion.h \ + libs/tools/exceptions/BufferOverflowException.h \ + libs/tools/exceptions/BufferUnderflowException.h \ + libs/tools/exceptions/IllegalArgumentException.h \ + libs/tools/exceptions/IndexOutOfBoundsException.h \ + libs/tools/ByteBuffer.h \ + libs/tools/ByteOrder.h \ + libs/tools/NtpTimestamp.h + FORMS += diff --git a/CasterSoundboard/CasterSoundboard.pro.user b/CasterSoundboard/CasterSoundboard.pro.user index 080ab83..28b8462 100644 --- a/CasterSoundboard/CasterSoundboard.pro.user +++ b/CasterSoundboard/CasterSoundboard.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index 5083186..0c80da1 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -24,6 +24,7 @@ #include "CasterBoard.h" #include "CasterPlayer.h" #include "CasterPlayerState.h" +#include #include #include #include @@ -31,13 +32,31 @@ #include #include #include +#include #include #include #include +#include +#include +#include +#include "libs/osc/reader/OscReader.h" +#include "libs/osc/reader/OscMessage.h" +#include "libs/osc/reader/OscBundle.h" +#include "libs/osc/composer/OscMessageComposer.h" +#include "libs/osc/OscPatternMatching.h" +#include "libs/osc/reader/types/OscAddress.h" +#include "libs/osc/reader/types/OscValue.h" + + //CONSTRUCTOR MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { + // UDP Socket + socket = new QUdpSocket(this); + socket->bind(QHostAddress::Any,5051); + connect(socket, SIGNAL(readyRead()), this, SLOT(executeOSCCommand())); + //SET WINDOW PROPETIES this->setWindowTitle("CasterSoundboard"); this->setWindowIcon(QIcon(":/res/img/app.png")); @@ -76,11 +95,21 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) stopAllSoundsButton->setIcon(QIcon(":/res/img/stopAll.png")); stopAllSoundsButton->setIconSize(QSize(40,40)); + //~~Toogle Ducking~~ + toggleAudioDuckingButton = new QPushButton; + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/duck.png")); + toggleAudioDuckingButton->setIconSize(QSize(40,40)); + //~~Rename Tab~~ renameCurrentTabButton = new QPushButton; renameCurrentTabButton->setIcon(QIcon(":/res/img/rename.png")); renameCurrentTabButton->setIconSize(QSize(40,40)); + //~~OSC Settings~~ + openSoundControlButton = new QPushButton; + openSoundControlButton->setIcon(QIcon(":/res/img/open_sound_control.png")); + openSoundControlButton->setIconSize(QSize(40,40)); + //~~About Button~~ aboutButton = new QPushButton; aboutButton->setIcon(QIcon(":/res/img/about.png")); @@ -97,6 +126,8 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) mainToolbar->addWidget(saveAsTabButton); mainToolbar->addWidget(renameCurrentTabButton); mainToolbar->addWidget(stopAllSoundsButton); + mainToolbar->addWidget(toggleAudioDuckingButton); + mainToolbar->addWidget(openSoundControlButton); mainToolbar->addWidget(aboutButton); // Add toolbar to layout layout->addWidget(mainToolbar, 0, 0, Qt::AlignLeft); @@ -106,6 +137,11 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) mainTabContainer->setTabsClosable(true); layout->addWidget(mainTabContainer,1,0, 2, 0); + // Status Bar + main_statusbar = new QStatusBar; + main_statusbar->setMaximumHeight(15); + layout->addWidget(main_statusbar); + //SET LAYOUT this->setLayout(layout); @@ -118,6 +154,8 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) connect(openTabButton,SIGNAL(clicked()),this,SLOT(openProfile())); connect(renameCurrentTabButton,SIGNAL(clicked()),this,SLOT(renameCurrentTab())); connect(stopAllSoundsButton,SIGNAL(clicked()),this,SLOT(stopAllSounds())); + connect(toggleAudioDuckingButton,SIGNAL(clicked()),this,SLOT(toggleAudioDucking())); + connect(openSoundControlButton, SIGNAL(clicked()), this, SLOT(openOSCSettings()) ); // Properties @@ -300,12 +338,33 @@ void MainWindow::openProfile() void MainWindow::stopAllSounds() { + // Iterate through boards for(int i = 0; i < mainTabContainer->count(); i++) { dynamic_cast(mainTabContainer->widget(i))->stopAllSounds(); } } +void MainWindow::toggleAudioDucking() +{ + if(audio_duck_state == 0){ + audio_duck_state = 1; + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/unduck.png")); + } else { + audio_duck_state = 0; + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/duck.png")); + } + // Iterate through boards + for(int i = 0; i < mainTabContainer->count(); i++) + { + dynamic_cast(mainTabContainer->widget(i))->setAllAudioDuckingStates(audio_duck_state); + } + + // Give current board keyboard focus again + if(mainTabContainer->count() > 0 ) + dynamic_cast(mainTabContainer->currentWidget())->setFocus(); +} + void MainWindow::renameCurrentTab() { if(mainTabContainer->count() > 0){ @@ -331,3 +390,164 @@ void MainWindow::renameCurrentTab() } } + +void MainWindow::openOSCSettings() +{ + // Send OSC Message + /* + OscMessageComposer msg( "/1/boardName"); + msg.pushString("Hi Dude!"); + QByteArray* formattedMsg = msg.getBytes(); + QHostAddress oscClientAddressVal("192.168.1.96"); + socket->writeDatagram(*formattedMsg, oscClientAddressVal, 9000); + */ + //this->setFocus(); +} + +// OSC Server + +void MainWindow::executeOSCCommand() +{ + // Get UDP Datagram // + QByteArray datagram; + datagram.resize(socket->pendingDatagramSize()); + QHostAddress sender; + quint16 senderPort; + socket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Read OSC Packet // + OscReader reader(&datagram); + // Check if direct message (we are ignoring bundles) + if(reader.getMessage() != 0){ + // Get Message // + OscMessage* msg = reader.getMessage(); + QString address = msg->getAddress(); + QStringList address_params = address.split("/"); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Print OSC Command // + QString values(""); + for(int i = 0; i < msg->getNumValues(); i++){ + if(i == 0){ values = msg->getValue(i)->toString(); } else { values += " | " + msg->getValue(i)->toString(); } + } + main_statusbar->showMessage("[OSC Message] Address: " + address.toUtf8() + " Value(s): " + values.toUtf8() , 500); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Resolve OSC Address // + // Is One-Way Address + if(address_params.value(1) == "castersoundboard") + { + // Is Board Address + if(address_params.value(2) == "board") + { + // Is A Board Name + if(address_params.value(3) != 0 && address_params.value(3) != "") + { + //================================== + // Check If Board Exists + bool _boardWasFound = false; + int _board_index = 0; + for(int i=0; i < mainTabContainer->count(); i++){ + // Is Board Name Found? + if(dynamic_cast(mainTabContainer->widget(i))->soundBoardName == address_params.value(3)) + { + _boardWasFound = true; + _board_index = i; + break; + } + } + // Finish if board was not found + if(!_boardWasFound) + return;//Board Not Found + //================================== + + // Is Player Address + if(address_params.value(4) == "player") + { + // Is Player Name + if(address_params.value(5) != 0 && address_params.value(5) != "") + { + //================================== + // Check If Player Does NOT Exist + if(!dynamic_cast(mainTabContainer->widget(_board_index))->players->contains(address_params.value(5))){ + delete msg; return;//Player does not exist on board. + } + + QString _player_key(address_params.value(5)); + //================================== + + // Is Action Address + if(address_params.value(6) == "modify") + { + // Is Interface Address + //~~~~Execute Decoded Command~~~~ + if(address_params.value(7) == "volume" + && msg->getNumValues() == 1 + && address_params.value(8) == 0){ + try{// Perform Action + int _volume = 100 * msg->getValue(0)->toFloat(); + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->volumeSlider->setValue(_volume); + } catch(...) {}// Type Casting Exception Most Likely + } else if (address_params.value(7) == "track_position" + && msg->getNumValues() == 1 + && address_params.value(8) == 0){ + try{// Perform Action + int _position = 100 * msg->getValue(0)->toFloat(); + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->trackBar->setValue(_position); + } catch(...) {}// Type Casting Exception Most Likely + } else if (address_params.value(7) == "play_state" + && msg->getNumValues() == 1 + && address_params.value(8) != 0){// Is Player State Address + if(address_params.value(8) == "play" && address_params.value(9) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->playSound(); + } catch(...){}// Type Casting Exception Most Likely + } else if(address_params.value(8) == "pause" && address_params.value(9) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->pauseSound(); + } catch(...){}// Type Casting Exception Most Likely + } else if(address_params.value(8) == "stop" && address_params.value(9) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->stopSound(); + } catch(...){}// Type Casting Exception Most Likely + } + } else if (address_params.value(7) == "loop_state" + && msg->getNumValues() == 1 + && address_params.value(8) == 0){ + try{// Perform Action (0 = no loop, 1 = loop) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->setLoopState(msg->getValue(0)->toInteger()); + } catch(...){}// Type Casting Exception Most Likely + } + //~~~~Execute Decoded Command End~~~~ + delete msg; return;//EXIT + }//END_IF ACTION + + }//END_IF PLAYER NAME + + }//END_IF PLAYER + + }//END_IF BOARD NAME + + }//END_IF BOARD ADDRESS + + }//END_IF CASTERSOUNDBOARD + delete msg; return;//EXIT + }//END_IF DIRECT MESSAGE + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +} + + + +// PROTECTED +void MainWindow::keyReleaseEvent(QKeyEvent *event) +{ + if(event->key() == Qt::Key_Shift){ + // Toogle Audio Ducking // + this->toggleAudioDucking(); + } +} diff --git a/CasterSoundboard/MainWindow.h b/CasterSoundboard/MainWindow.h index 3af760d..796c395 100644 --- a/CasterSoundboard/MainWindow.h +++ b/CasterSoundboard/MainWindow.h @@ -25,10 +25,13 @@ #include //forward declarations +class QObject; class CasterBoard; class QTabWidget; class QPushButton; class QToolBar; +class QStatusBar; +class QUdpSocket; class MainWindow : public QWidget //inherit from QWidget { @@ -48,11 +51,13 @@ protected: //PROPERTIES //METHODS + void keyReleaseEvent(QKeyEvent *event);//Capture Hot Keys //WIDGETS private: //PROPERTIES + int audio_duck_state = 0; //METHODS @@ -64,11 +69,17 @@ private: QPushButton *openTabButton; QPushButton *saveTabButton; QPushButton *saveAsTabButton; - QPushButton *stopAllSoundsButton; QPushButton *renameCurrentTabButton; + QPushButton *stopAllSoundsButton; + QPushButton *toggleAudioDuckingButton; + QPushButton *openSoundControlButton; QPushButton *aboutButton; //Lower window area QTabWidget *mainTabContainer; + // Bottom + QStatusBar *main_statusbar; + // UDP Server + QUdpSocket *socket; signals: @@ -84,6 +95,10 @@ public slots: void openProfile(); void stopAllSounds(); void renameCurrentTab(); + void toggleAudioDucking(); + //OSC Server + void openOSCSettings(); + void executeOSCCommand(); }; diff --git a/CasterSoundboard/libs/osc/OscAPI.h b/CasterSoundboard/libs/osc/OscAPI.h new file mode 100644 index 0000000..18e00ae --- /dev/null +++ b/CasterSoundboard/libs/osc/OscAPI.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef _OSC_API_H_ +#define _OSC_API_H_ + +#include + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) +#ifdef Q_OS_WIN +// Define to export or import depending if we are building or using the library. +// OSC_EXPORT should only be defined when building. +#if defined(OSC_EXPORT) +#define OSC_API __declspec(dllexport) +#else +#define OSC_API __declspec(dllimport) +#endif +#else +// Define empty for other platforms +#define OSC_API +#endif +#else +#ifdef Q_WS_WIN +// Define to export or import depending if we are building or using the library. +// OSC_EXPORT should only be defined when building. +#if defined(OSC_EXPORT) +#define OSC_API __declspec(dllexport) +#else +#define OSC_API __declspec(dllimport) +#endif +#else +// Define empty for other platforms +#define OSC_API +#endif +#endif + +#endif // _OSC_API_H_ diff --git a/CasterSoundboard/libs/osc/OscPatternMatching.cpp b/CasterSoundboard/libs/osc/OscPatternMatching.cpp new file mode 100644 index 0000000..3baac9b --- /dev/null +++ b/CasterSoundboard/libs/osc/OscPatternMatching.cpp @@ -0,0 +1,395 @@ +/* + Written by John MacCallum, The Center for New Music and Audio Technologies, + University of California, Berkeley. Copyright (c) 2009, The Regents of + the University of California (Regents). + Permission to use, copy, modify, distribute, and distribute modified versions + of this software and its documentation without fee and without a signed + licensing agreement, is hereby granted, provided that the above copyright + notice, this paragraph and the following two paragraphs appear in all copies, + modifications, and distributions. + + IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, + SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING + OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS + BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED + HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE + MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#include +#include + +/** + * Switch this off to disable matching against a pattern with 2 stars + */ +//#define OSC_MATCH_ENABLE_2STARS 1 +/** + * Switch this off to disable matching against a pattern with more than 2 stars which will + * be done recursively. + */ +//#define OSC_MATCH_ENABLE_NSTARS 1 + +static int osc_match_star(const char *pattern, const char *address); +#if (OSC_MATCH_ENABLE_NSTARS == 1) +static int osc_match_star_r(const char *pattern, const char *address); +#endif +static int osc_match_single_char(const char *pattern, const char *address); +static int osc_match_bracket(const char *pattern, const char *address); +static int osc_match_curly_brace(const char *pattern, const char *address); + +int OSCPatternMatching::osc_match(const char *pattern, const char *address, int *pattern_offset, int *address_offset) +{ + if(!strcmp(pattern, address)) + { + *pattern_offset = (int)strlen(pattern); + *address_offset = (int)strlen(address); + return OSC_MATCH_ADDRESS_COMPLETE | OSC_MATCH_PATTERN_COMPLETE; + } + + const char *pattern_start; + const char *address_start; + + pattern_start = pattern; + address_start = address; + + *pattern_offset = 0; + *address_offset = 0; + + while(*address != '\0' && *pattern != '\0') + { + if(*pattern == '*') + { + if(!osc_match_star(pattern, address)) + { + return 0; + } + while(*pattern != '/' && *pattern != '\0') + { + pattern++; + } + while(*address != '/' && *address != '\0') + { + address++; + } + } + else if(*address == '*') + { + while(*pattern != '/' && *pattern != '\0') + { + pattern++; + } + while(*address != '/' && *address != '\0') + { + address++; + } + } + else + { + int n = 0; + if(!(n = osc_match_single_char(pattern, address))) + { + return 0; + } + if(*pattern == '[') + { + while(*pattern != ']') + { + pattern++; + } + pattern++; + address++; + } + else if(*pattern == '{') + { + while(*pattern != '}') + { + pattern++; + } + pattern++; + address += n; + } + else + { + pattern++; + address++; + } + } + } + + *pattern_offset = pattern - pattern_start; + *address_offset = address - address_start; + + int r = 0; + + if(*address == '\0') + { + r |= OSC_MATCH_ADDRESS_COMPLETE; + } + + if(*pattern == '\0') + { + r |= OSC_MATCH_PATTERN_COMPLETE; + } + + return r; +} + +static int osc_match_star(const char *pattern, const char *address) +{ +#if (OSC_MATCH_ENABLE_2STARS == 1) + const char *address_start = address; + const char *pattern_start = pattern; +#endif + int num_stars = 0; + if(*address == '\0') + { + return 0; + } + while(*address != '/' && *address != '\0') + { + address++; + } + while(*pattern != '/' && *pattern != '\0') + { + if(*pattern == '*') + { + num_stars++; + } + pattern++; + } + pattern--; + address--; + switch(num_stars) + { + case 1: + { + const char *pp = pattern, *aa = address; + while(*pp != '*') + { + if(!(osc_match_single_char(pp, aa))) + { + return 0; + } + if(*pp == ']' || *pp == '}'){ + while(*pp != '[' && *pp != '{') + { + pp--; + } + } + pp--; + aa--; + } + } + break; + case 2: +#if (OSC_MATCH_ENABLE_2STARS == 1) + { + const char *pp = pattern, *aa = address; + while(*pp != '*') + { + if(!(osc_match_single_char(pp, aa))) + { + return 0; + } + if(*pp == ']' || *pp == '}') + { + while(*pp != '[' && *pp != '{') + { + pp--; + } + } + pp--; + aa--; + } + aa++; // we want to start one character forward to allow the star to match nothing + const char *star2 = pp; + const char *test = aa; + int i = 0; + while(test > address_start) + { + pp = star2 - 1; + aa = test - 1; + i++; + while(*pp != '*') + { + if(!osc_match_single_char(pp, aa)) + { + break; + } + if(*pp == ']' || *pp == '}') + { + while(*pp != '[' && *pp != '{') + { + pp--; + } + } + pp--; + aa--; + } + if(pp == pattern_start) + { + return 1; + } + test--; + } + return 0; + } + break; +#else + return 0; +#endif + default: +#if (OSC_MATCH_ENABLE_NSTARS == 1) + return osc_match_star_r(pattern_start, address_start); + break; +#else + return 0; +#endif + } + return 1; +} + +#if (OSC_MATCH_ENABLE_NSTARS == 1) +static int osc_match_star_r(const char *pattern, const char *address) +{ + if(*address == '/' || *address == '\0') + { + if(*pattern == '/' || *pattern == '\0' || (*pattern == '*' && ((*(pattern + 1) == '/') || *(pattern + 1) == '\0'))) + { + return 1; + } + else + { + return 0; + } + } + if(*pattern == '*') + { + if(osc_match_star_r(pattern + 1, address)) + { + return 1; + } + else + { + return osc_match_star_r(pattern, address + 1); + } + } + else + { + if(!osc_match_single_char(pattern, address)) + { + return 0; + } + if(*pattern == '[' || *pattern == '{') + { + while(*pattern != ']' && *pattern != '}') + { + pattern++; + } + } + return osc_match_star_r(pattern + 1, address + 1); + } +} +#endif + +static int osc_match_single_char(const char *pattern, const char *address) +{ + switch(*pattern) + { + case '[': + return osc_match_bracket(pattern, address); + case ']': + while(*pattern != '[') + { + pattern--; + } + return osc_match_bracket(pattern, address); + case '{': + return osc_match_curly_brace(pattern, address); + case '}': + while(*pattern != '{') + { + pattern--; + } + return osc_match_curly_brace(pattern, address); + case '?': + return 1; + default: + if(*pattern == *address) + { + return 1; + } + else + { + return 0; + } + } + return 0; +} + +static int osc_match_bracket(const char *pattern, const char *address) +{ + pattern++; + int val = 1; + if(*pattern == '!') + { + pattern++; + val = 0; + } + int matched = !val; + while(*pattern != ']' && *pattern != '\0') + { + // the character we're on now is the beginning of a range + if(*(pattern + 1) == '-') + { + if(*address >= *pattern && *address <= *(pattern + 2)) + { + matched = val; + break; + } + else + { + pattern += 3; + } + } + else + { + // just test the character + if(*pattern == *address) + { + matched = val; + break; + } + pattern++; + } + } + return matched; +} + +int osc_match_curly_brace(const char *pattern, const char *address) +{ + pattern++; + const char *ptr = pattern; + while(*ptr != '}' && *ptr != '\0' && *ptr != '/') + { + while(*ptr != '}' && *ptr != '\0' && *ptr != '/' && *ptr != ',') + { + ptr++; + } + int n = ptr - pattern; + if(!strncmp(pattern, address, n)) + { + return n; + } + else + { + ptr++; + pattern = ptr; + } + } + return 0; +} diff --git a/CasterSoundboard/libs/osc/OscPatternMatching.h b/CasterSoundboard/libs/osc/OscPatternMatching.h new file mode 100644 index 0000000..1880af8 --- /dev/null +++ b/CasterSoundboard/libs/osc/OscPatternMatching.h @@ -0,0 +1,63 @@ +/* + Written by John MacCallum, The Center for New Music and Audio Technologies, + University of California, Berkeley. Copyright (c) 2009, The Regents of + the University of California (Regents). + Permission to use, copy, modify, distribute, and distribute modified versions + of this software and its documentation without fee and without a signed + licensing agreement, is hereby granted, provided that the above copyright + notice, this paragraph and the following two paragraphs appear in all copies, + modifications, and distributions. + + IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, + SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING + OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS + BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED + HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE + MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#ifndef OSC_PATTERN_MATCHING_H_ +#define OSC_PATTERN_MATCHING_H_ + +#include + +/*! \class OSCPatternMatching + * \brief Class which provides OSC messages pattern matching + * + * This class provides a static method for OSC messages pattern matching + */ +class OSC_API OSCPatternMatching +{ +public: + + enum Type { + /** + * Return code for osc_match() that indicates that the entire address was successfully matched + */ + OSC_MATCH_ADDRESS_COMPLETE = 1, + /** + * Return code for osc_match() that indicates that the entire pattern was successfully matched + */ + OSC_MATCH_PATTERN_COMPLETE = 2 + }; + + /** + * Match a pattern against an address. In the case of a partial match, pattern_offset + * and address_offset will contain the number of bytes into their respective strings + * where the match failed. + * + * @param pattern The pattern to match + * @param address The address to match + * @param pattern_offset The number of bytes into the pattern that were matched successfully + * @param address_offset The number of bytes into the address that were matched successfully + * @return 0 if the match failed altogether, or an or'd combination of OSC_MATCH_ADDRESS_COMPLETE and + * OSC_MATCH_PATTERN_COMPLETE. + */ + static int osc_match(const char *pattern, const char *address, int *pattern_offset, int *address_offset); +}; + +#endif // OSC_PATTERN_MATCHING_H_ diff --git a/CasterSoundboard/libs/osc/OscVersion.h b/CasterSoundboard/libs/osc/OscVersion.h new file mode 100644 index 0000000..25ab6ad --- /dev/null +++ b/CasterSoundboard/libs/osc/OscVersion.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_VERSION_H_ +#define OSC_VERSION_H_ + +#include + +class OscVersion +{ +public: + enum Version + { + OSC_10, OSC_11 + }; +}; + +#endif // OSC_VERSION_H_ diff --git a/CasterSoundboard/libs/osc/composer/OscBundleComposer.cpp b/CasterSoundboard/libs/osc/composer/OscBundleComposer.cpp new file mode 100644 index 0000000..fbd6373 --- /dev/null +++ b/CasterSoundboard/libs/osc/composer/OscBundleComposer.cpp @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include + +/** + * Build a new OSC Bundle. + * + * @param timetag + * The long value that applies as a time tag to this bundle. + */ +OscBundleComposer::OscBundleComposer(QDateTime timetag) : +OscContentComposer() +{ + mData = NULL; + QString bundle("#bundle"); + try + { + QByteArray bundleByteArray(bundle.toLocal8Bit()); + mHeaderByteBuffer->put(&bundleByteArray); + mHeaderByteBuffer->put( '\0' ); + } + catch (const QException& e) + { + throw e; + } + //delete bundleArray; + NtpTimestamp ntp = NtpTimestamp::fromDateTime(timetag); + mHeaderByteBuffer->putInt( (qint32)ntp.seconds() ); + mHeaderByteBuffer->putInt( (qint32)ntp.fraction() ); +} + +OscBundleComposer::~OscBundleComposer() { + for (qint32 i = 0; i < mContentList.size(); i++) + delete mContentList[i]; +} + +/** + * Appends a new message to the current bundle. + * + * @param address + * @return the new message to compose. + */ +OscMessageComposer* OscBundleComposer::pushMessage(QString& address) +{ + OscMessageComposer* message = new OscMessageComposer(address); + mContentList.push_back(message); + return message; +} + +/** + * Appends a previously built message to the current bundle being composed. + * + * @param message + * The message to add to this bundle. + */ +void OscBundleComposer::pushMessage(OscMessageComposer* message) +{ + mContentList.push_back(message); +} + +/** + * Appends a new message to the current bundle. + * + * @param timeTag + * The time tag to apply to the new bundle. + * @return the new bundle to compose. + */ +OscBundleComposer* OscBundleComposer::pushBundle(QDateTime timeTag) +{ + OscBundleComposer* bundle = new OscBundleComposer(timeTag); + mContentList.push_back(bundle); + return bundle; +} + +/** + * Appends a previously built bundle to the current bundle being composed. + * + * @param bundle + * The bundle to add to this bundle. + */ +void OscBundleComposer::pushBundle(OscBundleComposer* bundle) +{ + mContentList.push_back(bundle); +} + +/* + * @see com.cocon.osc.OscComposer#computeSize() + */ +qint32 OscBundleComposer::computeSize() +{ + qint32 size = mHeaderByteBuffer->getPosition(); // Do not call ::computeSize() because we don't want to align/fill with 0 + + // Compute whole bundle size + for (qint32 i = 0; i < mContentList.size(); i++) + { + size += 4; // reserve space to write this content size + size += mContentList[i]->computeSize(); // get this content size + } + return size; +} + +/** + * Gets the complete OSC bundle for the current bundle being composed. + * + * @return the current OscMessage data. + */ +QByteArray* OscBundleComposer::getBytes(/*OscVersion::Version aVersion*/) +{ + qint32 size = computeSize(); + + // Allocate the bundle buffer + mData = new QByteArray(size, 0); + + // First, copy this bundle header + try + { + ByteBuffer* writeBufferHelper = ByteBuffer::wrap(mData); + writeBufferHelper->putInt(0, size); + fillByteBuffer(writeBufferHelper); + return new QByteArray(*mData); + } + catch (const QException& e) + { + throw e; + } +} + +/* + * @see com.cocon.osc.OscComposer#fillByteBuffer(java.nio.ByteBuffer) + */ +void OscBundleComposer::fillByteBuffer(ByteBuffer* byteBuffer) +{ + try + { + OscContentComposer::fillByteBuffer(byteBuffer); + + // Then, loop over all the contents to copy data in the buffer + for (qint32 i = 0; i < mContentList.size(); i++) + { + // Write content size + OscContentComposer* c = mContentList[i]; + byteBuffer->putInt(c->computeSize()); + c->fillByteBuffer(byteBuffer); + } + } + catch (const QException& e) + { + throw e; + } +} diff --git a/CasterSoundboard/libs/osc/composer/OscBundleComposer.h b/CasterSoundboard/libs/osc/composer/OscBundleComposer.h new file mode 100644 index 0000000..c71e45c --- /dev/null +++ b/CasterSoundboard/libs/osc/composer/OscBundleComposer.h @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_BUNDLE_COMPOSER_H_ +#define OSC_BUNDLE_COMPOSER_H_ + +#include +#include + +class OSC_API OscBundleComposer : public OscContentComposer +{ +private: + QByteArray* mData; +public: + /** + * Build a new OSC Bundle. + * + * @param timetag + * The long value that applies as a time tag to this bundle. + */ + OscBundleComposer(QDateTime timetag); + + /** Destructor. */ + virtual ~OscBundleComposer(); + + /** + * Appends a new message to the current bundle. + * + * @param address + * @return the new message to compose. + */ + OscMessageComposer* pushMessage(QString& address); + + /** + * Appends a previously built message to the current bundle being composed. + * + * @param message + * The message to add to this bundle. + */ + void pushMessage(OscMessageComposer* message); + + /** + * Appends a new message to the current bundle. + * + * @param timeTag + * The time tag to apply to the new bundle. + * @return the new bundle to compose. + */ + OscBundleComposer* pushBundle(QDateTime timeTag = NtpTimestamp::IMMEDIATE); + + /** + * Appends a previously built bundle to the current bundle being composed. + * + * @param bundle + * The bundle to add to this bundle. + */ + void pushBundle(OscBundleComposer* bundle); + + /** + * Gets the complete OSC bundle for the current bundle being composed. + * + * @return the current OscMessage data. + */ + virtual QByteArray* getBytes(/*OscVersion::Version aVersion*/); + +protected: + /* + * @see com.cocon.osc.OscComposer#computeSize() + */ + virtual qint32 computeSize(); + + /* + * @see com.cocon.osc.OscComposer#fillByteBuffer() + */ + virtual void fillByteBuffer(ByteBuffer* byteBuffer); + +protected: + /** List of all messages or bundles to compose to build the whole Bundle. */ + QVector mContentList; +}; + +#endif // OSC_BUNDLE_COMPOSER_H_ diff --git a/CasterSoundboard/libs/osc/composer/OscContentComposer.cpp b/CasterSoundboard/libs/osc/composer/OscContentComposer.cpp new file mode 100644 index 0000000..c182139 --- /dev/null +++ b/CasterSoundboard/libs/osc/composer/OscContentComposer.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include + +qint32 OscContentComposer::mHeaderBufferSize = 128; +QByteArray OscContentComposer::mBlank(4, 0); + +OscContentComposer::OscContentComposer() +{ + mHeaderBuffer = new QByteArray(mHeaderBufferSize, 0); + mHeaderByteBuffer = ByteBuffer::wrap(mHeaderBuffer, true); +} + +OscContentComposer::~OscContentComposer() +{ + // No Need to delete since buffer is owned by ByteBuffer + // delete mHeaderBuffer; + + delete mHeaderByteBuffer; +} + +qint32 OscContentComposer::computeSize() +{ + // Be sure to align type tags ending + if (mHeaderByteBuffer->get(mHeaderByteBuffer->getPosition() - 1) != 0) + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char)0); + } + fillAlignment(mHeaderByteBuffer); + return mHeaderByteBuffer->getPosition(); +} + +ByteBuffer* OscContentComposer::checkBufferSize(ByteBuffer* aBuffer, size_t aSize) +{ + if (aBuffer->getPosition() + (qint32)aSize > aBuffer->getCapacity()) + { + qint32 newDataBufferSize = aBuffer->getCapacity() + (qint32)pow(2, ceil(log((aSize)) / log(2))); + ByteBuffer* newDataByteBuffer = ByteBuffer::allocate(newDataBufferSize); + if (aBuffer->getPosition() > 0) + newDataByteBuffer->put(aBuffer->getByteArray(), 0, aBuffer->getPosition()); + delete aBuffer; + + return newDataByteBuffer; + } + else + return aBuffer; +} + +void OscContentComposer::fillByteBuffer(ByteBuffer* dst) +{ + try + { + dst->put(mHeaderByteBuffer->getByteArray(), 0, mHeaderByteBuffer->getPosition()); + } + catch (const QException& e) + { + throw e; + } +} + +void OscContentComposer::fillAlignment(ByteBuffer*& dst) +{ + qint32 size = 4 - (dst->getPosition() & 0x3); + if (size != 4) + { + try + { + dst = checkBufferSize(dst, size); + dst->put(&mBlank, 0, size); + } + catch (const QException& e) + { + throw e; + } + } +} diff --git a/CasterSoundboard/libs/osc/composer/OscContentComposer.h b/CasterSoundboard/libs/osc/composer/OscContentComposer.h new file mode 100644 index 0000000..8e26a04 --- /dev/null +++ b/CasterSoundboard/libs/osc/composer/OscContentComposer.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_COMPOSER_H_ +#define OSC_COMPOSER_H_ + +#include +#include +#include + +class ByteBuffer; + +class OSC_API OscContentComposer +{ +protected: + virtual ~OscContentComposer(); + + /** + * Returns the size of the current OscContentComposer. + * + * @return the current message size + */ + virtual qint32 computeSize(); + + /** + * Copy current message buffers to passed ByteBuffer + * + * @param dst + * The ByteBuffer where to copy current data. + */ + virtual void fillByteBuffer(ByteBuffer* dst); + + /** + * Complete passed ByteBuffer to the next 4-bytes alignment. + * + * @param dst + * The ByteBuffer to complete + */ + static void fillAlignment(ByteBuffer*& dst); + + ByteBuffer* mHeaderByteBuffer; + + virtual QByteArray* getBytes(/*OscVersion::Version aVersion */) = 0; + + /** + * Build a new Composer. By default, bytes are written in BIG_ENDIAN style. + */ + OscContentComposer(); + + /** + * + */ + static ByteBuffer* checkBufferSize(ByteBuffer* aBuffer, size_t aSize); + +private: + QByteArray* mHeaderBuffer; + static qint32 mHeaderBufferSize; + static QByteArray mBlank; + + friend class OscBundleComposer; +}; + +#endif // OSC_COMPOSER_H_ diff --git a/CasterSoundboard/libs/osc/composer/OscMessageComposer.cpp b/CasterSoundboard/libs/osc/composer/OscMessageComposer.cpp new file mode 100644 index 0000000..a8bae18 --- /dev/null +++ b/CasterSoundboard/libs/osc/composer/OscMessageComposer.cpp @@ -0,0 +1,543 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include + +#include +#include +#include + +qint32 OscMessageComposer::mDataBufferSize = 128; + +OscMessageComposer::OscMessageComposer(const QString& address) +: OscContentComposer(), mArrayLevel(0) +{ + init(address); +} + +OscMessageComposer::OscMessageComposer(const char* str) +: OscContentComposer(), mArrayLevel(0) +{ + QString s(str); + init(s); +} + +void +OscMessageComposer::init(const QString& address) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, address.length() + 1); + QByteArray addressByteArray(address.toLocal8Bit()); + mHeaderByteBuffer->put(&addressByteArray); + mHeaderByteBuffer->put((char)0); + fillAlignment(mHeaderByteBuffer); + + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) ','); + } + catch (const QException& e) + { + throw e; + } + + mDataBuffer = new QByteArray(mDataBufferSize, 0); + mDataByteBuffer = ByteBuffer::wrap(mDataBuffer, true); + mDataByteBuffer->setOrder(ByteOrder::BIG_ENDIAN_DATA); +} + +OscMessageComposer::~OscMessageComposer() +{ + // No Need to delete since buffer is owned by ByteBuffer + // delete mDataBuffer; + + delete mDataByteBuffer; +} + +/** + * Gets the complete OSC message for the current message being composed. + * + * @return the current OscMessage data. + */ +QByteArray* OscMessageComposer::getBytes(/*OscVersion::Version aVersion*/) +{ + // Be sure to end all opened arrays + while (mArrayLevel != 0) + { + pushArrayEnd(); + } + + try + { + fillAlignment(mHeaderByteBuffer); + } + catch (const QException& e) + { + throw e; + } + + qint32 size = computeSize(); + + qint32 offset = 0; + QByteArray* tempData; + /*if (aVersion == OscVersion::OSC_10) { + offset = 4; + tempData = new QByteArray(size + 4, 0); + ByteBuffer* bb = ByteBuffer::wrap(tempData); + bb->putInt(size); + delete bb; + } + else {*/ + tempData = new QByteArray(size, 0); + /*}*/ + + memcpy(offset + tempData->data(), mHeaderByteBuffer->getByteArray()->data(), mHeaderByteBuffer->getPosition()); + memcpy(offset + tempData->data() + mHeaderByteBuffer->getPosition(), mDataByteBuffer->getByteArray()->data(), mDataByteBuffer->getPosition()); + + return tempData; +} + +qint32 OscMessageComposer::computeSize() +{ + return OscContentComposer::computeSize() + mDataByteBuffer->getPosition(); +} + +/** + * Indicates the beginning of an array in the OscMessage being composed. + */ +void OscMessageComposer::pushArrayBegin() +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) '['); + mArrayLevel++; + } + catch (const QException& e) + { + throw e; + } +} +/** + * Indicates the end of an array in the OscMessage being composed. + * + * Does nothing if no array has been started. + */ +void OscMessageComposer::pushArrayEnd() +{ + if (mArrayLevel > 0) + { + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) ']'); + mArrayLevel--; + } + catch (const QException& e) + { + throw e; + } + } +} + +/** + * Pushes the whole, or part of, bytes array into this message. + * + * @param src + * The array from which bytes are to be read + * @param offset + * The offset within the array of the first byte to be read; must + * be non-negative and no larger than array.length + * @param length + * The number of bytes to be read from the given array; must be + * non-negative and no larger than array.length - offset + */ +void OscMessageComposer::pushBlob(QByteArray* src, qint32 offset, qint32 length) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'b'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 4); + mDataByteBuffer->putInt(length); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, length); + mDataByteBuffer->put(src, offset, length); + + fillAlignment(mDataByteBuffer); + } + catch (const QException& e) + { + throw e; + } +} + +void +OscMessageComposer::pushBlob(const QByteArray& src) +{ + pushBlob((QByteArray*) &src, 0, src.size()); +} + +/** + * Appends a True or False flag to OscMessage being composed, + * respectively to the passed boolean value. + * + * @param b + * The boolean value to add to the message + */ +void OscMessageComposer::pushBool(bool b) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char)(b ? 'T' : 'F')); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a ASCII character value to OscMessage being composed. + * + * @param c + * The ASCII character value to add to the message. + */ +void OscMessageComposer::pushChar(char c) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'c'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 4); + mDataByteBuffer->putInt(c); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a double value to OscMessage being composed. + * + * @param d + * The double value to add to the message. + */ +void OscMessageComposer::pushDouble(double d) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'd'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 8); + mDataByteBuffer->putDouble(d); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a False flag to OscMessage being composed. + */ +void OscMessageComposer::pushFalse() +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'F'); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a 32-bit float value to OscMessage being composed. + * + * @param f + * The float value to add to the message. + */ +void OscMessageComposer::pushFloat(float f) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'f'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 4); + mDataByteBuffer->putFloat(f); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends an Infinitum flag to OscMessage being composed. + */ +void OscMessageComposer::pushInfinitum() +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'I'); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a 32-bit integer value to OscMessage being composed. + * + * @param i + * The int32 value to add to the message. + */ +void OscMessageComposer::pushInt32(qint32 i) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'i'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 4); + mDataByteBuffer->putInt(i); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a 64-bit integer value to OscMessage being composed. + * + * @param l + * The long value to add to the message. + */ +void OscMessageComposer::pushLong(qint64 l) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'h'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 8); + mDataByteBuffer->putLong(l); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a 4-byte MIDI message value to OscMessage being composed. + * + * @param m + * The MIDI message value to add to the message. + */ +void OscMessageComposer::pushMidi(char port, char status, char data1, char data2) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'm'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 4); + mDataByteBuffer->put(port); + mDataByteBuffer->put(status); + mDataByteBuffer->put(data1); + mDataByteBuffer->put(data2); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends an Nil flag to OscMessage being composed. + */ +void OscMessageComposer::pushNil() +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'N'); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a 32-bit RGBA color value to OscMessage being composed. + * + * @param r + * The RGBA color value to add to the message. + */ +void OscMessageComposer::pushRGBA(qint32 r) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'r'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 4); + mDataByteBuffer->putInt(r); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Appends a String to OscMessage being composed. + * + * @param s + * The string to add to the message. + */ +void OscMessageComposer::pushString(const QString& s) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 's'); + + QByteArray sArray = s.toUtf8(); + mDataByteBuffer = checkBufferSize(mDataByteBuffer, sArray.length()+1); + mDataByteBuffer->put(&sArray); + mDataByteBuffer->put((char) '\0'); + + fillAlignment(mDataByteBuffer); + } + catch (const BufferUnderflowException& e) + { + throw e; + } +} + +/** + * Appends a Symbol to OscMessage being composed. + * + * @param S + * The symbol to add to the message. + */ +void OscMessageComposer::pushSymbol(QString& S) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'S'); + + QByteArray sArray = S.toUtf8(); + mDataByteBuffer = checkBufferSize(mDataByteBuffer, sArray.length()+1); + mDataByteBuffer->put(&sArray); + mDataByteBuffer->put((char) '\0'); + + fillAlignment(mDataByteBuffer); + } + catch (const BufferUnderflowException& e) + { + throw e; + } +} + +/** + * Appends a Time Tag to OscMessage being composed. + * + * @param t + * The time tag value as a long value to add to the message. + */ +void OscMessageComposer::pushTimeTag(QDateTime& t) +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 't'); + + mDataByteBuffer = checkBufferSize(mDataByteBuffer, 8); + + NtpTimestamp ntp = NtpTimestamp::fromDateTime(t); + QByteArray seconds(4,0); + qint32 secs = ntp.rawSeconds(); + seconds.insert(0, (char*)&secs, 4); + mDataByteBuffer->put( &seconds, 0, 4); + + QByteArray fraction(4,0); + qint32 frac = ntp.rawFraction(); + fraction.insert(0, (char*)&frac, 4 ); + mDataByteBuffer->put( &fraction, 0, 4 ); + + } + catch (const BufferUnderflowException& e) + { + throw e; + } +} + +/** + * Appends a True flag to OscMessage being composed. + */ +void OscMessageComposer::pushTrue() +{ + try + { + mHeaderByteBuffer = checkBufferSize(mHeaderByteBuffer, 1); + mHeaderByteBuffer->put((char) 'T'); + } + catch (const BufferUnderflowException& e) + { + throw e; + } +} + +/* + * @see com.cocon.osc.OscComposer#fillByteBuffer(java.nio.ByteBuffer) + */ +void OscMessageComposer::fillByteBuffer(ByteBuffer* _byteBuffer) +{ + try + { + OscContentComposer::fillByteBuffer(_byteBuffer); + _byteBuffer->put(mDataByteBuffer->getByteArray(), 0, mDataByteBuffer->getPosition()); + } + catch (const BufferUnderflowException& e) + { + throw e; + } +} diff --git a/CasterSoundboard/libs/osc/composer/OscMessageComposer.h b/CasterSoundboard/libs/osc/composer/OscMessageComposer.h new file mode 100644 index 0000000..d078615 --- /dev/null +++ b/CasterSoundboard/libs/osc/composer/OscMessageComposer.h @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_MESSAGE_COMPOSER_H_ +#define OSC_MESSAGE_COMPOSER_H_ + +#include +#include +#include + +class OSC_API OscMessageComposer : public OscContentComposer +{ +public: + /** + * Build a new OSC message + * + * @param address + * The address pattern to set to the message. + */ + OscMessageComposer(const QString& address); + + /** + * Build a new OSC message + * + * @param address + * The address pattern to set to the message. + */ + OscMessageComposer(const char* str); + + /** + * + */ + virtual ~OscMessageComposer(); + + /** + * @brief init + * @param address + */ + void init(const QString& address); + + /** + * Gets the complete OSC message for the current message being composed. + * + * @return the current OscMessage data. + */ + virtual QByteArray* getBytes(/*OscVersion::Version aVersion = OscVersion::OSC_10*/); + + /** + * Indicates the beginning of an array in the OscMessage being composed. + */ + void pushArrayBegin(); + + /** + * Indicates the end of an array in the OscMessage being composed. + * + * Does nothing if no array has been started. + */ + void pushArrayEnd(); + + /** + * Pushes the whole passed bytes array into this message. + * + * @param src + * The array from which bytes are to be read + */ + void pushBlob(const QByteArray& src); + + /** + * Pushes the whole, or part of, bytes array into this message. + * + * @param src + * The array from which bytes are to be read + * @param offset + * The offset within the array of the first byte to be read; must + * be non-negative and no larger than array.length + * @param length + * The number of bytes to be read from the given array; must be + * non-negative and no larger than array.length - offset + */ + void pushBlob(QByteArray* src, qint32 offset, qint32 length); + + /** + * Appends a True or False flag to OscMessage being composed, + * respectively to the passed boolean value. + * + * @param b + * The boolean value to add to the message + */ + void pushBool(bool b); + + /** + * Appends a ASCII character value to OscMessage being composed. + * + * @param c + * The ASCII character value to add to the message. + */ + void pushChar(char c); + + /** + * Appends a double value to OscMessage being composed. + * + * @param d + * The double value to add to the message. + */ + void pushDouble(double d); + + /** + * Appends a False flag to OscMessage being composed. + */ + void pushFalse(); + + /** + * Appends a 32-bit float value to OscMessage being composed. + * + * @param f + * The float value to add to the message. + */ + void pushFloat(float f); + + /** + * Appends an Infinitum flag to OscMessage being composed. + */ + void pushInfinitum(); + + /** + * Appends a 32-bit integer value to OscMessage being composed. + * + * @param i + * The int32 value to add to the message. + */ + void pushInt32(qint32 i); + + /** + * Appends a 64-bit integer value to OscMessage being composed. + * + * @param l + * The long value to add to the message. + */ + void pushLong(qint64 l); + + /** + * Appends a 4-byte MIDI message value to OscMessage being composed. + * + * @param m + * The MIDI message value to add to the message. + */ + void pushMidi(char port, char status, char data1, char data2); + + /** + * Appends an Nil flag to OscMessage being composed. + */ + void pushNil(); + + /** + * Appends a 32-bit RGBA color value to OscMessage being composed. + * + * @param r + * The RGBA color value to add to the message. + */ + void pushRGBA(qint32 r); + + /** + * Appends a String to OscMessage being composed. + * + * @param s + * The string to add to the message. + */ + void pushString(const QString& s); + + /** + * Appends a Symbol to OscMessage being composed. + * + * @param S + * The symbol to add to the message. + */ + void pushSymbol(QString& S); + + /** + * Appends a Time Tag to OscMessage being composed. + * + * @param t + * The time tag value as a long value to add to the message. + */ + void pushTimeTag(QDateTime& t ); + + /** + * Appends a True flag to OscMessage being composed. + */ + void pushTrue(); + +protected: + + /* + * @see com.cocon.osc.OscComposer#fillByteBuffer(java.nio.ByteBuffer) + */ + virtual void fillByteBuffer(ByteBuffer* _byteBuffer); + + /** + * @see com.cocon.osc.OscComposer#getSize() + */ + virtual qint32 computeSize(); + +private: + OscMessageComposer() {}; + qint32 mArrayLevel; + QByteArray* mDataBuffer; + static qint32 mDataBufferSize; + ByteBuffer* mDataByteBuffer; +}; + +#endif // OSC_MESSAGE_COMPOSER_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/BooleanConversionException.h b/CasterSoundboard/libs/osc/exceptions/BooleanConversionException.h new file mode 100644 index 0000000..51dae97 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/BooleanConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_BOOLEAN_CONVERSION_EXCEPTION_H_ +#define OSC_BOOLEAN_CONVERSION_EXCEPTION_H_ + +#include + +class BooleanConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_BOOLEAN_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/BytesConversionException.h b/CasterSoundboard/libs/osc/exceptions/BytesConversionException.h new file mode 100644 index 0000000..175acf5 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/BytesConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_BYTES_CONVERSION_EXCEPTION_H_ +#define OSC_BYTES_CONVERSION_EXCEPTION_H_ + +#include + +class BytesConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_BYTES_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/CharConversionException.h b/CasterSoundboard/libs/osc/exceptions/CharConversionException.h new file mode 100644 index 0000000..827adc4 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/CharConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_CHAR_CONVERSION_EXCEPTION_H_ +#define OSC_CHAR_CONVERSION_EXCEPTION_H_ + +#include + +class CharConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_CHAR_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/DoubleConversionException.h b/CasterSoundboard/libs/osc/exceptions/DoubleConversionException.h new file mode 100644 index 0000000..0929447 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/DoubleConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_DOUBLE_CONVERTION_EXCEPTION_H_ +#define OSC_DOUBLE_CONVERTION_EXCEPTION_H_ + +#include + +class DoubleConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_DOUBLE_CONVERTION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/FloatConversionException.h b/CasterSoundboard/libs/osc/exceptions/FloatConversionException.h new file mode 100644 index 0000000..789665d --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/FloatConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_FLOAT_CONVERSION_EXCEPTION_H_ +#define OSC_FLOAT_CONVERSION_EXCEPTION_H_ + +#include + +class FloatConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_FLOAT_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/GetBundleException.h b/CasterSoundboard/libs/osc/exceptions/GetBundleException.h new file mode 100644 index 0000000..bfc4888 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/GetBundleException.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_BUNDLE_EXCEPTION_H_ +#define OSC_BUNDLE_EXCEPTION_H_ + +#include +#include + +class GetBundleException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_BUNDLE_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/GetMessageException.h b/CasterSoundboard/libs/osc/exceptions/GetMessageException.h new file mode 100644 index 0000000..d58aa7c --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/GetMessageException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_MESSAGE_EXCEPTION_H_ +#define OSC_MESSAGE_EXCEPTION_H_ + +#include + +class GetMessageException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Message structure."; + } +}; + +#endif // OSC_MESSAGE_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/IntegerConversionException.h b/CasterSoundboard/libs/osc/exceptions/IntegerConversionException.h new file mode 100644 index 0000000..a08a5e3 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/IntegerConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_INTEGER_CONVERSION_EXCEPTION_H_ +#define OSC_INTEGER_CONVERSION_EXCEPTION_H_ + +#include + +class IntegerConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_INTEGER_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/LongConversionException.h b/CasterSoundboard/libs/osc/exceptions/LongConversionException.h new file mode 100644 index 0000000..b195848 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/LongConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_LONG_CONVERSION_EXCEPTION_H_ +#define OSC_LONG_CONVERSION_EXCEPTION_H_ + +#include + +class LongConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_LONG_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/MalformedArrayException.h b/CasterSoundboard/libs/osc/exceptions/MalformedArrayException.h new file mode 100644 index 0000000..19c8d28 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/MalformedArrayException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef MALFORMED_ARRAY_EXCEPTION_H_ +#define MALFORMED_ARRAY_EXCEPTION_H_ + +#include + +class MalformedArrayException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "array was not terminated before end of message (expected ']' end of array tag)"; + } +}; + +#endif // MALFORMED_ARRAY_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/MalformedBundleException.h b/CasterSoundboard/libs/osc/exceptions/MalformedBundleException.h new file mode 100644 index 0000000..6c877a2 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/MalformedBundleException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_MALFORMED_BUNDLE_EXCEPTION_H_ +#define OSC_MALFORMED_BUNDLE_EXCEPTION_H_ + +#include + +class OscMalformedBundleException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Malformed bunble header"; + } +}; + +#endif // OSC_MALFORMED_BUNDLE_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/MidiConversionException.h b/CasterSoundboard/libs/osc/exceptions/MidiConversionException.h new file mode 100644 index 0000000..c7b7348 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/MidiConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_MIDI_CONVERTION_EXCEPTION_H_ +#define OSC_MIDI_CONVERTION_EXCEPTION_H_ + +#include + +class MidiConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_MIDI_CONVERTION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/OSC_ALL_EXCEPTIONS.h b/CasterSoundboard/libs/osc/exceptions/OSC_ALL_EXCEPTIONS.h new file mode 100644 index 0000000..16f0406 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/OSC_ALL_EXCEPTIONS.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_ALL_EXCEPTIONS_H_ +#define OSC_ALL_EXCEPTIONS_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif // OSC_ALL_EXCEPTIONS_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/OutOfBoundsReadException.h b/CasterSoundboard/libs/osc/exceptions/OutOfBoundsReadException.h new file mode 100644 index 0000000..3f6bff0 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/OutOfBoundsReadException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OUT_OF_BOUNDS_READ_EXCEPTION_H_ +#define OUT_OF_BOUNDS_READ_EXCEPTION_H_ + +#include + +class OutOfBoundsReadException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "trying to read data beyond packet size limit"; + } +}; + +#endif // OUT_OF_BOUNDS_READ_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/ReadMessageException.h b/CasterSoundboard/libs/osc/exceptions/ReadMessageException.h new file mode 100644 index 0000000..291e3b5 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/ReadMessageException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef READ_MESSAGE_EXCEPTION_H_ +#define READ_MESSAGE_EXCEPTION_H_ + +#include + +class ReadMessageException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Unable to read message because of error."; + } +}; + +#endif // READ_MESSAGE_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/RgbaConversionException.h b/CasterSoundboard/libs/osc/exceptions/RgbaConversionException.h new file mode 100644 index 0000000..eaf7760 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/RgbaConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_RGBA_CONVERSION_EXCEPTION_H_ +#define OSC_RGBA_CONVERSION_EXCEPTION_H_ + +#include + +class RgbaConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_RGBA_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/StringConversionException.h b/CasterSoundboard/libs/osc/exceptions/StringConversionException.h new file mode 100644 index 0000000..050bfe0 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/StringConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_STRING_CONVERSION_EXCEPTION_H_ +#define OSC_STRING_CONVERSION_EXCEPTION_H_ + +#include + +class StringConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_STRING_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/SymbolConversionException.h b/CasterSoundboard/libs/osc/exceptions/SymbolConversionException.h new file mode 100644 index 0000000..3215777 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/SymbolConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_SYMBOL_CONVERSION_EXCEPTION_H_ +#define OSC_SYMBOL_CONVERSION_EXCEPTION_H_ + +#include + +class SymbolConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_SYMBOL_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/TimetagConversionException.h b/CasterSoundboard/libs/osc/exceptions/TimetagConversionException.h new file mode 100644 index 0000000..a9e1bc9 --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/TimetagConversionException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_TIMETAG_CONVERSION_EXCEPTION_H_ +#define OSC_TIMETAG_CONVERSION_EXCEPTION_H_ + +#include + +class TimetagConversionException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "Content does not match Bundle structure."; + } +}; + +#endif // OSC_TIMETAG_CONVERSION_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/exceptions/UnknownTagException.h b/CasterSoundboard/libs/osc/exceptions/UnknownTagException.h new file mode 100644 index 0000000..29d2d8d --- /dev/null +++ b/CasterSoundboard/libs/osc/exceptions/UnknownTagException.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef UNKNOWN_TAG_EXCEPTION_H_ +#define UNKNOWN_TAG_EXCEPTION_H_ + +#include + +class UnknownTagException : public QException +{ +public: + + virtual const char* what() const throw () + { + return "unknown type tag"; + } +}; + +#endif // UNKNOWN_TAG_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/osc/reader/OscBundle.cpp b/CasterSoundboard/libs/osc/reader/OscBundle.cpp new file mode 100644 index 0000000..bfef7cc --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscBundle.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include + +/** + * Build a new OscBundle object. + * + * @param bufferSize + * The size of the buffer containing the bundle to load. + * @throws OscMalformedBundleException + * The bundle cannot be read properly. + * @throws OscMalformedMessageException + * A contained message cannot be read properly. + */ +OscBundle::OscBundle(ByteBuffer* packet, qint32 bufferSize) +: OscContent(packet) +{ + if (mPacket->get() != '#' || mPacket->get() != 'b' || mPacket->get() != 'u' || mPacket->get() != 'n' + || mPacket->get() != 'd' || mPacket->get() != 'l' || mPacket->get() != 'e' || mPacket->get() != '\0') + throw OscMalformedBundleException(); + + // Move Packet cursor after timeTag + mPacket->getLong(); + + while (mPacket->getPosition() < mStartIdx + bufferSize) + { + qint32 contentSize = mPacket->getInt(); + if (mPacket->get(mPacket->getPosition()) == '#') + mContentList.push_back(new OscBundle(packet, contentSize)); + else + mContentList.push_back(new OscMessage(packet, contentSize)); + } +} + +OscBundle::~OscBundle() +{ + delete mPacket; + + for (qint32 i = 0; i < mContentList.size(); i++) + { + delete (mContentList[i]); + } + mContentList.clear(); +} + +/** + * Returns the current bundle time tag as a 64-bit integer value + * + * @return the time tag as a long value. + */ +QDateTime OscBundle::getTimeTag() +{ + NtpTimestamp ntp(mPacket->getInt(mStartIdx + 8), mPacket->getInt(mStartIdx + 12)); + return NtpTimestamp::toDateTime(ntp); +} + +/** */ +size_t OscBundle::getNumEntries() +{ + return mContentList.size(); +} + +/** */ +OscBundle* OscBundle::getBundle(qint32 index) +{ + if (dynamic_cast(mContentList[index]) != 0) + return dynamic_cast(mContentList[index]); + throw GetBundleException(); +} + +/** + * Conversion type for current OscContent object as an OscMessage + * object. + * + * @return this as an OscMessage object. If this cannot be convert to an + * OscMessage object, returns null. + */ +OscMessage* OscBundle::getMessage(qint32 index) +{ + if (dynamic_cast(mContentList[index]) != 0) + return dynamic_cast(mContentList[index]); + throw GetMessageException(); +} diff --git a/CasterSoundboard/libs/osc/reader/OscBundle.h b/CasterSoundboard/libs/osc/reader/OscBundle.h new file mode 100644 index 0000000..c1bbea2 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscBundle.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_BUNDLE_H_ +#define OSC_BUNDLE_H_ + +#include +#include + +class OSC_API OscBundle : public OscContent { +public: + + /** TODO */ + size_t getNumEntries(); + + /** + * Conversion type for current OscContent object as an OscBundle object. + * + * @return this as an OscBundle object. If this cannot be convert to an + * OscBundle object, returns null. + */ + OscBundle* getBundle(qint32 index); + + /** + * Conversion type for current OscContent object as an OscMessage + * object. + * + * @return this as an OscMessage object. If this cannot be convert to an + * OscMessage object, returns null. + */ + OscMessage* getMessage(qint32 index); + + /** + * Returns the current bundle time tag as a 64-bit integer value + * + * @return the time tag as a long value. + */ + QDateTime getTimeTag(); + +private: + /** + * Build a new OscBundle object. + * + * @param bufferSize + * The size of the buffer containing the bundle to load. + * @throws OscMalformedBundleException + * The bundle cannot be read properly. + * @throws OscMalformedMessageException + * A contained message cannot be read properly. + */ + OscBundle(ByteBuffer* packet, qint32 bufferSize); + + /** Destructor */ + virtual ~OscBundle(); + + /** + * List of all messages or bundles directly accessible from this bundle. + */ + QVector mContentList; + + /** Required for access to constructor. */ + friend class OscReader; +}; + +#endif // OSC_BUNDLE_H_ diff --git a/CasterSoundboard/libs/osc/reader/OscContent.cpp b/CasterSoundboard/libs/osc/reader/OscContent.cpp new file mode 100644 index 0000000..a4d5f26 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscContent.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include + +/** Build the current OscContent object. */ +OscContent::OscContent(ByteBuffer* packet) +: mPacket(packet) +{ + mStartIdx = mPacket->getPosition(); + mDataIdx = 0; +} + +OscContent::~OscContent() { +} + +ByteBuffer* +OscContent::getPacket() +{ + return mPacket; +} diff --git a/CasterSoundboard/libs/osc/reader/OscContent.h b/CasterSoundboard/libs/osc/reader/OscContent.h new file mode 100644 index 0000000..e064928 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscContent.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_CONTENT_H_ +#define OSC_CONTENT_H_ + +#include +#include +#include + +class OscBundle; +class OscMessage; +class ByteBuffer; + +/** + * Abstract class to manage packet embedded content as objects. + */ +class OSC_API OscContent +{ + +public: + virtual ~OscContent(); + + ByteBuffer* getPacket(); + +protected: + qint32 mDataIdx; + qint32 mStartIdx; + ByteBuffer* mPacket; + + /** Build the current OscContent object. */ + OscContent(ByteBuffer* packet); +}; + +#endif // OSC_CONTENT_H_ diff --git a/CasterSoundboard/libs/osc/reader/OscMessage.cpp b/CasterSoundboard/libs/osc/reader/OscMessage.cpp new file mode 100644 index 0000000..495a708 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscMessage.cpp @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** */ +size_t OscMessage::getNumValues() const +{ + return mValues.size() - 2; +} + +/** */ +OscValue* OscMessage::getValue(size_t index) const +{ + return mValues[index + 2]; +} + +QString OscMessage::getAddress() const +{ + return ((OscAddress*)getValue(-2))->toString(); +} + +QString OscMessage::getTags() const +{ + return ((OscTags*)getValue(-1))->toString(); +} + +QDateTime OscMessage::getTimeTag() const +{ + int pos = getTags().indexOf( 't' ); + if (pos != -1) + { + OscValue* value = getValue( pos - 1 ); + return value->toTimetag(); + } + return NtpTimestamp::IMMEDIATE; +} + +/** + * Build a new OscMessage object. While building the message structure, + * the packet buffer is parsed, and new OscValue objects are created and + * registered in a list, in order to be accessible later. + * + * @param messageSize + * The size of the buffer containing the bundle to load. + * @throws OscMalformedMessageException + * A contained message cannot be read properly. + */ +OscMessage::OscMessage(ByteBuffer* packet, qint32 messageSize) : +OscContent(packet) +{ + qint32 arrayLevel = 0; + try + { + mValues.push_back(new OscAddress(packet, mStartIdx)); + + // Current packet position is set to data section. + qint32 dataIdx = mPacket->getPosition(); + qint32 tagsIdx = dataIdx; + do + { + if (dataIdx > mStartIdx + messageSize) + throw new BufferUnderflowException(); + + char tag = mPacket->get(tagsIdx); + dataIdx = mPacket->getPosition(); + OscValue* newValue = 0; + switch (tag) + { + case 0: // null tag... exit loop... + break; + case ',': + newValue = new OscTags(packet, dataIdx); + break; + case 'T': + newValue = new OscTrue(packet, dataIdx); + break; + case 'F': + newValue = new OscFalse(packet, dataIdx); + break; + case 'N': + newValue = new OscNil(packet, dataIdx); + break; + case 'I': + newValue = new OscInfinitum(packet, dataIdx); + break; + case '[': + newValue = new OscArrayBegin(packet, dataIdx); + ++arrayLevel; + break; + case ']': + newValue = new OscArrayEnd(packet, dataIdx); + --arrayLevel; + break; + case 'i': + newValue = new OscInteger(packet, dataIdx); + break; + case 'f': + newValue = new OscFloat(packet, dataIdx); + break; + case 'c': + newValue = new OscChar(packet, dataIdx); + break; + case 'r': + newValue = new OscRGBA(packet, dataIdx); + break; + case 'm': + newValue = new OscMidi(packet, dataIdx); + break; + case 'h': + newValue = new OscLong(packet, dataIdx); + break; + case 't': + newValue = new OscTimetag(packet, dataIdx); + break; + case 'd': + newValue = new OscDouble(packet, dataIdx); + break; + case 's': + newValue = new OscString(packet, dataIdx); + break; + case 'S': + newValue = new OscSymbol(packet, dataIdx); + break; + case 'b': + newValue = new OscBlob(packet, dataIdx); + break; + default: + throw UnknownTagException(); + } + + if (newValue != 0) + mValues.push_back(newValue); // push this Value to the Value list + + } while (mPacket->get(tagsIdx++) != 0); + } + catch (BufferUnderflowException&) + { + throw OutOfBoundsReadException(); + } + catch (IndexOutOfBoundsException&) + { + throw OutOfBoundsReadException(); + } + if (arrayLevel != 0) + throw MalformedArrayException(); +} + +OscMessage::~OscMessage() +{ + delete mPacket; + + for (qint32 i = 0; i < mValues.size(); i++) + { + delete (mValues[i]); + } + mValues.clear(); +} diff --git a/CasterSoundboard/libs/osc/reader/OscMessage.h b/CasterSoundboard/libs/osc/reader/OscMessage.h new file mode 100644 index 0000000..deb7a20 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscMessage.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_MESSAGE_H_ +#define OSC_MESSAGE_H_ + +#include +#include + +class ByteArray; +class OscValue; + +/** + * Class managing packet data as an OSC message object. + *

+ * An OSC message object is composed of: + *

+ *

+ */ +class OSC_API OscMessage : public OscContent +{ +public: + + /** */ + size_t getNumValues() const; + + /** */ + OscValue* getValue(size_t index) const; + + /** */ + QString getAddress() const; + + /** */ + QString getTags() const; + + /** */ + virtual QDateTime getTimeTag() const; + + /** Destructor */ + virtual ~OscMessage(); + +private: + /** + * Build a new OscMessage object. While building the message structure, + * the packet buffer is parsed, and new OscValue objects are created and + * registered in a list, in order to be accessible later. + * + * @param messageSize + * The size of the buffer containing the bundle to load. + * @throws OscMalformedMessageException + * A contained message cannot be read properly. + */ + OscMessage(ByteBuffer* packet, qint32 messageSize); + + /** List of values embedded in the current OscMessage. */ + QVector mValues; + + /** Required for access to constructor. */ + friend class OscBundle; + friend class OscReader; +}; + +#endif // OSC_MESSAGE_H_ diff --git a/CasterSoundboard/libs/osc/reader/OscReader.cpp b/CasterSoundboard/libs/osc/reader/OscReader.cpp new file mode 100644 index 0000000..a76eb01 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscReader.cpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/** */ +OscBundle* OscReader::getBundle() +{ + OscBundle* bundle = dynamic_cast(mContent); + if (bundle) + return bundle; + return 0;//NULL +} + +/** + * Conversion type for current OscContent object as an OscMessage + * object. + * + * @return this as an OscMessage object. If this cannot be convert to an + * OscMessage object, returns null. + */ +OscMessage* OscReader::getMessage() +{ + OscMessage* message = dynamic_cast(mContent); + if (message) + return message; + return 0;//NULL +} + +/** + * Build a new OscContent object based on the passed byte buffer. + * + * @param src + * the byte buffer to parse containing OSC messages + * @param length + * the length of the message buffer + * @throws OscMalformedBundleException + * The bundle cannot be read properly. + * @throws OscMalformedMessageException + * A contained message cannot be read properly. + */ +OscReader::OscReader(QByteArray* src) +{ + init(src, 0, src->size()); +} + +OscReader::OscReader(QByteArray* src, qint32 offset, qint32 size) +{ + init(src, offset, size); +} + +OscReader::~OscReader() +{ + // DO NOT DESTROY OSCMESSAGE OR OSCBUNDLE + // delete mContent + // delete mPacket; +} + +void +OscReader::init(QByteArray* src, qint32 offset, qint32 size) +{ + mContent = NULL; + mPacketSize = size; + mPacket = ByteBuffer::wrap(src); + try + { + if (mPacket->get(mPacket->getPosition()) == '#') + mContent = new OscBundle(mPacket, mPacketSize); + else + { + mPacket->setPosition(offset); + mContent = new OscMessage(mPacket, mPacketSize); + } + } + catch (...) + { + throw ReadMessageException(); + } +} diff --git a/CasterSoundboard/libs/osc/reader/OscReader.h b/CasterSoundboard/libs/osc/reader/OscReader.h new file mode 100644 index 0000000..4cd4790 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscReader.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_READER_H_ +#define OSC_READER_H_ + +#include +#include + +class ByteBuffer; +class OscBundle; +class OscMessage; +class OscContent; + +class OSC_API OscReader +{ +public: + /** + * @brief Conversion type for current OscContent object as an OscBundle object. + * + * @return this as an OscBundle object. If this cannot be convert to an + * OscBundle object, returns null. + */ + OscBundle* getBundle(); + + /** + * @brief Conversion type for current OscContent object as an OscMessage + * object. + * + * @return this as an OscMessage object. If this cannot be convert to an + * OscMessage object, returns null. + */ + OscMessage* getMessage(); + + /** + * @brief Build a new OscContent object based on the passed byte buffer. + * + * @param src + * the byte buffer to parse containing OSC messages + * @throws ReadMessageException + * The contained message cannot be read properly. + */ + OscReader(QByteArray* src); + + /** + * @brief Build a new OscContent object based on the passed byte buffer. + * + * @param src + * the byte buffer to parse containing OSC messages + * @param offset + * the position where to start reading the byte buffer + * @param size + * the size of the byte buffer + * @throws ReadMessageException + * The contained message cannot be read properly. + */ + OscReader(QByteArray* src, qint32 offset, qint32 size); + + /** + * @brief Destructor. + */ + ~OscReader(); + +private: + + OscContent* mContent; + ByteBuffer* mPacket; + qint32 mPacketSize; + + void init(QByteArray* src, qint32 offset, qint32 size); + + friend class OscMessage; +}; + +#endif // OSC_READER_H_ diff --git a/CasterSoundboard/libs/osc/reader/OscValue.cpp b/CasterSoundboard/libs/osc/reader/OscValue.cpp new file mode 100644 index 0000000..ae7a635 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/OscValue.cpp @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include + +OscValue::OscValue(char typeTag, ByteBuffer* packet, qint32 pos) +: mPacket(packet) +, mTag(typeTag) +, mPos(pos) +{ +} + +char OscValue::getTag() +{ + return mTag; +} + +/** */ +bool OscValue::isArrayBegin() +{ + return false; +} + +/** */ +bool OscValue::isArrayEnd() +{ + return false; +} + +/** */ +bool OscValue::isFalse() +{ + return false; +} + +/** */ +bool OscValue::isInfinitum() +{ + return false; +} + +/** */ +bool OscValue::isNil() +{ + return false; +} + +/** */ +bool OscValue::isTrue() +{ + return false; +} + +/** */ +bool OscValue::toBoolean() +{ + return false; +} + +/** */ +char OscValue::toChar() +{ + return getTag(); +} + +/** + * Returns the position of the next null character in the packet. + * + * @return the position. + */ +qint32 OscValue::getLastStringIdx(ByteBuffer* packet) +{ + // only check string for last 4th byte + qint32 pos = packet->getPosition(); + while (packet->get(pos) != 0) + pos += 1; + return pos; +} + +/** + * Returns the string located at the passed position in the packet buffer. + * + * @param pos The position were the string starts + * @return The read string. + */ +QByteArray OscValue::getString(ByteBuffer* packet, qint32 pos) +{ + try + { + packet->setPosition(pos); + qint32 end = getLastStringIdx(packet); + qint32 size = end - pos; + QByteArray bytes(size, 0); + packet->get(&bytes, 0, size); + + qint32 rem = 4 - ((size+1) % 4); + if (rem == 4) + rem = 0; + + packet->setPosition(pos + size + 1 + rem); + + return bytes; + } + catch (const QException& e) + { + throw e; + } +} + +QString OscValue::toString() +{ + return QString(getTag()); +} + +QString OscValue::toSymbol() +{ + return QString(getTag()); +} + +qint32 OscValue::toInteger() +{ + return (qint32)toLong(); +} + +float OscValue::toFloat() +{ + return (float)toDouble(); +} + +Midi OscValue::toMIDI() +{ + throw MidiConversionException(); +} + +RGBA OscValue::toRGBA() +{ + throw RgbaConversionException(); +} + +QDateTime OscValue::toTimetag() +{ + throw TimetagConversionException(); +} + diff --git a/CasterSoundboard/libs/osc/reader/types/Midi.h b/CasterSoundboard/libs/osc/reader/types/Midi.h new file mode 100644 index 0000000..2a01f60 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/Midi.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef MIDI_H_ +#define MIDI_H_ + +#include + +class OSC_API Midi +{ +private: + char mPort; + char mStatus; + char mData1; + char mData2; +public: + Midi() + { + mPort = 'm'; + mStatus = 'i'; + mData1 = 'd'; + mData2 = 'i'; + } + + Midi(const QByteArray& aByteArray) + { + mPort = aByteArray[0]; + mStatus = aByteArray[1]; + mData1 = aByteArray[2]; + mData2 = aByteArray[3]; + } + + Midi(char aPort, char aStatus, char aData1, char aData2) + { + mPort = aPort; + mStatus = aStatus; + mData1 = aData1; + mData2 = aData2; + } + + char getPort() const + { + return mPort; + } + + char getStatus() const + { + return mStatus; + } + + char getData1() const + { + return mData1; + } + + char getData2() const + { + return mData2; + } + + bool operator== (const Midi& m) const + { + return mData1 == m.mData1 + && mData2 == m.mData2 + && mPort == m.mPort + && mStatus == m.mStatus; + } +}; + + +#endif // MIDI_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscAddress.cpp b/CasterSoundboard/libs/osc/reader/types/OscAddress.cpp new file mode 100644 index 0000000..e617a27 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscAddress.cpp @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * Build a new OscAddress from the given location in packet. + * + * @param pos + * an address pattern string position. + */ +OscAddress::OscAddress(ByteBuffer* packet, qint32 pos) +: OscValue('\0', packet, pos) +{ + try + { + get(); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Returns the address pattern string. + * + * @return a string + */ +QString OscAddress::get() +{ + try + { + return OscValue::getString(mPacket, mPos); + } + catch (const QException& e) + { + throw e; + } +} + +bool OscAddress::toBoolean() +{ + throw BooleanConversionException(); +} + +QByteArray OscAddress::toBytes() +{ + throw BytesConversionException(); +} + +char OscAddress::toChar() +{ + throw CharConversionException(); +} + +double OscAddress::toDouble() +{ + throw DoubleConversionException(); +} + +float OscAddress::toFloat() +{ + throw FloatConversionException(); +} + +qint32 OscAddress::toInteger() +{ + throw IntegerConversionException(); +} + +qint64 OscAddress::toLong() +{ + throw LongConversionException(); +} + + +QString OscAddress::toString() +{ + return get(); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscAddress.h b/CasterSoundboard/libs/osc/reader/types/OscAddress.h new file mode 100644 index 0000000..ad53dc9 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscAddress.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_ADDRESS_H_ +#define OSC_ADDRESS_H_ + +#include + +/** Class representing an OSC-Address-Pattern. */ +class OSC_API OscAddress : public OscValue +{ + +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual float toFloat(); + virtual qint32 toInteger(); + virtual qint64 toLong(); + virtual QString toString(); + + virtual ~OscAddress() {}; + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscAddress from the given location in packet. + * + * @param pos + * an address pattern string position. + */ + OscAddress(ByteBuffer* packet, qint32 pos); + + /** + * Returns the address pattern string. + * + * @return a string + */ + QString get(); + + friend class OscMessage; +}; + +#endif // OSC_ADDRESS_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscArrayBegin.cpp b/CasterSoundboard/libs/osc/reader/types/OscArrayBegin.cpp new file mode 100644 index 0000000..c9c34c5 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscArrayBegin.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include + +/** + * Build a new OscArrayBegin from the given location in packet. + * + * @param pos + * an ArrayBegin tag position. + */ +OscArrayBegin::OscArrayBegin(ByteBuffer* packet, qint32 pos) +: OscValue('[', packet, pos) +{ +} + +bool OscArrayBegin::isArrayBegin() +{ + return true; +} + +bool OscArrayBegin::toBoolean() +{ + return true; +} + +QByteArray OscArrayBegin::toBytes() +{ + return QByteArray(1, 1); +} + +double OscArrayBegin::toDouble() +{ + return 1; +} + +qint64 OscArrayBegin::toLong() +{ + return 1; +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscArrayBegin.h b/CasterSoundboard/libs/osc/reader/types/OscArrayBegin.h new file mode 100644 index 0000000..449dfa1 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscArrayBegin.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_ARRAY_BEGIN_H_ +#define OSC_ARRAY_BEGIN_H_ + +#include + +/** Class representing an OSC-Array-Begin. */ +class OSC_API OscArrayBegin : public OscValue +{ +public: + virtual bool isArrayBegin(); + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual double toDouble(); + virtual qint64 toLong(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscArrayBegin from the given location in packet. + * + * @param pos + * an ArrayBegin tag position. + */ + OscArrayBegin(ByteBuffer* packet, qint32 pos); + + friend class OscMessage; + +}; + +#endif // OSC_ARRAY_BEGIN_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscArrayEnd.cpp b/CasterSoundboard/libs/osc/reader/types/OscArrayEnd.cpp new file mode 100644 index 0000000..a44270f --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscArrayEnd.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include + +OscArrayEnd::OscArrayEnd(ByteBuffer* packet, qint32 pos) +: OscValue(']', packet, pos) +{ + +} + +bool OscArrayEnd::isArrayEnd() +{ + return true; +} + +QByteArray OscArrayEnd::toBytes() +{ + return QByteArray(1, 0); +} + +double OscArrayEnd::toDouble() +{ + return 0; +} + +qint64 OscArrayEnd::toLong() +{ + return 0; +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscArrayEnd.h b/CasterSoundboard/libs/osc/reader/types/OscArrayEnd.h new file mode 100644 index 0000000..4c8febb --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscArrayEnd.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_ARRAY_END_H_ +#define OSC_ARRAY_END_H_ + +#include + +/** Class representing an OSC-Array-End. */ +class OSC_API OscArrayEnd : public OscValue +{ +public: + virtual bool isArrayEnd(); + virtual QByteArray toBytes(); + virtual double toDouble(); + virtual qint64 toLong(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscArrayEnd from the given location in packet. + * + * @param pos + * an ArrayEnd tag position. + */ + OscArrayEnd(ByteBuffer* packet, qint32 pos); + + friend class OscMessage; + +}; +#endif // OSC_ARRAY_END_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscBlob.cpp b/CasterSoundboard/libs/osc/reader/types/OscBlob.cpp new file mode 100644 index 0000000..aa5f79d --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscBlob.cpp @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +OscBlob::OscBlob(ByteBuffer* packet, qint32 pos) +: OscValue('b', packet, pos) +{ + try + { + get(); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Returns the blob data. + * + * @return a blob data. + */ +QByteArray& OscBlob::get() +{ + try + { + mBlobSize = mPacket->getInt(mPos); + + if (mBlobSize != 0) + { + mData = QByteArray(mBlobSize, 0); + mPacket->setPosition(mPos + 4); + mPacket->get(&mData, 0, mBlobSize); + + qint32 rem = 4 - (mBlobSize % 4); + if (rem == 4) + rem = 0; + + mPacket->setPosition(mPos + 4 + mBlobSize + rem); + } + + return mData; + } + catch (const QException& e) + { + throw e; + } +} + +bool OscBlob::toBoolean() +{ + return (get().length() != 0); +} + +QByteArray OscBlob::toBytes() +{ + return get(); +} + +char OscBlob::toChar() +{ + throw CharConversionException(); +} + +double OscBlob::toDouble() +{ + throw DoubleConversionException(); +} + +float OscBlob::toFloat() +{ + throw FloatConversionException(); +} + +qint32 OscBlob::toInteger() +{ + throw IntegerConversionException(); +} + +qint64 OscBlob::toLong() +{ + throw LongConversionException(); +} + +QString OscBlob::toString() +{ + throw StringConversionException(); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscBlob.h b/CasterSoundboard/libs/osc/reader/types/OscBlob.h new file mode 100644 index 0000000..f580bcc --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscBlob.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_BLOB_H_ +#define OSC_BLOB_H_ + +#include + +/** Class representing an OSC-Blob. */ +class OSC_API OscBlob : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual float toFloat(); + virtual qint32 toInteger(); + virtual qint64 toLong(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscBlob from the given location in packet. + * + * @param pos + * the Blob byte array position. + */ + OscBlob(ByteBuffer* packet, qint32 pos); + + /** + * Returns the blob data. + * + * @return a blob data. + */ + QByteArray& get(); + + QByteArray mData; + qint32 mBlobSize; + + friend class OscMessage; + +}; + +#endif // OSC_BLOB_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscChar.cpp b/CasterSoundboard/libs/osc/reader/types/OscChar.cpp new file mode 100644 index 0000000..68515b2 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscChar.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include + +/** + * Build a new OscChar from the given location in packet. + * + * @param pos + * the char value position. + */ +OscChar::OscChar(ByteBuffer* packet, qint32 pos) +: OscValue('c', packet, pos) +{ + mPacket->getInt(); +} + +/** + * Returns the char value. + * + * @return a char value. + */ +qint32 OscChar::get() +{ + return mPacket->getInt(mPos); +} + +bool OscChar::toBoolean() +{ + return (get() != 0); +} + +QByteArray OscChar::toBytes() +{ + return QByteArray(1, (char)get()); +} + +char OscChar::toChar() +{ + return get(); +} + +double OscChar::toDouble() +{ + return get(); +} + +qint64 OscChar::toLong() +{ + return get(); +} + +QString OscChar::toString() +{ + return QChar(get()); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscChar.h b/CasterSoundboard/libs/osc/reader/types/OscChar.h new file mode 100644 index 0000000..bd7eb4f --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscChar.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_CHAR_H_ +#define OSC_CHAR_H_ + +#include + +/** Class representing an OSC-char. */ +class OSC_API OscChar : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Returns the char value. + * + * @return a char value. + */ + qint32 get(); + + /** + * Build a new OscChar from the given location in packet. + * + * @param pos + * the char value position. + */ + OscChar(ByteBuffer* packet, qint32 pos); + + friend class OscMessage; +}; + +#endif // OSC_CHAR_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscDouble.cpp b/CasterSoundboard/libs/osc/reader/types/OscDouble.cpp new file mode 100644 index 0000000..ba1cab6 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscDouble.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include + +OscDouble::OscDouble(ByteBuffer* packet, qint32 pos) +: OscValue('d', packet, pos) +{ + mPacket->getDouble(); +} + +/** + * Returns the double value. + * + * @return a double value. + */ +double OscDouble::get() +{ + return mPacket->getDouble(mPos); +} + +bool OscDouble::toBoolean() +{ + return (get() != 0); +} + +QByteArray OscDouble::toBytes() +{ + double d = get(); + QByteArray bytes(8, 0); + bytes.insert(0, (char*)&d, 8); + return bytes; +} + +char OscDouble::toChar() +{ + double d = get(); + if (d > std::numeric_limits::min() && d < std::numeric_limits::max()) + return (char)get(); + else + throw CharConversionException(); +} + +double OscDouble::toDouble() +{ + return get(); +} + +qint64 OscDouble::toLong() +{ + return (qint64)get(); +} + +Midi OscDouble::toMIDI() +{ + return Midi(toBytes()); +} + +RGBA OscDouble::toRGBA() +{ + return RGBA(toBytes()); +} + +QString OscDouble::toString() +{ + return QString::number(get()); +} + +QDateTime OscDouble::toTimetag() +{ + NtpTimestamp ntp( *(qint32*)(toBytes().constData()), *(qint32*)(toBytes().constData() + 4)); + return NtpTimestamp::toDateTime(ntp); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscDouble.h b/CasterSoundboard/libs/osc/reader/types/OscDouble.h new file mode 100644 index 0000000..1f362d7 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscDouble.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_DOUBLE_H_ +#define OSC_DOUBLE_H_ + +#include + +/** Class representing an OSC-double. */ +class OSC_API OscDouble : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QString toString(); + virtual QDateTime toTimetag(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscDouble from the given location in packet. + * + * @param pos + * the double value position. + */ + OscDouble(ByteBuffer* packet, qint32 pos); + + /** + * Returns the double value. + * + * @return a double value. + */ + double get(); + + friend class OscMessage; +}; + +#endif // OSC_DOUBLE_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscFalse.cpp b/CasterSoundboard/libs/osc/reader/types/OscFalse.cpp new file mode 100644 index 0000000..07341f9 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscFalse.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include + +OscFalse::OscFalse(ByteBuffer* packet, qint32 pos) +: OscValue('F', packet, pos) +{ +} + +bool OscFalse::isFalse() +{ + return true; +} + +QByteArray OscFalse::toBytes() +{ + return QByteArray(1, 0); +} + +double OscFalse::toDouble() +{ + return 0.0; +} + + +qint64 OscFalse::toLong() +{ + return 0; +} + + +QString OscFalse::toString() +{ + return "FALSE"; +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscFalse.h b/CasterSoundboard/libs/osc/reader/types/OscFalse.h new file mode 100644 index 0000000..21a34de --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscFalse.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_FALSE_H_ +#define OSC_FALSE_H_ + +#include + +/** Class representing an OSC-FALSE tag. */ +class OSC_API OscFalse : public OscValue +{ +public: + virtual bool isFalse(); + virtual QByteArray toBytes(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + OscFalse(ByteBuffer* packet, qint32 pos); + + friend class OscMessage; +}; + +#endif // OSC_FALSE_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscFloat.cpp b/CasterSoundboard/libs/osc/reader/types/OscFloat.cpp new file mode 100644 index 0000000..84e7ae1 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscFloat.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include + +OscFloat::OscFloat(ByteBuffer* packet, qint32 pos) +: OscValue('f', packet, pos) +{ + mPacket->getFloat(); +} + +float OscFloat::get() +{ + return mPacket->getFloat(mPos); +} + +bool OscFloat::toBoolean() +{ + return (get() != 0); +} + +QByteArray OscFloat::toBytes() +{ + float f = get(); + QByteArray bytes(4, 0); + bytes.insert(0, (char*)&f, 4); + return bytes; +} + +char OscFloat::toChar() +{ + float f = get(); + if (f > std::numeric_limits::min() && f < std::numeric_limits::max()) + return (char)get(); + else + throw CharConversionException(); +} + +double OscFloat::toDouble() +{ + return get(); +} + +qint64 OscFloat::toLong() +{ + return (qint64)get(); +} + +Midi OscFloat::toMIDI() +{ + return Midi(toBytes()); +} + +RGBA OscFloat::toRGBA() +{ + return RGBA(toBytes()); +} + +QString OscFloat::toString() +{ + return QString::number(get()); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscFloat.h b/CasterSoundboard/libs/osc/reader/types/OscFloat.h new file mode 100644 index 0000000..a2254d2 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscFloat.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_FLOAT_H_ +#define OSC_FLOAT_H_ + +#include + +/** Class representing an OSC-Float value. */ +class OSC_API OscFloat : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscFloat from the given location in packet. + * + * @param pos + * the float value position. + */ + OscFloat(ByteBuffer* packet, qint32 pos); + + /** + * Returns the float value. + * + * @return a float value. + */ + float get(); + + friend class OscMessage; +}; + +#endif // OSC_FLOAT_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscInfinitum.cpp b/CasterSoundboard/libs/osc/reader/types/OscInfinitum.cpp new file mode 100644 index 0000000..e3f7302 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscInfinitum.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include + +/** + * Build a new OscInfinitum from the given location in packet. + * + * @param pos + * the Infinitum tag position. + */ +OscInfinitum::OscInfinitum(ByteBuffer* packet, qint32 pos) +: OscValue('I', packet, pos) +{ +} + +bool OscInfinitum::isInfinitum() +{ + return true; +} + +bool OscInfinitum::toBoolean() +{ + return true; +} + +QByteArray OscInfinitum::toBytes() +{ + return QByteArray(1, std::numeric_limits::infinity()); +} + +char OscInfinitum::toChar() +{ + return std::numeric_limits::infinity(); +} + +double OscInfinitum::toDouble() +{ + return std::numeric_limits::infinity(); +} + +float OscInfinitum::toFloat() +{ + return std::numeric_limits::infinity(); +} + +qint32 OscInfinitum::toInteger() +{ + return std::numeric_limits::infinity(); +} + +qint64 OscInfinitum::toLong() +{ + return std::numeric_limits::infinity(); +} + +QString OscInfinitum::toString() +{ + return "INF"; +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscInfinitum.h b/CasterSoundboard/libs/osc/reader/types/OscInfinitum.h new file mode 100644 index 0000000..8cebc13 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscInfinitum.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_INFINITUM_H_ +#define OSC_INFINITUM_H_ + +#include + +/** Class representing an OSC-Infinitum tag. */ +class OSC_API OscInfinitum : public OscValue +{ +public: + virtual bool isInfinitum(); + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual float toFloat(); + virtual qint32 toInteger(); + virtual qint64 toLong(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscInfinitum from the given location in packet. + * + * @param pos + * the Infinitum tag position. + */ + OscInfinitum(ByteBuffer* packet, qint32 pos); + + friend class OscMessage; +}; + +#endif // OSC_INFINITUM_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscInteger.cpp b/CasterSoundboard/libs/osc/reader/types/OscInteger.cpp new file mode 100644 index 0000000..4cc0b86 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscInteger.cpp @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include + +OscInteger::OscInteger(ByteBuffer* packet, qint32 pos) +: OscValue('i', packet, pos) +{ + mPacket->getInt(); +} + +qint32 OscInteger::get() +{ + return mPacket->getInt(mPos); +} + +bool OscInteger::toBoolean() +{ + return (get() != 0); +} + +QByteArray OscInteger::toBytes() +{ + qint32 i = get(); + QByteArray bytes(4, 0); + bytes.insert(0, (char*)&i, 4); + return bytes; +} + +char OscInteger::toChar() +{ + qint32 i = get(); + if (i > std::numeric_limits::min() && i < std::numeric_limits::max()) + return (char)get(); + else + throw CharConversionException(); +} + +double OscInteger::toDouble() +{ + return get(); +} + +qint64 OscInteger::toLong() +{ + return get(); +} + +Midi OscInteger::toMIDI() +{ + return Midi(toBytes()); +} + +RGBA OscInteger::toRGBA() +{ + return RGBA(toBytes()); +} + +QString OscInteger::toString() +{ + return QString::number(get()); +} + diff --git a/CasterSoundboard/libs/osc/reader/types/OscInteger.h b/CasterSoundboard/libs/osc/reader/types/OscInteger.h new file mode 100644 index 0000000..2b4682c --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscInteger.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_INTEGER_H_ +#define OSC_INTEGER_H_ + +#include + +/** + * Class representing an OSC-int32. + */ +class OSC_API OscInteger : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscInteger from the given location in packet. + * + * @param pos + * the int32 value position. + */ + OscInteger(ByteBuffer* packet, qint32 pos); + + /** + * Returns the int32 value. + * + * @return an qint32 value. + */ + qint32 get(); + + friend class OscMessage; +}; + +#endif // OSC_INTEGER_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscLong.cpp b/CasterSoundboard/libs/osc/reader/types/OscLong.cpp new file mode 100644 index 0000000..88319d9 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscLong.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include + +OscLong::OscLong(ByteBuffer* packet, qint32 pos) +: OscValue('h', packet, pos) +{ + mPacket->getLong(); +} + +/** + * Returns the int64 value. + * + * @return a long value. + */ +qint64 OscLong::get() +{ + return mPacket->getLong(mPos); +} + +bool OscLong::toBoolean() +{ + return (get() != 0); +} + +QByteArray OscLong::toBytes() +{ + qint64 l = get(); + QByteArray bytes(8, 0); + bytes.insert(0, (char*)&l, 8); + return bytes; +} + +char OscLong::toChar() +{ + qint64 l = get(); + if (l > std::numeric_limits::min() && l < std::numeric_limits::max()) + return (char)get(); + else + throw CharConversionException(); +} + +double OscLong::toDouble() +{ + return get(); +} + +qint64 OscLong::toLong() +{ + return get(); +} + +Midi OscLong::toMIDI() +{ + return Midi(toBytes()); +} + +RGBA OscLong::toRGBA() +{ + return RGBA(toBytes()); +} + +QString OscLong::toString() +{ + return QString::number(get()); +} + +QDateTime OscLong::toTimetag() +{ + NtpTimestamp ntp( *(qint32*)(toBytes().constData()), *(qint32*)(toBytes().constData() + 4)); + return NtpTimestamp::toDateTime(ntp); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscLong.h b/CasterSoundboard/libs/osc/reader/types/OscLong.h new file mode 100644 index 0000000..5b3b898 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscLong.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_LONG_H_ +#define OSC_LONG_H_ + +#include + +/** Class representing an OSC-int64 value. */ +class OSC_API OscLong : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QString toString(); + virtual QDateTime toTimetag(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscInt64 from the given location in packet. + * + * @param pos + * the int64 value position. + */ + OscLong(ByteBuffer* packet, qint32 pos); + + /** + * Returns the long value. + * + * @return a long value. + */ + qint64 get(); + + friend class OscMessage; +}; + +#endif // OSC_LONG_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscMidi.cpp b/CasterSoundboard/libs/osc/reader/types/OscMidi.cpp new file mode 100644 index 0000000..4a52c36 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscMidi.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include + +/** + * Build a new OscMidi from the given location in packet. + * + * @param pos + * the MIDI message position. + */ +OscMidi::OscMidi(ByteBuffer* packet, qint32 pos) +: OscValue('m', packet, pos) +{ + mPacket->getInt(); +} + +/** + * Returns the MIDI message value. + * + * @return an qint32 value. + */ +QByteArray OscMidi::get() +{ + QByteArray bytes(4, 0); + mPacket->setPosition(mPos); + mPacket->get(&bytes); + return bytes; +} + +bool OscMidi::toBoolean() +{ + return (mPacket->getInt(mPos) != 0); +} + +QByteArray OscMidi::toBytes() +{ + return get(); +} + +char OscMidi::toChar() +{ + throw CharConversionException(); +} + +float OscMidi::toFloat() +{ + throw FloatConversionException(); +} + +double OscMidi::toDouble() +{ + throw DoubleConversionException(); +} + +qint64 OscMidi::toLong() +{ + return mPacket->getInt(mPos); +} + +Midi OscMidi::toMIDI() +{ + return Midi(get()); +} + +RGBA OscMidi::toRGBA() +{ + return RGBA(get()); +} + +QString OscMidi::toString() +{ + return QString::number(mPacket->getInt(mPos),16); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscMidi.h b/CasterSoundboard/libs/osc/reader/types/OscMidi.h new file mode 100644 index 0000000..994cc20 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscMidi.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_MIDI_H_ +#define OSC_MIDI_H_ + +#include + +/** Class representing an OSC-Midi message. */ +class OSC_API OscMidi : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual float toFloat(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscMidi from the given location in packet. + * + * @param pos + * the MIDI message position. + */ + OscMidi(ByteBuffer* packet, qint32 pos); + + /** + * Returns the MIDI message value. + * + * @return an qint32 value. + */ + QByteArray get(); + + friend class OscMessage; + +}; + +#endif // OSC_MIDI_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscNil.cpp b/CasterSoundboard/libs/osc/reader/types/OscNil.cpp new file mode 100644 index 0000000..c7a312f --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscNil.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include + +/** + * Build a new OscNil from the given location in packet. + * + * @param pos + * the Nil tag position. + */ +OscNil::OscNil(ByteBuffer* packet, qint32 pos) +: OscValue('N', packet, pos) +{ +} + +bool OscNil::isNil() +{ + return true; +} + +char OscNil::toChar() +{ + return 0; +} + +QByteArray OscNil::toBytes() +{ + return QByteArray(1, 0); +} + +double OscNil::toDouble() +{ + return 0; +} + +qint64 OscNil::toLong() +{ + return 0; +} + +QString OscNil::toString() +{ + return "NIL"; +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscNil.h b/CasterSoundboard/libs/osc/reader/types/OscNil.h new file mode 100644 index 0000000..338be57 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscNil.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_NIL_H_ +#define OSC_NIL_H_ + +#include + +/** Class representing an OSC-Nil tag. */ +class OSC_API OscNil : public OscValue +{ +public: + virtual bool isNil(); + virtual char toChar(); + virtual QByteArray toBytes(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscNil from the given location in packet. + * + * @param pos + * the Nil tag position. + */ + OscNil(ByteBuffer* packet, qint32 pos); + + friend class OscMessage; + +}; + +#endif // OSC_NIL_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscRGBA.cpp b/CasterSoundboard/libs/osc/reader/types/OscRGBA.cpp new file mode 100644 index 0000000..aa9c340 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscRGBA.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include + +/** + * Build a new OscRGBA from the given location in packet. + * + * @param pos + * the RGBA color value position. + */ +OscRGBA::OscRGBA(ByteBuffer* packet, qint32 pos) +: OscValue('r', packet, pos) +{ + mPacket->getInt(); +} + +/** + * Returns the RGBA color value. + * + * @return an qint32 value. + */ +QByteArray OscRGBA::get() +{ + qint32 i = mPacket->getInt(mPos); + QByteArray bytes(4, 0); + bytes.insert(0, (char*)&i, 4); + return bytes; +} + +bool OscRGBA::toBoolean() +{ + return (mPacket->getInt(mPos) != 0); +} + +QByteArray OscRGBA::toBytes() +{ + return get(); +} + +char OscRGBA::toChar() +{ + throw CharConversionException(); +} + +float OscRGBA::toFloat() +{ + throw FloatConversionException(); +} + +double OscRGBA::toDouble() +{ + throw DoubleConversionException(); +} + +qint64 OscRGBA::toLong() +{ + return mPacket->getInt(mPos); +} + +Midi OscRGBA::toMIDI() +{ + return Midi(get()); +} + +RGBA OscRGBA::toRGBA() +{ + return RGBA(get()); +} + +QString OscRGBA::toString() +{ + return QString::number(mPacket->getInt(mPos),16); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscRGBA.h b/CasterSoundboard/libs/osc/reader/types/OscRGBA.h new file mode 100644 index 0000000..f3cf8cb --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscRGBA.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_RGBA_H_ +#define OSC_RGBA_H_ + +#include + +/** Class representing an OSC-RGBA-color value. */ +class OSC_API OscRGBA : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual float toFloat(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscRGBA from the given location in packet. + * + * @param pos + * the RGBA color value position. + */ + + OscRGBA(ByteBuffer* packet, qint32 pos); + + /** + * Returns the RGBA color value. + * + * @return an qint32 value. + */ + QByteArray get(); + + friend class OscMessage; + +}; + +#endif // OSC_RGBA_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscString.cpp b/CasterSoundboard/libs/osc/reader/types/OscString.cpp new file mode 100644 index 0000000..ab9a91f --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscString.cpp @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include + +/** + * Build a new OscString from the given location in packet. + * + * @param pos + * the string position. + */ +OscString::OscString(ByteBuffer* packet, qint32 pos) +: OscValue('s', packet, pos) +{ + try + { + get(); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Returns the string value. + * + * @return a string value. + */ +QByteArray OscString::get() +{ + try + { + return OscValue::getString(mPacket, mPos); + } + catch (const QException& e) + { + throw e; + } +} + +bool OscString::toBoolean() +{ + return (get().length() != 0); +} + +QByteArray OscString::toBytes() +{ + return get(); +} + +char OscString::toChar() +{ + const QByteArray& value = get(); + if (value.length() > 1) + throw CharConversionException(); + else + return value.at(0); +} + +float OscString::toFloat() +{ + bool ok; + float f = get().toFloat(&ok); + if (ok) + return f; + else + throw FloatConversionException(); +} + +double OscString::toDouble() +{ + bool ok; + double d = get().toDouble(&ok); + if (ok) + return d; + else + throw DoubleConversionException(); +} + +qint32 OscString::toInteger() +{ + bool ok; + qint32 i = get().toInt(&ok); + if (ok) + return i; + else + throw IntegerConversionException(); +} + +qint64 OscString::toLong() +{ + bool ok; + qint64 h = get().toLongLong(&ok); + if (ok) + return h; + else + throw LongConversionException(); +} + +QString OscString::toString() +{ + return get(); +} + +QString OscString::toSymbol() +{ + return toString(); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscString.h b/CasterSoundboard/libs/osc/reader/types/OscString.h new file mode 100644 index 0000000..edb89cc --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscString.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_STRING_H_ +#define OSC_STRING_H_ + +#include + +/** Class representing an OSC-string value. */ +class OSC_API OscString : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual float toFloat(); + virtual double toDouble(); + virtual qint32 toInteger(); + virtual qint64 toLong(); + virtual QString toString(); + virtual QString toSymbol(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscString from the given location in packet. + * + * @param pos + * the string position. + */ + OscString(ByteBuffer* packet, qint32 pos); + + /** + * Returns the string value. + * + * @return a string value. + */ + QByteArray get(); + + friend class OscMessage; + +}; + +#endif // OSC_STRING_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscSymbol.cpp b/CasterSoundboard/libs/osc/reader/types/OscSymbol.cpp new file mode 100644 index 0000000..4ad5e02 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscSymbol.cpp @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include + +/** + * Build a new OscSymbol from the given location in packet. + * + * @param pos + * the Symbol string value position. + */ +OscSymbol::OscSymbol(ByteBuffer* packet, qint32 pos) +: OscValue('S', packet, pos) +{ + try + { + get(); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Returns the Symbol value. + * + * @return a string value. + */ +QByteArray OscSymbol::get() +{ + try + { + return OscValue::getString(mPacket, mPos); + } + catch (const QException& e) + { + throw e; + } +} + +bool OscSymbol::toBoolean() +{ + return (get().length() != 0); +} + +QByteArray OscSymbol::toBytes() +{ + return get(); +} + +char OscSymbol::toChar() +{ + const QByteArray& value = get(); + if (value.length() > 1) + throw CharConversionException(); + else + return value.at(0); +} + +float OscSymbol::toFloat() +{ + bool ok; + float f = get().toFloat(&ok); + if (ok) + return f; + else + throw FloatConversionException(); +} + +double OscSymbol::toDouble() +{ + bool ok; + double d = get().toDouble(&ok); + if (ok) + return d; + else + throw DoubleConversionException(); +} + +qint32 OscSymbol::toInteger() +{ + bool ok; + qint32 i = get().toInt(&ok); + if (ok) + return i; + else + throw IntegerConversionException(); +} + +qint64 OscSymbol::toLong() +{ + bool ok; + qint64 h = get().toLongLong(&ok); + if (ok) + return h; + else + throw LongConversionException(); +} + +QString OscSymbol::toString() +{ + return toSymbol(); +} + +QString OscSymbol::toSymbol() +{ + return get(); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscSymbol.h b/CasterSoundboard/libs/osc/reader/types/OscSymbol.h new file mode 100644 index 0000000..1a8ba7e --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscSymbol.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_SYMBOL_H_ +#define OSC_SYMBOL_H_ + +#include + +/** Class representing an OSC-symbol value. */ +class OSC_API OscSymbol : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual float toFloat(); + virtual double toDouble(); + virtual qint32 toInteger(); + virtual qint64 toLong(); + virtual QString toString(); + virtual QString toSymbol(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscSymbol from the given location in packet. + * + * @param pos + * the Symbol string value position. + */ + OscSymbol(ByteBuffer* packet, qint32 pos); + + /** + * Returns the Symbol value. + * + * @return a string value. + */ + QByteArray get(); + + friend class OscMessage; + +}; + +#endif // OSC_SYMBOL_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscTags.cpp b/CasterSoundboard/libs/osc/reader/types/OscTags.cpp new file mode 100644 index 0000000..907e88c --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscTags.cpp @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * Build a new OscTags from the given location in packet. + * + * @param pos + * the message type tags string position. + */ +OscTags::OscTags(ByteBuffer* packet, qint32 pos) +: OscValue('\0', packet, pos) +{ + try + { + get(); + } + catch (const QException& e) + { + throw e; + } +} + +/** + * Returns the OSC type tags associated to this message. + * + * @return a string value. + */ +QString OscTags::get() +{ + try + { + return OscValue::getString(mPacket, mPos); + } + catch (const QException& e) + { + throw e; + } +} + +bool OscTags::toBoolean() +{ + throw BooleanConversionException(); +} + +QByteArray OscTags::toBytes() +{ + throw BytesConversionException(); +} + +char OscTags::toChar() +{ + throw CharConversionException(); +} + +double OscTags::toDouble() +{ + throw DoubleConversionException(); +} + +float OscTags::toFloat() +{ + throw FloatConversionException(); +} + +qint32 OscTags::toInteger() +{ + throw IntegerConversionException(); +} + +qint64 OscTags::toLong() +{ + throw LongConversionException(); +} + +Midi OscTags::toMIDI() +{ + throw MidiConversionException(); +} + +RGBA OscTags::toRGBA() +{ + throw RgbaConversionException(); +} + +QString OscTags::toString() +{ + return get(); +} + +QString OscTags::toSymbol() +{ + throw SymbolConversionException(); +} + +QDateTime OscTags::toTimetag() +{ + throw TimetagConversionException(); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscTags.h b/CasterSoundboard/libs/osc/reader/types/OscTags.h new file mode 100644 index 0000000..3df82cf --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscTags.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_TAGS_H_ +#define OSC_TAGS_H_ + +#include + +/** Class representing the type tags string of this message. */ +class OSC_API OscTags: public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual float toFloat(); + virtual qint32 toInteger(); + virtual qint64 toLong(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QString toString(); + virtual QString toSymbol(); + virtual QDateTime toTimetag(); + +private: + /** + * Build a new OscTags from the given location in packet. + * + * @param pos + * the message type tags string position. + */ + OscTags(ByteBuffer* packet, qint32 pos); + + /** + * Returns the OSC type tags associated to this message. + * + * @return a string value. + */ + QString get(); + + friend class OscMessage; + +}; + +#endif // OSC_TAGS_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscTimeTag.cpp b/CasterSoundboard/libs/osc/reader/types/OscTimeTag.cpp new file mode 100644 index 0000000..68d5309 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscTimeTag.cpp @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * Build a new OscTimetag from the given location in packet. + * + * @param pos + * the time tag value position. + */ +OscTimetag::OscTimetag(ByteBuffer* packet, qint32 pos) +: OscValue('t', packet, pos) +{ + mPacket->getLong(); +} + +/** + * Returns the OSC Timetag value. + * + * @return a long value. + */ +NtpTimestamp OscTimetag::get() +{ + NtpTimestamp ntp( mPacket->getInt(mPos), mPacket->getInt(mPos + 4) ); + return ntp; +} + +bool OscTimetag::toBoolean() +{ + NtpTimestamp ntp( qToBigEndian(0), qToBigEndian(1) ); + return (get() != ntp); +} + +QByteArray OscTimetag::toBytes() +{ + NtpTimestamp ntp = get(); + QByteArray bytes(8, 0); + quint32 secs = ntp.rawSeconds(); + quint32 fracs = ntp.rawFraction(); + bytes.insert(0, (char*)&secs, 4); + bytes.insert(4, (char*)&fracs, 4); + return bytes; +} + +char OscTimetag::toChar() +{ + throw CharConversionException(); +} + +double OscTimetag::toDouble() +{ + throw DoubleConversionException(); +} + +float OscTimetag::toFloat() +{ + throw FloatConversionException(); +} + +qint32 OscTimetag::toInteger() +{ + throw IntegerConversionException(); +} + +qint64 OscTimetag::toLong() +{ + throw LongConversionException(); +} + +Midi OscTimetag::toMIDI() +{ + NtpTimestamp ntp = get(); + QByteArray bytes(4, 0); + quint32 secs = ntp.seconds(); + bytes.insert(0, (char*)&secs, 4); + return Midi(bytes); +} + +RGBA OscTimetag::toRGBA() +{ + NtpTimestamp ntp = get(); + QByteArray bytes(4, 0); + quint32 secs = ntp.seconds(); + bytes.insert(0, (char*)&secs, 4); + return RGBA(bytes); +} + +QString OscTimetag::toString() +{ + throw StringConversionException(); +} + +QDateTime OscTimetag::toTimetag() +{ + return NtpTimestamp::toDateTime(get()); +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscTimetag.h b/CasterSoundboard/libs/osc/reader/types/OscTimetag.h new file mode 100644 index 0000000..a7198ed --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscTimetag.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_Timetag_H_ +#define OSC_Timetag_H_ + +#include +#include + +/** Class representing an OSC-Timetag value. */ +class OSC_API OscTimetag : public OscValue +{ +public: + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual char toChar(); + virtual double toDouble(); + virtual float toFloat(); + virtual qint32 toInteger(); + virtual qint64 toLong(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QString toString(); + virtual QDateTime toTimetag(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscTimetag from the given location in packet. + * + * @param pos + * the time tag value position. + */ + OscTimetag(ByteBuffer* packet, qint32 pos); + + /** + * Returns the OSC Timetag value. + * + * @return a long value. + */ + NtpTimestamp get(); + + friend class OscMessage; +}; + +#endif // OSC_Timetag_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscTrue.cpp b/CasterSoundboard/libs/osc/reader/types/OscTrue.cpp new file mode 100644 index 0000000..fb9c358 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscTrue.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include + +/** + * Build a new OscTrue from the given location in packet. + * + * @param pos + * the TRUE tag position. + */ +OscTrue::OscTrue(ByteBuffer* packet, qint32 pos) +: OscValue('T', packet, pos) +{ +} + +bool OscTrue::isTrue() +{ + return true; +} + +bool OscTrue::toBoolean() +{ + return true; +} + +QByteArray OscTrue::toBytes() +{ + return QByteArray(1, 1); +} + +double OscTrue::toDouble() +{ + return 1.0; +} + +qint64 OscTrue::toLong() +{ + return 1; +} + +QString OscTrue::toString() +{ + return "TRUE"; +} diff --git a/CasterSoundboard/libs/osc/reader/types/OscTrue.h b/CasterSoundboard/libs/osc/reader/types/OscTrue.h new file mode 100644 index 0000000..c6d6cdc --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscTrue.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_TRUE_H_ +#define OSC_TRUE_H_ + +#include + +/** Class representing an OSC-TRUE tag. */ +class OSC_API OscTrue : public OscValue +{ +public: + virtual bool isTrue(); + virtual bool toBoolean(); + virtual QByteArray toBytes(); + virtual double toDouble(); + virtual qint64 toLong(); + virtual QString toString(); + +#ifndef BUILD_UNITTESTS +private: +#endif + /** + * Build a new OscTrue from the given location in packet. + * + * @param pos + * the TRUE tag position. + */ + OscTrue(ByteBuffer* packet, qint32 pos); + + /** */ + + + friend class OscMessage; + +}; + +#endif // OSC_TRUE_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/OscValue.h b/CasterSoundboard/libs/osc/reader/types/OscValue.h new file mode 100644 index 0000000..7123c15 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/OscValue.h @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef OSC_VALUE_H_ +#define OSC_VALUE_H_ + +#include +#include +#include +#include +#include +#include + +class ByteBuffer; + +/** + * Abstract class representing an OSC value. This class is derivated to + * manage all OSC common types. + */ +class OSC_API OscValue +{ +public: + + virtual char getTag(); + virtual bool isArrayBegin(); + virtual bool isArrayEnd(); + virtual bool isFalse(); + virtual bool isTrue(); + virtual bool isNil(); + virtual bool isInfinitum(); + virtual bool toBoolean(); + virtual QByteArray toBytes() = 0; + virtual char toChar(); + virtual float toFloat(); + virtual double toDouble() = 0; + virtual qint32 toInteger(); + virtual qint64 toLong() = 0; + virtual QString toString(); + virtual QString toSymbol(); + virtual Midi toMIDI(); + virtual RGBA toRGBA(); + virtual QDateTime toTimetag(); + + virtual ~OscValue() {}; + +protected: + + OscValue(char typeTag, ByteBuffer* packet, qint32 pos); + + + /** + * Returns the position of the next non-null character in the packet. + * + * @return the position. + */ + static qint32 getLastStringIdx(ByteBuffer* packet); + + /** + * Returns the string located at the passed position in the packet buffer. + * + * @param pos + * The position were the string starts + * @return The read string. + */ + static QByteArray getString(ByteBuffer* packet, qint32 pos); + + /** The buffer to read to. */ + ByteBuffer* mPacket; + + /** The Osc value type tag. */ + char mTag; + + qint32 mPos; +}; + +#endif // OSC_VALUE_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/RGBA.h b/CasterSoundboard/libs/osc/reader/types/RGBA.h new file mode 100644 index 0000000..e3357b0 --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/RGBA.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef RGBA_H_ +#define RGBA_H_ + +#include + +class OSC_API RGBA +{ +private: + qint32 mPacked; +public: + RGBA() + { + mPacked = 0; + } + + RGBA(const QByteArray& bytes) + { + mPacked = *(int*)bytes.constData(); + } + + RGBA(qint32 aPackedRGBA) + { + mPacked = aPackedRGBA; + } + + RGBA(char r, char g, char b, char a) + { + mPacked = 0; + mPacked &= r; + mPacked <<= 8; + mPacked &= g; + mPacked <<= 8; + mPacked &= b; + mPacked <<= 8; + mPacked &= a; + } + + qint32 getPackedRGBA() + { + return mPacked; + } + + void getUnpackedRGBA(qint32 &r, qint32 &g, qint32 &b, qint32 &a) + { + a = mPacked & 0xFF; + mPacked >>= 8; + b = mPacked & 0xFF; + mPacked >>= 8; + g = mPacked & 0xFF; + mPacked >>= 8; + r = mPacked & 0xFF; + } + + bool operator== (const RGBA& rgba) const + { + return mPacked == rgba.mPacked; + } +}; + +#endif // RGBA_H_ diff --git a/CasterSoundboard/libs/osc/reader/types/Symbol.h b/CasterSoundboard/libs/osc/reader/types/Symbol.h new file mode 100644 index 0000000..2660b0d --- /dev/null +++ b/CasterSoundboard/libs/osc/reader/types/Symbol.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef SYMBOL_H_ +#define SYMBOL_H_ + +#include +#include + +class OSC_API Symbol +{ +public: + Symbol(const QString& aString) : + mString(aString) + { + } + + QString getSymbol() const + { + return mString; + } + +private: + QString mString; +}; + +#endif /* SYMBOL_H_ */ diff --git a/CasterSoundboard/libs/tools/ByteBuffer.cpp b/CasterSoundboard/libs/tools/ByteBuffer.cpp new file mode 100644 index 0000000..910ce0d --- /dev/null +++ b/CasterSoundboard/libs/tools/ByteBuffer.cpp @@ -0,0 +1,975 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include + +#include + +ByteBuffer::ByteBuffer(QByteArray* src, bool owner) +: mArray(src) +, mOrder(ByteOrder::BIG_ENDIAN_DATA) +, mLimit(src->size()) +, mPosition(0) +, mOwner(owner) +{ +} + +ByteBuffer::~ByteBuffer() +{ + if (mOwner == true) + delete mArray; +} + +/** + * Creates a byte buffer based on a newly allocated byte array. + * + * @param capacity + * the capacity of the new buffer + * @return the created byte buffer. + * @throws IllegalArgumentException + * if {@code capacity < 0}. + */ +ByteBuffer* ByteBuffer::allocate(qint32 capacity) +{ + if (capacity < 0) + { + throw IllegalArgumentException(); + } + return ByteBuffer::wrap(new QByteArray(capacity, 0), true); +} + +/** + * Creates a new byte buffer by wrapping the given byte array. + *

+ * Calling this method has the same effect as + * {@code wrap(array, 0, array.length)}. + * + * @param array + * the byte array which the new buffer will be based on + * @return the created byte buffer. + */ +ByteBuffer* ByteBuffer::wrap(QByteArray* array, bool owner) +{ + return new ByteBuffer(array, owner); +} + +/** + * Creates a new byte buffer by wrapping the given byte array. + *

+ * The new buffer's position will be {@code start}, limit will be + * {@code start + len}, capacity will be the length of the array. + * + * @param array + * the byte array which the new buffer will be based on. + * @param start + * the start index, must not be negative and not greater than + * {@code array.length}. + * @param len + * the length, must not be negative and not greater than + * {@code array.length - start}. + * @return the created byte buffer. + * @exception IndexOutOfBoundsException + * if either {@code start} or {@code len} is invalid. + */ + +ByteBuffer* ByteBuffer::wrap(QByteArray* array, qint32 start, qint32 len) +{ + qint32 length = array->size(); + if ((start < 0) || (len < 0) || (start + len > length)) + throw IndexOutOfBoundsException(); + + ByteBuffer* buf = new ByteBuffer(array, false); + buf->mPosition = start; + buf->mLimit = start + len; + + return buf; +} + +/** + * Returns the byte array which this buffer is based on, if there is one. + * + * @return the byte array which this buffer is based on. + * @exception UnsupportedOperationException + * if this buffer is not based on an array. + */ +QByteArray* ByteBuffer::getByteArray() const +{ + return mArray; +} + +/** + * Returns this buffer's position.

+ * + * @return The position of this buffer + */ +qint32 ByteBuffer::getPosition() +{ + return mPosition; +} + +/** + * + */ +qint32 ByteBuffer::getCapacity() +{ + return mLimit; +} + +/** + * Sets this buffer's position. If the mark is defined and larger than the + * new position then it is discarded.

+ * + * @param newPosition + * The new position value; must be non-negative + * and no larger than the current limit + * + * @return This buffer + * + * @throws IllegalArgumentException + * If the preconditions on newPosition do not hold + */ +ByteBuffer* ByteBuffer::setPosition(qint32 newPosition) +{ + if ((newPosition > mLimit) || (newPosition < 0)) + throw IllegalArgumentException(); + mPosition = newPosition; + return this; +} + +/** + * Compares the remaining bytes of this buffer to another byte buffer's + * remaining bytes. + * + * @param otherBuffer + * another byte buffer. + * @return a negative value if this is less than {@code other}; 0 if this + * equals to {@code other}; a positive value if this is greater + * than {@code other}. + * @exception ClassCastException + * if {@code other} is not a byte buffer. + */ +qint32 ByteBuffer::compareTo(ByteBuffer* otherBuffer) +{ + qint32 compareRemaining = (getRemaining() < otherBuffer->getRemaining()) ? getRemaining() : otherBuffer->getRemaining(); + qint32 thisPos = mPosition; + qint32 otherPos = otherBuffer->mPosition; + char thisByte, otherByte; + while (compareRemaining > 0) + { + thisByte = get(thisPos); + otherByte = otherBuffer->get(otherPos); + if (thisByte != otherByte) + { + return thisByte < otherByte ? -1 : 1; + } + thisPos++; + otherPos++; + compareRemaining--; + } + return getRemaining() - otherBuffer->getRemaining(); +} + +/** + * Returns the byte at the current position and increases the position by 1. + * + * @return the byte at the current position. + * @exception BufferUnderflowException + * if the position is equal or greater than limit. + */ +char ByteBuffer::get() +{ + return (mArray->data()[mPosition++]); +} + +/** + * Reads bytes from the current position into the specified byte array and + * increases the position by the number of bytes read. + *

+ * Calling this method has the same effect as + * {@code get(dest, 0, dest.length)}. + * + * @param dest + * the destination byte array. + * @return this buffer. + * @exception BufferUnderflowException + * if {@code dest.length} is greater than {@code remaining()}. + */ +ByteBuffer* ByteBuffer::get(QByteArray* dest) +{ + try + { + return get(dest, 0, dest->length()); + } + catch (const IndexOutOfBoundsException& e) + { + throw e; + } + catch (const BufferUnderflowException& e) + { + throw e; + } +} + +/** + * Reads bytes from the current position into the specified byte array, + * starting at the specified offset, and increases the position by the + * number of bytes read. + * + * @param dest + * the target byte array. + * @param off + * the offset of the byte array, must not be negative and + * not greater than {@code dest.length}. + * @param len + * the number of bytes to read, must not be negative and not + * greater than {@code dest.length - off} + * @return this buffer. + * @exception IndexOutOfBoundsException + * if either {@code off} or {@code len} is invalid. + * @exception BufferUnderflowException + * if {@code len} is greater than {@code remaining()}. + */ +ByteBuffer* ByteBuffer::get(QByteArray* dest, qint32 off, qint32 len) +{ + qint32 length = dest->length(); + if ((off < 0) || (len < 0) || (off + len > length)) + throw IndexOutOfBoundsException(); + + if (len > getRemaining()) + throw BufferUnderflowException(); + + dest->replace(off, len, mArray->data() + mPosition, len); + mPosition += len; + return this; +} + +/** + * Returns the byte at the specified index and does not change the position. + * + * @param index + * the index, must not be negative and less than limit. + * @return the byte at the specified index. + * @exception IndexOutOfBoundsException + * if index is invalid. + */ +char ByteBuffer::get(qint32 index) +{ + char* s = mArray->data(); + return s[index]; +} + +/** + * Returns the char at the current position and increases the position by 2. + *

+ * The 2 bytes starting at the current position are composed into a char + * according to the current byte order and returned. + * + * @return the char at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 2}. + */ +char ByteBuffer::getChar() +{ + return getChar(mPosition++); +} + +/** + * Returns the char at the specified index. + *

+ * The 2 bytes starting from the specified index are composed into a char + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 2}. + * @return the char at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +char ByteBuffer::getChar(qint32 index) +{ + return get(index); +} + +/** + * Returns the double at the current position and increases the position by + * 8. + *

+ * The 8 bytes starting from the current position are composed into a double + * according to the current byte order and returned. + * + * @return the double at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 8}. + */ +double ByteBuffer::getDouble() +{ + qint64 l = getLong(); + qint64* _l = &l; + double* _d = (double*)_l; + return *_d; +} + +/** + * Returns the double at the specified index. + *

+ * The 8 bytes starting at the specified index are composed into a double + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 8}. + * @return the double at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +double ByteBuffer::getDouble(qint32 index) +{ + qint64 l = getLong(index); + qint64* _l = &l; + double* _d = (double*)_l; + return *_d; +} + +/** + * Returns the float at the current position and increases the position by + * 4. + *

+ * The 4 bytes starting at the current position are composed into a float + * according to the current byte order and returned. + * + * @return the float at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 4}. + */ +float ByteBuffer::getFloat() +{ + qint32 i = getInt(); + qint32* _i = &i; + float* _f = (float*)_i; + return *_f; +} + +/** + * Returns the float at the specified index. + *

+ * The 4 bytes starting at the specified index are composed into a float + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 4}. + * @return the float at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +float ByteBuffer::getFloat(qint32 index) +{ + qint32 i = getInt(index); + qint32* _i = &i; + float* _f = (float*)_i; + return *_f; +} + +/** + * Returns the qint32 at the current position and increases the position by 4. + *

+ * The 4 bytes starting at the current position are composed into a qint32 + * according to the current byte order and returned. + * + * @return the qint32 at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 4}. + */ +qint32 ByteBuffer::getInt() +{ + qint32 pos = mPosition; + mPosition += 4; + return getInt(pos); +} + +/** + * Returns the qint32 at the specified index. + *

+ * The 4 bytes starting at the specified index are composed into a qint32 + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 4}. + * @return the qint32 at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +qint32 ByteBuffer::getInt(qint32 index) +{ + qint32 data = *(qint32*)(mArray->data() + index); + if (mOrder == ByteOrder::endianness()) + return data; + else + return ((((data)& 0xff000000) >> 24) | (((data)& 0x00ff0000) >> 8) | (((data)& 0x0000ff00) << 8) + | (((data)& 0x000000ff) << 24)); +} + +/** + * Returns the long at the current position and increases the position by 8. + *

+ * The 8 bytes starting at the current position are composed into a long + * according to the current byte order and returned. + * + * @return the long at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 8}. + */ +qint64 ByteBuffer::getLong() +{ + qint32 pos = mPosition; + mPosition += 8; + return getLong(pos); +} + +/** + * Returns the long at the specified index. + *

+ * The 8 bytes starting at the specified index are composed into a long + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 8}. + * @return the long at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +qint64 ByteBuffer::getLong(qint32 index) +{ + qint64 data = *(qint64*)(mArray->data() + index); + if (mOrder == ByteOrder::endianness()) + return data; + else + return ((((data)& 0xff00000000000000ull) >> 56) | (((data)& 0x00ff000000000000ull) >> 40) + | (((data)& 0x0000ff0000000000ull) >> 24) | (((data)& 0x000000ff00000000ull) >> 8) + | (((data)& 0x00000000ff000000ull) << 8) | (((data)& 0x0000000000ff0000ull) << 24) + | (((data)& 0x000000000000ff00ull) << 40) | (((data)& 0x00000000000000ffull) << 56)); +} + +/** + * Returns the short at the current position and increases the position by 2. + *

+ * The 2 bytes starting at the current position are composed into a short + * according to the current byte order and returned. + * + * @return the short at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 2}. + */ +short ByteBuffer::getShort() +{ + qint32 pos = mPosition; + mPosition += 2; + return getShort(pos); +} + +/** + * Returns the short at the specified index. + *

+ * The 2 bytes starting at the specified index are composed into a short + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 2}. + * @return the short at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +short ByteBuffer::getShort(qint32 index) +{ + short data = *(short*)(mArray->data() + index); + if (mOrder == ByteOrder::endianness()) + return data; + else + return ((((data) >> 8) & 0xff) | (((data)& 0xff) << 8)); +} + +/** + * Calculates this buffer's hash code from the remaining chars. The + * position, limit, capacity and mark don't affect the hash code. + * + * @return the hash code calculated from the remaining bytes. + */ +qint32 ByteBuffer::hashCode() +{ + qint32 myPosition = mPosition; + qint32 hash = 0; + while (myPosition < mLimit) + { + hash = hash + get(myPosition++); + } + return hash; +} + +/** + * Returns the byte order used by this buffer when converting bytes from/to + * other primitive types. + *

+ * The default byte order of byte buffer is always + * {@link ByteOrder#BIG_ENDIAN BIG_ENDIAN} + * + * @return the byte order used by this buffer when converting bytes from/to + * other primitive types. + */ +ByteOrder::Endianness ByteBuffer::getOrder() +{ + return mOrder; +} + +/** + * Sets the byte order of this buffer. + * + * @param byteOrder + * the byte order to set. If {@code null} then the order + * will be {@link ByteOrder#LITTLE_ENDIAN LITTLE_ENDIAN}. + * @return this buffer. + * @see ByteOrder + */ +ByteBuffer* ByteBuffer::setOrder(ByteOrder::Endianness byteOrder) +{ + mOrder = byteOrder; + return this; +} + +/** + * Writes the given byte to the current position and increases the position + * by 1. + * + * @param b + * the byte to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is equal or greater than limit. + */ +ByteBuffer* ByteBuffer::put(char b) +{ + mArray->data()[mPosition++] = b; + return this; +} + +/** + * Writes bytes in the given byte array to the current position and + * increases the position by the number of bytes written. + *

+ * Calling this method has the same effect as + * {@code put(src, 0, src.length)}. + * + * @param src + * the source byte array. + * @return this buffer. + * @exception BufferOverflowException + * if {@code remaining()} is less than {@code src.length}. + */ +ByteBuffer* ByteBuffer::put(QByteArray* src) +{ + try + { + return put(src, 0, src->length()); + } + catch (const IndexOutOfBoundsException& e) + { + throw e; + } + catch (const BufferUnderflowException& e) + { + throw e; + } +} + +/** + * Writes bytes in the given byte array, starting from the specified offset, + * to the current position and increases the position by the number of bytes + * written. + * + * @param src + * the source byte array. + * @param off + * the offset of byte array, must not be negative and not greater + * than {@code src.length}. + * @param len + * the number of bytes to write, must not be negative and not + * greater than {@code src.length - off}. + * @return this buffer. + * @exception BufferOverflowException + * if {@code remaining()} is less than {@code len}. + * @exception IndexOutOfBoundsException + * if either {@code off} or {@code len} is invalid. + */ +ByteBuffer* ByteBuffer::put(QByteArray* src, qint32 off, qint32 len) +{ + qint32 length = src->length(); + if ((off < 0) || (len < 0) || (off + len > length)) + { + throw IndexOutOfBoundsException(); + } + + if (len > getRemaining()) + { + throw BufferOverflowException(); + } + + memcpy((char*)(mArray->constData()) + mPosition + off, src->constData(), len); + mPosition += len; + return this; +} + +/** + * Writes all the remaining bytes of the {@code src} byte buffer to this + * buffer's current position, and increases both buffers' position by the + * number of bytes copied. + * + * @param src + * the source byte buffer. + * @return this buffer. + * @exception BufferOverflowException + * if {@code src.remaining()} is greater than this buffer's + * {@code remaining()}. + * @exception IllegalArgumentException + * if {@code src} is this buffer. + */ +ByteBuffer * ByteBuffer::put(ByteBuffer * src) +{ + if (src == this) + { + throw IllegalArgumentException(); + } + if (src->getRemaining() > getRemaining()) + { + throw BufferOverflowException(); + } + QByteArray* contents = new QByteArray(src->getRemaining(), 0); + src->get(contents); + put(contents); + delete contents; + return this; +} + +/** + * Write a byte to the specified index of this buffer without changing the + * position. + * + * @param index + * the index, must not be negative and less than the limit. + * @param b + * the byte to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +ByteBuffer* ByteBuffer::put(qint32 index, char b) +{ + mArray->data()[index] = b; + return this; +} + +/** + * Writes the given char to the current position and increases the position + * by 2. + *

+ * The char is converted to bytes using the current byte order. + * + * @param value + * the char to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 2}. + */ +ByteBuffer* ByteBuffer::putChar(char value) +{ + return put(value); +} + +/** + * Writes the given char to the specified index of this buffer. + *

+ * The char is converted to bytes using the current byte order. The position + * is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 2}. + * @param value + * the char to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +ByteBuffer* ByteBuffer::putChar(qint32 index, char value) +{ + return put(index, value); +} + +/** + * Writes the given double to the current position and increases the position + * by 8. + *

+ * The double is converted to bytes using the current byte order. + * + * @param value + * the double to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 8}. + */ +ByteBuffer* ByteBuffer::putDouble(double value) +{ + double* _v = &value; + qint64* _d = (qint64*)_v; + return putLong(*_d); +} + +/** + * Writes the given double to the specified index of this buffer. + *

+ * The double is converted to bytes using the current byte order. The + * position is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 8}. + * @param value + * the double to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +ByteBuffer* ByteBuffer::putDouble(qint32 index, double value) +{ + double* _v = &value; + qint64* _d = (qint64*)_v; + return putLong(index, *_d); +} + +/** + * Writes the given float to the current position and increases the position + * by 4. + *

+ * The float is converted to bytes using the current byte order. + * + * @param value + * the float to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 4}. + */ +ByteBuffer* ByteBuffer::putFloat(float value) +{ + float* _v = &value; + qint32* _d = (qint32*)_v; + return putInt(*_d); +} + +/** + * Writes the given float to the specified index of this buffer. + *

+ * The float is converted to bytes using the current byte order. The + * position is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 4}. + * @param value + * the float to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +ByteBuffer* ByteBuffer::putFloat(qint32 index, float value) +{ + float* _v = &value; + qint32* _d = (qint32*)_v; + return putInt(index, *_d); +} + +/** + * Writes the given qint32 to the current position and increases the position by + * 4. + *

+ * The qint32 is converted to bytes using the current byte order. + * + * @param value + * the qint32 to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 4}. + */ +ByteBuffer* ByteBuffer::putInt(qint32 value) +{ + qint32 pos = mPosition; + mPosition += 4; + return putInt(pos, value); +} + +/** + * Writes the given qint32 to the specified index of this buffer. + *

+ * The qint32 is converted to bytes using the current byte order. The position + * is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 4}. + * @param value + * the qint32 to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +ByteBuffer* ByteBuffer::putInt(qint32 index, qint32 value) +{ + if (mOrder != ByteOrder::endianness()) + { + value = ((((value)& 0xff000000) >> 24) | (((value)& 0x00ff0000) >> 8) | (((value)& 0x0000ff00) << 8) + | (((value)& 0x000000ff) << 24)); + } + (*(qint32*)(mArray->data() + index)) = value; + return this; +} + +/** + * Writes the given long to the current position and increases the position + * by 8. + *

+ * The long is converted to bytes using the current byte order. + * + * @param value + * the long to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 8}. + */ +ByteBuffer* ByteBuffer::putLong(qint64 value) +{ + qint32 pos = mPosition; + mPosition += 8; + return putLong(pos, value); +} + +/** + * Writes the given long to the specified index of this buffer. + *

+ * The long is converted to bytes using the current byte order. The position + * is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 8}. + * @param value + * the long to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +ByteBuffer* ByteBuffer::putLong(qint32 index, qint64 value) +{ + if (mOrder != ByteOrder::endianness()) + { + value = ((((value)& 0xff00000000000000ull) >> 56) + | (((value)& 0x00ff000000000000ull) >> 40) + | (((value)& 0x0000ff0000000000ull) >> 24) + | (((value)& 0x000000ff00000000ull) >> 8) + | (((value)& 0x00000000ff000000ull) << 8) + | (((value)& 0x0000000000ff0000ull) << 24) + | (((value)& 0x000000000000ff00ull) << 40) + | (((value)& 0x00000000000000ffull) << 56)); + } + (*(qint64*)(mArray->data() + index)) = value; + return this; +} + +/** + * Writes the given short to the current position and increases the position + * by 2. + *

+ * The short is converted to bytes using the current byte order. + * + * @param value + * the short to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 2}. + */ +ByteBuffer* ByteBuffer::putShort(short value) +{ + qint32 pos = mPosition; + mPosition += 2; + return putShort(pos, value); +} + +/** + * Writes the given short to the specified index of this buffer. + *

+ * The short is converted to bytes using the current byte order. The + * position is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 2}. + * @param value + * the short to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ +ByteBuffer* ByteBuffer::putShort(qint32 index, short value) +{ + if (mOrder != ByteOrder::endianness()) + { + value = ((((value) >> 8) & 0xff) | (((value)& 0xff) << 8)); + } + (*(qint64*)(mArray->data() + index)) = value; + return this; +} + +/** + * Returns the number of elements between the current position and the + * limit.

+ * + * @return The number of elements remaining in this buffer + */ +qint32 ByteBuffer::getRemaining() +{ + return mLimit - mPosition; +} + +/** + * + */ +void ByteBuffer::setOwner(bool owner) +{ + mOwner = owner; +} + diff --git a/CasterSoundboard/libs/tools/ByteBuffer.h b/CasterSoundboard/libs/tools/ByteBuffer.h new file mode 100644 index 0000000..b896b76 --- /dev/null +++ b/CasterSoundboard/libs/tools/ByteBuffer.h @@ -0,0 +1,698 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef BYTE_BUFFER_H_ +#define BYTE_BUFFER_H_ + +#include +#include +#include +#include +#include + +#include + +/** + * A buffer for bytes. + *

+ * A byte buffer can be created in either one of the following ways: + *

    + *
  • {@link #allocate(qint32) Allocate} a new byte array and create a buffer + * based on it;
  • + *
  • {@link #allocateDirect(qint32) Allocate} a memory block and create a direct + * buffer based on it;
  • + *
  • {@link #wrap(byte[]) Wrap} an existing byte array to create a new + * buffer.
  • + *
+ * + */ +class OSC_API ByteBuffer +{ +public: + /** + * Creates a byte buffer based on a newly allocated byte array. + * + * @param capacity + * the capacity of the new buffer + * @return the created byte buffer. + * @throws IllegalArgumentException + * if {@code capacity < 0}. + */ + static ByteBuffer* allocate(qint32 capacity); + + /** + * Creates a new byte buffer by wrapping the given byte array. + *

+ * Calling this method has the same effect as + * {@code wrap(array, 0, array.length)}. + * + * @param array + * the byte array which the new buffer will be based on + * @return the created byte buffer. + */ + static ByteBuffer* wrap(QByteArray* array, bool owner = false); + + /** + * Creates a new byte buffer by wrapping the given byte array. + *

+ * The new buffer's position will be {@code start}, limit will be + * {@code start + len}, capacity will be the length of the array. + * + * @param array + * the byte array which the new buffer will be based on. + * @param start + * the start index, must not be negative and not greater than + * {@code array.length}. + * @param len + * the length, must not be negative and not greater than + * {@code array.length - start}. + * @return the created byte buffer. + * @exception IndexOutOfBoundsException + * if either {@code start} or {@code len} is invalid. + */ + static ByteBuffer* wrap(QByteArray* array, qint32 start, qint32 len); + + /** + * Returns the byte array which this buffer is based on, if there is one. + * + * @return the byte array which this buffer is based on. + * @exception UnsupportedOperationException + * if this buffer is not based on an array. + */ + QByteArray* getByteArray() const; + + /** + * Returns this buffer's position.

+ * + * @return The position of this buffer + */ + qint32 getPosition(); + + /** + * Sets this buffer's position. If the mark is defined and larger than the + * new position then it is discarded.

+ * + * @param newPosition + * The new position value; must be non-negative + * and no larger than the current limit + * + * @return This buffer + * + * @throws IllegalArgumentException + * If the preconditions on newPosition do not hold + */ + ByteBuffer* setPosition(qint32 newPosition); + + /** + * Compares the remaining bytes of this buffer to another byte buffer's + * remaining bytes. + * + * @param otherBuffer + * another byte buffer. + * @return a negative value if this is less than {@code other}; 0 if this + * equals to {@code other}; a positive value if this is greater + * than {@code other}. + * @exception ClassCastException + * if {@code other} is not a byte buffer. + */ + qint32 compareTo(ByteBuffer* otherBuffer); + + /** + * Returns the byte at the current position and increases the position by 1. + * + * @return the byte at the current position. + * @exception BufferUnderflowException + * if the position is equal or greater than limit. + */ + char get(); + + /** + * Reads bytes from the current position into the specified byte array and + * increases the position by the number of bytes read. + *

+ * Calling this method has the same effect as + * {@code get(dest, 0, dest.length)}. + * + * @param dest + * the destination byte array. + * @return this buffer. + * @exception BufferUnderflowException + * if {@code dest.length} is greater than {@code remaining()}. + */ + ByteBuffer* get(QByteArray* dest); + + /** + * Reads bytes from the current position into the specified byte array, + * starting at the specified offset, and increases the position by the + * number of bytes read. + * + * @param dest + * the target byte array. + * @param off + * the offset of the byte array, must not be negative and + * not greater than {@code dest.length}. + * @param len + * the number of bytes to read, must not be negative and not + * greater than {@code dest.length - off} + * @return this buffer. + * @exception IndexOutOfBoundsException + * if either {@code off} or {@code len} is invalid. + * @exception BufferUnderflowException + * if {@code len} is greater than {@code remaining()}. + */ + ByteBuffer* get(QByteArray* dest, qint32 off, qint32 len); + + /** + * Returns the byte at the specified index and does not change the position. + * + * @param index + * the index, must not be negative and less than limit. + * @return the byte at the specified index. + * @exception IndexOutOfBoundsException + * if index is invalid. + */ + char get(qint32 index); + + /** + * Returns the char at the current position and increases the position by 2. + *

+ * The 2 bytes starting at the current position are composed into a char + * according to the current byte order and returned. + * + * @return the char at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 2}. + */ + char getChar(); + + /** + * Returns the char at the specified index. + *

+ * The 2 bytes starting from the specified index are composed into a char + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 2}. + * @return the char at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + char getChar(qint32 index); + + /** + * Returns the double at the current position and increases the position by + * 8. + *

+ * The 8 bytes starting from the current position are composed into a double + * according to the current byte order and returned. + * + * @return the double at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 8}. + */ + double getDouble(); + + /** + * Returns the double at the specified index. + *

+ * The 8 bytes starting at the specified index are composed into a double + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 8}. + * @return the double at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + double getDouble(qint32 index); + + /** + * Returns the float at the current position and increases the position by + * 4. + *

+ * The 4 bytes starting at the current position are composed into a float + * according to the current byte order and returned. + * + * @return the float at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 4}. + */ + float getFloat(); + + /** + * Returns the float at the specified index. + *

+ * The 4 bytes starting at the specified index are composed into a float + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 4}. + * @return the float at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + float getFloat(qint32 index); + + /** + * Returns the qint32 at the current position and increases the position by 4. + *

+ * The 4 bytes starting at the current position are composed into a qint32 + * according to the current byte order and returned. + * + * @return the qint32 at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 4}. + */ + qint32 getInt(); + + /** + * Returns the qint32 at the specified index. + *

+ * The 4 bytes starting at the specified index are composed into a qint32 + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 4}. + * @return the qint32 at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + qint32 getInt(qint32 index); + + /** + * Returns the long at the current position and increases the position by 8. + *

+ * The 8 bytes starting at the current position are composed into a long + * according to the current byte order and returned. + * + * @return the long at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 8}. + */ + qint64 getLong(); + + /** + * Returns the long at the specified index. + *

+ * The 8 bytes starting at the specified index are composed into a long + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 8}. + * @return the long at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + qint64 getLong(qint32 index); + + /** + * Returns the short at the current position and increases the position by 2. + *

+ * The 2 bytes starting at the current position are composed into a short + * according to the current byte order and returned. + * + * @return the short at the current position. + * @exception BufferUnderflowException + * if the position is greater than {@code limit - 2}. + */ + short getShort(); + + /** + * Returns the short at the specified index. + *

+ * The 2 bytes starting at the specified index are composed into a short + * according to the current byte order and returned. The position is not + * changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 2}. + * @return the short at the specified index. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + short getShort(qint32 index); + + /** + * Calculates this buffer's hash code from the remaining chars. The + * position, limit, capacity and mark don't affect the hash code. + * + * @return the hash code calculated from the remaining bytes. + */ + qint32 hashCode(); + + /** + * Returns the byte order used by this buffer when converting bytes from/to + * other primitive types. + *

+ * The default byte order of byte buffer is always + * {@link ByteOrder#BIG_ENDIAN BIG_ENDIAN} + * + * @return the byte order used by this buffer when converting bytes from/to + * other primitive types. + */ + ByteOrder::Endianness getOrder(); + + /** + * Sets the byte order of this buffer. + * + * @param byteOrder + * the byte order to set. If {@code null} then the order + * will be {@link ByteOrder#LITTLE_ENDIAN LITTLE_ENDIAN}. + * A call to this method does not convert allready pushed data. + * @return this buffer. + * @see ByteOrder + */ + ByteBuffer* setOrder(ByteOrder::Endianness byteOrder); + + /** + * Writes the given byte to the current position and increases the position + * by 1. + * + * @param b + * the byte to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is equal or greater than limit. + */ + ByteBuffer* put(char b); + + /** + * Writes bytes in the given byte array to the current position and + * increases the position by the number of bytes written. + *

+ * Calling this method has the same effect as + * {@code put(src, 0, src.length)}. + * + * @param src + * the source byte array. + * @return this buffer. + * @exception BufferOverflowException + * if {@code remaining()} is less than {@code src.length}. + */ + ByteBuffer* put(QByteArray* src); + + /** + * Writes bytes in the given byte array, starting from the specified offset, + * to the current position and increases the position by the number of bytes + * written. + * + * @param src + * the source byte array. + * @param off + * the offset of byte array, must not be negative and not greater + * than {@code src.length}. + * @param len + * the number of bytes to write, must not be negative and not + * greater than {@code src.length - off}. + * @return this buffer. + * @exception BufferOverflowException + * if {@code remaining()} is less than {@code len}. + * @exception IndexOutOfBoundsException + * if either {@code off} or {@code len} is invalid. + */ + ByteBuffer* put(QByteArray* src, qint32 off, qint32 len); + + /** + * Writes all the remaining bytes of the {@code src} byte buffer to this + * buffer's current position, and increases both buffers' position by the + * number of bytes copied. + * + * @param src + * the source byte buffer. + * @return this buffer. + * @exception BufferOverflowException + * if {@code src.remaining()} is greater than this buffer's + * {@code remaining()}. + * @exception IllegalArgumentException + * if {@code src} is this buffer. + */ + ByteBuffer* put(ByteBuffer* src); + + /** + * Write a byte to the specified index of this buffer without changing the + * position. + * + * @param index + * the index, must not be negative and less than the limit. + * @param b + * the byte to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + ByteBuffer* put(qint32 index, char b); + + /** + * Writes the given char to the current position and increases the position + * by 2. + *

+ * The char is converted to bytes using the current byte order. + * + * @param value + * the char to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 2}. + */ + ByteBuffer* putChar(char value); + + /** + * Writes the given char to the specified index of this buffer. + *

+ * The char is converted to bytes using the current byte order. The position + * is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 2}. + * @param value + * the char to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + ByteBuffer* putChar(qint32 index, char value); + + /** + * Writes the given double to the current position and increases the position + * by 8. + *

+ * The double is converted to bytes using the current byte order. + * + * @param value + * the double to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 8}. + */ + ByteBuffer* putDouble(double value); + + /** + * Writes the given double to the specified index of this buffer. + *

+ * The double is converted to bytes using the current byte order. The + * position is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 8}. + * @param value + * the double to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + ByteBuffer* putDouble(qint32 index, double value); + + /** + * Writes the given float to the current position and increases the position + * by 4. + *

+ * The float is converted to bytes using the current byte order. + * + * @param value + * the float to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 4}. + */ + ByteBuffer* putFloat(float value); + + /** + * Writes the given float to the specified index of this buffer. + *

+ * The float is converted to bytes using the current byte order. The + * position is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 4}. + * @param value + * the float to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + ByteBuffer* putFloat(qint32 index, float value); + + /** + * Writes the given qint32 to the current position and increases the position by + * 4. + *

+ * The qint32 is converted to bytes using the current byte order. + * + * @param value + * the qint32 to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 4}. + */ + ByteBuffer* putInt(qint32 value); + + /** + * Writes the given qint32 to the specified index of this buffer. + *

+ * The qint32 is converted to bytes using the current byte order. The position + * is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 4}. + * @param value + * the qint32 to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + ByteBuffer* putInt(qint32 index, qint32 value); + + /** + * Writes the given long to the current position and increases the position + * by 8. + *

+ * The long is converted to bytes using the current byte order. + * + * @param value + * the long to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 8}. + */ + ByteBuffer* putLong(qint64 value); + + /** + * Writes the given long to the specified index of this buffer. + *

+ * The long is converted to bytes using the current byte order. The position + * is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 8}. + * @param value + * the long to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + ByteBuffer* putLong(qint32 index, qint64 value); + + /** + * Writes the given short to the current position and increases the position + * by 2. + *

+ * The short is converted to bytes using the current byte order. + * + * @param value + * the short to write. + * @return this buffer. + * @exception BufferOverflowException + * if position is greater than {@code limit - 2}. + */ + ByteBuffer* putShort(short value); + + /** + * Writes the given short to the specified index of this buffer. + *

+ * The short is converted to bytes using the current byte order. The + * position is not changed. + * + * @param index + * the index, must not be negative and equal or less than + * {@code limit - 2}. + * @param value + * the short to write. + * @return this buffer. + * @exception IndexOutOfBoundsException + * if {@code index} is invalid. + */ + ByteBuffer* putShort(qint32 index, short value); + + /** + * Returns the number of elements between the current position and the + * limit.

+ * + * @return The number of elements remaining in this buffer + */ + qint32 getRemaining(); + + /** + * + */ + qint32 getCapacity(); + + /** + * + */ + void setOwner(bool owner); + + /** + * + */ + ~ByteBuffer(); + +private: + + ByteBuffer(QByteArray* src, bool owner); + + /** + * The byte order of this buffer, default is {@code BIG_ENDIAN}. + */ + QByteArray* mArray; + ByteOrder::Endianness mOrder; + qint32 mLimit; + qint32 mPosition; + bool mOwner; +}; + +#endif // BYTE_BUFFER_H_ diff --git a/CasterSoundboard/libs/tools/ByteOrder.cpp b/CasterSoundboard/libs/tools/ByteOrder.cpp new file mode 100644 index 0000000..6aa6b48 --- /dev/null +++ b/CasterSoundboard/libs/tools/ByteOrder.cpp @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include + +ByteOrder::Endianness ByteOrder::endianness() +{ + union + { + qint32 i; + char b[sizeof(qint32)]; + } u; + u.i = 0x01020304; + return (u.b[0] == 0x01) ? BIG_ENDIAN_DATA : LITTLE_ENDIAN_DATA; +} diff --git a/CasterSoundboard/libs/tools/ByteOrder.h b/CasterSoundboard/libs/tools/ByteOrder.h new file mode 100644 index 0000000..bd16338 --- /dev/null +++ b/CasterSoundboard/libs/tools/ByteOrder.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef BYTE_ORDER_H_ +#define BYTE_ORDER_H_ + +#include + +class OSC_API ByteOrder +{ +public: + /** + * \enum Endianness + * \brief specifies the endianness + */ + enum Endianness + { + BIG_ENDIAN_DATA, /**< Big endian */ + LITTLE_ENDIAN_DATA /**< Little endian */ + }; + + /** + * Returns the current endianness of the system + * + * \return the current endianness + */ + static Endianness endianness(); +}; + +#endif // BYTE_ORDER_H_ diff --git a/CasterSoundboard/libs/tools/NtpTimestamp.cpp b/CasterSoundboard/libs/tools/NtpTimestamp.cpp new file mode 100644 index 0000000..e8da919 --- /dev/null +++ b/CasterSoundboard/libs/tools/NtpTimestamp.cpp @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#include +#include + +const qint64 NtpTimestamp::january_1_1900 = -2208988800000ll; + +const QDateTime NtpTimestamp::IMMEDIATE = NtpTimestamp::getImmediateTime(); + +QDateTime +NtpTimestamp::getImmediateTime() +{ + /* Convert to local-endian. */ + qint64 seconds = 0; + qint64 fraction = qToBigEndian(1); + + /* Convert NTP timestamp to number of milliseconds passed since Jan 1 1900. */ + qint64 ntpMSecs = seconds * 1000 + (fraction * 1000) / 0x100000000; + + /* Construct Qt date time. */ + return QDateTime::fromMSecsSinceEpoch(ntpMSecs + NtpTimestamp::january_1_1900); +} + +NtpTimestamp +NtpTimestamp::fromDateTime(const QDateTime &dateTime) +{ + /* Convert given time to number of milliseconds passed since Jan 1 1900. */ + quint64 ntpMSecs = dateTime.toMSecsSinceEpoch() - NtpTimestamp::january_1_1900; + + /* Note that NTP epoch information is lost here. Assume 1900-2036 NTP epoch. */ + quint32 seconds = ntpMSecs / 1000; + quint32 fraction = (0x100000000 * (ntpMSecs % 1000)) / 1000; + + /* Convert to big-endian. */ + NtpTimestamp result; + result.mSeconds = qToBigEndian(seconds); + result.mFraction = qToBigEndian(fraction); + return result; +} + +QDateTime +NtpTimestamp::toDateTime(const NtpTimestamp &ntpTime) +{ + /* Convert to local-endian. */ + quint32 seconds = qFromBigEndian(ntpTime.mSeconds); + quint32 fraction = qFromBigEndian(ntpTime.mFraction); + + /* Convert NTP timestamp to number of milliseconds passed since Jan 1 1900. */ + quint64 ntpMSecs = (quint64)seconds * 1000 + (quint64)fraction * 1000 / 0x100000000; + + /* Construct Qt date time. */ + return QDateTime::fromMSecsSinceEpoch(ntpMSecs + NtpTimestamp::january_1_1900); +} + +bool +NtpTimestamp::operator== (const NtpTimestamp& m) const +{ + return (mSeconds == m.mSeconds + && mFraction == m.mFraction); +} + +bool +NtpTimestamp::operator!= (const NtpTimestamp& m) const +{ + return (mSeconds != m.mSeconds + || mFraction != m.mFraction); +} + +bool +NtpTimestamp::operator> (const NtpTimestamp& m) const +{ + return (NtpTimestamp::toDateTime(*this) > NtpTimestamp::toDateTime(m)); +} + +bool +NtpTimestamp::operator< (const NtpTimestamp& m) const +{ + return (NtpTimestamp::toDateTime(*this) < NtpTimestamp::toDateTime(m)); +} + +bool +NtpTimestamp::operator>= (const NtpTimestamp& m) const +{ + return (NtpTimestamp::toDateTime(*this) >= NtpTimestamp::toDateTime(m)); +} + +bool +NtpTimestamp::operator<= (const NtpTimestamp& m) const +{ + return (NtpTimestamp::toDateTime(*this) <= NtpTimestamp::toDateTime(m)); +} diff --git a/CasterSoundboard/libs/tools/NtpTimestamp.h b/CasterSoundboard/libs/tools/NtpTimestamp.h new file mode 100644 index 0000000..be767ac --- /dev/null +++ b/CasterSoundboard/libs/tools/NtpTimestamp.h @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef _NTP_TIMESTAMP_H_ +#define _NTP_TIMESTAMP_H_ + +#include +#include +#include + +class OSC_API NtpTimestamp +{ +public: + + static const QDateTime IMMEDIATE; + + NtpTimestamp() + { + mSeconds = qToBigEndian(0); + mFraction = qToBigEndian(1); + } + + /** Build a NtpTimestamp object. + * @param seconds Number of seconds passed since Jan 1 1900. + * @param fraction Fractional time part, in 1/0xFFFFFFFFs of a second. + */ + NtpTimestamp( quint32 seconds, quint32 fraction ) + { + mSeconds = qToBigEndian(seconds); + mFraction = qToBigEndian(fraction); + } + + inline void setSeconds(quint32 seconds); + + inline void setFraction(quint32 fraction); + + inline quint32 seconds(); + + inline quint32 fraction(); + + static QDateTime getImmediateTime(); + + /** + * @param dateTime Qt date time. + * @returns Ntp time for the given qt + */ + static NtpTimestamp fromDateTime(const QDateTime &dateTime); + + /** + * @param ntpTime NTP timestamp. + * @returns Qt date time for the given NTP timestamp. + */ + static QDateTime toDateTime(const NtpTimestamp &ntpTime); + + bool operator== (const NtpTimestamp& m) const; + + bool operator!= (const NtpTimestamp& m) const; + + bool operator> (const NtpTimestamp& m) const; + + bool operator< (const NtpTimestamp& m) const; + + bool operator>= (const NtpTimestamp& m) const; + + bool operator<= (const NtpTimestamp& m) const; + + inline quint32& rawSeconds(); + + inline quint32& rawFraction(); + +private: + static const qint64 january_1_1900; + + /** Number of seconds passed since Jan 1 1900, in big-endian format. */ + quint32 mSeconds; + + /** Fractional time part, in 1/0xFFFFFFFFs of a second. */ + quint32 mFraction; +}; + +//------------------------------------------------------------------------------- +void +NtpTimestamp::setSeconds(quint32 seconds) +{ + mSeconds = qToBigEndian(seconds); +} + +//------------------------------------------------------------------------------- +void +NtpTimestamp::setFraction(quint32 fraction) +{ + mFraction = qToBigEndian(fraction); +} + +//------------------------------------------------------------------------------- +quint32 +NtpTimestamp::seconds() +{ + return qFromBigEndian(mSeconds); +} + +//------------------------------------------------------------------------------- +quint32 +NtpTimestamp::fraction() +{ + return qFromBigEndian(mFraction); +} + +//------------------------------------------------------------------------------- +quint32& +NtpTimestamp::rawSeconds() +{ + return mSeconds; +} + +//------------------------------------------------------------------------------- +quint32& +NtpTimestamp::rawFraction() +{ + return mFraction; +} +#endif diff --git a/CasterSoundboard/libs/tools/exceptions/BufferOverflowException.h b/CasterSoundboard/libs/tools/exceptions/BufferOverflowException.h new file mode 100644 index 0000000..562aa6f --- /dev/null +++ b/CasterSoundboard/libs/tools/exceptions/BufferOverflowException.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef BUFFER_OVERFLOW_EXCEPTION_H_ +#define BUFFER_OVERFLOW_EXCEPTION_H_ + +#include + +/*! \class BufferOverflowException + * \brief Class which defines buffer overflow exceptions + * + * This class defines the buffer overflow exceptions in COCON + */ +class BufferOverflowException : public QException +{ +public: + /** + * \brief Returns this exception message + * + * Returns the message emitted by this exception + * + * \return this exception message + */ + virtual const char* what() const throw () + { + return "Buffer Overflow Exception"; + } +}; + +#endif // BUFFER_OVERFLOW_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/tools/exceptions/BufferUnderflowException.h b/CasterSoundboard/libs/tools/exceptions/BufferUnderflowException.h new file mode 100644 index 0000000..4e0dee4 --- /dev/null +++ b/CasterSoundboard/libs/tools/exceptions/BufferUnderflowException.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef BUFFER_UNDERFLOW_EXCEPTION_H_ +#define BUFFER_UNDERFLOW_EXCEPTION_H_ + +#include + +/*! \class BufferUnderflowException + * \brief Class which defines buffer underflow exceptions + * + * This class defines the buffer underflow exceptions in COCON + */ +class BufferUnderflowException : public QException +{ +public: + /** + * \brief Returns this exception message + * + * Returns the message emitted by this exception + * + * \return this exception message + */ + virtual const char* what() const throw () + { + return "Buffer Underflow Exception"; + } +}; + +#endif // BUFFER_UNDERFLOW_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/tools/exceptions/IllegalArgumentException.h b/CasterSoundboard/libs/tools/exceptions/IllegalArgumentException.h new file mode 100644 index 0000000..2c51627 --- /dev/null +++ b/CasterSoundboard/libs/tools/exceptions/IllegalArgumentException.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef ILLEGAL_ARGUMENT_EXCEPTION_H_ +#define ILLEGAL_ARGUMENT_EXCEPTION_H_ + +#include + +/*! \class IllegalArgumentException + * \brief Class which defines illegal arguments exceptions + * + * This class defines the illegal arguments exceptions in COCON + */ +class IllegalArgumentException : public QException +{ +public: + /** + * \brief Returns this exception message + * + * Returns the message emitted by this exception + * + * \return this exception message + */ + virtual const char* what() const throw () + { + return "Illegal Argument Exception"; + } +}; + +#endif // ILLEGAL_ARGUMENT_EXCEPTION_H_ diff --git a/CasterSoundboard/libs/tools/exceptions/IndexOutOfBoundsException.h b/CasterSoundboard/libs/tools/exceptions/IndexOutOfBoundsException.h new file mode 100644 index 0000000..ed17e27 --- /dev/null +++ b/CasterSoundboard/libs/tools/exceptions/IndexOutOfBoundsException.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 MUGEN SAS + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * 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. + */ + +#ifndef INDEX_OUT_OF_BOUNDS_EXCEPTION_H_ +#define INDEX_OUT_OF_BOUNDS_EXCEPTION_H_ + +#include + +/*! \class IndexOutOfBoundsException + * \brief Class which defines index out of bounds exceptions + * + * This class defines the index out of bounds exceptions in COCON + */ +class IndexOutOfBoundsException : public QException +{ +public: + /** + * \brief Returns this exception message + * + * Returns the message emitted by this exception + * + * \return this exception message + */ + virtual const char* what() const throw () + { + return "Index Out Of Bounds Exception"; + } +}; + +#endif // INDEX_OUT_OF_BOUNDS_EXCEPTION_H_ diff --git a/CasterSoundboard/res.qrc b/CasterSoundboard/res.qrc index 4afcbbb..884e7ae 100644 --- a/CasterSoundboard/res.qrc +++ b/CasterSoundboard/res.qrc @@ -23,5 +23,9 @@ res/img/no_loop.png res/img/stopAll.png res/img/rename.png + res/img/open_sound_control.png + res/img/duck.png + res/img/unduck.png + res/img/33_percent.png diff --git a/CasterSoundboard/res/img/33_percent.png b/CasterSoundboard/res/img/33_percent.png new file mode 100644 index 0000000000000000000000000000000000000000..f020642bbb45f42fcc599e1bcb76b5981680af61 GIT binary patch literal 3673 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 literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/duck.png b/CasterSoundboard/res/img/duck.png new file mode 100644 index 0000000000000000000000000000000000000000..eeadccba8353ddce772b8701daf163727f1af8bf GIT binary patch literal 2273 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 literal 0 HcmV?d00001 diff --git a/CasterSoundboard/res/img/unduck.png b/CasterSoundboard/res/img/unduck.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a7dee4bbebd6fae6c79c6c48f7e149f4de7920 GIT binary patch literal 6059 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 iszsu4$+ Date: Sun, 14 May 2017 22:31:04 -0700 Subject: [PATCH 38/77] Open Sound Control and audio ducking have been fully implemented with this commit --- CasterSoundboard/.gitignore | 2 +- CasterSoundboard/CasterBoard.cpp | 49 ++ CasterSoundboard/CasterBoard.h | 10 + .../CasterOSCServerConfigPicker.cpp | 200 +++++ .../CasterOSCServerConfigPicker.h | 101 +++ CasterSoundboard/CasterPlayer.cpp | 157 ++++ CasterSoundboard/CasterPlayer.h | 13 + CasterSoundboard/CasterSoundboard.pro | 8 +- CasterSoundboard/ColorConversion.cpp | 60 -- CasterSoundboard/ColorConversion.h | 186 ----- CasterSoundboard/MainWindow.cpp | 790 +++++++++++++----- CasterSoundboard/MainWindow.h | 29 + docs/img/screenshot.png | Bin 236210 -> 241807 bytes 13 files changed, 1154 insertions(+), 451 deletions(-) create mode 100644 CasterSoundboard/CasterOSCServerConfigPicker.cpp create mode 100644 CasterSoundboard/CasterOSCServerConfigPicker.h delete mode 100644 CasterSoundboard/ColorConversion.cpp delete mode 100644 CasterSoundboard/ColorConversion.h diff --git a/CasterSoundboard/.gitignore b/CasterSoundboard/.gitignore index 759dc82..c59b46b 100644 --- a/CasterSoundboard/.gitignore +++ b/CasterSoundboard/.gitignore @@ -1,4 +1,4 @@ - +CasterSoundboard.pro.* .qmake.stash *.o CasterSoundboard diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp index 2662123..a500acd 100644 --- a/CasterSoundboard/CasterBoard.cpp +++ b/CasterSoundboard/CasterBoard.cpp @@ -27,6 +27,7 @@ #include #include #include +#include "libs/osc/composer/OscMessageComposer.h" //Constructor============================================= CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) @@ -60,6 +61,9 @@ CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) players->insert(int_to_player_key->value(i), new CasterPlayerWidget); players->value(int_to_player_key->value(i))->setHotKeyLetter(int_to_player_key->value(i)); + // Connect OSC Events + connect(players->value(int_to_player_key->value(i)),SIGNAL(updateOSCClient(OscMessageComposer*)),this,SLOT(notifyApplicationAboutOSCMessage(OscMessageComposer*))); + // Add to layout boardLayout->addWidget(players->value(int_to_player_key->value(i)), _board_row, _board_column); @@ -88,6 +92,22 @@ void CasterBoard::setAllAudioDuckingStates(int state) } } +void CasterBoard::notifyApplicationAboutOSCMessage(OscMessageComposer* message){ + if(this->isCurrentBoard) + emit this->_updateOSCClient(message); +} + +void CasterBoard::syncWithOSCClient() +{ + // Update Tab Name + OscMessageComposer* msg = writeOSCMessage("/glo/m/label/tab_name", *soundBoardName); + emit this->_updateOSCClient(msg); + + // Iterate through players + foreach(QString _letter, players->keys()){ + players->value(_letter)->syncWithOSCClient(); + } +} // PROTECTED void CasterBoard::keyReleaseEvent(QKeyEvent *event) @@ -103,7 +123,11 @@ void CasterBoard::keyReleaseEvent(QKeyEvent *event) else if (players->value(keyboard_key_to_player_key->value(event->key()))->player->state() == QMediaPlayer::StoppedState) players->value(keyboard_key_to_player_key->value(event->key()))->playSound(); } + } else { + // Delegates global hotkeys to MainWIndow + emit globalHotKeyReleasedEvent(event); } + } //Public Methods @@ -117,6 +141,31 @@ void CasterBoard::reloadBoardFromPlayerStates() this->update(); } +//======================================================== +//==========OSC Composer Methods===== +OscMessageComposer* CasterBoard::writeOSCMessage(QString address, int value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushInt32((qint32)value); + return msg; +} + +OscMessageComposer* CasterBoard::writeOSCMessage(QString address, float value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushFloat(value); + return msg; +} + +OscMessageComposer* CasterBoard::writeOSCMessage(QString address, QString value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushString(value.toUtf8()); + return msg; +} + +//================================================ + //Operator Overloading QDataStream &operator<<(QDataStream &ds, const CasterBoard &cb) diff --git a/CasterSoundboard/CasterBoard.h b/CasterSoundboard/CasterBoard.h index 7876b89..b9f2015 100644 --- a/CasterSoundboard/CasterBoard.h +++ b/CasterSoundboard/CasterBoard.h @@ -26,6 +26,7 @@ #include #include #include +#include "libs/osc/composer/OscMessageComposer.h" //forward declarations class CasterPlayerWidget; @@ -40,6 +41,7 @@ public: CasterBoard(QWidget* parent = 0); //don't forget to pass the parent //Properties + bool isCurrentBoard = false; QString *soundBoardName; QString *profileFilePath; QMap *int_to_player_key; @@ -50,6 +52,7 @@ public: void stopAllSounds(); void reloadBoardFromPlayerStates(); void setAllAudioDuckingStates(int state); + void syncWithOSCClient();//Refeshes UI on OSC Client protected: @@ -58,12 +61,19 @@ protected: private: //Private Methods + //OSC Composer Methods + OscMessageComposer* writeOSCMessage(QString address, int value); + OscMessageComposer* writeOSCMessage(QString address, float value); + OscMessageComposer* writeOSCMessage(QString address, QString value); signals: //SIGNALS + void globalHotKeyReleasedEvent(QKeyEvent *event);//Use by mainwindow to perform actions on all sound boads. Needed because of how focus works in qt. + void _updateOSCClient(OscMessageComposer* message); public slots: //SLOTS + void notifyApplicationAboutOSCMessage(OscMessageComposer* message); }; diff --git a/CasterSoundboard/CasterOSCServerConfigPicker.cpp b/CasterSoundboard/CasterOSCServerConfigPicker.cpp new file mode 100644 index 0000000..1ec940a --- /dev/null +++ b/CasterSoundboard/CasterOSCServerConfigPicker.cpp @@ -0,0 +1,200 @@ +#include "CasterOSCServerConfigPicker.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +CasterOSCServerConfigPicker::CasterOSCServerConfigPicker(QString _inbound_ipv4, int _inbound_port, QString _outbound_ipv4, int _outbound_port) +{ + // Main Settings + this->setMinimumWidth(400); + this->setWindowTitle("Open Sound Control Server Settings"); + ok = false; + this->inbound_ipv4 = &_inbound_ipv4; + this->inbound_port = _inbound_port; + this->outbound_ipv4 = &_outbound_ipv4; + this->outbound_port = _outbound_port; + + // Validators + // IPv4 Validator + QRegExpValidator *validator_ip = new QRegExpValidator(this); + QRegExp rx_ip("((1{0,1}[0-9]{0,2}|2[0-4]{1,1}[0-9]{1,1}|25[0-5]{1,1})\\.){3,3}(1{0,1}[0-9]{0,2}|2[0-4]{1,1}[0-9]{1,1}|25[0-5]{1,1})"); + validator_ip->setRegExp(rx_ip); + // Port Number Validator + QRegExpValidator *validator_port = new QRegExpValidator(this); + QRegExp rx_port("^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$"); + validator_port->setRegExp(rx_port); + + // UI + label_General = new QLabel("Open Sound Control server with one-way and two-way communication.\nTouchOSC app is recommended for two-way communication.\n(NOT AFFILIATED with TouchOSC).\n OSC api will be documented in the repo's wiki."); + label_Inbound = new QLabel("Inbound Traffic:"); + label_Outbound = new QLabel("Outbound Traffic:"); + textBox_Inbound_IPv4 = new QLineEdit; + textBox_Inbound_IPv4->setText(inbound_ipv4->toUtf8()); + textBox_Inbound_IPv4->setPlaceholderText("IP Address"); + textBox_Inbound_IPv4->setReadOnly(true); + textBox_Inbound_Port = new QLineEdit; + textBox_Inbound_Port->setText(QString::number(inbound_port).toUtf8()); + textBox_Inbound_Port->setPlaceholderText("Port"); + textBox_Inbound_Port->setValidator(validator_port); + textBox_Outbound_IPv4 = new QLineEdit; + textBox_Outbound_IPv4->setText(outbound_ipv4->toUtf8()); + textBox_Outbound_IPv4->setPlaceholderText("OSC Client IP Address"); + textBox_Outbound_IPv4->setValidator(validator_ip); + textBox_Outbound_Port = new QLineEdit; + textBox_Outbound_Port->setText(QString::number(outbound_port).toUtf8()); + textBox_Outbound_Port->setPlaceholderText("Port"); + textBox_Outbound_Port->setValidator(validator_port); + button_Cancel = new QPushButton("Cancel"); + button_ToggleServer = new QPushButton("Start"); + + + // Layouts + layout_main = new QVBoxLayout(this); + layout_general_info = new QHBoxLayout; + layout_inbound_info = new QHBoxLayout; + layout_inbound_controls = new QHBoxLayout; + layout_outbound_info = new QHBoxLayout; + layout_outbound_controls = new QHBoxLayout; + layout_buttons = new QHBoxLayout; + + // Set Layouts + layout_general_info->addWidget(label_General); + layout_inbound_info->addWidget(label_Inbound); + layout_inbound_controls->addWidget(textBox_Inbound_IPv4); + layout_inbound_controls->addWidget(textBox_Inbound_Port); + layout_outbound_info->addWidget(label_Outbound); + layout_outbound_controls->addWidget(textBox_Outbound_IPv4); + layout_outbound_controls->addWidget(textBox_Outbound_Port); + layout_buttons->addWidget(button_Cancel); + layout_buttons->addWidget(button_ToggleServer); + + // Set Overall Layout + layout_main->addLayout(layout_general_info); + layout_main->addLayout(layout_inbound_info); + layout_main->addLayout(layout_inbound_controls); + layout_main->addLayout(layout_outbound_info); + layout_main->addLayout(layout_outbound_controls); + layout_main->addLayout(layout_buttons); + + //Connect Sub-Widget Events + connect(button_Cancel,SIGNAL(clicked()),this,SLOT(button_Cancel_Clicked())); + connect(button_ToggleServer,SIGNAL(clicked()),this,SLOT(button_ToggleServer_Clicked())); +} + +//=======Protected======= +void CasterOSCServerConfigPicker::closeEvent(QCloseEvent *event) +{ + +} + +//======Public Slots====== + +//SLOTS +void CasterOSCServerConfigPicker::button_ToggleServer_Clicked(){ + if(server_is_running){ + ok = true; + Result = CasterOSCServerConfigPicker::Action_Kill_Server; + textBox_Inbound_Port->setReadOnly(false); + textBox_Outbound_IPv4->setReadOnly(false); + textBox_Outbound_Port->setReadOnly(false); + button_ToggleServer->setText("Start"); + this->close(); + } else { + if(textBox_Inbound_Port->text().toUtf8() != "" + && textBox_Outbound_IPv4->text().toUtf8() != "" + && textBox_Outbound_Port->text().toUtf8() != ""){ + inbound_port = textBox_Inbound_Port->text().toInt(); + outbound_ipv4 = new QString(textBox_Outbound_IPv4->text().toUtf8()); + outbound_port = textBox_Outbound_Port->text().toInt(); + ok = true; + Result = CasterOSCServerConfigPicker::Action_Start_Server; + textBox_Inbound_Port->setReadOnly(true); + textBox_Outbound_IPv4->setReadOnly(true); + textBox_Outbound_Port->setReadOnly(true); + button_ToggleServer->setText("Stop"); + this->close(); + } else { + QString *temp = new QString("IP and Port numbers can not be emtpy!"); + QMessageBox msgBox; + msgBox.setText(temp->toUtf8() + "\n"); + msgBox.setStandardButtons(QMessageBox::Close); + msgBox.setDefaultButton(QMessageBox::Close); + msgBox.setModal(true); + msgBox.setWindowTitle("Input Error"); + msgBox.setWindowIcon(QIcon(":/res/img/about.png")); + msgBox.exec(); + } + } +} + +void CasterOSCServerConfigPicker::button_Cancel_Clicked(){ + this->close(); +} + + +//======Public Properties====== +//Inbound +void CasterOSCServerConfigPicker::setInBoundIPv4(QString *ip){ + inbound_ipv4 = ip; + textBox_Inbound_IPv4->setText(*ip); +} + +void CasterOSCServerConfigPicker::setInBoundPort(int port){ + inbound_port = port; + textBox_Inbound_Port->setText(QString::number(inbound_port).toUtf8()); +} + +int CasterOSCServerConfigPicker::getInboundPort(){ + return inbound_port; +} + +//Outbound +void CasterOSCServerConfigPicker::setOutBoundIPv4(QString *ip){ + outbound_ipv4 = ip; + textBox_Outbound_IPv4->setText(*ip); +} + +QString CasterOSCServerConfigPicker::getOutboundIPv4(){ + return *outbound_ipv4; +} + +void CasterOSCServerConfigPicker::setOutBoundPort(int port){ + outbound_port = port; + textBox_Outbound_Port->setText(QString::number(outbound_port).toUtf8()); +} + +int CasterOSCServerConfigPicker::getOutboundPort(){ + return outbound_port; +} + +// MISC + +void CasterOSCServerConfigPicker::setIsServerRunning(bool isRunning) +{\ + this->server_is_running = isRunning; + if(server_is_running){ + textBox_Inbound_Port->setReadOnly(true); + textBox_Outbound_IPv4->setReadOnly(true); + textBox_Outbound_Port->setReadOnly(true); + button_ToggleServer->setText("Stop"); + } else { + textBox_Inbound_Port->setReadOnly(false); + textBox_Outbound_IPv4->setReadOnly(false); + textBox_Outbound_Port->setReadOnly(false); + button_ToggleServer->setText("Start"); + } +} + +bool CasterOSCServerConfigPicker::getIsServerRunning() +{ + return server_is_running; +} diff --git a/CasterSoundboard/CasterOSCServerConfigPicker.h b/CasterSoundboard/CasterOSCServerConfigPicker.h new file mode 100644 index 0000000..f882a8f --- /dev/null +++ b/CasterSoundboard/CasterOSCServerConfigPicker.h @@ -0,0 +1,101 @@ +#ifndef CASTEROSCSERVERCONFIGPICKER_H +#define CASTEROSCSERVERCONFIGPICKER_H +#include + +//forward declarations +class QWidget; +class QSlider; +class QLineEdit; +class QPushButton; +class QLabel; +class QString; +class QVBoxLayout; +class QHBoxLayout; +class QHostAddress; + + + +class CasterOSCServerConfigPicker : public QDialog +{ + Q_OBJECT +public: + // Static + static const int Action_Neutral = 0; + static const int Action_Start_Server = 1; + static const int Action_Kill_Server = 2; + + //Constructor + CasterOSCServerConfigPicker(QString _inbound_ipv4, int _inbound_port, QString _outbound_ipv4, int _outbound_port); + + + //PROPERTIES + bool ok;//DiagResult + int Result = 0; + + //METHODS + //Inbound + void setInBoundIPv4(QString *ip); + void setInBoundPort(int port); + int getInboundPort(); + + //Outbound + void setOutBoundIPv4(QString *ip); + QString getOutboundIPv4(); + void setOutBoundPort(int port); + int getOutboundPort(); + + //MISC + void setIsServerRunning(bool isRunning); + bool getIsServerRunning(); + + //WIDGETS + + +protected: + //PROPERTIES + + //METHODS + void closeEvent(QCloseEvent *event); + + //WIDGETS + +private: + //PROPERTIES + bool server_is_running = false; + QString *inbound_ipv4; + int inbound_port = 8000; + QString *outbound_ipv4; + int outbound_port = 9000; + + //METHODS + + //WIDGETS + QLabel *label_General; + QLabel *label_Inbound; + QLabel *label_Outbound; + QLineEdit *textBox_Inbound_IPv4; + QLineEdit *textBox_Inbound_Port; + QLineEdit *textBox_Outbound_IPv4; + QLineEdit *textBox_Outbound_Port; + QPushButton *button_Cancel; + QPushButton *button_ToggleServer; + + QVBoxLayout *layout_main; + QHBoxLayout *layout_general_info; + QHBoxLayout *layout_inbound_info; + QHBoxLayout *layout_inbound_controls; + QHBoxLayout *layout_outbound_info; + QHBoxLayout *layout_outbound_controls; + QHBoxLayout *layout_buttons; + +signals: + //SIGNALS + +public slots: + //SLOTS + void button_ToggleServer_Clicked(); + void button_Cancel_Clicked(); + +}; + +#endif // CASTEROSCSERVERCONFIGPICKER_H diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index f665388..a6bed70 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -47,10 +47,14 @@ #include #include #include +#include "libs/osc/composer/OscMessageComposer.h" //Constructor CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) { + // ID + id = new QString(""); + //Set Widget Defaults this->setAcceptDrops(true); @@ -225,6 +229,46 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) void CasterPlayerWidget::setHotKeyLetter(QString hotKey) { hotKeyLabel->setText(hotKey); + this->id = new QString(hotKey.toUtf8()); +} + +void CasterPlayerWidget::syncWithOSCClient() +{ + //Update Volume + OscMessageComposer* msg1 = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/vol", (float)(volumeSlider->value()/100.0) ); + emit updateOSCClient(msg1); + + //Update Track Position + OscMessageComposer* msg2 = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/t_p_p", (float)((float)trackBar->value()/100.0) ); + emit updateOSCClient(msg2); + + //Update Title + OscMessageComposer* msg3 = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/tr_name", this->soundNameLabel->text()); + emit updateOSCClient(msg3); + + //Update Loop State + OscMessageComposer* msg4 = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/l_s", (int)(playerState->loop)); + emit updateOSCClient(msg4); + + //Update Time + QStringList times = this->timeLabel->text().split("\n"); + OscMessageComposer* msg5 = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/time", times.value(0) + times.value(1)); + emit updateOSCClient(msg5); + + //Update Play State + if(player->state() == QMediaPlayer::PlayingState){ + OscMessageComposer* msg6 = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/p_s", "Playing"); + emit updateOSCClient(msg6); + } + else if(player->state() == QMediaPlayer::PausedState){ + OscMessageComposer* msg6 = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/p_s", "Paused"); + emit updateOSCClient(msg6); + } + else if (player->state() == QMediaPlayer::StoppedState){ + OscMessageComposer* msg6 = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/p_s", "Stopped"); + emit updateOSCClient(msg6); + } + } //----SIGNALS---- @@ -258,6 +302,10 @@ void CasterPlayerWidget::volumeChanged(int value) player->setVolume(playerState->volume * 0.33); else player->setVolume(playerState->volume); + + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/vol", (float)(playerState->volume/100.0) ); + emit updateOSCClient(msg); } /* Track Barn Position Changed */ @@ -269,6 +317,10 @@ void CasterPlayerWidget::trackBarChanged(int value) player->setPosition(position); } + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/t_p_p", (float)((float)trackBar->value()/100.0) ); + emit updateOSCClient(msg); + } /* Load Sound From Dialog */ @@ -349,9 +401,17 @@ void CasterPlayerWidget::toggleLooping() if(playerState->loop == true){ toggleLoopButton->setIcon(QIcon(":/res/img/no_loop")); playerState->loop = false; + + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/l_s", 0); + emit updateOSCClient(msg); } else { toggleLoopButton->setIcon(QIcon(":/res/img/loop")); playerState->loop = true; + + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/l_s", 1); + emit updateOSCClient(msg); } } @@ -381,6 +441,10 @@ void CasterPlayerWidget::playerPositionChanged(qint64 position) trackBarWasChangedByPlayer = false; this->update(); + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/time", currentTime + "/" + timeRemaining); + emit updateOSCClient(msg); + /* Enforce Start Time And Stop And Looping */ if(position >= playerState->stopTime) { @@ -407,15 +471,27 @@ void CasterPlayerWidget::playerStateChanged(QMediaPlayer::State state) if(state == QMediaPlayer::PlayingState) { playStateButton->setIcon(QIcon(":/res/img/play.png")); + + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/p_s", "Playing"); + emit updateOSCClient(msg); } else if(state == QMediaPlayer::PausedState) { playStateButton->setIcon(QIcon(":/res/img/pause.png")); + + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/p_s", "Paused"); + emit updateOSCClient(msg); } else if (state == QMediaPlayer::StoppedState) { playStateButton->setIcon(QIcon(":/res/img/stop.png")); + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/p_s", "Stopped"); + emit updateOSCClient(msg); + progress = 0; int timeLeft = player->duration(); int seconds = (int) (timeLeft / 1000) % 60 ; @@ -436,11 +512,19 @@ void CasterPlayerWidget::playerMetaDataChanged() { //Use metadata title soundNameLabel->setText(player->metaData(QMediaMetaData::Title).toString()); + + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/tr_name", player->metaData(QMediaMetaData::Title).toString()); + emit updateOSCClient(msg); } else { //Use filename as title soundNameLabel->setText(fi.baseName()); + + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/cbp/" + this->id->toUtf8() + "/m/label/tr_name", fi.baseName()); + emit updateOSCClient(msg); } //Hack solution to prevent playing when when meadia loaded. @@ -491,6 +575,12 @@ void CasterPlayerWidget::playSound() player->play(); } +void CasterPlayerWidget::resumeSound() +{ + volumeSlider->setValue(playerState->volume); + player->play(); +} + void CasterPlayerWidget::pauseSound() { volumeSlider->setValue(playerState->volume); @@ -503,6 +593,49 @@ void CasterPlayerWidget::stopSound() player->stop(); } +void CasterPlayerWidget::play_stop_toggle() +{ + // Toggle play state + // Play/Pause + //CURRENT PLAY STATE TOGGLE LOGIC + volumeSlider->setValue(playerState->volume); + if(player->state() == QMediaPlayer::PlayingState) + { + player->stop(); + } + else if (player->state() == QMediaPlayer::StoppedState) + { + player->setPosition(playerState->startTime); + player->play(); + } + else if(player->state() == QMediaPlayer::PausedState) + { + player->setPosition(playerState->startTime); + player->play(); + } +} + +void CasterPlayerWidget::resume_pause_toggle() +{ + // Toggle play state + // Play/Pause + //CURRENT PLAY STATE TOGGLE LOGIC + volumeSlider->setValue(playerState->volume); + if(player->state() == QMediaPlayer::PlayingState) + { + player->pause(); + } + else if (player->state() == QMediaPlayer::StoppedState) + { + player->setPosition(playerState->startTime); + player->play(); + } + else if(player->state() == QMediaPlayer::PausedState) + { + player->play(); + } +} + void CasterPlayerWidget::setLoopState(int state) { if(state == 0){ @@ -735,3 +868,27 @@ void CasterPlayerWidget::reloadFromPlayerState() newMediaLoadedFromProfile = false; } + + +//======================================================== +//==========OSC Composer Methods===== +OscMessageComposer* CasterPlayerWidget::writeOSCMessage(QString address, int value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushInt32((qint32)value); + return msg; +} + +OscMessageComposer* CasterPlayerWidget::writeOSCMessage(QString address, float value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushFloat(value); + return msg; +} + +OscMessageComposer* CasterPlayerWidget::writeOSCMessage(QString address, QString value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushString(value.toUtf8()); + return msg; +} diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h index da40f77..be38068 100644 --- a/CasterSoundboard/CasterPlayer.h +++ b/CasterSoundboard/CasterPlayer.h @@ -25,6 +25,7 @@ #include #include #include +#include "libs/osc/composer/OscMessageComposer.h" //forward declarations class QMediaPlayer; @@ -48,6 +49,7 @@ public: //Set Properties void setHotKeyLetter(QString hotKey); + void syncWithOSCClient(); //Media Player QMediaPlayer *player; @@ -76,8 +78,11 @@ public: //Player Methhods void playSound();//Plays sound + void resumeSound();//Plays from where it left off sound void pauseSound();//Pauses sound void stopSound();//Stops sound + void play_stop_toggle(); + void resume_pause_toggle(); void setLoopState(int state);//Sets loop state void setAudioDuckState(int state);//Set duck state @@ -107,6 +112,7 @@ protected: private: //Proeprties + QString *id; bool isAudioDucked; //Private Methods @@ -121,8 +127,15 @@ private: bool newMediaLoaded; bool newMediaLoadedFromProfile; + //METHODS + //OSC Composer Methods + OscMessageComposer* writeOSCMessage(QString address, int value); + OscMessageComposer* writeOSCMessage(QString address, float value); + OscMessageComposer* writeOSCMessage(QString address, QString value); + signals: //MyWidget's signals.... + void updateOSCClient(OscMessageComposer* message); public slots: void playerToggle(); diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index 34b99aa..7feef88 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -49,10 +49,10 @@ SOURCES += main.cpp\ libs/osc/reader/OscReader.cpp \ libs/osc/reader/OscValue.cpp \ libs/osc/OscPatternMatching.cpp \ - ColorConversion.cpp \ libs/tools/ByteBuffer.cpp \ libs/tools/ByteOrder.cpp \ - libs/tools/NtpTimestamp.cpp + libs/tools/NtpTimestamp.cpp \ + CasterOSCServerConfigPicker.cpp HEADERS += \ CasterPlayer.h \ @@ -115,14 +115,14 @@ HEADERS += \ libs/osc/OscAPI.h \ libs/osc/OscPatternMatching.h \ libs/osc/OscVersion.h \ - ColorConversion.h \ libs/tools/exceptions/BufferOverflowException.h \ libs/tools/exceptions/BufferUnderflowException.h \ libs/tools/exceptions/IllegalArgumentException.h \ libs/tools/exceptions/IndexOutOfBoundsException.h \ libs/tools/ByteBuffer.h \ libs/tools/ByteOrder.h \ - libs/tools/NtpTimestamp.h + libs/tools/NtpTimestamp.h \ + CasterOSCServerConfigPicker.h FORMS += diff --git a/CasterSoundboard/ColorConversion.cpp b/CasterSoundboard/ColorConversion.cpp deleted file mode 100644 index d9172aa..0000000 --- a/CasterSoundboard/ColorConversion.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "ColorConversion.h" -#include -#include - -int *getRGB_fromHLS(int H, int S, int L){ - int *ret = new int[3]; - - H = H % 360; - double S_ = S / 100.0; - double L_ = L / 100.0; - - double C = (1.0 - abs(2.0*L_-1.0)) * S_; - double X = C * (1.0 - abs(fmodf(H/60.0, 2.0)-1.0)); - double m = L_ - C/2.0; - - double R_, G_, B_; - - if(0 <= H && H < 60) - { - R_ = C; - G_ = X; - B_ = 0.0; - } - else if (60 <= H && H < 120) - { - R_ = X; - G_ = C; - B_ = 0.0; - } - else if (120 <= H && H < 180) - { - R_ = 0.0; - G_ = C; - B_ = X; - } - else if (180 <= H && H < 240) - { - R_ = 0.0; - G_ = X; - B_ = C; - } - else if (240 <= H && H < 300) - { - R_ = X; - G_ = 0.0; - B_ = C; - } - else if (300 <= H && H < 360) - { - R_ = C; - G_ = 0.0; - B_ = X; - } - - ret[0] = (int)(255.0*(R_+m)); - ret[1] = (int)(255.0*(G_+m)); - ret[2] = (int)(255.0*(B_+m)); - - return ret; -} diff --git a/CasterSoundboard/ColorConversion.h b/CasterSoundboard/ColorConversion.h deleted file mode 100644 index f18e1e0..0000000 --- a/CasterSoundboard/ColorConversion.h +++ /dev/null @@ -1,186 +0,0 @@ -#ifndef COLORCONVERSION_H -#define COLORCONVERSION_H -#include -#include - -struct RGB { - uint r; - uint g; - uint b; -} ; - -struct HSL { - uint h; - uint s; - uint l; -} ; - -void HSLtoRGB_Subfunction(uint& c, const double& temp1, const double& temp2, const double& temp3); - -// This function extracts the hue, saturation, and luminance from "color" -// and places these values in h, s, and l respectively. -HSL RGBtoHSL(const RGB& rgb) -{ - HSL hsl; - - uint r = rgb.r; - uint g = rgb.g; - uint b = rgb.b; - - double r_percent = ((double)r)/255; - double g_percent = ((double)g)/255; - double b_percent = ((double)b)/255; - - double max_color = 0; - if((r_percent >= g_percent) && (r_percent >= b_percent)) - max_color = r_percent; - if((g_percent >= r_percent) && (g_percent >= b_percent)) - max_color = g_percent; - if((b_percent >= r_percent) && (b_percent >= g_percent)) - max_color = b_percent; - - double min_color = 0; - if((r_percent <= g_percent) && (r_percent <= b_percent)) - min_color = r_percent; - if((g_percent <= r_percent) && (g_percent <= b_percent)) - min_color = g_percent; - if((b_percent <= r_percent) && (b_percent <= g_percent)) - min_color = b_percent; - - double L = 0; - double S = 0; - double H = 0; - - L = (max_color + min_color)/2; - - if(max_color == min_color) - { - S = 0; - H = 0; - } - else - { - if(L < .50) - { - S = (max_color - min_color)/(max_color + min_color); - } - else - { - S = (max_color - min_color)/(2 - max_color - min_color); - } - if(max_color == r_percent) - { - H = (g_percent - b_percent)/(max_color - min_color); - } - if(max_color == g_percent) - { - H = 2 + (b_percent - r_percent)/(max_color - min_color); - } - if(max_color == b_percent) - { - H = 4 + (r_percent - g_percent)/(max_color - min_color); - } - } - hsl.s = (uint)(S*100); - hsl.l = (uint)(L*100); - H = H*60; - if(H < 0) - H += 360; - hsl.h = (uint)H; -} - -// This function converts the "color" object to the equivalent RGB values of -// the hue, saturation, and luminance passed as h, s, and l respectively -RGB HSLtoRGB(const HSL& hsl) -{ - RGB rgb; - - uint r = 0; - uint g = 0; - uint b = 0; - - uint h = hsl.h; - uint s = hsl.s; - uint l = hsl.l; - - double L = ((double)hsl.l)/100; - double S = ((double)hsl.s)/100; - double H = ((double)hsl.h)/360; - - if(s == 0) - { - r = l; - g = l; - b = l; - } - else - { - double temp1 = 0; - if(L < .50) - { - temp1 = L*(1 + S); - } - else - { - temp1 = L + S - (L*S); - } - - double temp2 = 2*L - temp1; - - double temp3 = 0; - for(int i = 0 ; i < 3 ; i++) - { - switch(i) - { - case 0: // red - { - temp3 = H + .33333; - if(temp3 > 1) - temp3 -= 1; - HSLtoRGB_Subfunction(r,temp1,temp2,temp3); - break; - } - case 1: // green - { - temp3 = H; - HSLtoRGB_Subfunction(g,temp1,temp2,temp3); - break; - } - case 2: // blue - { - temp3 = H - .33333; - if(temp3 < 0) - temp3 += 1; - HSLtoRGB_Subfunction(b,temp1,temp2,temp3); - break; - } - default: - { - - } - } - } - } - rgb.r = (uint)((((double)r)/100)*255); - rgb.g = (uint)((((double)g)/100)*255); - rgb.b = (uint)((((double)b)/100)*255); -} - -// This is a subfunction of HSLtoRGB -void HSLtoRGB_Subfunction(uint& c, const double& temp1, const double& temp2, const double& temp3) -{ - if((temp3 * 6) < 1) - c = (uint)((temp2 + (temp1 - temp2)*6*temp3)*100); - else - if((temp3 * 2) < 1) - c = (uint)(temp1*100); - else - if((temp3 * 3) < 2) - c = (uint)((temp2 + (temp1 - temp2)*(.66666 - temp3)*6)*100); - else - c = (uint)(temp2*100); - return; -} - - -#endif // COLORCONVERSION_H diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index 0c80da1..532d12e 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -39,6 +39,8 @@ #include #include #include +#include +#include "CasterOSCServerConfigPicker.h" #include "libs/osc/reader/OscReader.h" #include "libs/osc/reader/OscMessage.h" #include "libs/osc/reader/OscBundle.h" @@ -54,8 +56,10 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { // UDP Socket socket = new QUdpSocket(this); - socket->bind(QHostAddress::Any,5051); - connect(socket, SIGNAL(readyRead()), this, SLOT(executeOSCCommand())); + + // OSC Config Picker + outbound_ipv4 = new QString("0.0.0.0"); + oscConfigPicker = new CasterOSCServerConfigPicker("0.0.0.0", inbound_port, *outbound_ipv4, outbound_port); //SET WINDOW PROPETIES this->setWindowTitle("CasterSoundboard"); @@ -149,6 +153,7 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) connect(aboutButton,SIGNAL(clicked()),this,SLOT(aboutBox())); connect(addNewTabButton,SIGNAL(clicked()),this,SLOT(addNewTab())); connect(mainTabContainer,SIGNAL(tabCloseRequested(int)),this,SLOT(mainTabContainerTabClosedRequested(int))); + connect(mainTabContainer,SIGNAL(currentChanged(int)),this,SLOT(currentTabWasChanged(int))); connect(saveTabButton,SIGNAL(clicked()),this,SLOT(saveTab())); connect(saveAsTabButton,SIGNAL(clicked()),this,SLOT(saveAsTab())); connect(openTabButton,SIGNAL(clicked()),this,SLOT(openProfile())); @@ -162,6 +167,53 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) } //SLOTS +void MainWindow::mainTabContainerTabClosedRequested(int tabIndex) +{ + //CONFIRM TAB CLOSE + QMessageBox msgBox; + msgBox.setText("Are you sure you want to close this tab"); + msgBox.setWindowIcon(QIcon(":/res/img/app.png")); + msgBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes); + msgBox.setDefaultButton(QMessageBox::No); + msgBox.setModal(true); + if(msgBox.exec() == QMessageBox::Yes) + { + //CLOSE REQUESTED TAB + disconnect(dynamic_cast(mainTabContainer->widget(tabIndex)), SIGNAL(globalHotKeyReleasedEvent(QKeyEvent*)),this,SLOT(handleGlobalHotKeyEventFromCurrentWidget(QKeyEvent*))); + disconnect(dynamic_cast(mainTabContainer->widget(tabIndex)), SIGNAL(_updateOSCClient(OscMessageComposer)),this,SLOT(sendOSCMessageToClient(OscMessageComposer))); + mainTabContainer->removeTab(tabIndex); + } +} + +void MainWindow::currentTabWasChanged(int tabIndex) +{ + this->updateCurrentOSCTab(tabIndex); +} + +void MainWindow::updateCurrentOSCTab(int tabIndex) +{ + // Update Current Board & Previous Board Status + if(0 <= previous_tab_index + && previous_tab_index < mainTabContainer->count() + && previous_tab_index != tabIndex){ + //Keep track in tab indicies + dynamic_cast(mainTabContainer->widget(previous_tab_index))->isCurrentBoard = false; + dynamic_cast(mainTabContainer->widget(tabIndex))->isCurrentBoard = true; + previous_tab_index = tabIndex; + + // Update OSC Client + dynamic_cast(mainTabContainer->widget(tabIndex))->syncWithOSCClient(); + } else if(0 <= previous_tab_index + && previous_tab_index < mainTabContainer->count() + && previous_tab_index == tabIndex){ + //Update Current tab (even if redundant) + dynamic_cast(mainTabContainer->widget(tabIndex))->isCurrentBoard = true; + + // Update OSC Client + dynamic_cast(mainTabContainer->widget(tabIndex))->syncWithOSCClient(); + } +} + void MainWindow::aboutBox() { QMessageBox msgBox; @@ -190,6 +242,10 @@ void MainWindow::addNewTab() { //CREATE REQUESTED TABS CasterBoard *cb = new CasterBoard; + cb->setAllAudioDuckingStates(audio_duck_state); + connect(cb, SIGNAL(globalHotKeyReleasedEvent(QKeyEvent*)),this,SLOT(handleGlobalHotKeyEventFromCurrentWidget(QKeyEvent*))); + connect(cb, SIGNAL(_updateOSCClient(OscMessageComposer*)),this,SLOT(sendOSCMessageToClient(OscMessageComposer*))); + if(text != "") { cb->soundBoardName = new QString(text); @@ -204,20 +260,37 @@ void MainWindow::addNewTab() } -void MainWindow::mainTabContainerTabClosedRequested(int tabIndex) +void MainWindow::openProfile() { - //CONFIRM TAB CLOSE - QMessageBox msgBox; - msgBox.setText("Are you sure you want to close this tab"); - msgBox.setWindowIcon(QIcon(":/res/img/app.png")); - msgBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes); - msgBox.setDefaultButton(QMessageBox::No); - msgBox.setModal(true); - if(msgBox.exec() == QMessageBox::Yes) + //File Diag + QString _filePath = QFileDialog::getOpenFileName( + this, "Open Sound Board Profile", "", + "Sound Board Profile (*.caster)"); + + if (!_filePath.isNull()) { - //CLOSE REQUESTED TAB - mainTabContainer->removeTab(tabIndex); + //Load Profile Data + CasterBoard *cb = new CasterBoard(this); + QFile file; + QDataStream in; + file.setFileName(_filePath); + file.open(QIODevice::ReadOnly); + in.setDevice(&file); + in.setVersion(QDataStream::Qt_DefaultCompiledVersion); + in >> *cb; + file.close(); + + //Set Save Path + *cb->profileFilePath = _filePath; + + // Load Profile Into New Board + cb->reloadBoardFromPlayerStates(); + cb->setAllAudioDuckingStates(audio_duck_state); + connect(cb, SIGNAL(globalHotKeyReleasedEvent(QKeyEvent*)),this,SLOT(handleGlobalHotKeyEventFromCurrentWidget(QKeyEvent*))); + connect(cb, SIGNAL(_updateOSCClient(OscMessageComposer*)),this,SLOT(sendOSCMessageToClient(OscMessageComposer*))); + mainTabContainer->addTab(cb, cb->soundBoardName->toUtf8()); } + } void MainWindow::saveTab() @@ -265,18 +338,6 @@ void MainWindow::saveTab() void MainWindow::saveAsTab() { - //Debug - /* - QString *temp = dynamic_cast(mainTabContainer->currentWidget())->player1->playerState->filePath; - QMessageBox msgBox; - msgBox.setText("File Path: " + temp->toUtf8() ); - msgBox.setStandardButtons(QMessageBox::Close); - msgBox.setDefaultButton(QMessageBox::Close); - msgBox.setModal(true); - msgBox.setWindowTitle("About"); - msgBox.setWindowIcon(QIcon(":/res/img/about.png")); - msgBox.exec(); - */ if(mainTabContainer->count() > 0) { @@ -306,65 +367,6 @@ void MainWindow::saveAsTab() } -void MainWindow::openProfile() -{ - //File Diag - QString _filePath = QFileDialog::getOpenFileName( - this, "Open Sound Board Profile", "", - "Sound Board Profile (*.caster)"); - - if (!_filePath.isNull()) - { - //Load Profile Data - CasterBoard *cb = new CasterBoard(this); - QFile file; - QDataStream in; - file.setFileName(_filePath); - file.open(QIODevice::ReadOnly); - in.setDevice(&file); - in.setVersion(QDataStream::Qt_DefaultCompiledVersion); - in >> *cb; - file.close(); - - //Set Save Path - *cb->profileFilePath = _filePath; - - // Load Profile Into New Board - cb->reloadBoardFromPlayerStates(); - mainTabContainer->addTab(cb, cb->soundBoardName->toUtf8()); - } - -} - -void MainWindow::stopAllSounds() -{ - // Iterate through boards - for(int i = 0; i < mainTabContainer->count(); i++) - { - dynamic_cast(mainTabContainer->widget(i))->stopAllSounds(); - } -} - -void MainWindow::toggleAudioDucking() -{ - if(audio_duck_state == 0){ - audio_duck_state = 1; - toggleAudioDuckingButton->setIcon(QIcon(":/res/img/unduck.png")); - } else { - audio_duck_state = 0; - toggleAudioDuckingButton->setIcon(QIcon(":/res/img/duck.png")); - } - // Iterate through boards - for(int i = 0; i < mainTabContainer->count(); i++) - { - dynamic_cast(mainTabContainer->widget(i))->setAllAudioDuckingStates(audio_duck_state); - } - - // Give current board keyboard focus again - if(mainTabContainer->count() > 0 ) - dynamic_cast(mainTabContainer->currentWidget())->setFocus(); -} - void MainWindow::renameCurrentTab() { if(mainTabContainer->count() > 0){ @@ -391,21 +393,181 @@ void MainWindow::renameCurrentTab() } -void MainWindow::openOSCSettings() +void MainWindow::stopAllSounds() { - // Send OSC Message - /* - OscMessageComposer msg( "/1/boardName"); - msg.pushString("Hi Dude!"); - QByteArray* formattedMsg = msg.getBytes(); - QHostAddress oscClientAddressVal("192.168.1.96"); - socket->writeDatagram(*formattedMsg, oscClientAddressVal, 9000); - */ - //this->setFocus(); + // Iterate through boards + for(int i = 0; i < mainTabContainer->count(); i++) + { + dynamic_cast(mainTabContainer->widget(i))->stopAllSounds(); + } + + // Give current board keyboard focus again + if(mainTabContainer->count() > 0 ) + dynamic_cast(mainTabContainer->currentWidget())->setFocus(); +} + +void MainWindow::toggleAudioDucking() +{ + if(audio_duck_state == 0){ + audio_duck_state = 1; + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/unduck.png")); + } else { + audio_duck_state = 0; + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/duck.png")); + } + // Iterate through boards + for(int i = 0; i < mainTabContainer->count(); i++) + { + dynamic_cast(mainTabContainer->widget(i))->setAllAudioDuckingStates(audio_duck_state); + } + + // Give current board keyboard focus again + if(mainTabContainer->count() > 0 ) + dynamic_cast(mainTabContainer->currentWidget())->setFocus(); + + //Update OSC Client + OscMessageComposer* msg = writeOSCMessage("/glo/m/audio_d_s", audio_duck_state); + this->sendOSCMessageToClient(msg); +} + +// Tab Switching +void MainWindow::switchToNextTab() +{ + if(mainTabContainer->count() > 0){ + int next_tab_index = mainTabContainer->currentIndex() + 1; + if(next_tab_index < mainTabContainer->count()){ + // Change Tabs + mainTabContainer->setCurrentIndex(next_tab_index); + mainTabContainer->currentWidget()->setFocus();//Give Keyboard Focus (Hot Keying) + + //Update OSC Client + dynamic_cast(mainTabContainer->currentWidget())->syncWithOSCClient(); + } + } +} + +void MainWindow::switchToPrevTab() +{ + if(mainTabContainer->count() > 0){ + int prev_tab_index = mainTabContainer->currentIndex() - 1; + if(prev_tab_index >= 0){ + // Change Tabs + mainTabContainer->setCurrentIndex(prev_tab_index); + mainTabContainer->currentWidget()->setFocus();//Give Keyboard Focus (Hot Keying) + + //Update OSC Client + dynamic_cast(mainTabContainer->currentWidget())->syncWithOSCClient(); + } + } +} + + +// Board Signa Emissions Handlers +void MainWindow::hotKeyExecution(QKeyEvent *event) +{ + if(event->key() == Qt::Key_Shift){ + // Toogle Audio Ducking // + this->toggleAudioDucking(); + } else if(event->key() == Qt::Key_Space){ + // Stop All Sounds // + this->stopAllSounds(); + } +} + +void MainWindow::handleGlobalHotKeyEventFromCurrentWidget(QKeyEvent *event) +{ + this->hotKeyExecution(event); +} + +// PROTECTED +void MainWindow::keyReleaseEvent(QKeyEvent *event) +{ + this->hotKeyExecution(event); } // OSC Server +void MainWindow::openOSCSettings() +{ + // Set Local IP + if(get_local_ip() != 0){ + QString* ip = new QString(get_local_ip().toUtf8()); + oscConfigPicker->setInBoundIPv4(ip); + } + + // Run Seeting Diag + oscConfigPicker->exec(); + if(oscConfigPicker->ok == true) + { + if(oscConfigPicker->Result == CasterOSCServerConfigPicker::Action_Start_Server){ + // Attempt To Start Server + inbound_port = oscConfigPicker->getInboundPort(); + outbound_ipv4 = new QString(oscConfigPicker->getOutboundIPv4().toUtf8()); + outbound_port = oscConfigPicker->getOutboundPort(); + bool bind_success = socket->bind(QHostAddress::Any, inbound_port); + if(bind_success){ + // Notify User + QString *temp = new QString("Success!! OSC server running on port " + QString::number(inbound_port).toUtf8()); + QMessageBox msgBox; + msgBox.setText(temp->toUtf8() + "\n"); + msgBox.setStandardButtons(QMessageBox::Close); + msgBox.setDefaultButton(QMessageBox::Close); + msgBox.setModal(true); + msgBox.setWindowTitle("Connection Successful"); + msgBox.setWindowIcon(QIcon(":/res/img/about.png")); + msgBox.exec(); + + // Connect Listener Server + connect(socket, SIGNAL(readyRead()), this, SLOT(executeOSCCommand())); + + //Update Diag + oscConfigPicker->setIsServerRunning(true); + + // Reset Result + oscConfigPicker->ok = false; + oscConfigPicker->Result = CasterOSCServerConfigPicker::Action_Neutral; + + // Synchronize UI Info + if(mainTabContainer->count() > 0 ){ + dynamic_cast(mainTabContainer->currentWidget())->syncWithOSCClient(); + } + this->syncWithOSCClient(); + } else { + QString *temp = new QString("Sorry, inbound port " + QString::number(inbound_port).toUtf8() + " appears to be in use.\nPlease try another port." ); + QMessageBox msgBox; + msgBox.setText(temp->toUtf8() + "\n"); + msgBox.setStandardButtons(QMessageBox::Close); + msgBox.setDefaultButton(QMessageBox::Close); + msgBox.setModal(true); + msgBox.setWindowTitle("Port Connection Error"); + msgBox.setWindowIcon(QIcon(":/res/img/about.png")); + msgBox.exec(); + + //Update Diag + oscConfigPicker->setIsServerRunning(false); + + // Reset Result + oscConfigPicker->ok = false; + oscConfigPicker->Result = CasterOSCServerConfigPicker::Action_Neutral; + } + + } else if (oscConfigPicker->Result == CasterOSCServerConfigPicker::Action_Kill_Server ){ + // Disconnect Listener Server + disconnect(socket, SIGNAL(readyRead()), this, SLOT(executeOSCCommand())); + // Unbind socket from port + socket->close(); + + //Update Diag + oscConfigPicker->setIsServerRunning(false); + + // Reset Result + oscConfigPicker->ok = false; + oscConfigPicker->Result = CasterOSCServerConfigPicker::Action_Neutral; + } + + } +} + void MainWindow::executeOSCCommand() { // Get UDP Datagram // @@ -428,126 +590,354 @@ void MainWindow::executeOSCCommand() // Print OSC Command // QString values(""); - for(int i = 0; i < msg->getNumValues(); i++){ + for(int i = 0; i < (int)msg->getNumValues(); i++){ if(i == 0){ values = msg->getValue(i)->toString(); } else { values += " | " + msg->getValue(i)->toString(); } } main_statusbar->showMessage("[OSC Message] Address: " + address.toUtf8() + " Value(s): " + values.toUtf8() , 500); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Resolve OSC Address // - // Is One-Way Address if(address_params.value(1) == "castersoundboard") { - // Is Board Address - if(address_params.value(2) == "board") - { - // Is A Board Name - if(address_params.value(3) != 0 && address_params.value(3) != "") - { - //================================== - // Check If Board Exists - bool _boardWasFound = false; - int _board_index = 0; - for(int i=0; i < mainTabContainer->count(); i++){ - // Is Board Name Found? - if(dynamic_cast(mainTabContainer->widget(i))->soundBoardName == address_params.value(3)) - { - _boardWasFound = true; - _board_index = i; - break; - } - } - // Finish if board was not found - if(!_boardWasFound) - return;//Board Not Found - //================================== - - // Is Player Address - if(address_params.value(4) == "player") - { - // Is Player Name - if(address_params.value(5) != 0 && address_params.value(5) != "") - { - //================================== - // Check If Player Does NOT Exist - if(!dynamic_cast(mainTabContainer->widget(_board_index))->players->contains(address_params.value(5))){ - delete msg; return;//Player does not exist on board. - } - - QString _player_key(address_params.value(5)); - //================================== - - // Is Action Address - if(address_params.value(6) == "modify") - { - // Is Interface Address - //~~~~Execute Decoded Command~~~~ - if(address_params.value(7) == "volume" - && msg->getNumValues() == 1 - && address_params.value(8) == 0){ - try{// Perform Action - int _volume = 100 * msg->getValue(0)->toFloat(); - dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->volumeSlider->setValue(_volume); - } catch(...) {}// Type Casting Exception Most Likely - } else if (address_params.value(7) == "track_position" - && msg->getNumValues() == 1 - && address_params.value(8) == 0){ - try{// Perform Action - int _position = 100 * msg->getValue(0)->toFloat(); - dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->trackBar->setValue(_position); - } catch(...) {}// Type Casting Exception Most Likely - } else if (address_params.value(7) == "play_state" - && msg->getNumValues() == 1 - && address_params.value(8) != 0){// Is Player State Address - if(address_params.value(8) == "play" && address_params.value(9) == 0){ - try{// Perform Action - if(msg->getValue(0)->toInteger() == 1) - dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->playSound(); - } catch(...){}// Type Casting Exception Most Likely - } else if(address_params.value(8) == "pause" && address_params.value(9) == 0){ - try{// Perform Action - if(msg->getValue(0)->toInteger() == 1) - dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->pauseSound(); - } catch(...){}// Type Casting Exception Most Likely - } else if(address_params.value(8) == "stop" && address_params.value(9) == 0){ - try{// Perform Action - if(msg->getValue(0)->toInteger() == 1) - dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->stopSound(); - } catch(...){}// Type Casting Exception Most Likely - } - } else if (address_params.value(7) == "loop_state" - && msg->getNumValues() == 1 - && address_params.value(8) == 0){ - try{// Perform Action (0 = no loop, 1 = loop) - dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->setLoopState(msg->getValue(0)->toInteger()); - } catch(...){}// Type Casting Exception Most Likely - } - //~~~~Execute Decoded Command End~~~~ - delete msg; return;//EXIT - }//END_IF ACTION - - }//END_IF PLAYER NAME - - }//END_IF PLAYER - - }//END_IF BOARD NAME - - }//END_IF BOARD ADDRESS - + // Is One-Way Address + this->executeOneWayOSCCommand(msg, address_params); }//END_IF CASTERSOUNDBOARD + else {//TWO WAY ADDRESS + this->executeTwoWayOSCCommand(msg, address_params); + } delete msg; return;//EXIT }//END_IF DIRECT MESSAGE //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } - - -// PROTECTED -void MainWindow::keyReleaseEvent(QKeyEvent *event) +void MainWindow::executeOneWayOSCCommand(OscMessage *msg, QStringList address_params) { - if(event->key() == Qt::Key_Shift){ - // Toogle Audio Ducking // - this->toggleAudioDucking(); - } + // Route OSC Message // + // Is Board Address + if(address_params.value(2) == "board") + { + // Is A Board Name + if(address_params.value(3) != 0 && address_params.value(3) != "") + { + //================================== + // Check If Board Exists + bool _boardWasFound = false; + int _board_index = 0; + for(int i=0; i < mainTabContainer->count(); i++){ + // Is Board Name Found? + if(dynamic_cast(mainTabContainer->widget(i))->soundBoardName == address_params.value(3)) + { + _boardWasFound = true; + _board_index = i; + break; + } + } + // Finish if board was not found + if(!_boardWasFound) + return;//Board Not Found + //================================== + + // Is Player Address + if(address_params.value(4) == "player") + { + // Is Player Name + if(address_params.value(5) != 0 && address_params.value(5) != "") + { + //================================== + // Check If Player Does NOT Exist + if(!dynamic_cast(mainTabContainer->widget(_board_index))->players->contains(address_params.value(5))){ + return;//Player does not exist on board. + } + + QString _player_key(address_params.value(5)); + //================================== + + // Is Action Address + if(address_params.value(6) == "modify") + { + // Is Interface Address + //~~~~Execute Decoded Command~~~~ + if(address_params.value(7) == "volume" + && msg->getNumValues() == 1 + && address_params.value(8) == 0){ + try{// Perform Action + int _volume = 100 * msg->getValue(0)->toFloat(); + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->volumeSlider->setValue(_volume); + } catch(...) {}// Type Casting Exception Most Likely + } else if (address_params.value(7) == "track_position_percent" + && msg->getNumValues() == 1 + && address_params.value(8) == 0){ + try{// Perform Action + int _position = 100 * msg->getValue(0)->toFloat(); + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->trackBar->setValue(_position); + } catch(...) {}// Type Casting Exception Most Likely + } else if (address_params.value(7) == "play_state" + && msg->getNumValues() == 1 + && address_params.value(8) != 0){// Is Player State Address + if(address_params.value(8) == "play" && address_params.value(9) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->playSound(); + } catch(...){}// Type Casting Exception Most Likely + } else if(address_params.value(8) == "resume" && address_params.value(9) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->resumeSound(); + } catch(...){}// Type Casting Exception Most Likely + } else if(address_params.value(8) == "pause" && address_params.value(9) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->pauseSound(); + } catch(...){}// Type Casting Exception Most Likely + } else if(address_params.value(8) == "stop" && address_params.value(9) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->stopSound(); + } catch(...){}// Type Casting Exception Most Likely + } + } else if (address_params.value(7) == "loop_state" + && msg->getNumValues() == 1 + && address_params.value(8) == 0){ + try{// Perform Action (0 = no loop, 1 = loop) + dynamic_cast(mainTabContainer->widget(_board_index))->players->value(_player_key)->setLoopState(msg->getValue(0)->toInteger()); + } catch(...){}// Type Casting Exception Most Likely + } + //~~~~Execute Decoded Command End~~~~ + return;//EXIT + }//END_IF ACTION + + }//END_IF PLAYER NAME + + }//END_IF PLAYER + + }//END_IF BOARD NAME + + //END_IF BOARD ADDRESS + } else if(address_params.value(2) == "global"){ + if(address_params.value(3) == "modify"){ + // Is Interface Address + //~~~~Execute Decoded Command~~~~ + if (address_params.value(4) == "all_play_states" + && msg->getNumValues() == 1 + && address_params.value(5) != 0){// Is Global Player States Address + if(address_params.value(5) == "stop" && address_params.value(6) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + this->stopAllSounds(); + } catch(...){}// Type Casting Exception Most Likely + } + } else if (address_params.value(4) == "audio_ducking_state" + && msg->getNumValues() == 1 + && address_params.value(5) == 0){ + try{// Perform Action (0 = no duck, 1 = duck) + audio_duck_state = msg->getValue(0)->toInteger(); + if(audio_duck_state == 0){ + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/duck.png")); + } else { + audio_duck_state = 1; + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/unduck.png")); + } + + // Iterate through boards + for(int i = 0; i < mainTabContainer->count(); i++) + { + dynamic_cast(mainTabContainer->widget(i))->setAllAudioDuckingStates(audio_duck_state); + } + + // Give current board keyboard focus again + if(mainTabContainer->count() > 0 ) + dynamic_cast(mainTabContainer->currentWidget())->setFocus(); + } catch(...){}// Type Casting Exception Most Likely + } + //~~~~Execute Decoded Command End~~~~ + return;//EXIT + } + }//END_ELSE_IF GLOBAL ADDRESS +} + +void MainWindow::executeTwoWayOSCCommand(OscMessage *msg, QStringList address_params) +{ + // Route OSC Message // + // Is Current Board Player Address + if(address_params.value(1) == "cbp")// cbp = Current Board Player + { + //================================== + // Check If Current Board Does NOT Exist + if(mainTabContainer->count() <= 0) + return;//No current board exists. + + // Is A Player Name + if(address_params.value(2) != 0 && address_params.value(2) != "") + { + //================================== + // Check If Player Does NOT Exist + if(!dynamic_cast(mainTabContainer->currentWidget())->players->contains(address_params.value(2))) + return;//Player does not exist on current board. + QString _player_key(address_params.value(2)); + //================================== + + // Is Action Address + if(address_params.value(3) == "m")// m = modify + { + // Is Interface Address + //~~~~Execute Decoded Command~~~~ + if(address_params.value(4) == "vol" + && msg->getNumValues() == 1 + && address_params.value(5) == 0){//vol = volume + try{// Perform Action + int _volume = 100 * msg->getValue(0)->toFloat(); + dynamic_cast(mainTabContainer->currentWidget())->players->value(_player_key)->volumeSlider->setValue(_volume); + } catch(...) {}// Type Casting Exception Most Likely + } else if (address_params.value(4) == "t_p_p" + && msg->getNumValues() == 1 + && address_params.value(5) == 0){//t_p_p = track_position_percent + try{// Perform Action + int _position = 100 * msg->getValue(0)->toFloat(); + dynamic_cast(mainTabContainer->currentWidget())->players->value(_player_key)->trackBar->setValue(_position); + } catch(...) {}// Type Casting Exception Most Likely + } else if (address_params.value(4) == "p_s" + && msg->getNumValues() == 1 + && address_params.value(5) != 0){//p_s = play_state // Is Player State Address + if(address_params.value(5) == "play_stop" && address_params.value(6) == 0){// + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->currentWidget())->players->value(_player_key)->play_stop_toggle(); + } catch(...){}// Type Casting Exception Most Likely + } else if(address_params.value(5) == "resume_pause" && address_params.value(6) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + dynamic_cast(mainTabContainer->currentWidget())->players->value(_player_key)->resume_pause_toggle(); + } catch(...){}// Type Casting Exception Most Likely + } + } else if (address_params.value(4) == "l_s" + && msg->getNumValues() == 1 + && address_params.value(5) == 0){//l_s = loop_state + try{// Perform Action (0 = no loop, 1 = loop) + dynamic_cast(mainTabContainer->currentWidget())->players->value(_player_key)->setLoopState(msg->getValue(0)->toInteger()); + } catch(...){}// Type Casting Exception Most Likely + } + //~~~~Execute Decoded Command End~~~~ + return;//EXIT + }//END_IF ACTION ADDRESS + + }//END_IF PLAYER NAME + + //END_IF CURRENT BOARD PLAYER ADDRESS + } else if(address_params.value(1) == "glo"){//glo = global + if(address_params.value(2) == "m"){//m = modify + // Is Interface Address + //~~~~Execute Decoded Command~~~~ + if (address_params.value(3) == "all_p_s" + && msg->getNumValues() == 1 + && address_params.value(4) != 0){//all_p_s = all_play_states // Is Global Player States Address + if(address_params.value(4) == "stop" && address_params.value(5) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + this->stopAllSounds(); + } catch(...){}// Type Casting Exception Most Likely + } + } else if (address_params.value(3) == "audio_d_s" + && msg->getNumValues() == 1 + && address_params.value(4) == 0){//audio_d_s = audio_ducking_state + try{// Perform Action (0 = no duck, 1 = duck) + audio_duck_state = msg->getValue(0)->toInteger(); + if(audio_duck_state == 0){ + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/duck.png")); + } else { + audio_duck_state = 1; + toggleAudioDuckingButton->setIcon(QIcon(":/res/img/unduck.png")); + } + + // Iterate through boards + for(int i = 0; i < mainTabContainer->count(); i++) + { + dynamic_cast(mainTabContainer->widget(i))->setAllAudioDuckingStates(audio_duck_state); + } + + // Give current board keyboard focus again + if(mainTabContainer->count() > 0 ) + dynamic_cast(mainTabContainer->currentWidget())->setFocus(); + } catch(...){}// Type Casting Exception Most Likely + } else if (address_params.value(3) == "current_tab" + && msg->getNumValues() == 1 + && address_params.value(4) != 0){ + if(address_params.value(4) == "next" && address_params.value(5) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + this->switchToNextTab(); + } catch(...){}// Type Casting Exception Most Likely + } else if(address_params.value(4) == "prev" && address_params.value(5) == 0){ + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + this->switchToPrevTab(); + } catch(...){}// Type Casting Exception Most Likely + } + } + //~~~~Execute Decoded Command End~~~~ + return;//EXIT + } else if(address_params.value(2) == "sync"){// Triggers Client UI Syncing + try{// Perform Action + if(msg->getValue(0)->toInteger() == 1) + // Synchronize UI Info + if(mainTabContainer->count() > 0 ){ + this->syncWithOSCClient(); + dynamic_cast(mainTabContainer->currentWidget())->syncWithOSCClient(); + } + } catch(...){}// Type Casting Exception Most Likely + } + }//END_ELSE_IF GLOBAL ADDRESS +} + +void MainWindow::sendOSCMessageToClient(OscMessageComposer* message) +{ + // Send OSC Message + try{ + if(oscConfigPicker->getIsServerRunning()){ + QByteArray* oscDatagram = message->getBytes(); + QHostAddress oscClientAddress(*outbound_ipv4); + socket->writeDatagram(*oscDatagram, oscClientAddress, outbound_port); + } + } catch(...) { } + + delete message; +} + +//======================================================== +//==========OSC Composer Methods===== +OscMessageComposer* MainWindow::writeOSCMessage(QString address, int value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushInt32((qint32)value); + return msg; +} + +OscMessageComposer* MainWindow::writeOSCMessage(QString address, float value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushFloat(value); + return msg; +} + +OscMessageComposer* MainWindow::writeOSCMessage(QString address, QString value){ + // Compose OSC Message + OscMessageComposer* msg = new OscMessageComposer(address); + msg->pushString(value.toUtf8()); + return msg; +} + +//========================================================= +//===Utility Methods==== +QString MainWindow::get_local_ip(){ + foreach (const QHostAddress &address, QNetworkInterface::allAddresses()) { + if (address.protocol() == QAbstractSocket::IPv4Protocol && address != QHostAddress(QHostAddress::LocalHost)) + return address.toString(); + } + return 0; +} + +void MainWindow::syncWithOSCClient(){ + //Update Audio Ducking + OscMessageComposer* msg = writeOSCMessage("/glo/m/audio_d_s", audio_duck_state); + this->sendOSCMessageToClient(msg); } diff --git a/CasterSoundboard/MainWindow.h b/CasterSoundboard/MainWindow.h index 796c395..31bc4ea 100644 --- a/CasterSoundboard/MainWindow.h +++ b/CasterSoundboard/MainWindow.h @@ -23,6 +23,7 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include +#include "libs/osc/composer/OscMessageComposer.h" //forward declarations class QObject; @@ -32,6 +33,9 @@ class QPushButton; class QToolBar; class QStatusBar; class QUdpSocket; +class QByteArray; +class OscMessage; +class CasterOSCServerConfigPicker; class MainWindow : public QWidget //inherit from QWidget { @@ -58,8 +62,21 @@ protected: private: //PROPERTIES int audio_duck_state = 0; + int previous_tab_index = 0; + CasterOSCServerConfigPicker *oscConfigPicker; + + // OSC Server Settings + int inbound_port = 5051; + QString *outbound_ipv4; + int outbound_port = 9000; //METHODS + //OSC Composer Methods + OscMessageComposer* writeOSCMessage(QString address, int value); + OscMessageComposer* writeOSCMessage(QString address, float value); + OscMessageComposer* writeOSCMessage(QString address, QString value); + //Utility + QString get_local_ip(); //WIDGETS //Toolbar @@ -96,9 +113,21 @@ public slots: void stopAllSounds(); void renameCurrentTab(); void toggleAudioDucking(); + // Tab Switching + void switchToNextTab(); + void switchToPrevTab(); + void currentTabWasChanged(int tabIndex); + void updateCurrentOSCTab(int tabIndex); + // Board Signal Emissions Handlers + void hotKeyExecution(QKeyEvent * event); + void handleGlobalHotKeyEventFromCurrentWidget(QKeyEvent *event); //OSC Server void openOSCSettings(); void executeOSCCommand(); + void executeOneWayOSCCommand(OscMessage* msg, QStringList address_params); + void executeTwoWayOSCCommand(OscMessage* msg, QStringList address_params); + void sendOSCMessageToClient(OscMessageComposer* message); + void syncWithOSCClient(); }; diff --git a/docs/img/screenshot.png b/docs/img/screenshot.png index e518e7e45458542268c97479221d9d9edc5dbd9c..2c0c2e0852bfbad4644757f1c06fedd62ad7df83 100644 GIT binary patch literal 241807 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
dLNCr->J&I`+o&%rZ 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 z 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 z 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 From 0a1cc910b6d8dffc7496b2e8bb49459dcdd2eaee Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Sun, 14 May 2017 22:35:52 -0700 Subject: [PATCH 39/77] Added an sample TouchOSC layout --- CasterSoundboard/CasterSoundboard.pro.user | 336 ------------------ .../CasterSoundboard.pro.user.2.7pre1 | 256 ------------- .../CasterSoundboard.pro.user.f58cfa5 | 256 ------------- TouchOSC-Layouts/Test.touchosc | Bin 0 -> 958 bytes 4 files changed, 848 deletions(-) delete mode 100644 CasterSoundboard/CasterSoundboard.pro.user delete mode 100644 CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 delete mode 100644 CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 create mode 100644 TouchOSC-Layouts/Test.touchosc diff --git a/CasterSoundboard/CasterSoundboard.pro.user b/CasterSoundboard/CasterSoundboard.pro.user deleted file mode 100644 index 28b8462..0000000 --- a/CasterSoundboard/CasterSoundboard.pro.user +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - EnvironmentId - {50358eb3-48cf-418f-8201-244c0b8cf771} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop Qt 5.8.0 GCC 64bit - Desktop Qt 5.8.0 GCC 64bit - qt.58.gcc_64_kit - 0 - 0 - 0 - - /home/oscar/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - true - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - /home/oscar/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - - /home/oscar/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Profile - - - true - qmake - - QtProjectManager.QMakeBuildStep - true - - false - true - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Profile - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 3 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - false - false - 1000 - - true - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - CasterSoundboard - - Qt4ProjectManager.Qt4RunConfiguration:/home/oscar/Documents/GIT/CasterSoundboard/CasterSoundboard/CasterSoundboard.pro - true - - CasterSoundboard.pro - false - - /home/oscar/Documents/GIT/CasterSoundboard/build-CasterSoundboard-Desktop_Qt_5_8_0_GCC_64bit-Debug - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 18 - - - Version - 18 - - diff --git a/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 b/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 deleted file mode 100644 index 1a0df52..0000000 --- a/CasterSoundboard/CasterSoundboard.pro.user.2.7pre1 +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop Qt 5.1.0 clang 64bit - Desktop Qt 5.1.0 clang 64bit - qt.510.clang_64.essentials_kit - 0 - 0 - 0 - - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Debug - true - - - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /Users/oscarcerna/Desktop/castersb-code/build-CasterSoundboard-Desktop_Qt_5_1_0_clang_64bit-Release - true - - 2 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - true - - false - false - false - false - true - 0.01 - 10 - true - 25 - - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - CasterSoundboard - - Qt4ProjectManager.Qt4RunConfiguration:/Users/oscarcerna/Desktop/castersb-code/CasterSoundboard/CasterSoundboard.pro - 2 - - CasterSoundboard.pro - false - false - - - 3768 - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {c518f7b1-f3fd-45b5-8fdd-e02398dff7b3} - - - ProjectExplorer.Project.Updater.FileVersion - 12 - - diff --git a/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 b/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 deleted file mode 100644 index d8fa918..0000000 --- a/CasterSoundboard/CasterSoundboard.pro.user.f58cfa5 +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 0 - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {9bf0fa5d-dc1c-4228-bcea-48de4389f998} - 1 - 0 - 0 - - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/oscar/QT-Projects/build-CasterSoundboard-Desktop-Debug - true - - - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - -w - -r - - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /home/oscar/QT-Projects/build-CasterSoundboard-Desktop-Release - true - - 2 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - true - - false - false - false - false - true - 0.01 - 10 - true - 25 - - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - CasterSoundboard - - Qt4ProjectManager.Qt4RunConfiguration:/home/oscar/QT-Projects/CasterSoundboard/CasterSoundboard.pro - 2 - - CasterSoundboard.pro - false - false - - - 3768 - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {f58cfa53-7051-4cd5-9297-7b90ec352035} - - - ProjectExplorer.Project.Updater.FileVersion - 12 - - diff --git a/TouchOSC-Layouts/Test.touchosc b/TouchOSC-Layouts/Test.touchosc new file mode 100644 index 0000000000000000000000000000000000000000..41cd73e11cd33171db72b30160958a1c4a8a6b44 GIT binary patch literal 958 zcmWIWW@Zs#;Nak3c-pwmivbC60@;~)DXA5D6}dTEr^Oa8GLUHf&o%k?T_GkV>IijX_sk`%Zw@;vnbjXoNr5#fK`fSnv z-vsU3JWctH)g?1Mqd7%YF&|F6+^D&JMdBL`RW1xkz4rlm%R>76d%SmSZ_ z-u@l~UNgUIrnfQ!)_LT+de*x}hh7mbn{&hXn#`J@FMHE86JG3otMQL&FqXOEPex>>j5!tH1W)d=>^24`P`jE{>Q%zKI_zCT{on^|+Td51lx_1hKRerESF zViq2Bu&ML&dG+hRvzg90y*w=icHO0{&g}d`iL<_*qsIJRtUO3Wf@ zi3?wAFIfL!ej|T7?BC~oQ_Ib(?pX_0uFtvE=v7&ey03WYsjsn8`^3(P9|~A@Vq2GF z=;E@<+=eipj2*XhJOBP{yR2?=es*p2lRHN_zuRRLP1D)0Bpxd{dCC{F6Ri#}1Y_&_ z>z?oZnqwosB=*w$-kqCe_zmlKH#N?A`{~Xs*2A}*!y7{X8*uL`(M`y@)wE)u890e zyB<=-uz2t7t@8ZxjQV1)FB|Snb$-3iNyV9ct%nS^VxEUA%ycwB97!X+wSq_xtPysvx26(fw RfutCL&>Tn?0*zx}002&3r*!}T literal 0 HcmV?d00001 From 21588f58d295ac3e8460c120718e1fc09ddd4cd8 Mon Sep 17 00:00:00 2001 From: Oscar Cerna Date: Sun, 14 May 2017 22:44:50 -0700 Subject: [PATCH 40/77] updated screenshot --- docs/img/screenshot.png | Bin 241807 -> 228630 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/screenshot.png b/docs/img/screenshot.png index 2c0c2e0852bfbad4644757f1c06fedd62ad7df83..c63db84899364a240a3048370c411e20d61ae17f 100644 GIT binary patch literal 228630 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 literal 241807 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 z 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

uKC>f5lLRzsQEC|^Yr{0T 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%0Dxqpf-65l;3_>T#|-1 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 Date: Sun, 14 May 2017 23:04:43 -0700 Subject: [PATCH 41/77] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index bc62fc2..470139a 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ A soundboard for hot-keying and playing back sounds. (For podcasting) CasterSoundboard is written in C++ Qt5. ======= +## Libraries Used +### osc-cpp-qt +https://github.com/MugenSAS/osc-cpp-qt + ## How to Install CasterSoundboard is not packaged for any platforms at this time see From d8b6a9b4b8162a1b1b2200930a087e8136496b66 Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Tue, 16 May 2017 01:20:18 -0700 Subject: [PATCH 42/77] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 470139a..22db018 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,14 @@ CasterSoundboard is written in C++ Qt5. ### osc-cpp-qt https://github.com/MugenSAS/osc-cpp-qt +--- + +## Guides +### Control CasterSoundboard with your phone or tablet via a network: +[Click Here For Guide](https://github.com/JupiterBroadcasting/CasterSoundboard/wiki/Guide:-How-to-Control-CasterSoundboard-Using-Your-Phone-or-Tablet "CasterSoundboard's Wiki") + +--- + ## How to Install CasterSoundboard is not packaged for any platforms at this time see From 079f6f643c58ffca717ae0a021135c00882e26c1 Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Tue, 16 May 2017 01:21:34 -0700 Subject: [PATCH 43/77] Update README.md --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 22db018..c6d4d4a 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,15 @@ A soundboard for hot-keying and playing back sounds. (For podcasting) CasterSoundboard is written in C++ Qt5. ======= -## Libraries Used -### osc-cpp-qt -https://github.com/MugenSAS/osc-cpp-qt - ---- - ## Guides ### Control CasterSoundboard with your phone or tablet via a network: [Click Here For Guide](https://github.com/JupiterBroadcasting/CasterSoundboard/wiki/Guide:-How-to-Control-CasterSoundboard-Using-Your-Phone-or-Tablet "CasterSoundboard's Wiki") +======= + +## Libraries Used +### osc-cpp-qt +https://github.com/MugenSAS/osc-cpp-qt --- ## How to Install From 4bf4fe346dffb3b7046fdb01be5a9653a7612c8a Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Tue, 16 May 2017 11:48:15 -0700 Subject: [PATCH 44/77] Added TouchOSC Layout Layout for Samsung Galaxy Tab 4 10.1inch. Screen resolution in 1280x800. --- ...ngSung_Galaxy_Tab_4_10inch_covariant.touchosc | Bin 0 -> 3749 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 TouchOSC-Layouts/SamngSung_Galaxy_Tab_4_10inch_covariant.touchosc diff --git a/TouchOSC-Layouts/SamngSung_Galaxy_Tab_4_10inch_covariant.touchosc b/TouchOSC-Layouts/SamngSung_Galaxy_Tab_4_10inch_covariant.touchosc new file mode 100644 index 0000000000000000000000000000000000000000..7b83039865676a9f727f88c7b73f44ef6b74a799 GIT binary patch literal 3749 zcmY*cdpy(YA6JrFC@P)A>J-9piPPk^DW#5O?#it-kxpUB-E8|6aU4a3CW|G-klZQ? zTZZJW+@>(j%Gk!-X0zG$`|A9z&-ah-=k@wLpZD{5-p~8Q1YsO|#1BoF9Z0y) z%|nk!4Zca%*IGdGgpu*lk#((3s5yoy-H_$;gi zSBqZyfSqS%j>j$87WA16GrR<*g#5rGvDGTl5l&(5Kn8SeB~{yq!Bj)lPBeukuJSH~ zUEhN@nxe#;PKTD?Yfzwq5`~NJF8qOQ-2IRdw%!9fVu|}no+4T$RPgKSjHmZHvO5|K z8!flZ^)$q&sVslscQ=RsdY#`QYDPvGMrzuo>e^DmL6Mpgy>$o?=163PlU+W4|0Vs45%g!Anq(_!0rfnVKB zS4%Zp?0D{nTPqs7iz(c1aaEN0C#V>Dqi+W&U^leP63J`8pYvQCC~MI9iHnUI*4FBO zOxk2;eY;|2+nbg8BxVUu9lh1LH}6Z>bR;gt2H{xF{yszQ?bS5K86E-Uo0!-Hgib{@ zdmU?v;q#}16PIl7l+@xE`YGLS`UpJmI$<%WVG$8K6^r!+ftqSFv)YtFBenQiil7~? z%9&!_N~&P@mOi@VvdD-A`xOy<-um@_Jcv2SNxZu^Vq5xAbuoM?P^)A>Ql6C;5o`S@ zlexFe!7W|&<^1E3pp*JF*KpFpV--TmrthoQ-=a)S_;>BUT6PgI%j?KBlv|o7ie(=? zt`}){kDahQxvOwaRh4gVJl2vjeM+G*X$QpBUf=*yLLECvl~1M;J{8TJjUO+*0r~ho zewmS$cf*;IP@kLysjr4mIRsaX zMRP6%{}d|^L|hgp`LYQ1nDp@Bk)U#VD$DPq55fa3KHy0|(Id=LVxe6zgsa0NhlfyU zwd7M^_B9_8T|ERt0Oo%_M^9q;34AEg2B*YUe+T%o{OmEQfHSz9lFYIJz|J{~Cv-jO z$9shDlvsU*!uT>DguWNzF;Bb32hn#D6EWO3&?8J>vG|6r7 z)0xq~mLchfg6P6mz0n;h7z^3e3K#a6pkAXMRm>$<^+ju(6}iuIOp`G$)ALrHUytEZ z4Rr2?kJTM&p^y}g=%`q6{mMEh+rjUUr}qercg<8Ptgt;bD5sn#aYTLF#Zpe4c{QT( zlLjbmv#4Tl4x!*TzHt8^A1KD(w@Oc(XMf1SxZq&M;-ZW7K2>M3*22$$#heHI=Et)4 z2#S`nZxI82%X^stpJ@rN2_)J@K6-dOuRo+`M=6LK<=pk`?Cfc;VrOjQr=!Z?2zTPq z>@oqzT(YzOO!hDr_VzX9;yFff*y9nN@toWh^AU;6s}dNefnU>vP?})qiAj*0_fUVO z$xB-?G`RO)mW2Y(G|ce696{vq#F|#DX9#PWE4MtWE_zY;YY)_O%ktDc)Ts21#J*Fz zz#+gMWWiAW67-V1b#Mc9%C(HeFBB@OivkRaAUG?fbD$iW=Bo~Wj5f&yPm9HMcmt9WGl@V+i;M-)R0tJS`CI002aG_3B+D{@CPwm3Yb zWwOo&U=~%?e!xBzhGFsd%8C1{q4%mkgtcqdoc%Yl^ABY04sQgF@$=uwn*MUbEp3C; zje`2u_WKC_H9olP+d^W@+kb6dxnXQen%L&2*tjpj$Vcf;oF9D3{oqsfhh%@GsmnuC z!J0X=)VZMNl6_?^4{0IeZq=r$qM$S}sdsQxGZjN^g|H7h^VissZ$$u~vIg_~WQ>Vn zwP{?|TM_u|V!!U{xK_skKl!!^xEi#Jl)X-M)Wp+L#X+Z}?svl7o!2e1S8!iuKLZDJ zV&IK*z#VT^-DmAIghiGU4pmEGsuHR%5TM!J;VZ?iSO>J2UC|Kfj;_?gs2&$oh%{3J zd8k&dN=uvmDom-WuhM5_bDy6^DdK6Oi}N5 zA3z3D4mOJ>8QBrdMvCMT%x}hX^qZ^6Y2pG;Zc?U2K05R93i|3z5ZF`m{b?1U-LBS3 z`^64*k)7`%+coiBE7nwNnb4m|1&rY3q|D3pYl`l+>gpmSQhO6-@DAMrCYB+&m%XdSh0F`2%Lt>omLF6U|c z$}(Y`bA#?unL+)toO3@~-6ai?*U%u7?^rLaZ^e4a@d&OMpk#8qH$-Gojp%X2sFiIj zTl^A2x$uppe})sQduX+V%5uf{2U5x&3irAa&8iVuFCh9U<(bZ$k!%l&>`=Sz>NP_W z(C~mlx%O(Ke@3N=eZef#LLoqjukb(R5*sJji!TTA8X0s)$g?!`R@pT}nydA+R&0P3 z@AfGZAcu3uftE=8r5fnJ6#eiU9hb!kdaQQF5s!_9T@V-~p0FP{S)iD2S9Q1PuClL| zqGWiA8lt)fLrm1`?hUq3ULLpup^*`3V!vI3pcA}Vby3|bjxyW-U8^JvykT?#25TPZ zkKwmkC8h@axZP9;AQXyM7e=EvPC-MYGPOJRWP8H!Rh>uJavsmIPX? z*qEPrw7h0xthKgWLuRg@H)hU7G8K!24jrGD>wGevpUx0Cd?#`3S#GitS2;HReL~F> z$-QBrRaJpW3AEc$q}yL$Rt!Ch5Rso?Zdp#=zhOh9w3#z?j*h71EMe=R`~tIQh=+4c z@=fh2D_x!OQ27alxiDC+F%$0}|K$(tqd`%9=jMnLl*eiO#F938W^VX9(-N*&J%PCY z3H^SAzP{wpm1#Q@BEq{%#E;}EGS*^mG-W~`m~~`QH`?D?3YX&=y+_wv zmuOe;qbKbGz)}+}F5x|zdPNfOWuhHK{?O#Iy$AHMK3@X|*}klU@1}Tki6+O;)Qggw zP_C#S9cm_Zvf`$`NBf&do#eP|0PVbFR|Q`iKr@sYYH>vXnybW1IDzgLZ7E#O*vDl8 zll7!d##}Y#gofkN*P13x@N3!`tlv>C`np#->|34J0$H(9U-?_z?@gL9uY;B`Hd@@N zHxJD+=jF_R@bQMNj_Oj0WwFsZ} zhe{K%|KLZtt?xD#Tt~w2t*BsGh(FDJ>!ROmx@l;r#+F62`Gm6tHeXQ#gl|EW>XKE} zt)q^tQ@z1!)Xv>nEtyK5or(3eZO<2wHa>;))EST43qFyaGoZ=ghbBp&p-1n8wjcMT zns-bmZrnu5=&y%%tf$<00^j%BdXO2W*qzkhLBL=f|P z@v|}N^$k^i<9>8ORx}^EH|DDuta%1|<^c9FeDYLnSy74MfWaRjYs@bbpw#l_H^>-J zDp_RRI3Si99ClZ74AS4}WX{`aVQ`aB3V5XPjQ{v4JPx57ovb!s|a>@jYf8ZA%8*kXP&AG(-v|-#^DG zi-n!A^vBe&AkKH#7d@{%03o#sT2rPAK!NRW^Bwsai^!M|)594C4cLxroZDF`I@+EG z4L^aCjVdcMNFl Date: Wed, 17 May 2017 22:22:11 +0200 Subject: [PATCH 45/77] Add Fedora installation instruction --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index c6d4d4a..b2984e3 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,13 @@ Building from Source for installation instructions. Thanks to git user [@j605](https://github.com/j605 "Jagannathan Tiruvallur Eachambadi") for creating a PKGBUILD for people on Arch who want to try this software: https://aur.archlinux.org/packages/castersoundboard-git +### Fedora 25 and newer +RPM package can be found in the [Copr](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/) repository: +``` +# dnf copr enable fszymanski/castersoundboard +# dnf install castersoundboard +``` + ### Building From Source First clone the repository using git, if you don't have git installed From 2eb699e6fb15be9ff8d7add434e3d3bb41a6e89c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Wed, 17 May 2017 22:22:49 +0200 Subject: [PATCH 46/77] Add desktop file --- CasterSoundboard.desktop | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 CasterSoundboard.desktop diff --git a/CasterSoundboard.desktop b/CasterSoundboard.desktop new file mode 100644 index 0000000..0351c3d --- /dev/null +++ b/CasterSoundboard.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=CasterSoundboard +Comment=A soundboard for hot-keying and playing back sounds +Icon=CasterSoundboard.png +Exec=CasterSoundboard +NoDisplay=false +Categories=AudioVideo; +StartupNotify=false +Terminal=false From d8f1ce159402cba5ab40854a6f2fb278fdd43a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Wed, 17 May 2017 22:23:20 +0200 Subject: [PATCH 47/77] Add AppData file --- CasterSoundboard.appdata.xml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 CasterSoundboard.appdata.xml diff --git a/CasterSoundboard.appdata.xml b/CasterSoundboard.appdata.xml new file mode 100644 index 0000000..d95a007 --- /dev/null +++ b/CasterSoundboard.appdata.xml @@ -0,0 +1,22 @@ + + + + CasterSoundboard.desktop + CC0-1.0 + LGPL-3.0 + CasterSoundboard +

A soundboard for hot-keying and playing back sounds + +

+ A soundboard for hot-keying and playing back sounds. (For podcasting) +

+
+ + + https://raw.githubusercontent.com/JupiterBroadcasting/CasterSoundboard/master/docs/img/screenshot.png + + + https://github.com/JupiterBroadcasting/CasterSoundboard + https://github.com/JupiterBroadcasting/CasterSoundboard/issues + fszymanski@fedoraproject.org + From aa26df51a27c2235e1d799a6e1b5189db9ec0f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Fri, 19 May 2017 00:05:50 +0200 Subject: [PATCH 48/77] Install desktop, appdata and icon file (#26) --- CasterSoundboard.desktop | 2 +- CasterSoundboard.png | Bin 0 -> 40659 bytes CasterSoundboard/CasterSoundboard.pro | 14 ++++++++++++++ README.md | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 CasterSoundboard.png diff --git a/CasterSoundboard.desktop b/CasterSoundboard.desktop index 0351c3d..a33b532 100644 --- a/CasterSoundboard.desktop +++ b/CasterSoundboard.desktop @@ -3,7 +3,7 @@ Version=1.0 Type=Application Name=CasterSoundboard Comment=A soundboard for hot-keying and playing back sounds -Icon=CasterSoundboard.png +Icon=CasterSoundboard Exec=CasterSoundboard NoDisplay=false Categories=AudioVideo; diff --git a/CasterSoundboard.png b/CasterSoundboard.png new file mode 100644 index 0000000000000000000000000000000000000000..e1693199919c328a3096969cdd16aaefd697229f GIT binary patch literal 40659 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

SLK+f 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 Ghx{KZri%^$ literal 0 HcmV?d00001 From 8525ab5ed7667a4e3f0a1e082f8e84e93d15fb86 Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Sun, 4 Jun 2017 13:01:18 +0100 Subject: [PATCH 73/77] OscBundle.cpp: fix misleading-indentation warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed a few spaces before throwing exceptions so that the following warnings aren't raised while compiling OscBundle.cpp: ``` warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] ``` ``` note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’ ``` --- CasterSoundboard/libs/osc/reader/OscBundle.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CasterSoundboard/libs/osc/reader/OscBundle.cpp b/CasterSoundboard/libs/osc/reader/OscBundle.cpp index bfef7cc..a032d73 100644 --- a/CasterSoundboard/libs/osc/reader/OscBundle.cpp +++ b/CasterSoundboard/libs/osc/reader/OscBundle.cpp @@ -91,7 +91,7 @@ OscBundle* OscBundle::getBundle(qint32 index) { if (dynamic_cast(mContentList[index]) != 0) return dynamic_cast(mContentList[index]); - throw GetBundleException(); + throw GetBundleException(); } /** @@ -105,5 +105,5 @@ OscMessage* OscBundle::getMessage(qint32 index) { if (dynamic_cast(mContentList[index]) != 0) return dynamic_cast(mContentList[index]); - throw GetMessageException(); + throw GetMessageException(); } From 40bcc0c2a9eebcf4c6469ea615ed87bc7edbe2d0 Mon Sep 17 00:00:00 2001 From: Quinton Schwagle Date: Wed, 7 Jun 2017 12:11:58 -0400 Subject: [PATCH 74/77] Fixed issue with tab deletion and Issue #58. - MainWindow::mainTabContainerClosedRequested would remove the given tab from the container, but would not delete the tab. (removeTab does not delete the object) The tab is now deleted. - CasterPlayerWidget 's player is not attached to the object tree. Added a deconstructor and manuelly deletes the player when the CasterPlayerWidget object is deleted --- CasterSoundboard/CasterPlayer.cpp | 4 ++++ CasterSoundboard/CasterPlayer.h | 1 + CasterSoundboard/MainWindow.cpp | 8 ++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index 440ce78..fc78056 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -224,6 +224,10 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) connect(player,SIGNAL(metaDataChanged()),this,SLOT(playerMetaDataChanged())); connect(player,SIGNAL(durationChanged(qint64)),this,SLOT(playerDurationChanged(qint64))); } +CasterPlayerWidget::~CasterPlayerWidget(void) +{ + delete player; +} //Set Properties void CasterPlayerWidget::setHotKeyLetter(QString hotKey) diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h index be38068..584c1ea 100644 --- a/CasterSoundboard/CasterPlayer.h +++ b/CasterSoundboard/CasterPlayer.h @@ -46,6 +46,7 @@ class CasterPlayerWidget : public QWidget //inherit from QWidget public: //Constructor CasterPlayerWidget(QWidget* parent = 0); //don't forget to pass the parent + ~CasterPlayerWidget(); //Set Properties void setHotKeyLetter(QString hotKey); diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index e135158..b6c6586 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -187,10 +187,14 @@ void MainWindow::mainTabContainerTabClosedRequested(int tabIndex) msgBox.setModal(true); if(msgBox.exec() == QMessageBox::Yes) { + CasterBoard *toBeDeleted = dynamic_cast(mainTabContainer->widget(tabIndex)); //CLOSE REQUESTED TAB - disconnect(dynamic_cast(mainTabContainer->widget(tabIndex)), SIGNAL(globalHotKeyReleasedEvent(QKeyEvent*)),this,SLOT(handleGlobalHotKeyEventFromCurrentWidget(QKeyEvent*))); - disconnect(dynamic_cast(mainTabContainer->widget(tabIndex)), SIGNAL(_updateOSCClient(OscMessageComposer)),this,SLOT(sendOSCMessageToClient(OscMessageComposer))); + disconnect(toBeDeleted, SIGNAL(globalHotKeyReleasedEvent(QKeyEvent*)),this,SLOT(handleGlobalHotKeyEventFromCurrentWidget(QKeyEvent*))); + disconnect(toBeDeleted, SIGNAL(_updateOSCClient(OscMessageComposer)),this,SLOT(sendOSCMessageToClient(OscMessageComposer))); mainTabContainer->removeTab(tabIndex); + if(toBeDeleted) { + delete toBeDeleted; + } } } From e99c01727fc9719216c9a07fb89e063e930e05f0 Mon Sep 17 00:00:00 2001 From: Quinton Schwagle Date: Wed, 7 Jun 2017 14:27:41 -0400 Subject: [PATCH 75/77] Removed the Deconstructor in CasterBoardWidget - Found a better way by adding QMediaPlayer to the Object Tree. Removed the unneeded deconstructor. --- CasterSoundboard/CasterPlayer.cpp | 6 +----- CasterSoundboard/CasterPlayer.h | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index fc78056..8b47f78 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -59,7 +59,7 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) this->setAcceptDrops(true); //Init Player - player = new QMediaPlayer(); + player = new QMediaPlayer(this); playStateImage = new QImage; playStateImage->load(":/res/img/playState_playing.png"); //Init Properties @@ -224,10 +224,6 @@ CasterPlayerWidget::CasterPlayerWidget(QWidget* parent) : QWidget(parent) connect(player,SIGNAL(metaDataChanged()),this,SLOT(playerMetaDataChanged())); connect(player,SIGNAL(durationChanged(qint64)),this,SLOT(playerDurationChanged(qint64))); } -CasterPlayerWidget::~CasterPlayerWidget(void) -{ - delete player; -} //Set Properties void CasterPlayerWidget::setHotKeyLetter(QString hotKey) diff --git a/CasterSoundboard/CasterPlayer.h b/CasterSoundboard/CasterPlayer.h index 584c1ea..be38068 100644 --- a/CasterSoundboard/CasterPlayer.h +++ b/CasterSoundboard/CasterPlayer.h @@ -46,7 +46,6 @@ class CasterPlayerWidget : public QWidget //inherit from QWidget public: //Constructor CasterPlayerWidget(QWidget* parent = 0); //don't forget to pass the parent - ~CasterPlayerWidget(); //Set Properties void setHotKeyLetter(QString hotKey); From 01cc2d630f8cb48ff7a95d2d84095c2c7498c735 Mon Sep 17 00:00:00 2001 From: Oscar Cerna-Mandujano Date: Mon, 20 May 2019 11:07:00 -0700 Subject: [PATCH 76/77] Removing unmaintained Fedora package status link --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3429d08..6038822 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ CasterSoundboard ================ [![Snap Status](https://build.snapcraft.io/badge/JupiterBroadcasting/CasterSoundboard.svg)](https://build.snapcraft.io/user/JupiterBroadcasting/CasterSoundboard) -[![Copr Status](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/package/castersoundboard/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/package/castersoundboard/) [![License](https://img.shields.io/github/license/JupiterBroadcasting/CasterSoundboard.svg)](https://github.com/JupiterBroadcasting/CasterSoundboard/blob/master/LICENSE) A soundboard for hot-keying and playing back sounds. (For podcasting) From dee80d065df49fcf00bc61be11f637a72826b20d Mon Sep 17 00:00:00 2001 From: probonopd Date: Sun, 7 Jul 2019 09:16:26 +0000 Subject: [PATCH 77/77] AppImage --- .travis.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..6e5ca7e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,30 @@ +language: cpp +compiler: gcc +sudo: require +dist: trusty + +before_install: + - sudo add-apt-repository ppa:beineri/opt-qt593-trusty -y + - sudo apt-get update -qq + +install: + - sudo apt-get -y install qt59base qt59declarative qt59multimedia libgl1-mesa-dev + - source /opt/qt*/bin/qt*-env.sh + +script: + - cd ./CasterSoundboard/ + - qmake CONFIG+=release PREFIX=/usr + - make -j$(nproc) + - make INSTALL_ROOT=appdir -j$(nproc) install ; find appdir/ + - wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" + - chmod a+x linuxdeployqt-continuous-x86_64.AppImage + - ./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/share/applications/*.desktop -appimage + +after_success: + - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh + - bash upload.sh Caster*.AppImage* + +branches: + except: + - # Do not build tags that we create when we upload to GitHub Releases + - /^(?i:continuous)/

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 Date: Thu, 18 May 2017 23:33:52 -0700 Subject: [PATCH 49/77] New Icons to Build Upon Set of new icons which we can build upon. They are flat symbolic by design, so in the future we may want to add color and depth to them. Icons are vector base, so we can easily build upon this. --- CasterSoundboard/res/img/33_percent.png | Bin 3673 -> 6412 bytes CasterSoundboard/res/img/about.png | Bin 1248 -> 2062 bytes CasterSoundboard/res/img/cog.png | Bin 1444 -> 2206 bytes CasterSoundboard/res/img/colorPicker.png | Bin 1067 -> 1620 bytes CasterSoundboard/res/img/cue.png | Bin 2208 -> 2695 bytes CasterSoundboard/res/img/down.png | Bin 1795 -> 493 bytes CasterSoundboard/res/img/duck.png | Bin 2273 -> 1737 bytes CasterSoundboard/res/img/loop.png | Bin 732 -> 2292 bytes CasterSoundboard/res/img/newTab.png | Bin 6491 -> 565 bytes CasterSoundboard/res/img/no_loop.png | Bin 2730 -> 3430 bytes CasterSoundboard/res/img/notes.png | Bin 1478 -> 826 bytes CasterSoundboard/res/img/open.png | Bin 1631 -> 872 bytes CasterSoundboard/res/img/openMusic.png | Bin 2577 -> 2248 bytes .../res/img/open_sound_control.png | Bin 14603 -> 864 bytes CasterSoundboard/res/img/pause.png | Bin 6924 -> 279 bytes CasterSoundboard/res/img/play.png | Bin 5325 -> 853 bytes CasterSoundboard/res/img/playState_paused.png | Bin 152 -> 331 bytes .../res/img/playState_playing.png | Bin 304 -> 1110 bytes .../res/img/playState_stopped.png | Bin 147 -> 346 bytes CasterSoundboard/res/img/rename.png | Bin 1025 -> 838 bytes CasterSoundboard/res/img/save.png | Bin 15066 -> 1109 bytes CasterSoundboard/res/img/save_as.png | Bin 7844 -> 1247 bytes CasterSoundboard/res/img/stop.png | Bin 9532 -> 309 bytes CasterSoundboard/res/img/stopAll.png | Bin 6312 -> 2307 bytes CasterSoundboard/res/img/unduck.png | Bin 6059 -> 4696 bytes CasterSoundboard/res/svg/icon_master.svg | 1013 +++++++++++++++++ 26 files changed, 1013 insertions(+) create mode 100644 CasterSoundboard/res/svg/icon_master.svg diff --git a/CasterSoundboard/res/img/33_percent.png b/CasterSoundboard/res/img/33_percent.png index f020642bbb45f42fcc599e1bcb76b5981680af61..74dfd59b095075e34b06b664b361f72606d480b5 100644 GIT binary patch literal 6412 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 literal 3673 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 diff --git a/CasterSoundboard/res/img/about.png b/CasterSoundboard/res/img/about.png index b04eecb239150639fa173392563361d8f2baa2e2..e4dd2689d61ad42cd913aade84a891b247580a6c 100644 GIT binary patch delta 2060 zcmV+n2=n*g362nu8Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs000MzNkliM+3X@abs?gF{ZiYT6sRJ5XV#`BM3@Kxm49f{pG?)JeTe#olptPE zBVG_tL=h6uhW3G%mMSesjv`k=U(7{9Hg4SFpMr{-bqA*M06K3Zv*gI0Jj6^bj>~n za1Fo$5nW{F3x5D|nx>t|WHL)C{Zk^q(9lqyl=2B8x{sNY03vM`NIsu`l8BxH z&>w(L&0v;@p2=pjF9MK$3i2gDGMP*XA)W^??57+b$bShT_D@ewPqte?TLL5!iC9-x z*RKHVZ?}v9Apsm(TwHu=c6N5T)yyqBKRi6V&2gMR0Z6u*S21kIaUMN$=FFv5GPNYY z(9qD=rIfD$=xWKe@Ni8^xjUE3{jJ#yqFKXKDs{h<@(tX&l?Q;^g%HOL!!Vo8&{PZ1 zb^Spi8h=Ck<9XO{0PL|WYrK(RLjl}o|0aNV5T1pIf|T;xjeZBuUtn->aI5>ztE#*M z-~}n=V4+Zm6^q5s5RnPsTmWUqg%Gdlx}NYds@nqGp)L(|y}iTCkJz?-v^rsQbTq!S zv~-k+?hSy)UR+%KYP}({ZVPb7d1XT#Ge1|W@_zs@F)>lNapT700Imi=rFV68{jy$S zO#zb0B4WOw)|G(_57@yz91Y&o*H<6A+&O z@H}eNcf*T(KK~@t&+?+CX*M&YekwptBb7?+tA1G_fN7c$cU7kv+U)G?jz&gAG#Vr+ zGk+hf7QRA&xw$zLAuVZz5I?TwFNa|mIy3JMn09MEpWjpANBM)4@<70ZUf5+A#_tn} zM65a?nM@7<7>9zHClOWDajl~>45J^wC4|4codfU^5xpa&>;$ljh#mzHRm8_ah{W{t z^ko3h*4{EdK}0uWZQl#vC(MkH=t)Ys7k|LhK-n)Kg!pb4?6(Nk>PkRq>l(nn@yS{3 z`NfK+XuRD^W8-B4TSdrG{FQoa|wD>bnhSf2=ORzUFOR4TPw z2r=V0&UXOp1@I*RFItxM!+M#BNPk&pRE18UY$m7xw=wg$<7|jw?()hcgosG#E8N!- zR)2wy!XhLh&&bWn%8JU5QjU*+bpbvOi4;;w%PU<7p`t^sg$e=YLn4I`;tj8KX1+5F zKZs}^a0O`8ECa;**=+XjUIs+e8-^pyd=Xfm2wez+l!#t$!Yq^>sR{uA z-O0=kA%G|mGf&&L{qhFiY8ktS2`16PF}eo$gJoI!+R3Qv`VWZcH$M3#5shTC*{SM; zniaGxD+3_N4soR2j6#SGzvRsPY^}-z9)XCCj*h>^4jMD!mbDmsqSOGI}Q z(J(Xb0A5TK=c! z=jX3=baWh!$K#t(x+`?kugoy>Zi&%UcIHS&ep?@9XmEJFE8(uQVtT)T_~N*xC6B>Pk#X5 q0yAF}LgZqx*vUpa$^VB>{1^N)wu4w@0>uCT002ovP6b4+LSTY&Gsz+V delta 1239 zcmV;|1StEC5a0=r8Gi%-0001Bxm5rF00Lr5M??VshmXv^00009a7bBm001Hq001Hq z0l#E_+yDRsgh@m}RA}DKSxsmgM;LvxlC7i;+LR;^@1f8(LO!HX(5{FJQR$CCjYBBD z^yiQ^7}8!6>_84R)UCmVxVQe~)PfJqp*3w2Oc8Ey+Jwd_aeusO65>Eon?f&=gByxW zR6Ews*Mq#$jx1?sB)Rf;(v0->J-ykP`Q{r&Xl^J?=C4nhVwkI;18^nj11^+*i@^nMnFS~ooas4S}YSNgKT5a?g96Ad9R1f7kY6m~%G zZ!|r?PLy|{j01XvMWrX5NMz}7?4qLsAwL_Fp{H-zVSn<`EBG8)ho8FGSjg|-K&Llj z%DnmPotdu-&V|_}v^oIh+y=iclsJ$XkeYa373qQ4Rea=#@MQ-04o*N&L!Sga=!cSy z?*u@7L9L;kU~Lu{i`XgY zVW&A=Z0v2_k}6JVp-7tBfwfs+v|xuMJ-}tUv#ZES;?+P~K|n1*8GFl69aE7Cp#XrH z#(zUuAe-al?2~3*%FiUrfrKpH{VOLYBrPCra{$1CBz*Sz1FjvB#IF+|>%dR;hVcYm zkmYCf37`q?VJ~8ftbiOZfUZfQA3dJpZc=()8(kF2D&e zlNc9--!1V&egMXcWjy;{Fz9%`&HrP52|`Y87X-5Q^u;E?yoXT{JS&~^1v>=}W&kj1 zuOM>A^Pr~83!DxYOfG#1w7FkaI%$P&Do5yDNAz-TkG*4poaKbn4f{vX5ncYQLzB((ql002ovPDHLkV1l!) BQKkR@ diff --git a/CasterSoundboard/res/img/cog.png b/CasterSoundboard/res/img/cog.png index ef7112148f582c1b62cad0cc2535e65d30abf06c..98f542f6715aad0cdae5553a4d17ec567e2ba67a 100644 GIT binary patch literal 2206 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 B0}TKG literal 2208 zcmV;R2w(S!P)B!)2e<>=0q%fo1)iztV{!!!7 za_TtrhZ5*Wr2`Q(sbxa?z%d_vHwlITU6DFLBb9xk$#h=&t`a1YA2dC;Cz9b;a?30J z($YU+Wu3Z5iZwP^kv`=L!1ew3f(x!VTL)6n;w!e=0B7KrJCvtu>8B`gaBRM698egW zR2MIhQ%lvG){>()`Z*3##d7^MIA|l0n*_8XwDiJGxZtDi=ct$lb?mQ0rIf)f7SMtw zjXOO(HS#CekLX6*{95eU!f|U6Bp-MJP~h#J;0=Fj=$k@ciWfW!X*k^alNX^+cMFRf zi+kVjG6<3`;qZv(`|&gWxt;1&8Q<+m4Q~)NN)#3^&KU}nhLBke?6miSRE~CuRru4> zPjJwLv2x^iL55NjLJv}Pu$O=qcp~=acS=)q^!JKz*I@7A-7v*oAw!4#C<$oDFCdhi zJN=9`u0!Q{lqgfQDvj_QTM4Kik=j-}(=XXrU1}TB@kmgz?Mvw_fxx+CGcwcXh9){T z55FiGPoTpvHWHMixJcstAfcLm&X^IZ`%*K80kjSpq5=X$Fr@^xMf@ zo!))xi8*Cb|G*@{k+2|1TIfPwqjE`};OBqyVB%H^P;Qe`e0mr#f~4-t|KYkO+}L^xcZD&b35ejQ-Pl z{qY458*lk_tKy!h8)?`7w{V#Ph{NB*|6&-BYV>;)0Yo2GaQH)U^LODm?1xXG@Ka*p z0NOQbU2b$jXb%9yZa&+I<2~RTIerOdTntd_zuDfDMk)U|9w7Pv69+gCph~?2G%XG& zgKu`Xv?TtAL>vzQX$u&C9(q7QK7jom)Ua6SS*&e3bVqaB=?SqsfW|aqmo5q3|BElc z;FAanxe7d!Q+u9)LSs4ZR>`(~M z<21L0LBO)20&M2CFd7I`I(d3EG25MEC2~vc6NKrP(V55)=j}WU_!w|?&L@2U`YbD7 z0<0#Pc3GMLYv;^=OzJzlMiGEzhVr`y`CZ_2KUxL(M1CF=_TN3E zpRy8EE?>Siq!N6NmVnM4Y0SxYM6G!iM(_eI@pWe&8KJ!X#BTm04b>J_?$8y6N&XonJlRDgkK>n1j=a@ znfkzQ&x_;5KqlBfDwJ2_YtRBfqu9u|8gT~pw8f5M;~-4^9Ua38!Hpj0_1L4`M?uNB zOXiJ*IB9y~#E(Q;l4SV}Vj?a3GTCCWHCTSXu$~_MWt2je%N{4H1Y5oJUyctVfk@xu zv@i8SWlMrc-*dc5q!q`OCxJ*m!2655(qO%y7C~O=)bEmCcZiYTH=2d?3(~<#r$Hut zR?S3FVd zk$96pPyYsfe~~)CQ2LG~-!Z!)c#^<|KEUnh_i=}>-Doo$6x+C{cSD>kfi3+Ta%F?m z8ukiZrEzcZX;bQ37(j9Zu|I&BD@$rvc2ML z*lNqP-PQ#!_}kK+QTrl}DSe9ExL5V~-_f}`Iah>iBK;du?>o-5qqpLaB``>sd!XMx zx}3P(;w{*X-K&h3z#u^Cjs6D`6r=W?Y;Zu~Y0!mAVDzI~*QO3IrjlWY5*2Di^=MI} iLWy0FXV+l6P5%Ku<{ydTo6to70000 diff --git a/CasterSoundboard/res/img/down.png b/CasterSoundboard/res/img/down.png index 66503dcd403a34c3e39ad3539579070c0411d2d5..bdb4c976d7b3c299d0b20e6f1549844667c5bcea 100644 GIT binary patch delta 467 zcmZqXd&@jQrJkkO$uool2x>S|Iv5xjI14-?iy0V%*Ml%)^0U6fKtah8*NBqf{Irtt z#G+J&^73-M%)IR4iw>Fg{+4S?mS>E-)L_7dhhF9?Pt?IZ~RrY zQ=#Sk#|^)J7Bg~0KmN&jAX52{|kLrub!daBD1Cb zxG_`1WETn3c@r7th#Y$H(TCxIihx>gx)OtXuR*1aF@uFyOXTC3oCg9G&&Zu;V(4Q^ zyjUT|B+#{?!iJTB!%@R%o)d$KtA^RUCI%Bn4Xb&F7(!e%?B;PXggCA+n&-tJ;=00Y zUKfLi;|i;JrxsiKVKmRjjlst$!)#s~LyuF2)x2X2GATO9i2_##$zZM?24~k~|a)j2#9~S3j3^P6$whvH&tMy@Kx{$W7$f}@8%dF5TgcW$ zvMon4E?lRRx-=n0AcRyhIH1CiPOvF0 z8WwqTGdx*0vS;ai0N?KJ?zV!^vjrINRUofMPX_g#c{Qk44H-sg;uomqkc8PuP>lyb zg4RxEdbAL?F76>sc5WJ&uG^!F!A5p_I zWDpD(^%Y43I-dn?3l{dwQIsOXwh<5{wggqi^au_{13fi}Y0_U>IDo$g0u0H)YIsX% zrg)_8M~Qr3iYF9VhPww+HKz76v(maK0jCWj!H_pY2E=PgfcOZ6Kl%Z{wxVdK)0rf2 zP5JYaWs zcb~*O9m%B7Q^Fw$0U?mYzMkNinJqt~@iD?AGkI5O9V?mNKmv*0FtvO z8GkGQ>f$AW@3V4*e@6KZ%p-(AoHJ5?01yEv-Pffgc7j z9)CE71H9b4d2zKrK)3#r*QwEh74W^T&p%(-JLq4>`QuQ z0ssJR-MTeRU=Mb7>v2cRPmj?zB{~VVKBouS22Wu);WA2P{Sat7a%yX9>%@KUW#G%u z_V)HZ$a&Q>?nKSTC{f9_uq6qRxDWvd(|?XH`-#pMH-gJ3^A;<%k}%FiiR4Gjp4RwN z0T2!666r|Mz)%p9qK*s`SqTA=L}*cI_nk8z?VI;~{+4oVUaz~kxit{!oeO|huU;Kd zcw6X|7d;Lokyt@mVm=k+M>{sN;mM=PtFce>)ad~v66~Rn1Cw5lQ_u2x{LY;_lYbx% z7}#=y(}YCb85oodIndmmWZQ0qc3rj z`SUZ8-cSM9*w{ECa627G$y-PUkn~ePq!ND`V6P-AW-w55k z`~4)qgIM5jrK@}=E|Z_!T<~2pLGs;Vwg`ZjSX)~=GwF>4006jm@7^@Qy?;#jsgl?r zMsGWn^!gWDigE}s_3YWRbMJdELo17~udnZem`_(yy%G8|KjsAjia;bLPXfCPwO@WH z=`%ZQ~4@tW|OUeoK#yGpMurPAcs|ElNNl}Pj zL@c-0*W17j!R|#H4{Tfz2Y8vAo4X9)FA!fa{wU&a0AD|T{P@#n0RRBZ&&^*3@l61Z z2<$(4^yuFj##aO2|0JLNuf)ax)K;Lji~*>vKy4WVP+Ni8G6tZw0<~ofKy3wT%YQ6> V#?!7#q&5Hm002ovPDHLkV1jD0IZprp diff --git a/CasterSoundboard/res/img/duck.png b/CasterSoundboard/res/img/duck.png index eeadccba8353ddce772b8701daf163727f1af8bf..58f1ffc743a887ca4ffbcfcd5b6c4e59baaa2cf9 100644 GIT binary patch literal 1737 zcmV;)1~&PLP)BfMxzgzrnw7%X4Ca5GjA~rqYVH%)t}G=XqvW>h;{)ecN&A44-wH?rPOsN{u7n} zDdlzmuX_=Th&q^gnUf?4FFIfsUDwybqrn3JGcN@2DI8qTfLEO;6iw3_0JJ0bgU$(a z>gwwH2L=Xu>^S*81BmDi02RfE&CEL^k;r5_KE5VEN;x0E>LN;12LgfT?Kt>716oo1 z2k&N0)8=G0HZ?U(Td-h3U1q!2_hCL(`k*m`h)(Ld{u49*!p!AFv<$#ZA;f6_v&I_x zmVnmQ)<7bW2>T=#VCH53%|!p1aMhWHzTE0@YWd%5p`v@`IZ17#NB>rWy3Vh zy_s!(Cg7T1T2?S~mthzOGuwSjKr)%U1mLD$dKp|LqBXGiX!0!q@p$|e5!qU$c|@NO zqFE_*#_CUBUxTJ;9wDNIMV7e*-~xbC%zS8YaByE=U*B*xV_&}pqtR%+X_^TXG4ag2 z!7z+*54&vmx)SW_>gos3Rz!*4hlhthv*VEMN(fEUUJ^nKb$55~bK9$EG&;jH%|-z8 znYkfjapD<7v?(5s-?HUn)u`+GYs|be9rU^G?(Wa+1eH=&5z#VcUIAb^fO_A0M#Hyx%a4bpTAezT*<0 zY1#@RYPYa8i0EqoXPEgWGfyI-=>TQ}co;yfU2%`-Po+}&i4!L-IdQhSN{h1CYRvra z&TX;oV+Yg+gTY=YZ7>LGZS3t=aW0N87q=C+=mo&k?y3L@GD;K{s( z7HziQrA}eyqs%OoQX4%S{B0gZIrC2;L{cf$>w!)- zL?94Y1z>kBBddX405IL9_@4llE2RvVaa>`V=4#|gz_?q0na{ZuX6E%1J$L{hqJ`mb zIA`VA>KWiR0lkJ{9B~=LE6OV>DrV<0uu8zME=7NK>F+5-l=Dl}YAO7kOTnZYf3G2; zamA3aj7vcJ-iI4Pxk+NDM|zR72hvo6rn)6)T9n^(Qb!YlxXbzT1<8jVIhj(s4XLEgfM zQfdc)Z$0Tw4w$*wG|f&a<$*{f@_+{+V@jzX^BEOV88TC;)UyDNx$je62*8>^AkZtN zeAn)YuQ4!yErkjeM7r2oNv>}0V*Qp#5V>;MpQ;9oR|s9OlJA{L8XDb&Z&p{4WZ&v(?;*6s&z zFMxTtGgf^E%gV}D$6~R+>^QmZxTa~1LWuRuyauBQ@tdlqQ`PTF$ fN|Y#3!U6vPP4pRAEQ@_^00000NkvXXu0mjfaE%xe literal 2273 zcmV<72p;!|P)8ehc(5S@OX`pz~9~ z@BUn9(!|YSz*0}(yFWMd=B9m3*Q#JJ@D%XXV&B;6jqEcH_;V?OZwAOd*8*#R<4W}( zSQU^>4gnf~YfAkenE|rLaln(nn3QW25UT>>V+8P*l;H0Lz5{GCsp4ZEuqUOP_b*_a zsw%LhSlvLQ^3(u#r37Aq*MPyAUA9jvckNwVNvWpk{#La}ux|7@l&?FI9D679Q3NP+aP96Eu$rX#bD z;X0rxCHUKcu~`bfl>o)z5MVKIRmwH%f!V6sp0$U!65z9OJn+W?!C$PZdZz%{CRZI-`;8K8GunH1}T0{QL01XaB+>tDnSaPV!WyMZOZp@C~&1xBdq zOV#j&%m6*-=%kguAmy5eRduAQzEdq<$_&sm&c;p4nh?m}2YgReFR#WT%}8f9Zdmt- zK>ki(ma0BqjbF}6fG{<{&w$^g1pm#XzJI=2zoZ$!&ym0i;8wy5FqWz6S*qGv&0o|E za3EjCP2QLq$nOFcsp`yFx;0rrfI47k^6wXM)290*#c{u0-ggi1@j(>(GjQ9l_}B$p zrm8Dr>ep71V}Xlsvu4HvU&ydlZvoR)b#rV38Sry_O+;px_voH28Pbm%XdEn8ckynWAxOsHzfDNkJ1{@_K^+2=d z`gy9lrKnC7xgWSXZ++fUjROn>UMLX!F5n5=YtzB1dcCSXodn;gVgn3Je#z&gT(cY) zs;aY8b)AJF9s~5ly)qpd$ZrRxsp>_l`gfB*t~P)qb$;lV-we!A)g2~#oF%|QV0s|$ zF;%U%;Kyr#Gl8E5@)}ijj!7M_0R*@Y_?##252`xXWRBYavw+c_^tP6kmZc_f+>O9K zz>flXSJl?zS|6=D!Rkh&fzyRO!q;&!}o3!y8;27N5HT(0Fs=jT~#&3WN z11CTl(n;QRHr+1P%54B+eftu{&XVSoX^$)5D}CTTtla9SY!uO?|e3~-_^QB~hG zN%LWVfu6Mgnw>T_$I~dI1O2048UC46w(O*5BmJj{)BEr1dj7^J9R2`VvLt zER!@J1_-_E8E%s1!vO!me|qIulQciQfIoTCrkJGpF+h_i?L-k7Z?fjY0MFuIJ^O8w zH6I3e7x=v=eU^xvYSPAU0DyZvX?=m8n6&vY!0&LIC+*LrB65Mr8@~a%fFB0(mYBTp z8vxuPNw0X)PY{tcCUN`*(4^(R*OPa?h&*C4$87+BHwZ5gnYimb|$Yhf}P6GgZh+8ofdRzD<;5iXlW`jj>8UUaT z_1!O z;ocjJ?&04Zn|wl)YnZtv_7b36N5*Wz%@&#sRMQ5LV@2e4GeGf5gC~GtxIKiMlCERc ztH?znveFDt-0^}Hz$Dxn!|QO9OR~JOXu61O7Ln7f5m;I?o`E}D;#Azh%tzuDob<&l zN9)b=_Vm1f?q{ecyvXGPV6LjJilq@~9LO2KKawiT_vr*~(Fy`=@jTZJ)lvmyoy|$t zb9GA3;O8RpxU~V|mqWp86Zyf;f{`-LwL|>IPjW?OfUn)%j38K ztZjk(fxsFOSzrc;mp6cs_z$om>7_J?$b)8pc=1*(KD8wZG&cHDHc`%|td+L}%?KsNaV z_$KgO{2Op$2FM5Z026Ur=9mF;%KD^nxX}!dU$*16-fJ`|@=f=yYn`56fbGDVBPQWa vZ|x3#BiY*R#V7*|zCC9o})>C%~b^VX~d zx+M+8Vw9wA#7J$FCRET^5`&^dn+SwxY_Ks%ktzudA!)#D6kCawHHe$-%zLkHTYlK4 zC7_+9P1m)pU1qlL9{=c8w%hY&-g`SU-Nb(WJm;Qs&pmVRefQS@m-+w3xKtH)cXub| z&Yk_Zo(=EtkvvF>;hXOeq1&mMv>87K^(9q?kF%eDVQ+M9{*_ zoKs3Yn$PEZBh)1_#Dh}B)x1OPyhnZN5e&d&fuUQAW{E1)dPTIYG*Pl+gj0OK3Lc4q#oQtC=(UPMGo znK_N%`;^{TEcTUwfq|1z0$*u~=;Nz`(%! zVPg%QfOIvMz)}Fa z%M@)_O6^RgQnSMN51fGR?(SGT9)Afy2Y^OqemO`I0AT$4-45W}%sj%(p;vmgZNFvP z_DW`c5WtvEu^SD;c(JFaC-6B(-~^mJd2$ng?g^q$Nw95u%(m@cF!Lg%)D8fri74#a zfgQ*B2{Ydgz;DvK_3+`tKMd+HPy*8F^esg6kf3U0=I!n6?SXfBuInDp=ksfoQa5X@ z{}$A4B97zi2CxFah)pnB2avIC+i$o42-X9>3AyoL=KH47cmRmncmQx5=QSewhL3s)Gv8my zN7)|G)z#HdDwU1^xJpnzZ`<~l1H@T#Ow)WGz?THoP&^*Lw!goB)X%nT4=9yN>mfIO zSZlp8T$r_EY;0^J0I4UnjE#-mQ_i;15ZE9InfXVq>mCmnU(FdD96Sc#5lP3)UoU6t zn*htQEC4qMsuRUx@tIH&)`zD6NI%LArfFvUjC>QIwf>?cC!(zf4jecgKEB#w+x8g% z;txYaclp_s8v-jOAu~T0F0}e#7{;@boSAR+vk|`not>R?J~Xo6uVJ89-k9EwEEzAo;cQ-S!|QvO0eMLq&;F>bt4vwiL*TsiKoSW zJ>V^|uu{_IXj;L{i+$v8OLD&+ASQsBZ;2RJ-5{dnlAM|4A5{`IH8t&neCpagenvPg zNhXtVpC4(Yy}ff5nnhbP&T+YbL; z5;F7GBE(h~lu}=nRdrtV-l|2+?<{wLPB3hHpW><#`v36uKnN;|`d%?p*^l%VIfuG2j zruiwHTO5fiL1up8?Af#H2L}hmt#q|WCX-ExMB>)~zTi`&sI|Vyb=`are}Ttup-}i| zTU*<40H2lgM6|>(j5}LeT3#O-8VdbbDG1qYHXVz_UIE~{Cn2H@j^jw5Z;?i+mI~=i|>xk%HX5IimJn1-KLr54(OPeJUAMn_;eAN05^w>Q zWhFh&>n5Tl02TrGIDk0-&i}9AG=O28dr$l}fc;wQzH0m-;xd;h&wl|Mga3;vf@HV= O0000Y4M6VQ;pr>RU^VAThA;Wgt3{%7td%H_gX-Xb5j(tf5v`zZ33IXs z+RtA^T_zuhn1#d5BJ&R+yYS65pMU_@%1f{b#K4^M_slLHgx>U4-vwsT5CpHBv$6*c zH*0%f=@_{8-YhJ@OFxWVcHjH9um{3fNkyHrT0>wP&VQSnctEWtFPmi`rDm!RL6=DT2r0SreRHaQcEB%sg-dthMT`v`pHS`W47!ziH1 z*89dYU^oF=TzVb`9>gUm@WF2^jwA4O9DY=V;OK$R zfMZaiy?=S2O2QWa-UEAH0C#x?M1J~~7pX4n1%OB3FE&jd^gyzhBHJDV48SK0!zd?$ zaK@AlLWP9a^*#ab0Lu?G{j~s9VJ+NYn4WCLNZ$jJgb36DfRDfy3p~ZgBrB!TsVIv0 z1q?js1gm}-#fsF?^UMH!%v%BEPUt9uxN9&seM4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lZt`?- z45^s&cBZZ0VF!_xbiZN0^DVe=UuOwwQTLTf-BFS{cqq& z;7(9xzQJ_k1j9B4voDql)}7zJG|$iC2Mbuhs6n@(7o^5{KJ%*!l?~}B4ABhIk_W^N zJlpYV(blpVsW;C^6tgB=*>udjp`777!@El+wYfj{_-U#hh_XKOxhAz|=AysP7!{Zb zxE=@{@Sdb1E^D*d*vq!WM$SIR{C)R&jjl&ei+(=a=$7oodE?kUb@kb2pWQ3&Jr=T; zWp~G4zd6OvJtz6pT+d`$%Wd&IFJf!`;hg5l0znRQnVmcwS8|v9{VIC=qj1B?x=mJ3 z4_kh>kl6lLOi7z_Z>wWJ%XDxs1y*~Cn_nmn^@3hRjCo}inbI;jlpS_;7 z*0a{y`woc+_S@Cl(v=>-e!H@59{^W*n{4JJBHGbSF6U-eS68nGaCCFM5v8tMCL{x| z0HE+M5bh^{kmOeYB!bas#NSBx>}Q7KrJs1>=-+Y=f4- zN{CtD<<^oBSH3eOWe{?G?b6Z;h`OnO{sY2)^1uV1cz8z>y@mPLw&wuYK=`i&@C5*G z+b@5eJf43k3o}gu}VvUJ~wQ&mDn6<$JNgI`{}H z2M-Ce{QiS~@n`pLd$PA618sZC0WNXl&tQwfSNWN)O4g`6?OEFd0tQ3vuCPGZg(2lK z(^~tBe69(cAtK=N3<@3*&bPL68GwK#|F!-MJoz(A8AJIi!rnIk7RJR3=ZHY}y!Y<+ zzjrTX(zZRd02^rkI{TgEHU508f{5p=7BwK)JIU>i9qUp*7^mEpDKR;Tf(*I3o zUpVugy^>4Y_5=VM34e8U^#Fi3Z*Y+lH?z}lVFdGu@Y(KX7Z+hO7t^cVxDeO~nuCT_ zK-Fs=3rjqYa~}bCV0AZotpY0_Lv~<_tgu)P?hBA&j3{6aY3A2JT|}F^oVb zPU5E(P7DB_!Aq5P{(TIX0x(Wpx zP>ltJYZTw3XWX(Vf$TZ}F2gBq4JRVF?e?%u7O4O*j^QN=r2r@%cR{vc+k8K-W|_Rwp=!9y9$8I5lR6LQKj*AVMVrB04gW& zoVeQK^&mX1z8QsQ65iXjh7GA=c@80msJ$_w=3yl@ps2?cxP*-#_PSB{2nd+vz-|kA zqqbNVAU@wQF{8&x8MRLJ9A@pZh;cOP^TK3GqmkCT5HerT%s~t*$9<@QiR_(&K>Z%k zO2nu{8jBPXOC+`1q02{RyVZ6L0Gq2S)>=T#bvD75NwgpUrOLw1_2*+y)WA^Tg!3AA zGEZZTmqZXmOD54eG>IhvoXO+}!@i)+&gJg3g<1e--qFkJajFQG3sh$;Xqu5KRMA7! zym$(#`?}Ug;#FA{mT`ZL8P5j8c}m4mMu6d}4;!tWSEsOLfe5%VE}&)W0)W_rP?Kbd zSz7DF3p{R~BgrZkSDH@NF9&dNCH!cnYoW7`Ig-fm92|tJ&tTxLo;Tz+pumZ)YH=dj z6##4&u+p-1|E4aK=mh5|uEg#63!8U#ZR2Y4HZtepp^uOR}PHE#UO;73uudV0izHqaDga{IFV9E0W#_boJ2-`GmB!jN`!4g$KfZf-g zAl}!;KR3B0GBr%B$2wQ}0pp4D~aN27|S~N3F>QhSG<9Y8Hl!!Miwl z>=*!BiCCDU&kIam+J{$xay(e_G~S1^><|sW1+Az1=avJ6`x7eduB}SZ$_8}Jpfk8^ zp-N06JGg?E0&L9oEy5@l(iUt1BD40%(1ei1#MNXsO)j+?@#h!KhW>!&0ji2x2&b5+n0yz!`S%bm`FCPz zTT{-^-$;|9A8xjVr}tM8v5TuJN(Deu^ygveSR2+kVbtr%KqE4zLbiu(!HJ+I z_pX{G;#swlq^XFZg$&8d;`dz%}o$ln7D|x@Kms~bthsW@n-Rq)G?Z;S#4tV zeRRpqq*v@(Dp%2JUago>z`I{rT`>ck3-U3gB9sf>n>ia9lG8fC*qQ4XhF?5ftjv z^CY*mfc9L3Eo4>F$E>s;SUGe6U+n)8vthdJ`MCb@YjEq?Tj4aJ_k(^b83nDkc8Uc`ph^T$JYJFXW^m|teHWehn`HSRQ!lX<1rJuVU!!R>TBi1K}=*7p+ zA~-NPgl~TLDSY+G&w)|`h>!qC$^b|^+>5!Dwrv1xD_KQE!k*q83vmu%)37WEC1&d^ z5}>do8w84JWGyxZL6ZR7Eb36-%)(}QpkpXupcxb}QU@$|EBNncA1~|r*tVuA2;zPN zmb{VV<%eE{rO9%hlB8iD6)Lbu3b;VVK|~-*$u?)Gu%v9fF!BZX#tgBYJX*NPS+%(N z!xKg9z1U_B25fVN^9;WxS{&an68IphXw-x=U_eSh>Imp0`;R1`g#0-P&m`YjDyH%Ynx*G8jtQno12rXuzaP8EjobvQV((0AB31 z03F})_Z+_kf*YNU*P)MYle+7!yJ#|5S^?5+L{zpz1p#a5Ct>kaNaK1~*b2&tpkD7} zP=y9RuS{~w@}td__JC&T8m(L#rbr2(1W;$5zm$^&5YER%np}Z^6Qe7}Hv=dElmSKn zy2)ha*s=HgBKgg2Fl2*r%n$%c-G4sx;GaLW=Kwf%{8&1E{P^#P;4YB7R&$|T*+>rB zoHctoUEd%JS1-`iE+~|AoqW|%f}LyKG3xyxYE_h7yXA>0Rz(hWx=wZuAvKQIW6Mhk zOEk$(lXTr*c1@Jr&45c{hdJ{U77z(0lP;V7k_IrdPlV}o?T83Io0_z6Ode6g8&XHO z`+dLhBt#y1@WBWEXtVO%5(hYT?AQc?Pm9QX5P5Ch4Cxyo!M>?dLpNi@!Ztw&yLCCd znh)l%Av5@M1C;voaw87mpbJ;WhR~NXcnM>xB~PY@o|dH|h%(n8BusgRr3pc301`vg z$9E-+NLkR-Z z_x=z3>7D=pz{iF8U2*cb?AG-iwCuZNSsVyb5;p9WKie^@IsCA7Tcd)w8(5ej%^&?v zR}T9wVzm;1&6yP_0#>hp;^9LY-h>^sPQgLIx!FZ5Eq4&&K=1(SvP)3cKpip}?3@%z z8jvPk35ZqrghT~$6pp2QJW&FLS2Yd>j+8(ktgl~0O6fOOKXmV>b`=2cz5DK)n1{Q$ zXdvspcowq&{)-xsX-78C&c1a!H4rq>HB+}tGe?aD%1sO;zOyzE$w({_!4&ciMcP@Q zl-YX_x@mo3=UG8rThltQygbS5zk>^!xCp)oU4fC1EkF_oF(&#OSE<~u+#^u}L4}-b ze5l40gs$h2pC`gNeCWu#KJt-|9NaYk%x3*>vB&}YVT52-t(I>4+@m?y0*?PI3W6rH zc>Uj_fpBi|qiQj#KM`CO!nx3^1WrjPnf4SzK*=>b3nIB@mB35|uZ<{&f!PA6iRWVC zkwd@~%|3^a5IGDiNgpwRCKDjc+{3g!Q3OhORhOZ_Bm(y{oPOr%?&3NL2XjLQaB}0|(x^D*$-+yWgFd`SqjlOD8!j_ME%cF2q~o${q{=60Wmz zR2=5t0Y3oyY?erIL8a0bV|ruvVjxgZt-SIuW;CsG`s5dlQvA=KIfJ9iOAspBjRFE2 z6r14HLK2q+F*Km-a*yA*_#|HQiW>?*^-dg6hYFNO`DIu;cizU2_?!mf41}enl~?Qv z0J?7Jhx>lIT$gXd(y1u0m`OtvY|zZ=9E{E%gP^eoh0cp=NFZ|vRw$NPYu!#k(1dG$ z=wP;6cWg)-6bU*N*;x`=oaA20lG=T4X-0Saq2NV zvG$lfn!Whr+uP~1$IF(l!&?u&)dilD0KppMoAc1))c-w2QtwFJ9sq`6_Nux%C(Sah zD7gH@aaB&#c8}9lNKVdNu?;dHsWx7@T@FBuqRrAtHW5*77T_fSQm@8Y!x}#P>%WHA zU4Lsa>7^=LTr*PXuY3m*BqE&cPv;QOyh}(3k$^`vD*Z`2 z6yhrk$l#F?VS>N@`$zG$ub)BEWL7C6IZ1S+4#R-SWNGEYzx#VP{K38VJiQ|T2s2q6 z%|Yvf;Nq`&<>Oo-S}Sa|?Lbw_m(ZbNB=6uM|1N-yGy~+RW_Y%S=9=;7_lZ&ko|WZ; z`1W)Eg>(J)fy9>I2T7Cf7l?h2ngdWa|DwJh+4TF<3#P*b{L6R#Cf70s!7wnm&#y8t z`aXZ=K``_Kco6)=Yksz{{$#>7c#~q9oZKS2fypd&my+$~EC84Ko3xr9`GBf`G^X9% zz-V!YUt*R(LE+129U#?mD)Z~Usz$ATYZI)pr*XES1@I((846|ang*974v-mq&gFAS z_GIA;71OWB%`_IP8H5ih*JF|Ll8 zwy^mP64pk=EPnmNPVxEzg349su`(wR%f;uYu6a27tO*opdtu$40^Ip zIz?ep4rNh5A;k@7*3aIPy8|VDx|WepgCj>y5`>M0NQTHkg`YG(AVAV_Th7uSSo0SL zFO7mt0U-bUnWt9j(5t*wzsL>5rP59u9TfWB{;jM?1HMM^BhPNEiwrcQa|u<|&3Z@? zG$AZa0mdp=1ws+BM4>A;NTrXG_ZO3qXD+ScZ@Y~g91;MiZnOe{f|wk*hWpXn00(gC zT+rq?fbhtyXFK(CW)}!D}w~X13B9oAaiI1VlyaZI*s#0{By2;NUQ|vmp43Comv9v0} zh%K|3LNpRWI0IPA6Kugp5v1j%Ge8E+FynPhhbgABDf*!=WDnq8AUz5p1b8T)dja=? zepnBWP4%lIy2=ZP2xiN?wqpQ@$hTa$Hcb`FZ#Pm}UA`iIh*vjcC1&YrO(&sR?uLGf za)u>GMiUkKCklAUxptBo08*J|9dGgD0qn;313;JzEE}nDtXkXX}{GW*CM6 z(xV6%<-Gy`kOBmMpU>k#FmMl`qOfU)Mc?BSRa@PO=$U`FdZ33?MoL?au@zvz*6Khe4?#jS8&j19Xi8QC{;v#JD&;i__Dmaeg>$0#8I` zT|@3qwBvBh0U(t{2>+?c7zFd)#}<=4I_?ysp)#*R|90ZUiGR49R5!gI;L%4PT?6Fa zSmHF2SCTe)jhlxkzG}shn^Huv*R``iJjAgYye*AN7H4}|HrY8=4~Ji;teF7Mb6>$XpZhY-uAer6OVsT0SIHU=0tp09^t1jow;&D(@nd5U z)PyR<#UF-oU&vOnq&*Tov>CZ>X;J9OlP4d#Yko^c>byjZU&W3H zMJo`h^5NPPh>vxeDBM;-QK`I}N+9&xlE!?A2rvla%=uF|z4mRa@j0YPUi&Yc!6O1& z-mU3p=;IV%#I1cJunegAL9`6g0>b;Sd#KdmL zciizc2!0hL?||TyAWFu}ZK4g0M(8{hO2JQ;3|+vGn7~4~XVtw3m>OuAGx&sLjn6;3 zV%9Q740@lG2m-peb`CdOcMGmR^4jdzNi7D-;!TwNe?FE{!gnq{fyYjN-ZR03y2c@6 z5Uk)Z-u5FOKtD|FSO$;OU{QBcKL0B}0Uj8nE8(2bGJ(DY!e;?IeEMJ{awtD5oP?DMX=Hx>YsV!*`=*K-=$={@ZSl1QMM`FbK~;Ow=wwW z_{;g#wP*TMZ$9r%$J+CgV4_y&pa)7d3W9OhbM=hjCZqjP)!sK z0M{&C^QmX>?5;ifJ^%nbe)91(0Kc%6YhHcltJeGJu$*K99*XH_8M^=kQ?9Q_7=~=c zk1ikm;+H@D<#%4GXWuaZUh3w5yDgH{#U;4^-xBXj-N0yGP zEvMzrU&-g#m2&WYd+D~t{x6z(adItW;_phmQ?>YC}@7#Cqx#ymSKjY}Z^Sp7M z=ebAI2kU4J?EC&@z(!TQ{%H9C;EeTvp68vWs`skur9kgkj~~UD5zyG!_!--_mjXA5 z$a|`KiHO`PB05$+l)_ki0+#Rl*V(rHHt%uWlwH?7PegtL#DFEnnEQvLKLi2Auw2)@%(AT8Rdp`# zEO3)C<_|~ad6D6fD5p}X)xaDPc?r1B^Sq}U8yim4Go}mjkB)KdGv!x^vySb^8X>DXaho__3<)vTb{FCX?B;VZ(+! zgXz`P)s2tG<4Z;4PT+-u2M_-3#*G_yABo?UJ_W`Bi-7L|`&IROsZ{D`46uuPp7%a5 z5%?2u0x+S_cLVUUh&&zy!J7k(=eq9MBC-2&&o;rcvm0uqVD>9%d39t6QJ z2kO(@-2Ay*F82?>4I+{jktNAw@^{gGp69IsHXCEUL;fT=NkkH=dLA$zI7L;HzzS#fNOvYec!*O9GgQD(A?ZS6SxbwBl7*J z<2XM6_KV2U1q&9~ z$epVC{l><|Q-`uQBmvoM_CesSnwpyB#qzqky78Gz=6T>_;Ie0)c_ufUi6oQB-vvR? z0^BzoJpg0O4##mW0<3Z4#ywwGS2w=6y}G*kUf>PNIO&81wd#D0X&s?y_zBGT@67Cr z7|h0i1T-}@oe7*JBKH)_>+9=dBJ!ZBJ~vbxFct`c;0fSG;DPAzsH%4ZXBXyD5(5$t zhT+$NbPxpViscg~Ojrm^cO2)Y5qVxgSeCT}I8{}zEtVT&UISha!|-ng)GZ~PJ9q8` zV1bA{7VWR9x2fui;Y3@bjbt+Uo`|dvk)`xM{~rYw3>18oBp{Q?v;lEdeX>~Y`~Eq= zOxw2a9l6^T$GyO;rlzLDVvB4x`xNk*?(Xh$ODPTX3CsgFMR)fw48JBK!Ei4eV}Zi0 zF%^d4!eaUBufM(>cuPd)mC`FofU2IWs%xTh5xGQF|Gg3pj}o2*N*#M^fVNT!r3et9 z-mk;4L%TrM{U$aQyj z4?BDvE9~CA+mKJKHx$cN^&Oyk&YU?@qdNTvuq>;#@aKDxrdh!IL#4WpCJMg&0XVH# zuBuxAY}=k5)#*n-E|-e~IF7S7V&n@Vvb~ZHj}o?v$dqD%Wm$UwL?j;VTxtbW1KEy_ zjswMV5vfttL6e-v0#tRMh*THLj4=m*oQTv!`}ZRt3`3g|xi?j{L}b*Ss44{!$%SDU zee+bHl)OIyBGLoI>g(%cQMsyCNBbXZP}LgCvbu|9h3j%GDu>c5U?0Ho#~&YEE}wAt zL*_9F5t*c_pA^e#YHH$;|2(4o`w?K<_J;sr82)9%@b7`Tax*_i0|nn^sOsiO)5!p; zx-F{Hj{sGD56BQXO2RPg0>*FIvSnt)JgzXdZr%DtV7z5nn~LQkG7C5ukH_DS>hvSP z7?T0s1Js_MHehWjg^~n_$Qq!zzP|pjU0+pKipYg6EiGTDgtwK1=Xoap=L1hf zSCW8SF82yRRaMpeVtG6se-7x*WHR5bfX|i2cYrgwuW10Q6w+1rZc8#iv;t*US5jalKf=Xv7_6FU>QyznagDSY3* zQdO@2ZYTtH1EQ=qbk}ts6_Ja9#%QLvP#pCiKzna*?^n9Ix_X8+n_;50wY8?NukUG9 zJqws`j5#bv+0xQ-Vm6yi0WTV3zCM(_vg!jSOqg&3um@NfUGB+b@)hy{NOM(H)q3Ce z&nRW15^!C&p|`g;sj7)E4Ch5BUteDz%Vx7r03Y}E_TE^I&9Vqsw{G3OFbuB-d{upj z$jULsbUKdX0-vaA;CbHn3$IHRf#-S0`M!U*h$K~YXBdWVI-L$8-K?srs)vCF5xKhD zm00%GcIVEWyQWQ>76A85ojUdNJ9g|itloe7_U+xXX3csmlgaD@mgaJ~Z%>;xO>1jw zyS8oHc0?86t*xy!lP6DJ3_MA`DB|`RGiEGawQ5!L)DhQp?-!AUsyg2o(^>8q!!DC^ zUH57cSplr9sj2x!sT)?IbnO=4TZJ*6Rn_NIb zRbVdp6}L@QH;c$FRqX)~k!lf{qN+2=7e!}Pb)98dPh_*%rv|DVEfBpD@I~aRAP9at z+_@ZarD!1vdg z9Os)Oi9{<>E9|=N6@`%b^T5x;F#J(Eo&MiS*gk}YhK9+pSZtB1-URFeZXWE{DCMGJ z#nKH84aYl()-0ewRnIH@Y-S>`4tS)d zre;O-zCTh_oPc69H8o8S!|-zQ1sCT4e^F>U0Q8Vw$^bP$HTiOR$iG3nDk7^b%X)D% z%W+1PfGC=pnx?4gX{vg%s#Zr%fgTb0z_#tTN}czA#wg+c0F*^xeHO5twg3PC07*qo IM6N<$g3joj*#H0l literal 2730 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 diff --git a/CasterSoundboard/res/img/notes.png b/CasterSoundboard/res/img/notes.png index 04b1d397e4ee5f4dd5053e435bfff09ee8bb9c71..8d5caf7bcd204a33d030e16ac76770659dcd2225 100644 GIT binary patch literal 826 zcmV-A1I7G_P)jU@%J^2>an@}pfd8xssfrXwG6g&zGg%Z0N4<;Dm{!6x*ncdFkxH}W(^UX|Vh8gg9 zJf3@u*ls|ZgkjiMO1%=1U%*eT^_QEQo3pE{tF$PyvH|4sr$D#z*EbP)esOV;z={Si zMZVxG@F~wbpMTp9Olo-XYL8)xauR>!Zud%g=S|g<;qS zNRni1m*3vr?v6&IQ>}H`ZJ1@*UQwqA;23yOzv*|zK^(`&bt;s;_MI%t_LC$T`?fbX zH`mwJ)=sq6JN$j~Ps?F19;k%xRCBqFa_U^8@kdwT%X+RT)(B@Yg)18mBJ zi_@%07*qoM6N<$ Ef?>>WDgXcg literal 1478 zcmV;%1v&bOP)$QeQ}mNFY@EVCY49*&QF+o;`Ef z+1bnNnK?86dD+gKGyQ#EcF)Z2?3{(T;)--tsSZ$5-NhPKb2H=o%>Y+a$EjRZ@d!O! z#4s%v*vAUh(JBGo!GHxlyNt7&YSj__tTmj@3BR!PvP5-EziJm_dGQSlPU@-P9WoA2 z`Lmp&p9%dHd}u)&;|rQtG{5yGI=G;-0yBP^FIjGDvy79vDlp@ZvL#2mrFtqb<6mZt zOIr;USn=!gwAV~Qq4=69Cq&1Pw-mjv5Gt_Z z8yF;`qreHj+zP%6?nfqO{2AXAyrCM@3;t!+a>OSElR^CK&}rmf?3;p*RpWZW$3a1= z1O;_m68pIttP28e$Nh3Dcv0HVeX60o;g?szZKTCsI#pwP#V@ad?2BNJYH;uP|w8JbUVI5w@X{Qf?JFDk5__pE?__Fn`Vcv3hJcZ&jt_Qe+Aova}>yR&hM{+!=m4) z+V=z2q3;FLr7gb{G)M=*Z-Rth4{Ww5*y)3UAEZ8;gN0886ucz0|1EgIzeXpsV)7msGRI~w?~TLhY7ixltkXy8Myh|~w1 z6Ms#zItutOB0_x%JST|^ES`b3jQ*MpV1K?PKbcVZQC}OzO0;KOh5b@Y5w+o4%@ex2ESQe*9#xk zOCcY3Y+=2j>5!-S8$yB)uZWOo>TA^&x{7WlZ4wM- zNbm_=Y@#h(`0$wsJL0iNJ;xjrI4vQ-hhIe8BL(z&ia|Z_mr94Xw+iZ6O*^TuNWq&j3Js+Pq3$;)+q;yoTKVHW>TRrZx%!xJp$R|ZL| g4i#5iaaFAT2d746YZ$8!`Tzg`07*qoM6N<$f~bhZM*si- diff --git a/CasterSoundboard/res/img/open.png b/CasterSoundboard/res/img/open.png index 19f5810a3511b79ebba80af7eef30327cd080613..9930dd891fdb9267513e80f64805139d4125c31f 100644 GIT binary patch literal 872 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 diff --git a/CasterSoundboard/res/img/open_sound_control.png b/CasterSoundboard/res/img/open_sound_control.png index b0ac7406653b7105c9fc38752ca647891618e471..622a015d904916cd304e7f2e6f96d2086075677f 100644 GIT binary patch literal 864 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l-Su>F z45^s&cGkx1D+v({#`#%gM6eZTkB z8^y^>NK}ODh-GJ{_4M?7nZ0ahxYpD?hkt!Z<8F0&xM#|z#`nL2cdgscXfWm3k=wU# z?@g4*)0{Sq;f}ZQ;m>Ih8%TT zXrQ}Phj9nf0gvKC^;7s5!i#s_nUxxOJ(QP|aq;5C%|WNs8LXn`>N#7r3i#`uK6PAN zh{?ovHtU6{o@;Vm3OSuQ*1gL6K@eNwiWyzvAxwVh0xeztDjZcEPAhPTcJ7|{N$-N+ z28LG*SBNFH>}^=qe=KRvrrh6&YqmYHICt*Dhl1^i65pkdDsb#-4X`WPBQaNT=^fqa zr@I*vZf|3K;I`!ZoGb?cme1RA>pQ1RlRX~E%y4?sJ1)gvi)LQV(OKIN$54E+X<24J z!<&p*X>QkN<;XD{do|zfzF5Q2Umqt-DOz_^T>1V^VeOp^*Is3Bzvyx&am!!T157KJ z0}i7Si-jh?T?gW>VQ zd8?&n{gV%<-~R2^lP6C${{8#c?yy1Kq|nt@?=d^r&A(q9`~8i43%3;eyyv#YzMsFo z=R5JV$htQ<_BznK8y}M^1X^ruZRNwm!~ZXjH#%&y29r%nb~l Lu6{1-oD!M<6Ul~b literal 14603 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 diff --git a/CasterSoundboard/res/img/pause.png b/CasterSoundboard/res/img/pause.png index 1e178fcbaeccc5833d2928deef988bc959fb6059..041d27327103dc374278c146a247bf3582e743aa 100644 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6d1@pN$v zshIQj!a?2!1rb)qEvmot8)t1{;geCjIM?`L{yhoLNl(_VyW4E}ytpV~?bf}D@9(S6 zuXkjA!LXLGq~RKal|wdz>;lsUz6(+g>>0cZn76Q9V2mPLdXkFg6!B~SITE7$_PheR OkHOQ`&t;ucLK6VxL|bzJ literal 6924 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 f3WY+UPzd7> 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 diff --git a/CasterSoundboard/res/img/playState_paused.png b/CasterSoundboard/res/img/playState_paused.png index 8308ab32bf6348f8178085bafd9dfb214079e31e..7a5652ce260fa00c9101aa62fde799e17f23ce62 100644 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6d{@N{tu zshIQj)<)h#1_Evm8-iL6UB1I4cbB_jmbR0-7=!D?r8b=V*Yg(m?+@CfGf5>gtba4V z%aQaa4)6bdVXORa`RVch1B@>iZdHBdUOFW_`|aPik!wp&pQ*KZz3=zs{fvAL>=$Gj z_!d|)$T}1=ST#IjC}B7YR6mRP0;3800_F^o6zu+EfAGv5@b1cSisK literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^4Is=2Bp6=1#-sr$rjj7PUEamTaXdLef^~61LBs$5@*DpD_s?#uf5U%6 r{z^Yr4;N1!SXYA^>bP0l+XkKcrqzC diff --git a/CasterSoundboard/res/img/playState_playing.png b/CasterSoundboard/res/img/playState_playing.png index aece1e328fe17e23b8052fa80040060c544fe82e..21223f9ffe966e949a4e2ff0151c41fa5371fb80 100644 GIT binary patch literal 1110 zcmV-c1gZOpP)@aE5PTMZq7zhd+;Is{-a_B}c<;Wk914r8uqG2jzSYp1j}p+A)xkk&%&+krvjW5 z50eN_0Yt|sM&1Jc!)^FW;xIva2P}c7GT>pIgbSt zk*K9HNEvX%G?W5^$r7h`+lG8;XcXmVg^=B4(2! zBCvq5u`%CEz>Oq{2=X`_I!O=_>k@Edm?9$W0znBVqAttwHAPW!gIqI~E)W!-BF+%e zLjZ3SMftK+D&_mRRw%c^QPD1fh?W5~x(qu5;K9Vi#8y8d5?KLGYPDKR)3i0yG(QIL zIe@>q3=<+=sjB*k-=&eLJ)jr$di}kw>pz*Mc^2*>W|(;uz?Q12S9)!hiRc1B$>;Mq z03QK3<}qxSng6X;tNUK(^0Y%l%$$f-003BATr60Y^#y>h033H2rZe+(!!Vu!=s9^$ z0mCf!cFN`QxFkteEX(>9zzLUOF9F=pb^R%P1Q!IZfH=E=2o50h;DSW_E8}E-e*Rc4 zm%EAxg9{QRz-RDH06z{IT;SazMn-slzjG4}<7v=ITkvlHoOBtsNksQFP5TW%Xm6>9 zS^++T*NEtD*ue!u5fCJJu~>Yvv9aOV%Ll4S}B9;p98T=Iy-H9u>AW{LPQYl|36qW(}fP@7X^y~u8V}9-qMQ|ee9>6J= zVZRg6%CLe9Lal&uxjdH7=P#!rxF8e(K7%)y`OfU@>}nE%3wk~aIFGe2fwth^0XXe) znvURxVGK6okm;)edqziBl{+ftx7K_F8 zC~siG!gEJoSXh{`ZTk~UVk6;gyP0iz~0{8J4uqx>bm}4TocO3$jHdZ c$cT;q0n$vASBCcDv;Y7A07*qoM6N<$f>llQnE(I) literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^4Is=2Bp6=1#-sr$rjj7PUl z0gs9)Jq|OKyf&$X3^yVQr;U@~Y*E%c?frh-$24KXQdB*`lD)J7aBwu5^MO!}V=jxtwQ5 zDJ}`y@a=$nM*C;kADu0y?t3L)vf@`iKAn4#_7v}D5-9;jUXt6^FpIl|c}?@X794nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dH_jGX# zshIQj)^6TI1`KS8%@ep+B=Cpdt7i$n$Gj?FM-rn5cS?=NzV&CFm)i%fYEkgKw25!8 zaFEw^NyYs^*|l$E?Z4&;B=6}z?fAy-$>TL$^-mc}7}oygt#};dRmrC>sqnmpPcdhH z%;rDR4}daf8DB8WV!ps=!oGkxgU^Bef=mP70!s#2hhhe+hG(QG*pmNG_)gKe!_FF~ q_cMY_+I7F-+O1r-4i(Q??^wn6@%?^ld*C0?iwvHwelF{r5}E)Pw|Zg# literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^4Is=2Bp6=1#-sr$rjj7PUEamTaXdLef^~610K>EY2?Y(unB*N){;xQ& k;=lv31>Sie83#s&swLBPrzfSR12r*ty85}Sb4q9e0B?yV-T(jq diff --git a/CasterSoundboard/res/img/rename.png b/CasterSoundboard/res/img/rename.png index 947d1a7ea4f23252d3e536e68803a25036fbc3fa..ce9e78a16ae37275d2d6bedb043a3f06a0bbfb41 100644 GIT binary patch literal 838 zcmV-M1G)T(P)eo}K~#90?V7!d6G0fppI2RNBzTRGtHTLaCNpG9gV$(fahU%= zY_2;4SnFIk3oX+_A~Q-X@pbe9Xt<{K}cUUk~rj zyx9bBI2;bg|I0#9)RbmrSC+vErj^8tk2R2Fr)ZWRuZ8UX8`BCgW1Icz;!9*L9JH1 zvW#!*1z?QrWrmzA5fSb7`~A@}{;hrl=Cu7O5fMEQLcCixhP49dC?2p>0A0lc77C!V zc)&6NbQcd;B!G$H0ZRlhRXkvU049qE3=7a`G#(Ps%Q+tz0oVz{@V%-WOizMr&R#@B zZI#6X<^?zprEQ zWJ&CqWy!VCouVjLCTh zVHhs-6`C>j0YGc9wARWmDdii_^EyEgoMbnZcK{JRQ5_?P4I+9p9*>WG->+mhl?xz* zI0SI0I!*z$CNs_%w44DJbOC_bGmaJkEb4-(8AsbKU`rQd(I$XJU2q1ibAXLqko!Nn zbu#G!rLW@i=9nzDy%W@q6Tox=rf~w8PQWxy0MiMW#tC3L0f)oka5&8I4=lk0#no;U QZ2$lO07*qoM6N<$g5`i~yZ`_I literal 1025 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_SGrX+877l!}s{b%+wFfi}(ba4!+ zxb=4K+tNi2B5m_4KFM2O;M>A{gKG)%Wyed6o~(K7Y1$Fnn>L7gXiZqlu#M?^yOenH zltdH#gTK$5w6yFxTpd5*r@*s&3sfHTvHx0nT}WY}!qf7zQS2@yl6n8iQdDd{gi956 zPMCA`;--XCClo($>Z@m+kz9TF-pSZd9ZTawi%Y-G*t8}lURj63PwwyEPoEC%6qsl8 z>OJqUyQ8X)}`wsHl{cnIJCO& zVAzSZw>qW1crLhdpt3-jOUXW*VP9dn3zJahkDKq}r!p3=WITUqZ~lkf9Y14TnCpN3 z+fm+nF8EU{_kv}4=Et^k>MqP;-PY6bQn>ceyr3YVx;OjRm@V+xAbG^CnmMvuNXW>@ z=--OwRi`^5*G{f^X3&sl!x+5$LA_bxobo(2(dh0yzV7$#HnExJO;@nVJg_(F(NfEM z$r0DqN0^EgsD7;2F3KjOzPpUs#(?<>)0G*FS&Ug{7`8H)rZq%0%vx=p@b_}W0omHN zEW`Yo;yeG&RfcU$I9F4>{e*{!`6 zB~G}6Rg+VbHS_ZFy-sQKr(~vF+;fGyQQ_pNMV8Y~&2#QLQatV07P0yDU&_Ty7Oa&x zeJK8+X>Xlgofq#9eZ}Tgk|FwY6#Tb8_kQ^E=k_~G<1aQe%{ZaHnq|VO<`wtZ_T)^` zWHmJoTzi|*^1G>i+|zwA5u5cdHf-75xcSRdcFD!Z{J*L`1h?v3MZA0Sw?pLQHBCQWU>t znsX{KIEdT^L{W4Wz*~dRAtG8#h#_WP1n`kT zzPCb%vj%Yk$!);$@^Zk;$6#oJL5xZ98_awn2!dsU*nt$*7bt7f!dCIe!!W#4M6yB~ zBPEznXz_rB&X7eD3NIe8)Ecv3f|cR{i@m`DO|VuxV7WP3fC*NM2TJG;=P`|`PWvfwJ)oFAg2MI=UoRd8XNk5P<(<3 zrpx}n*z3`rhRkF(KuUQEz|86paEf zHX!vT_yHCBUbNP!YTEU!vC06~0$fvu0Zc@H0(g>Q&fmQs>sU8{h|UB-@VVCd0Dwyd zQ_gFx4{EIs0=Q^do_zyGMn-<>z2uFJjdMxyp66Y_R?Ce6oVTeB$p3smBJ1nxb@Xn0 zR#sMC!NLD148r;f*xcMaoMU?b-DcrfH-MQhH=E7W4>rus&Q1dO(SoFHl<_SvU8~g| zNhwb@8jZ1};6|e{CZ+tc+wJ}ZV9K^Q>w7?tDI)r%UavzbRnj5Ns4j$D3vkV@H=v@T bVt4Zn%VAbtUw+Fg00000NkvXXu0mjfB60im literal 15066 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 diff --git a/CasterSoundboard/res/img/save_as.png b/CasterSoundboard/res/img/save_as.png index efbc09fcc3da395204fb05106874d8a223561815..a31a63c8061adc2a4ce5d28d4c6c424db7753084 100644 GIT binary patch literal 1247 zcmV<51R(o~P)*lY_e^WKAZE9weuLY^JK$W&eTQ zB$@=3fI?2@;6V=|c=D1BghWAeQ9+0Zf*1(~SrDTk;6*_K)e~74Jb8%F7#0j!0*<{i z{c@NN^p3kz)!kLy8)rT+FjMpT&3oT|^`pCMfDywDnHWt?O-)v-)r$ZQ0eHe~NV!=h zqHEo5_jIe(3UtO=0pjFu0oY|Fyy94iqUeB5go@5feC8ju>o*p zNE>_Az|Xoquaq(xH_Adv$%&8SI(w4}_+K*;pzHw3W+Xt_0hG;1fU*N98Kd*lP5JE^I zS^)4ofTxn*F$vz3?bN1gpsd4z32{g^P>1yUolm`M&?XO{dn^0dat)V}dCm zGat8|JmBztfW_`$z3h`Xz4>541gFUZ1>6zJA%gSdfr4&{We}l|BKi`*ZU9db(MOxvDy6PNKRcM5 z`40i?L2nDp7t_@^~omi@np_v29%T|$mZ&Mbfs;sg;L zO|}uy8QpQ4h+y33nfY8_)4Y`Oq)E&hkx4lzWdp!(NSu9UzTx}+902Ff4n5Di%FHh( znpOckrqaF_!#R;f0c+%qJZQ9fQa4%@OPqVjEFu%h7-Ci?E!J=zth+JmQw1+ zw7#+u1i}4AqY)5MvI?G^oSghK2!d7`U#S$Eot@nthT(0j-#Gb$QtA*2I{Qh45Q}}| z(A{>s{mk<6@_kbush$gTI-PO+ch~5=lrl==$00lF_4-Z##sZ}7Gh2OwMA`=>L;q-O zBtY2#luZ!=Fo0hG{E_0A-{Y5aiV)zGQfgKywGY7i2KE<}Qu~!s`vJV?I5zhJ)M~X$ z@mmhV@Vw5xTCKi|Uez#w3oc^=EbI@^5k=8s0R91hrKP32C}CgHAe>jg+S*#?f1D7} zVVkjRgmVFi=wh?koJf0Iv)P0YgxVKWN-10o{)tQ-@F`coLa@_O0*D96D zuK*gZgL6Ix#O!6}%biXKQcA5cb8)Nf(L$)~0Lo_Q1sE~xJOJ?+jUqxX*t!4!002ov JPDHLkV1l;qKV|>` literal 7844 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 literal 9532 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 diff --git a/CasterSoundboard/res/img/stopAll.png b/CasterSoundboard/res/img/stopAll.png index e5023e206e6c3f78deda0e1e8f943bbf6e57052b..cd473a828d330b2baafb2428904f3f8904c86783 100644 GIT binary patch literal 2307 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 iszsu4$+ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4d352c4df3f9e697e898b3eadd5ee3967c1c5d6f Mon Sep 17 00:00:00 2001 From: rikai Date: Fri, 19 May 2017 14:15:33 -0700 Subject: [PATCH 50/77] Cleanup + Snapcraft build status. Cleaned up the readme formatting a bit as well as adding the snapcraft status for the automatic building i just enabled. :) --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c6d4d4a..530075e 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,19 @@ -CasterSoundboard + + +CasterSoundboard [![Snap Status](https://build.snapcraft.io/badge/JupiterBroadcasting/CasterSoundboard.svg)](https://build.snapcraft.io/user/JupiterBroadcasting/CasterSoundboard) ================ A soundboard for hot-keying and playing back sounds. (For podcasting) CasterSoundboard is written in C++ Qt5. -======= +--- ## Guides -### Control CasterSoundboard with your phone or tablet via a network: -[Click Here For Guide](https://github.com/JupiterBroadcasting/CasterSoundboard/wiki/Guide:-How-to-Control-CasterSoundboard-Using-Your-Phone-or-Tablet "CasterSoundboard's Wiki") - -======= ++ [Control CasterSoundboard with your phone or tablet via a network](https://github.com/JupiterBroadcasting/CasterSoundboard/wiki/Guide:-How-to-Control-CasterSoundboard-Using-Your-Phone-or-Tablet "CasterSoundboard's Wiki") +--- ## Libraries Used -### osc-cpp-qt -https://github.com/MugenSAS/osc-cpp-qt ++ [osc-cpp-qt](https://github.com/MugenSAS/osc-cpp-qt) --- ## How to Install @@ -24,8 +23,8 @@ Building from Source for installation instructions. ## Packages ### Arch AUR -Thanks to git user [@j605](https://github.com/j605 "Jagannathan Tiruvallur Eachambadi") for creating a PKGBUILD for people on Arch who want to try this software: -https://aur.archlinux.org/packages/castersoundboard-git +Thanks to [@j605](https://github.com/j605 "Jagannathan Tiruvallur Eachambadi") for creating a PKGBUILD for people on Arch who want to try this software: ++ [CasterSoundboard-git](https://aur.archlinux.org/packages/castersoundboard-git) ### Building From Source From fe69acc149e6bf26b137dbff4845843b227a8213 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Fri, 19 May 2017 23:54:46 +0100 Subject: [PATCH 51/77] Add desktop-qt5 helper. Correct command:. Add interfaces. Builds and executes. Not complete. --- snap/snapcraft.yaml | 34 ++++++++++++++++++++++++++++++++++ snapcraft.yaml | 21 --------------------- 2 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 snap/snapcraft.yaml delete mode 100644 snapcraft.yaml diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000..385b82f --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,34 @@ +name: castersoundboard +version: git +summary: A soundboard for hot-keying and playing back sounds. (For podcasting) +description: A soundboard for hot-keying and playing back sounds. (For podcasting) + +grade: stable +confinement: devmode + +parts: + main: + source: ./CasterSoundboard + plugin: qmake + qt-version: qt5 + after: + - desktop-qt5 + build-packages: + - g++ + - qtdeclarative5-dev + - qt5-default + - qtmultimedia5-dev + +apps: + castersoundboard: + command: bin/desktop-launch $SNAP/bin/CasterSoundboard + #command: env TMPDIR=$XDG_RUNTIME_DIR PATH=/usr/local/bin:${PATH} ${SNAP}/bin/desktop-launch $SNAP/usr/share/wpcom/wpcom + #desktop: usr/share/applications/wpcom.desktop + plugs: + #- gsettings + - home + - mount-observe + - network + - pulseaudio + #- unity7 + - x11 diff --git a/snapcraft.yaml b/snapcraft.yaml deleted file mode 100644 index 45e61a1..0000000 --- a/snapcraft.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: castersoundboard -version: "0.0.1+git" -summary: A soundboard for hot-keying and playing back sounds. (For podcasting) -description: A soundboard for hot-keying and playing back sounds. (For podcasting) -grade: devel -confinement: devmode - -apps: - castersoundboard: - command: bin/CasterSoundboard - -parts: - main: - source: ./CasterSoundboard - plugin: qmake - qt-version: qt5 - build-packages: - - qtdeclarative5-dev - - qt5-default - - qtmultimedia5-dev - - build-essential From 388aed22874bad632182d210eecb2bcf1ed8e034 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Sat, 20 May 2017 00:16:33 +0100 Subject: [PATCH 52/77] Use strict confinement. Add network-bind interface. --- snap/snapcraft.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 385b82f..ada6c86 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -4,7 +4,7 @@ summary: A soundboard for hot-keying and playing back sounds. (For podcasting) description: A soundboard for hot-keying and playing back sounds. (For podcasting) grade: stable -confinement: devmode +confinement: strict parts: main: @@ -22,13 +22,11 @@ parts: apps: castersoundboard: command: bin/desktop-launch $SNAP/bin/CasterSoundboard - #command: env TMPDIR=$XDG_RUNTIME_DIR PATH=/usr/local/bin:${PATH} ${SNAP}/bin/desktop-launch $SNAP/usr/share/wpcom/wpcom #desktop: usr/share/applications/wpcom.desktop plugs: - #- gsettings - home - mount-observe - network + - network-bind - pulseaudio - #- unity7 - x11 From c7e2d5d8298687cfc63daef5d899004d0f040873 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Sat, 20 May 2017 00:38:31 +0100 Subject: [PATCH 53/77] Add required runtime requirements. --- snap/snapcraft.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index ada6c86..4a03180 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -18,6 +18,8 @@ parts: - qtdeclarative5-dev - qt5-default - qtmultimedia5-dev + stage-packages: + - qml-module-qtmultimedia apps: castersoundboard: From 94559c0c113f3a31c5b0ab948545c06e9965335b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Sat, 20 May 2017 10:44:00 +0200 Subject: [PATCH 54/77] Move desktop files to a separate folder --- CasterSoundboard/CasterSoundboard.pro | 6 +++--- .../CasterSoundboard.appdata.xml | 0 .../CasterSoundboard.desktop | 0 CasterSoundboard.png => xdg/CasterSoundboard.png | Bin 4 files changed, 3 insertions(+), 3 deletions(-) rename CasterSoundboard.appdata.xml => xdg/CasterSoundboard.appdata.xml (100%) rename CasterSoundboard.desktop => xdg/CasterSoundboard.desktop (100%) rename CasterSoundboard.png => xdg/CasterSoundboard.png (100%) diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index d75f9d3..6bb415b 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -131,15 +131,15 @@ RESOURCES += \ res.qrc unix { - desktop.files = ../CasterSoundboard.desktop + desktop.files = ../xdg/CasterSoundboard.desktop desktop.path = $${PREFIX}/share/applications/ INSTALLS += desktop - appdata.files = ../CasterSoundboard.appdata.xml + appdata.files = ../xdg/CasterSoundboard.appdata.xml appdata.path = $${PREFIX}/share/appdata/ INSTALLS += appdata - pixmap.files = ../CasterSoundboard.png + pixmap.files = ../xdg/CasterSoundboard.png pixmap.path = $${PREFIX}/share/pixmaps/ INSTALLS += pixmap } diff --git a/CasterSoundboard.appdata.xml b/xdg/CasterSoundboard.appdata.xml similarity index 100% rename from CasterSoundboard.appdata.xml rename to xdg/CasterSoundboard.appdata.xml diff --git a/CasterSoundboard.desktop b/xdg/CasterSoundboard.desktop similarity index 100% rename from CasterSoundboard.desktop rename to xdg/CasterSoundboard.desktop diff --git a/CasterSoundboard.png b/xdg/CasterSoundboard.png similarity index 100% rename from CasterSoundboard.png rename to xdg/CasterSoundboard.png From 2e84c55334189b90ce48000fb0868de0fbfc3c1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Sat, 20 May 2017 10:44:54 +0200 Subject: [PATCH 55/77] Add Copr build status --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a559826..2086bae 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -CasterSoundboard [![Snap Status](https://build.snapcraft.io/badge/JupiterBroadcasting/CasterSoundboard.svg)](https://build.snapcraft.io/user/JupiterBroadcasting/CasterSoundboard) +CasterSoundboard [![Snap Status](https://build.snapcraft.io/badge/JupiterBroadcasting/CasterSoundboard.svg)](https://build.snapcraft.io/user/JupiterBroadcasting/CasterSoundboard) [![Copr Status](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/package/castersoundboard/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/package/castersoundboard/) ================ A soundboard for hot-keying and playing back sounds. (For podcasting) From f57a0ea29923ef12212d81501c21fe13d1b62b85 Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Sat, 20 May 2017 15:25:58 +0100 Subject: [PATCH 56/77] rename `lgpl.txt` to `LICENSE` The license remains the same - GNU Lesser General Public License v3.0 The only change is the filename of the license file. --- lgpl.txt => LICENSE | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lgpl.txt => LICENSE (100%) diff --git a/lgpl.txt b/LICENSE similarity index 100% rename from lgpl.txt rename to LICENSE From 0d769052215f2c73ba76ecc3478de916101ee0e0 Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Sat, 20 May 2017 19:20:52 +0100 Subject: [PATCH 57/77] MainWindow.cpp: add tooltips to MainWindow buttons Some of the buttons functions, like the OSC settings one, are fairly obscure. This only adds tooltips to the ones in the MainWindow section. --- CasterSoundboard/MainWindow.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index 532d12e..f9c6317 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -73,6 +73,7 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) addNewTabButton = new QPushButton; addNewTabButton->setIcon(QIcon(":/res/img/newTab.png")); addNewTabButton->setIconSize(QSize(40,40)); + addNewTabButton->setToolTip("New Tab"); //addNewTabButton->setFixedSize(30,30); //layout->addWidget(addNewTabButton,0,2, Qt::AlignRight); @@ -80,44 +81,52 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) openTabButton = new QPushButton; openTabButton->setIcon(QIcon(":/res/img/open.png")); openTabButton->setIconSize(QSize(40,40)); + openTabButton->setToolTip("Open Tab"); //openTabButton->setFixedSize(30,30); //~~Save Tab~~ saveTabButton = new QPushButton; saveTabButton->setIcon(QIcon(":/res/img/save.png")); saveTabButton->setIconSize(QSize(40,40)); + saveTabButton->setToolTip("Save Tab"); //saveTabButton->setFixedSize(30,30); //~~Save As Tab~~ saveAsTabButton = new QPushButton; saveAsTabButton->setIcon(QIcon(":/res/img/save_as.png")); saveAsTabButton->setIconSize(QSize(40,40)); + saveAsTabButton->setToolTip("Save Tab As"); //saveAsTabButton->setFixedSize(40,40); //~~Stop ALL Sounds~~ stopAllSoundsButton = new QPushButton; stopAllSoundsButton->setIcon(QIcon(":/res/img/stopAll.png")); stopAllSoundsButton->setIconSize(QSize(40,40)); + stopAllSoundsButton->setToolTip("Stop All Sounds"); //~~Toogle Ducking~~ toggleAudioDuckingButton = new QPushButton; toggleAudioDuckingButton->setIcon(QIcon(":/res/img/duck.png")); toggleAudioDuckingButton->setIconSize(QSize(40,40)); + toggleAudioDuckingButton->setToolTip("Toggle Ducking"); //~~Rename Tab~~ renameCurrentTabButton = new QPushButton; renameCurrentTabButton->setIcon(QIcon(":/res/img/rename.png")); renameCurrentTabButton->setIconSize(QSize(40,40)); + renameCurrentTabButton->setToolTip("Rename Tab"); //~~OSC Settings~~ openSoundControlButton = new QPushButton; openSoundControlButton->setIcon(QIcon(":/res/img/open_sound_control.png")); openSoundControlButton->setIconSize(QSize(40,40)); + openSoundControlButton->setToolTip("OSC Settings"); //~~About Button~~ aboutButton = new QPushButton; aboutButton->setIcon(QIcon(":/res/img/about.png")); aboutButton->setIconSize(QSize(40,40)); + aboutButton->setToolTip("About"); //aboutButton->setFixedSize(30,30); //layout->addWidget(aboutButton,0,0, Qt::AlignLeft); From 84e38613e31b3b1669d9d379e8161e79e8bfa89a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Sat, 20 May 2017 21:50:43 +0200 Subject: [PATCH 58/77] Fix typo --- CasterSoundboard/CasterOSCServerConfigPicker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CasterSoundboard/CasterOSCServerConfigPicker.cpp b/CasterSoundboard/CasterOSCServerConfigPicker.cpp index 1ec940a..c5b97e5 100644 --- a/CasterSoundboard/CasterOSCServerConfigPicker.cpp +++ b/CasterSoundboard/CasterOSCServerConfigPicker.cpp @@ -123,7 +123,7 @@ void CasterOSCServerConfigPicker::button_ToggleServer_Clicked(){ button_ToggleServer->setText("Stop"); this->close(); } else { - QString *temp = new QString("IP and Port numbers can not be emtpy!"); + QString *temp = new QString("IP and Port numbers can not be empty!"); QMessageBox msgBox; msgBox.setText(temp->toUtf8() + "\n"); msgBox.setStandardButtons(QMessageBox::Close); From da498dd4b82c299ab35d45c5174a3adfb7ed9a9f Mon Sep 17 00:00:00 2001 From: James F-Robinson Date: Sun, 21 May 2017 09:09:55 +0100 Subject: [PATCH 59/77] README.md: add license badge Add a license badge from Shields.io and move the others onto a new line --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2086bae..e823ffd 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,10 @@ -CasterSoundboard [![Snap Status](https://build.snapcraft.io/badge/JupiterBroadcasting/CasterSoundboard.svg)](https://build.snapcraft.io/user/JupiterBroadcasting/CasterSoundboard) [![Copr Status](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/package/castersoundboard/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/package/castersoundboard/) +CasterSoundboard ================ +[![Snap Status](https://build.snapcraft.io/badge/JupiterBroadcasting/CasterSoundboard.svg)](https://build.snapcraft.io/user/JupiterBroadcasting/CasterSoundboard) +[![Copr Status](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/package/castersoundboard/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/fszymanski/castersoundboard/package/castersoundboard/) +[![License](https://img.shields.io/github/license/JupiterBroadcasting/CasterSoundboard.svg)](https://github.com/JupiterBroadcasting/CasterSoundboard/blob/master/LICENSE) A soundboard for hot-keying and playing back sounds. (For podcasting) From 1d6c7db6de515a452a33fd4c3b26d2d2c13a1eb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Mon, 22 May 2017 18:07:40 +0200 Subject: [PATCH 60/77] Update building and installation --- CasterSoundboard/CasterSoundboard.pro | 33 +++++++++--------- README.md | 17 ++++----- .../linux}/CasterSoundboard.appdata.xml | 0 {xdg => dist/linux}/CasterSoundboard.desktop | 0 {xdg => dist/linux}/CasterSoundboard.png | Bin {snap => dist/snap}/snapcraft.yaml | 0 6 files changed, 25 insertions(+), 25 deletions(-) rename {xdg => dist/linux}/CasterSoundboard.appdata.xml (100%) rename {xdg => dist/linux}/CasterSoundboard.desktop (100%) rename {xdg => dist/linux}/CasterSoundboard.png (100%) rename {snap => dist/snap}/snapcraft.yaml (100%) diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index 6bb415b..0155206 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -4,15 +4,19 @@ # #------------------------------------------------- +isEmpty(PREFIX) { + PREFIX = /usr/local +} +BINDIR = $$PREFIX/bin +DATADIR = $$PREFIX/share -QT += core gui multimedia network +QT += core gui multimedia network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = CasterSoundboard TEMPLATE = app - SOURCES += main.cpp\ CasterPlayer.cpp \ CasterBoard.cpp \ @@ -124,25 +128,20 @@ HEADERS += \ libs/tools/NtpTimestamp.h \ CasterOSCServerConfigPicker.h +RESOURCES += res.qrc -FORMS += +linux { + appdata.files = ../dist/linux/CasterSoundboard.appdata.xml + appdata.path = $$DATADIR/appdata/ -RESOURCES += \ - res.qrc + desktop.files = ../dist/linux/CasterSoundboard.desktop + desktop.path = $$DATADIR/applications/ -unix { - desktop.files = ../xdg/CasterSoundboard.desktop - desktop.path = $${PREFIX}/share/applications/ - INSTALLS += desktop + pixmap.files = ../dist/linux/CasterSoundboard.png + pixmap.path = $$DATADIR/pixmaps/ - appdata.files = ../xdg/CasterSoundboard.appdata.xml - appdata.path = $${PREFIX}/share/appdata/ - INSTALLS += appdata - - pixmap.files = ../xdg/CasterSoundboard.png - pixmap.path = $${PREFIX}/share/pixmaps/ - INSTALLS += pixmap + INSTALLS += appdata desktop pixmap } -target.path = $${PREFIX}/bin +target.path = $$BINDIR INSTALLS += target diff --git a/README.md b/README.md index e823ffd..388eed3 100644 --- a/README.md +++ b/README.md @@ -63,35 +63,36 @@ commands for various platforms are listed below: # brew install qt ``` -You should then have access to qmake, make, and the qt5 development -libraries. Next cd into the project folder inside the repo: +You should then have access to `qmake`, make, and the qt5 development +libraries. Next `cd` into the project folder inside the repo: ``` $ cd CasterSoundboard/CasterSoundboard ``` -Now run qmake, this will auto generate a makefile: +You can specify the target directory using the `PREFIX` `qmake` variable (default: `/usr/local`). +Now run `qmake`, this will auto generate a makefile: ``` -$ qmake +$ qmake PREFIX=/usr ``` or on Fedora: ``` -$ qmake-qt5 +$ qmake-qt5 PREFIX=/usr ``` -Then run make to build the project: +Then run `make` to build the project: ``` $ make ``` -And finally run make install to install the app: +And finally run `make install` to install the app: ``` -# make install INSTALL_ROOT=/usr +# make install ``` Now you're good to go! diff --git a/xdg/CasterSoundboard.appdata.xml b/dist/linux/CasterSoundboard.appdata.xml similarity index 100% rename from xdg/CasterSoundboard.appdata.xml rename to dist/linux/CasterSoundboard.appdata.xml diff --git a/xdg/CasterSoundboard.desktop b/dist/linux/CasterSoundboard.desktop similarity index 100% rename from xdg/CasterSoundboard.desktop rename to dist/linux/CasterSoundboard.desktop diff --git a/xdg/CasterSoundboard.png b/dist/linux/CasterSoundboard.png similarity index 100% rename from xdg/CasterSoundboard.png rename to dist/linux/CasterSoundboard.png diff --git a/snap/snapcraft.yaml b/dist/snap/snapcraft.yaml similarity index 100% rename from snap/snapcraft.yaml rename to dist/snap/snapcraft.yaml From 843bc1ea911a486168028db6a13301fd07235287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Mon, 22 May 2017 18:15:09 +0200 Subject: [PATCH 61/77] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 388eed3..6de951f 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Building from Source for installation instructions. ## Packages ### Arch AUR -Thanks to [@j605](https://github.com/j605 "Jagannathan Tiruvallur Eachambadi") for creating a PKGBUILD for people on Arch who want to try this software: +Thanks to [@j605](https://github.com/j605 "Jagannathan Tiruvallur Eachambadi") for creating a `PKGBUILD` for people on Arch who want to try this software: + [CasterSoundboard-git](https://aur.archlinux.org/packages/castersoundboard-git) ### Fedora 25 and newer @@ -38,7 +38,7 @@ RPM package can be found in the [Copr](https://copr.fedorainfracloud.org/coprs/f ### Building From Source -First clone the repository using git, if you don't have git installed +First clone the repository using `git`, if you don't have `git` installed you can find installation instructions [here](https://git-scm.com) ``` @@ -63,7 +63,7 @@ commands for various platforms are listed below: # brew install qt ``` -You should then have access to `qmake`, make, and the qt5 development +You should then have access to `qmake`, `make`, and the qt5 development libraries. Next `cd` into the project folder inside the repo: ``` From e16c153c394fac19378cd24e882f4ae944fa7e7f Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Mon, 22 May 2017 20:12:01 +0100 Subject: [PATCH 62/77] MainWindow.cpp: use HTML formatting in about box --- CasterSoundboard/MainWindow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index f9c6317..9f72a2b 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -226,8 +226,8 @@ void MainWindow::updateCurrentOSCTab(int tabIndex) void MainWindow::aboutBox() { QMessageBox msgBox; - msgBox.setText("CasterSoundboard (v1.0) BETA\nAuthor: Oscar Cerna\ne-mail: covarianttensor@gmail.com\nLicense: LGPL v3\n© 2013-2017 Oscar Cerna"); - msgBox.setInformativeText("Special Note:\nDeveloped for Chris Fisher & Jupiter Broadcasting, because he's awesome!\nVisit www.jupiterbroadcasting.com.\nNOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); + msgBox.setText("CasterSoundboard (v1.0) BETA
Author: Oscar Cerna
e-mail: covarianttensor@gmail.com
License: LGPL v3
© 2013-2017 Oscar Cerna"); + msgBox.setInformativeText("Special Note:
Developed for Chris Fisher & Jupiter Broadcasting, because he's awesome!
Visit www.jupiterbroadcasting.com.
NOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); msgBox.setStandardButtons(QMessageBox::Close); msgBox.setDefaultButton(QMessageBox::Close); msgBox.setModal(true); From 65ad99419a0c5a066152a5e412e45fcad1f31f47 Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Mon, 22 May 2017 20:14:14 +0100 Subject: [PATCH 63/77] MainWindow.cpp: make website a link in about box --- CasterSoundboard/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index 9f72a2b..009e485 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -227,7 +227,7 @@ void MainWindow::aboutBox() { QMessageBox msgBox; msgBox.setText("CasterSoundboard (v1.0) BETA
Author: Oscar Cerna
e-mail: covarianttensor@gmail.com
License: LGPL v3
© 2013-2017 Oscar Cerna"); - msgBox.setInformativeText("Special Note:
Developed for Chris Fisher & Jupiter Broadcasting, because he's awesome!
Visit www.jupiterbroadcasting.com.
NOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); + msgBox.setInformativeText("Special Note:
Developed for Chris Fisher & Jupiter Broadcasting, because he's awesome!
Visit
jupiterbroadcasting.com.
NOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); msgBox.setStandardButtons(QMessageBox::Close); msgBox.setDefaultButton(QMessageBox::Close); msgBox.setModal(true); From deec73f69f0c125d87ded9d0bd690fe9e17e1210 Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Mon, 22 May 2017 20:16:55 +0100 Subject: [PATCH 64/77] MainWindow.cpp: make e-mail a link in about box --- CasterSoundboard/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index 009e485..567359e 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -226,7 +226,7 @@ void MainWindow::updateCurrentOSCTab(int tabIndex) void MainWindow::aboutBox() { QMessageBox msgBox; - msgBox.setText("CasterSoundboard (v1.0) BETA
Author: Oscar Cerna
e-mail: covarianttensor@gmail.com
License: LGPL v3
© 2013-2017 Oscar Cerna"); + msgBox.setText("CasterSoundboard (v1.0) BETA
Author: Oscar Cerna
e-mail: covarianttensor@gmail.com
License: LGPL v3
© 2013-2017 Oscar Cerna"); msgBox.setInformativeText("Special Note:
Developed for Chris Fisher & Jupiter Broadcasting, because he's awesome!
Visit jupiterbroadcasting.com.
NOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); msgBox.setStandardButtons(QMessageBox::Close); msgBox.setDefaultButton(QMessageBox::Close); From f738911d589561139829b26941bccec0c131649f Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Mon, 22 May 2017 20:19:34 +0100 Subject: [PATCH 65/77] MainWindow.cpp: make author a link in about box --- CasterSoundboard/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index 567359e..c3f7c67 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -226,7 +226,7 @@ void MainWindow::updateCurrentOSCTab(int tabIndex) void MainWindow::aboutBox() { QMessageBox msgBox; - msgBox.setText("CasterSoundboard (v1.0) BETA
Author: Oscar Cerna
e-mail: covarianttensor@gmail.com
License: LGPL v3
© 2013-2017 Oscar Cerna"); + msgBox.setText("CasterSoundboard (v1.0) BETA
Author: Oscar Cerna
e-mail: covarianttensor@gmail.com
License: LGPL v3
© 2013-2017 Oscar Cerna"); msgBox.setInformativeText("Special Note:
Developed for Chris Fisher & Jupiter Broadcasting, because he's awesome!
Visit jupiterbroadcasting.com.
NOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); msgBox.setStandardButtons(QMessageBox::Close); msgBox.setDefaultButton(QMessageBox::Close); From 247829dfc0dc9801dd64928a7b62c0ecc49c60f5 Mon Sep 17 00:00:00 2001 From: James Fawcus-Robinson Date: Mon, 22 May 2017 20:22:49 +0100 Subject: [PATCH 66/77] MainWindow.cpp: make license a link in about box --- CasterSoundboard/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CasterSoundboard/MainWindow.cpp b/CasterSoundboard/MainWindow.cpp index c3f7c67..e135158 100644 --- a/CasterSoundboard/MainWindow.cpp +++ b/CasterSoundboard/MainWindow.cpp @@ -226,7 +226,7 @@ void MainWindow::updateCurrentOSCTab(int tabIndex) void MainWindow::aboutBox() { QMessageBox msgBox; - msgBox.setText("CasterSoundboard (v1.0) BETA
Author: Oscar Cerna
e-mail: covarianttensor@gmail.com
License: LGPL v3
© 2013-2017 Oscar Cerna"); + msgBox.setText("CasterSoundboard (v1.0) BETA
Author: Oscar Cerna
e-mail: covarianttensor@gmail.com
License: LGPL v3
© 2013-2017 Oscar Cerna"); msgBox.setInformativeText("Special Note:
Developed for Chris Fisher & Jupiter Broadcasting, because he's awesome!
Visit jupiterbroadcasting.com.
NOT AFFILIATED with Chris Fisher or Jupiter Broadcasting."); msgBox.setStandardButtons(QMessageBox::Close); msgBox.setDefaultButton(QMessageBox::Close); From 4068ae64c00d4b752153cf0003696825d2d5f4e0 Mon Sep 17 00:00:00 2001 From: Quinton Schwagle Date: Tue, 23 May 2017 14:28:32 -0400 Subject: [PATCH 67/77] - Changed keyboard_Key_to_player_key map to use an initializer list to set the mapped values. Prior, it was initialized by a series of inserts. - Changed int_to_player_key to use an an initializer list to set the mapped values. Prioer, it was initialized by a series of inserts. - Set the version of C++ to C++11. Initializer looks better than a series of insert calls. The change to c++11 was required to add initalizer lists. --- CasterSoundboard/CasterBoard.cpp | 24 ++++++++++++++---------- CasterSoundboard/CasterSoundboard.pro | 1 + 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/CasterSoundboard/CasterBoard.cpp b/CasterSoundboard/CasterBoard.cpp index a500acd..7733cb0 100644 --- a/CasterSoundboard/CasterBoard.cpp +++ b/CasterSoundboard/CasterBoard.cpp @@ -40,17 +40,21 @@ CasterBoard::CasterBoard(QWidget* parent) : QWidget(parent) // MAPs // int_to_player_key - int_to_player_key = new QMap(); - int_to_player_key->insert(0, "1"); int_to_player_key->insert(1, "2"); int_to_player_key->insert(2, "3"); int_to_player_key->insert(3, "4"); int_to_player_key->insert(4, "5"); int_to_player_key->insert(5, "6"); int_to_player_key->insert(6, "7"); int_to_player_key->insert(7, "8"); - int_to_player_key->insert(8, "Q"); int_to_player_key->insert(9, "W"); int_to_player_key->insert(10, "E"); int_to_player_key->insert(11, "R"); int_to_player_key->insert(12, "T"); int_to_player_key->insert(13, "Y"); int_to_player_key->insert(14, "U"); int_to_player_key->insert(15, "I"); - int_to_player_key->insert(16, "A"); int_to_player_key->insert(17, "S"); int_to_player_key->insert(18, "D"); int_to_player_key->insert(19, "F"); int_to_player_key->insert(20, "G"); int_to_player_key->insert(21, "H"); int_to_player_key->insert(22, "J"); int_to_player_key->insert(23, "K"); - int_to_player_key->insert(24, "Z"); int_to_player_key->insert(25, "X"); int_to_player_key->insert(26, "C"); int_to_player_key->insert(27, "V"); int_to_player_key->insert(28, "B"); int_to_player_key->insert(29, "N"); int_to_player_key->insert(30, "M"); int_to_player_key->insert(31, ","); + int_to_player_key = new QMap + { + {0, "1"},{1,"2"},{2,"3"},{3,"4"},{4,"5"},{5,"6"},{6,"7"},{7,"8"}, + {8, "Q"},{9,"W"},{10,"E"},{11,"R"},{12,"T"},{13,"Y"},{14,"U"},{15,"I"}, + {16,"A"},{17,"S"},{18,"D"},{19,"F"},{20,"G"},{21,"H"},{22,"J"},{23,"K"}, + {24,"Z"},{25,"X"},{26,"C"},{27,"V"},{28,"B"},{29,"N"},{30,"M"},{31,","} + }; // keyboard_key_to_player_key - keyboard_key_to_player_key = new QMap(); - keyboard_key_to_player_key->insert(Qt::Key_1, "1"); keyboard_key_to_player_key->insert(Qt::Key_2, "2"); keyboard_key_to_player_key->insert(Qt::Key_3, "3"); keyboard_key_to_player_key->insert(Qt::Key_4, "4"); keyboard_key_to_player_key->insert(Qt::Key_5, "5"); keyboard_key_to_player_key->insert(Qt::Key_6, "6"); keyboard_key_to_player_key->insert(Qt::Key_7, "7"); keyboard_key_to_player_key->insert(Qt::Key_8, "8"); - keyboard_key_to_player_key->insert(Qt::Key_Q, "Q"); keyboard_key_to_player_key->insert(Qt::Key_W, "W"); keyboard_key_to_player_key->insert(Qt::Key_E, "E"); keyboard_key_to_player_key->insert(Qt::Key_R, "R"); keyboard_key_to_player_key->insert(Qt::Key_T, "T"); keyboard_key_to_player_key->insert(Qt::Key_Y, "Y"); keyboard_key_to_player_key->insert(Qt::Key_U, "U"); keyboard_key_to_player_key->insert(Qt::Key_I, "I"); - keyboard_key_to_player_key->insert(Qt::Key_A, "A"); keyboard_key_to_player_key->insert(Qt::Key_S, "S"); keyboard_key_to_player_key->insert(Qt::Key_D, "D"); keyboard_key_to_player_key->insert(Qt::Key_F, "F"); keyboard_key_to_player_key->insert(Qt::Key_G, "G"); keyboard_key_to_player_key->insert(Qt::Key_H, "H"); keyboard_key_to_player_key->insert(Qt::Key_J, "J"); keyboard_key_to_player_key->insert(Qt::Key_K, "K"); - keyboard_key_to_player_key->insert(Qt::Key_Z, "Z"); keyboard_key_to_player_key->insert(Qt::Key_X, "X"); keyboard_key_to_player_key->insert(Qt::Key_C, "C"); keyboard_key_to_player_key->insert(Qt::Key_V, "V"); keyboard_key_to_player_key->insert(Qt::Key_B, "B"); keyboard_key_to_player_key->insert(Qt::Key_N, "N"); keyboard_key_to_player_key->insert(Qt::Key_M, "M"); keyboard_key_to_player_key->insert(Qt::Key_Comma, ","); + keyboard_key_to_player_key = new QMap + { + {Qt::Key_1,"1"},{Qt::Key_2,"2"},{Qt::Key_3,"3"},{Qt::Key_4,"4"},{Qt::Key_5,"5"},{Qt::Key_6,"6"},{Qt::Key_7,"7"},{Qt::Key_8,"8"}, + {Qt::Key_Q, "Q"},{Qt::Key_W,"W"},{Qt::Key_E,"E"},{Qt::Key_R,"R"},{Qt::Key_T,"T"},{Qt::Key_Y,"Y"},{Qt::Key_U,"U"},{Qt::Key_I,"I"}, + {Qt::Key_A,"A"},{Qt::Key_S,"S"},{Qt::Key_D,"D"},{Qt::Key_F,"F"},{Qt::Key_G,"G"},{Qt::Key_H,"H"},{Qt::Key_J,"J"},{Qt::Key_K,"K"}, + {Qt::Key_Z,"Z"},{Qt::Key_X,"X"},{Qt::Key_C,"C"},{Qt::Key_V,"V"},{Qt::Key_B,"B"},{Qt::Key_N,"N"},{Qt::Key_M,"M"},{Qt::Key_Comma,","} + }; // players players = new QMap(); diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index 0155206..7ea9b22 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -10,6 +10,7 @@ isEmpty(PREFIX) { BINDIR = $$PREFIX/bin DATADIR = $$PREFIX/share +CONFIG += c++11 QT += core gui multimedia network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets From 375cfcef8d923e562dde40ebc4006fc940a160fc Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Tue, 23 May 2017 22:19:02 +0100 Subject: [PATCH 68/77] Update snapcraft.yaml with a desktop icon and bundle every codec so Chris can play aiff files ;-) --- dist/snap/snapcraft.yaml | 34 ------------------------ snap/snapcraft.yaml | 56 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 34 deletions(-) delete mode 100644 dist/snap/snapcraft.yaml create mode 100644 snap/snapcraft.yaml diff --git a/dist/snap/snapcraft.yaml b/dist/snap/snapcraft.yaml deleted file mode 100644 index 4a03180..0000000 --- a/dist/snap/snapcraft.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: castersoundboard -version: git -summary: A soundboard for hot-keying and playing back sounds. (For podcasting) -description: A soundboard for hot-keying and playing back sounds. (For podcasting) - -grade: stable -confinement: strict - -parts: - main: - source: ./CasterSoundboard - plugin: qmake - qt-version: qt5 - after: - - desktop-qt5 - build-packages: - - g++ - - qtdeclarative5-dev - - qt5-default - - qtmultimedia5-dev - stage-packages: - - qml-module-qtmultimedia - -apps: - castersoundboard: - command: bin/desktop-launch $SNAP/bin/CasterSoundboard - #desktop: usr/share/applications/wpcom.desktop - plugs: - - home - - mount-observe - - network - - network-bind - - pulseaudio - - x11 diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000..b13fe75 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,56 @@ +name: castersoundboard +version: git +summary: A soundboard for hot-keying and playing back sounds. (For podcasting) +description: | + A soundboard for hot-keying and playing back sounds. (For podcasting) + +grade: stable +confinement: strict + +parts: + desktop-icon: + source: . + plugin: nil + prepare: | + mkdir -p $SNAPCRAFT_PART_INSTALL/usr/share/applications + mkdir -p $SNAPCRAFT_PART_INSTALL/usr/share/pixmaps + cp -v dist/linux/CasterSoundboard.desktop $SNAPCRAFT_PART_INSTALL/usr/share/applications/ + cp -v dist/linux/CasterSoundboard.png $SNAPCRAFT_PART_INSTALL/usr/share/pixmaps/ + sed -i 's|Icon=CasterSoundboard|Icon=/usr/share/pixmaps/CasterSoundboard\.png|' $SNAPCRAFT_PART_INSTALL/usr/share/applications/CasterSoundboard.desktop + + castersoundboard: + source: ./CasterSoundboard + plugin: qmake + qt-version: qt5 + after: + - desktop-icon + - desktop-qt5 + build-packages: + - g++ + - qt5-default + - qtdeclarative5-dev + - qtmultimedia5-dev + stage-packages: + - gstreamer1.0-plugins-bad + - gstreamer1.0-plugins-base + - gstreamer1.0-plugins-good + - gstreamer1.0-plugins-ugly + - libqt5declarative5 + - libqt5multimedia5 + - libqt5multimedia5-plugins + - libqt5network5 + prime: + - -usr/share/doc + +apps: + castersoundboard: + command: bin/desktop-launch $SNAP/usr/local/bin/CasterSoundboard + desktop: usr/share/applications/CasterSoundboard.desktop + plugs: + - home + - mount-observe + - network + - network-bind + - opengl + - pulseaudio + - x11 From 32fe1e4016274f2f5e8be8d72e25b94a7505e631 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Tue, 23 May 2017 22:23:31 +0100 Subject: [PATCH 69/77] Add snap install instructions. --- README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6de951f..3429d08 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,16 @@ CasterSoundboard is written in C++ Qt5. ## How to Install -CasterSoundboard is not packaged for any platforms at this time see -Building from Source for installation instructions. +### Snap + +Install CasterSoundboard in seconds on [Ubuntu and other snap supported Linux +distributions](https://snapcraft.io/docs/core/install) with: + + snap install castersoundboard + +Installing a snap is very quick. Snaps are secure. They are isolated with all +of their dependencies. Snaps also auto update when a new version is released. -## Packages ### Arch AUR Thanks to [@j605](https://github.com/j605 "Jagannathan Tiruvallur Eachambadi") for creating a `PKGBUILD` for people on Arch who want to try this software: + [CasterSoundboard-git](https://aur.archlinux.org/packages/castersoundboard-git) From b7cc05b4a75dee711b255544f21acfbe42342a30 Mon Sep 17 00:00:00 2001 From: Albert Westra Date: Tue, 23 May 2017 23:00:07 -0700 Subject: [PATCH 70/77] Add Issue Template and Guidelines Adds a template for the issues tracker to keep things more organized and adds a Contributing Guidelines for Reporting Bug Reports or Requesting Features. We will probably want to expand the Contributor's Guidelines to incude code style and info for beginners. Also probably add a Contributors Code of Conduct in the Future. --- CONTRIBUTING.md | 22 ++++++++++++++++++++++ ISSUE_TEMPLATE.md | 21 +++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 CONTRIBUTING.md create mode 100644 ISSUE_TEMPLATE.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..aa03f30 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,22 @@ +# How to Contribute to CasterSoundboard + +CasterSoundboard is a volunteer-run project, built and maintained by many contributors. We welcome new team members, and value feedback from users using CastrerSoundboard. + +The following is a set of guidelines for contributing to CasterSoundboard, which are hosted in the Jupiter Broadcasting Organization on GitHub. These are just guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. + +### Reporting a Bug Report or Requesting a Feature +We utilize a template to keep our issue tracker organized. Please fill it out and remove areas that are not related to your Bug Report or Feature Request. Also keep these guidelines in mind as well: + +* Search before posing to avoid duplicates +* Please keep the topic of the issue or feature request to **ONE** problem or request. + * This will help our contributors keep the issues tracker organized. +* Please fill out the areas of the template you are using. Delete the parts you are not using. +* Make sure title is short but useful. It should echo the description. + * `Add a "New Data not saved" confirmation` is a good example of a title. +* Tell us how to reproduce the bug in clear, numbered steps. + * If we can't reproduce your bug, we will have to ask more questions. Please answer promptly, otherwise your Bug Report may stall. +* For Feature Requests, Ask yourself these questions before you post: + * What are the advantages to having this Feature? + * How will it benefit CasterSoundboard's work flow? + * What will be the challenges to adding this feature? + * Do you have any mockups or examples from other programs which implement this? diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f3d91b9 --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,21 @@ +[⚠ Please read our [contributors](CONTRIBUTING.md) document before posting] + +#### Description of the Problem or Feature Request + +#### Basic system details + +CasterSoundboard version+commit: +Operating system: +Desktop environment: + +#### Steps to reproduce + +1. +2. +3. + +#### Backtraces or error messages + +``` +[✍ Paste any error messages here between the ``` lines.] +``` From 0e1c25426c802d2d90a3594cc37c754425796d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Szyma=C5=84ski?= Date: Wed, 24 May 2017 21:25:01 +0200 Subject: [PATCH 71/77] Suppress `unused parameter` compiler warnings --- CasterSoundboard/CasterCuePicker.cpp | 1 + CasterSoundboard/CasterLabelColorPicker.cpp | 1 + CasterSoundboard/CasterOSCServerConfigPicker.cpp | 2 +- CasterSoundboard/CasterPlayer.cpp | 4 ++++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CasterSoundboard/CasterCuePicker.cpp b/CasterSoundboard/CasterCuePicker.cpp index 5dd5091..1a8e1d5 100644 --- a/CasterSoundboard/CasterCuePicker.cpp +++ b/CasterSoundboard/CasterCuePicker.cpp @@ -158,6 +158,7 @@ void CasterCuePicker::button_Cancel_Clicked() //=======Protected======= void CasterCuePicker::closeEvent(QCloseEvent *event) { + Q_UNUSED(event); player->stop(); button_Preview->setText("Preview"); } diff --git a/CasterSoundboard/CasterLabelColorPicker.cpp b/CasterSoundboard/CasterLabelColorPicker.cpp index 29d3c15..8623f49 100644 --- a/CasterSoundboard/CasterLabelColorPicker.cpp +++ b/CasterSoundboard/CasterLabelColorPicker.cpp @@ -200,6 +200,7 @@ void CasterLabelColorPicker::set_slider_L_Value(int L_Value) //SLOTS void CasterLabelColorPicker::slider_HSL_valueChanged(int value) { + Q_UNUSED(value); label_H_Value->setText(QString::number(slider_H->value())); label_S_Value->setText(QString::number(slider_S->value()).append("%")); label_L_Value->setText(QString::number(slider_L->value()).append("%")); diff --git a/CasterSoundboard/CasterOSCServerConfigPicker.cpp b/CasterSoundboard/CasterOSCServerConfigPicker.cpp index c5b97e5..db3bc21 100644 --- a/CasterSoundboard/CasterOSCServerConfigPicker.cpp +++ b/CasterSoundboard/CasterOSCServerConfigPicker.cpp @@ -93,7 +93,7 @@ CasterOSCServerConfigPicker::CasterOSCServerConfigPicker(QString _inbound_ipv4, //=======Protected======= void CasterOSCServerConfigPicker::closeEvent(QCloseEvent *event) { - + Q_UNUSED(event); } //======Public Slots====== diff --git a/CasterSoundboard/CasterPlayer.cpp b/CasterSoundboard/CasterPlayer.cpp index a6bed70..440ce78 100644 --- a/CasterSoundboard/CasterPlayer.cpp +++ b/CasterSoundboard/CasterPlayer.cpp @@ -706,6 +706,7 @@ void CasterPlayerWidget::dropEvent(QDropEvent *event) msgBox.setDefaultButton(QMessageBox::Close); msgBox.setModal(true); int ret = msgBox.exec(); + Q_UNUSED(ret); } } } @@ -749,6 +750,7 @@ bool CasterPlayerWidget::openFiles(const QStringList& pathList) /* When user touches wiget it toggles the player state (Play/Pause/Stop) */ void CasterPlayerWidget::mousePressEvent(QMouseEvent *event) { + Q_UNUSED(event); // Toggle play state // Play/Pause //CURRENT PLAY STATE TOGGLE LOGIC @@ -773,12 +775,14 @@ void CasterPlayerWidget::mousePressEvent(QMouseEvent *event) //===========Focus Event=========== void CasterPlayerWidget::mouseMoveEvent(QMouseEvent *event) { + Q_UNUSED(event); this->setFocus(); } //===========Paint Event=========== void CasterPlayerWidget::paintEvent(QPaintEvent *event) { + Q_UNUSED(event); //Make widget render it's own style sheet. QStyleOption opt; opt.init(this); From 20b9701b6003b630c8b646520b28bbf3202a2cb0 Mon Sep 17 00:00:00 2001 From: Stephen J Radachy Date: Sun, 28 May 2017 19:19:09 -0500 Subject: [PATCH 72/77] Improved Mac OS packaging + fixed compiler warnings - Generated Mac OS compatible icon - ```sips -s format icns CasterSoundboard.png --out CasterSoundboard.icns``` - Updated CasterSoundboard.pro - App bundle installs in ~/Applications by default - Use previously generated icon in bundle - Fix "using integer absolute value function 'abs' when argument is of floating point type" - switched to cmath lib and import abs function - Fix "variable 'h' is used uninitialized whenever switch default is taken" - switch default sets h to 0 --- CasterSoundboard/CSS.cpp | 5 ++++- CasterSoundboard/CasterSoundboard.pro | 22 ++++++++++++++++++---- dist/macos/CasterSoundboard.icns | Bin 0 -> 47206 bytes 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 dist/macos/CasterSoundboard.icns diff --git a/CasterSoundboard/CSS.cpp b/CasterSoundboard/CSS.cpp index 99214ae..bbb8252 100644 --- a/CasterSoundboard/CSS.cpp +++ b/CasterSoundboard/CSS.cpp @@ -21,9 +21,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "CSS.h" -#include +#include #include +using std::abs; + QString Generate_CSS(HSL_C hsl_color) { RGB_C rgb_color = RGB_C(0,0,0); @@ -270,6 +272,7 @@ HSL_C::HSL_C(RGB_C rgb_color) h = 60 * ( ( r - g ) / d + 4.0 ); break; default: + h = 0.0; break; } } diff --git a/CasterSoundboard/CasterSoundboard.pro b/CasterSoundboard/CasterSoundboard.pro index 7ea9b22..a79da77 100644 --- a/CasterSoundboard/CasterSoundboard.pro +++ b/CasterSoundboard/CasterSoundboard.pro @@ -4,11 +4,21 @@ # #------------------------------------------------- -isEmpty(PREFIX) { - PREFIX = /usr/local +linux { + isEmpty(PREFIX) { + PREFIX = /usr/local + } + BINDIR = $$PREFIX/bin + DATADIR = $$PREFIX/share +} + +macx { + isEmpty(PREFIX) { + PREFIX = ~ + } + BINDIR = $$PREFIX/Applications + DATADIR = $$PREFIX/Library/Application\ Support/CasterSoundboard } -BINDIR = $$PREFIX/bin -DATADIR = $$PREFIX/share CONFIG += c++11 QT += core gui multimedia network @@ -144,5 +154,9 @@ linux { INSTALLS += appdata desktop pixmap } +macx { + ICON = ../dist/macos/CasterSoundboard.icns +} + target.path = $$BINDIR INSTALLS += target diff --git a/dist/macos/CasterSoundboard.icns b/dist/macos/CasterSoundboard.icns new file mode 100644 index 0000000000000000000000000000000000000000..47b02581b7ece9bd331c171cf811ef7869c4797b GIT binary patch literal 47206 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

uKC>f5lLRzsQEC|^Yr{0T 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%0Dxqpf-65l;3_>T#|-1 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