You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(25) |
Jul
(288) |
Aug
(119) |
Sep
(31) |
Oct
(59) |
Nov
(458) |
Dec
(359) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
(268) |
Feb
(26) |
Mar
(36) |
Apr
(48) |
May
(119) |
Jun
(37) |
Jul
(173) |
Aug
(429) |
Sep
(137) |
Oct
(156) |
Nov
(59) |
Dec
(45) |
| 2011 |
Jan
(398) |
Feb
(257) |
Mar
(49) |
Apr
(5) |
May
(34) |
Jun
(11) |
Jul
(38) |
Aug
(12) |
Sep
(1) |
Oct
(49) |
Nov
(5) |
Dec
(10) |
| 2012 |
Jan
(21) |
Feb
(32) |
Mar
(20) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(173) |
Aug
|
Sep
(25) |
Oct
(6) |
Nov
(44) |
Dec
|
|
From: Tapio V. <aa...@us...> - 2011-01-28 07:34:36
|
Module: editor
Branch: master
Commit: 042b08f5d2dc08300dedf9cf0c6fa084e24a849b
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jan 28 09:33:31 2011 +0200
Handle encoding in plain text lyrics import too.
---
editorapp.cc | 4 ++--
songparser.cc | 13 +------------
textcodecselector.hh | 16 ++++++++++++++++
3 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/editorapp.cc b/editorapp.cc
index 99d2b5d..b9b1b8b 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -15,6 +15,7 @@
#include "notelabel.hh"
#include "notegraphwidget.hh"
#include "songwriter.hh"
+#include "textcodecselector.hh"
namespace {
static const QString PROJECT_SAVE_FILE_EXTENSION = "songproject"; // FIXME: Nice extension here
@@ -427,8 +428,7 @@ void EditorApp::on_actionLyricsFromFile_triggered()
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
- QTextStream in(&file);
- QString text = in.readAll();
+ QString text = TextCodecSelector::readAllAndHandleEncoding(file, this);
if (text != "") noteGraph->setLyrics(text);
}
}
diff --git a/songparser.cc b/songparser.cc
index c917154..2a48c8e 100644
--- a/songparser.cc
+++ b/songparser.cc
@@ -38,18 +38,7 @@ SongParser::SongParser(Song& s):
if (finfo.size() < 10 || finfo.size() > 100000) throw SongParserException("Does not look like a song file (wrong size)", 1, true);
// Determine encoding
- QString data;
- {
- QByteArray ba = file.readAll();
- if (!ba.isEmpty()) {
- data = QString::fromLocal8Bit(ba, ba.size());
- if (data.toLocal8Bit().size() != ba.size()) {
- // Not UTF8 :(
- QTextCodec* codec = TextCodecSelector::codecForContent(ba);
- if (codec) data = codec->toUnicode(ba);
- }
- }
- }
+ QString data = TextCodecSelector::readAllAndHandleEncoding(file);
file.close();
if (smCheck(data)) type = SM;
diff --git a/textcodecselector.hh b/textcodecselector.hh
index 225a332..79cc4bc 100644
--- a/textcodecselector.hh
+++ b/textcodecselector.hh
@@ -25,6 +25,7 @@
#include <QLabel>
#include <QVBoxLayout>
#include <QByteArray>
+#include <QFile>
#include <iostream>
@@ -89,6 +90,21 @@ public:
return 0;
}
+ static QString readAllAndHandleEncoding(QFile &file, QWidget *parent = 0)
+ {
+ QString data = "";
+ QByteArray ba = file.readAll();
+ if (!ba.isEmpty()) {
+ data = QString::fromLocal8Bit(ba, ba.size());
+ if (data.toLocal8Bit().size() != ba.size()) {
+ // Not UTF8 :(
+ QTextCodec* codec = codecForContent(ba, parent);
+ if (codec) data = codec->toUnicode(ba);
+ }
+ }
+ return data;
+ }
+
private:
QListWidget *list;
QList<QByteArray> codecs;
|
|
From: Tapio V. <aa...@us...> - 2011-01-28 06:51:04
|
commit 264251cb0b9b5a0a3f788da59b17037e286a3b43
Merge: 482ae2edbd31bc74ec250d1f835bf46535fa97ca 84b9126ce6094ffddd8180ab7b7d722ab12224fe
Author: Tapio Vierros <tap...@gm...>
Date: Sun Dec 5 13:38:38 2010 +0200
Merge branch 'master' into pass-through
commit 84b9126ce6094ffddd8180ab7b7d722ab12224fe
Author: Tapio Vierros <tap...@gm...>
Date: Mon Nov 29 17:42:28 2010 +0200
Fix getHomeDir() on Windows.
commit 5e67c5ad2a2289febc0b6d912d4d98dc1abd80f4
Merge: 40f61cf01229e7b229ee506017be0ce07089ae0f ca85963e75ce39e4c9a6b605378a08c682016c74
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Nov 23 16:02:23 2010 +0100
Merge remote branch 'origin/joinmenu'
commit 40f61cf01229e7b229ee506017be0ce07089ae0f
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Nov 13 01:46:54 2010 +0100
Fixed drum helper in joinmenu
commit 8dfdfe7db05bf31ceba27718129d57a188278a3d
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Nov 12 16:01:26 2010 +0100
Enhanced drumkit tom detection (now just need nice 3D object
commit d3b1d16e7ab8445d90a6d38f0b41279748514595
Author: Vincent Le Ligeour <yo...@us...>
Date: Thu Nov 11 12:06:52 2010 +0100
Added some kind of tom vs cybal detection (for the moment tom are displayed as tapped notes)
commit 80482f9fe5b816a125c083ad1c7e9eb0b6ffa0e5
Author: Miguel Sánchez de León Peque <msd...@gm...>
Date: Wed Nov 3 18:58:46 2010 +0100
Missing library for supporting MIDI I/O in Fedora packages
commit 8b9ce92bc02d82ed78e72d8815f15edb2c24892a
Author: Miguel Sánchez de León Peque <msd...@gm...>
Date: Wed Nov 3 17:13:41 2010 +0100
Fedora 14 is now supported for packaging
commit fdf19b9feb2024f6e4ef85eeb326925ca268086f
Author: Tapio Vierros <tap...@gm...>
Date: Mon Nov 1 21:38:13 2010 +0200
Add ImageMagick to cross-compilation script and enable building of ss_extract and friends.
commit d9d54490813cb18c70c8d3e261024813fe93b2b6
Author: Tapio Vierros <tap...@gm...>
Date: Mon Nov 1 20:07:36 2010 +0200
Added flashMessage when saving configuration.
commit c11bbf032790a10e2dbf87d514897cfb464cfffb
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 31 21:55:21 2010 +0200
Post-release version increments.
commit 704a0e00c7783a29e9258c417882071286445d75
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 31 17:49:09 2010 +0200
Bump version to 0.6.1
commit 64aa74f044e6ef3a5f0107dd3728cad6affd27fc
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 31 17:48:35 2010 +0200
Make Windows installer songdir shortcut work.
commit 3be1edfb5ba87a355f33319bcd91837da6362e26
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Oct 29 11:12:02 2010 +0200
Removed unneeded include
commit fd2d6df37b703ebb576715c8748c90d31a4c1748
Author: Tapio Vierros <tap...@gm...>
Date: Fri Oct 29 00:38:22 2010 +0300
Add forgotten device_selector.svg
commit 65c4e3a911817f9b76fa2d3b1f0a39cbce54f81c
Author: Tapio Vierros <tap...@gm...>
Date: Thu Oct 28 18:14:38 2010 +0300
Use Cachemap for join and pause menu option texts.
commit 9a007703791d23c4ce5fd74d26671f13424a0a06
Author: Vincent Le Ligeour <yo...@us...>
Date: Thu Oct 28 11:14:54 2010 +0200
Updated TODO
commit dbe148c737e63084e324d9b56e9e529ba75aa84c
Author: Tapio Vierros <tap...@gm...>
Date: Wed Oct 27 20:39:41 2010 +0300
Update ppa script.
commit 477b575fdb0acf645f7b8eed33846f38c42e5f5e
Author: Tapio Vierros <tap...@gm...>
Date: Wed Oct 27 20:27:49 2010 +0300
Use an SVG for the device selection indicator.
commit 3875fafd26248ee7babcca1c110f23191ed778f0
Author: Tapio Vierros <tap...@gm...>
Date: Wed Oct 27 18:42:32 2010 +0300
Dance arrow colors are now consistent with joinmenu icons + a tiny bugfix.
commit 34e38fcb168ef3cda6b7428ad6599d991d42dd5b
Author: Tapio Vierros <tap...@gm...>
Date: Wed Oct 27 18:29:25 2010 +0300
Add forgotten new theme files for joinmenu arrow icons.
commit 084fdf475cb1cab535c24d938a766dd02b7b093b
Author: Tapio Vierros <tap...@gm...>
Date: Wed Oct 27 18:28:24 2010 +0300
Joinmenu icons are now also visible with keyboard instruments.
commit 12622095c6ff10d7d13bbe8feb72fca3a7cec1e8
Author: Tapio Vierros <tap...@gm...>
Date: Wed Oct 27 17:59:10 2010 +0300
Arrow icon hints for instrument & dance joinmenu.
commit 2a243727590c39c5459e04ac74703dc61b5362de
Author: Tapio Vierros <tap...@gm...>
Date: Wed Oct 27 16:48:29 2010 +0300
Start button now closes the joinmenu.
commit 51bbbc002fe776e518d203f19df482e309adf1af
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Oct 27 11:38:46 2010 +0200
Moved include to the right place
commit 34be52043e50ef8696e417373843095550f6beb1
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 26 20:03:10 2010 +0300
Delete win32/setup.nsi
It is very out-dated, hard to maintain, hacky and tied to certain environment.
Use cross-from-debian/makepackage.py for a handy/robust generator.
(Though it might need tiny adjustments for use on Windows.)
commit f4c523796ae391e8078e8e8e145d20c62c3ae318
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 26 20:01:14 2010 +0300
Windows installer improvements/changes.
* Create APPDATA/songs
* Install link to it
* Install link to ConfigureSongDirectory.bat
* Don't append -win32 to installer name.
commit de62cca5f9d2553904d0df164990bdf47fe77e8a
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 26 19:20:40 2010 +0300
Use AudioDevices struct in Audio::Impl rather than direct PA calls.
commit 1251ab7ba963692a859e6529005aa37fbdb01489
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 26 19:20:15 2010 +0300
Convert PortAudio device name to UTF-8.
commit fe36c33058dc282c04cd67ee2b0ae767bbb68669
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 26 18:58:46 2010 +0300
Implement convertToUTF8 with glib instead of glibmm.
commit 94a4a40ff684814c875ef7cc1ee0b6937e48903e
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 26 18:07:58 2010 +0300
Use Cachemap for screen_intro menu option text objects.
commit 482ae2edbd31bc74ec250d1f835bf46535fa97ca
Merge: d69139dbca9fc2f37cf59fb360c70b50539677b5 733404d37bcb21d4c0a8f5a7a472798c1f49f0cd
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 26 15:17:02 2010 +0300
Merge branch 'master' into pass-through
Conflicts:
game/pitch.hh
commit 733404d37bcb21d4c0a8f5a7a472798c1f49f0cd
Author: Miguel Sánchez de León Peque <msd...@gm...>
Date: Mon Oct 25 14:24:50 2010 +0200
Spanish translation updated (100% for 0.6.0)
commit 4193c5a53392d5d6b11ad98a063c6956ca9ecbe7
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Oct 24 23:03:11 2010 +0200
Post-release version bump
commit 75295d6bfb88173b633a9991480ac5e0f037300a
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Oct 24 21:33:30 2010 +0200
Bumping version to 0.6.0.
commit 50646b66f65efb68dceb649c28126fa7fc8571de
Merge: 9714183627f0a4adb4b12342cec769b8bd27bbf7 e2e810e51177d4600b00e5ca6eb08d794c06ac5e
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Oct 24 21:29:16 2010 +0200
Merge branch 'master' of ssh://git.performous.org/gitroot/performous/performous
Removing screenshot spammer.
Conflicts:
game/main.cc
commit e2e810e51177d4600b00e5ca6eb08d794c06ac5e
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 21:34:45 2010 +0300
Screenshot spammer utility.
commit 8af8a27f6ae958232cb2f81ae4a07d7b5a99ddb5
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 20:48:52 2010 +0300
Work-around for Windows glibmm problems.
commit cfef2bba36d8eb4626cc5adb3e185d26ecfc0d9f
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Oct 24 18:54:32 2010 +0200
Fixed score coloring
commit 9714183627f0a4adb4b12342cec769b8bd27bbf7
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Oct 24 18:46:04 2010 +0200
Profiler for main loop
commit 8ef8c73afe9de6d6b7aeb69bf566140f88d52e8f
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 19:16:09 2010 +0300
Tweak joinmenu delays.
commit c9b99dd56478ba79b3b26416aa67125ef52702bb
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Oct 24 17:19:52 2010 +0200
Proper handling of tracks with missing/broken music files.
commit eea7dc9da70636b17d9a2498dd75480cf9cb0f76
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 16:39:22 2010 +0300
Bump cross-compilation dependency library versions.
commit 9f0802dc0fd60fdff884fd139ac50c8f06846d6c
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 16:30:36 2010 +0300
Quick hack to fix per-track volume control.
commit a5f446f934b077cd108fbfc5f20dd4b0e307cee9
Author: Fredrik Klasson <sci...@gm...>
Date: Sun Oct 24 13:16:20 2010 +0200
[ ] Word de-dup. Not bothering to update wiki for this...
commit 6b8ce73a41c079f1c3ff84bbc4ce9fec4940425e
Author: Fredrik Klasson <sci...@gm...>
Date: Sun Oct 24 13:08:58 2010 +0200
[ ] Updating all .po files from sources (soon updating the overview on the wiki)
commit 7d197dec9de7b77a8bbb72b3df9186e433816efd
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 13:07:51 2010 +0300
Handle Windows drive names in backgrounds' cache path construction.
commit 1872e11e05973a097eeafa27a3418bd4a62a6572
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 12:55:34 2010 +0300
Increase suggested latency for Windows compatibility.
commit 43abd6dfe20a8d9d45c09b4fe64ab335cd49729a
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 12:50:45 2010 +0300
Fix a float error.
commit b843f79c379c3b2278442c2b2c1bbc80a9020946
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 10:54:52 2010 +0300
CPack dependencies for Ubuntu 10.04 and 10.10.
commit 33b3ba7f4a751c52554b3288f7cbb6e9e86d498e
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Oct 24 09:35:18 2010 +0200
Fixed git ebuild and added 0.6.0 ebuild
commit 6f714bb9f1df970e56429454c7d38459f1f8e01e
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 24 01:21:33 2010 +0300
Update TODO (regarding config menu).
commit 1446553a71dd9d7a2124abe6f9bcd078b7cf38d3
Author: Tapio Vierros <tap...@gm...>
Date: Sat Oct 23 19:21:45 2010 +0300
Fix a wrong image used with a menu item.
commit e5f84f909950df964ac1a492b018960effe17f91
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Oct 23 18:11:51 2010 +0200
Further audio init/hang tuning.
commit 5be9ea201fd5cac029bec1ed50fd47e57ef24963
Author: Tapio Vierros <tap...@gm...>
Date: Sat Oct 23 19:09:40 2010 +0300
Tweak audiokiller delays to get message in screen_audiodevices.
commit 942715a09afc515d89f86f46c25a1f938fc14fe7
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Oct 23 17:31:02 2010 +0200
Fix engine deinit position in ScreenSing::exit. We really should get rid of enter/exit functions to avoid these bugs.
commit 9bb429e19e8e7f4b5680e90b91aa7ac7083a0b16
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Oct 23 17:29:54 2010 +0200
Remove audiokiller from main.cc. Fix Audio/ScreenManager init order (SM needs to be destroyed before audio).
commit 92d9832b10425a7914d764fe2fd92842ad653864
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Oct 23 17:27:33 2010 +0200
Add hang protection/handling in portaudio.hpp.
commit 18791fa3d379a17161ccaa8f96e4af4e6e29cc3c
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Oct 23 14:51:21 2010 +0200
Update URL in Compiling.txt to point to wiki
commit c7b3fc0f93604f3a3eea98b9219e9298cfe153b2
Author: Tapio Vierros <tap...@gm...>
Date: Sat Oct 23 18:32:05 2010 +0300
Fix neck coloring.
commit 108014f409bd149d310f0e743c3bc6d28c275c4c
Author: Tapio Vierros <tap...@gm...>
Date: Sat Oct 23 17:32:12 2010 +0300
Fix fatal exception from vocal track chooser code.
commit 7c001d300069e27b5d9089fa69fc9e4b91d2e8ff
Author: Fredrik Klasson <sci...@gm...>
Date: Sat Oct 23 16:30:10 2010 +0200
[ ] Updating swedish translation
commit 7064185e88d4894a0a8da74eac0aefabaead4828
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Oct 23 16:17:45 2010 +0200
Fixed finilizing song not done for all vocal tracks
commit 94db4bc7142baf6acf69826fa4154249bd70cc89
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Oct 23 15:52:42 2010 +0200
Revert "Add back dummy screen_configuration.* as a work-around for ppa troubles."
This commit is not needed in new release
This reverts commit b9b699fa39d0a9ab0f999a58c4b4d2850ab42b5a.
commit d98a34e2b9a929f393e7af5af2799ed36d69b86f
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Oct 23 15:49:24 2010 +0200
Updated French translation (do not forget to add *.hh to C/C++ poedit parser)
commit c7ddd6ee7f50aa35060f62aa926c189098e33746
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Oct 23 15:39:04 2010 +0200
Updated French translation
commit d9d9de8ebc6214df6adb57fcbac9c05fa5e4e3a8
Author: Fredrik Klasson <sci...@gm...>
Date: Sat Oct 23 15:31:08 2010 +0200
[ ] Updating swedish translation
commit b6650d3ca8388b8fec2a1149b576d3ccc34a8f6d
Author: Tapio Vierros <tap...@gm...>
Date: Sat Oct 23 16:19:24 2010 +0300
Vocals selector i18n.
commit 877276ab31e389aae6a5daa3e9fe0166ceaadc3e
Merge: 4ae18750bd0677857af24e05b8f2d68a13ded258 cd9862a98aa62cbd6aadfc1e4968253d65ab1b10
Author: Fredrik Klasson <sci...@gm...>
Date: Sat Oct 23 15:10:56 2010 +0200
Merge branch 'master' of git.performous.org:/gitroot/performous/performous
commit 4ae18750bd0677857af24e05b8f2d68a13ded258
Author: Fredrik Klasson <sci...@gm...>
Date: Sat Oct 23 15:10:07 2010 +0200
[ ] These two strings should be gettext'd too.
commit cd9862a98aa62cbd6aadfc1e4968253d65ab1b10
Author: Tapio Vierros <tap...@gm...>
Date: Sat Oct 23 15:55:22 2010 +0300
Update fi translation.
commit 543ecb238f02846da008295304358b739e7b10bc
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Oct 23 14:35:32 2010 +0200
Removed editor from gentoo's ebuild
commit a53fecb2c95e308d150a03835a23284303652809
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Oct 23 14:28:24 2010 +0200
Remove editor (didn't work and used old audio code)
commit 5a9c3644a36bc76b7cdb82402ecbc3dc8bcf10d8
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 19 21:16:18 2010 +0300
Fix a warning.
commit 9a4963b4addf3fbb91b6114daa168182da8e52a4
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 19 21:15:06 2010 +0300
Added a dummy screen_paths.
commit 5d08902686b98595ac4dfebdb7c1b5ea0fceb146
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 19 20:52:04 2010 +0300
Remove unused stuff from background SVGs.
commit 5cdba099862b53b151fbe14d4c332f172c96b18e
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 19 20:41:00 2010 +0300
Add two random backgrounds.
commit 3201b2c79c81fd27fd596b9371160f3a2640c574
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 19 19:26:57 2010 +0300
Uses SVG caching also for non-theme files.
commit e31002373fb2ed366c88bddbfb7c30c025c044e7
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 19 18:52:10 2010 +0300
Drop karmic from ppa script.
commit b9b699fa39d0a9ab0f999a58c4b4d2850ab42b5a
Author: Tapio Vierros <tap...@gm...>
Date: Tue Oct 19 17:31:33 2010 +0300
Add back dummy screen_configuration.* as a work-around for ppa troubles.
commit 052aa59e436fd5e457540432d3c384941a9e2ae3
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Oct 19 11:43:43 2010 +0200
Fixed error in previous commit (thank you gcc warning message)
commit 809fbbc4b1c2d415e66e0a907b8caf6f9feb7655
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Oct 19 08:55:46 2010 +0200
Fixed problem when going from a multiple vocal track to a single one
commit 396041e0c4cbd02b9c15178a57a14f19f92e2577
Author: Tapio Vierros <tap...@gm...>
Date: Mon Oct 18 00:37:13 2010 +0300
Reload current screen when doing fullscreen switch to counter graphics glitches.
commit 909f06a59c14cb7b2f0e8dbc3b059cab0a8e25c2
Author: Tapio Vierros <tap...@gm...>
Date: Sun Oct 17 19:35:38 2010 +0300
Vocal track changer to pause menu.
commit cb93f69bd1510831595c457e656930bb8142e2a0
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Oct 17 12:20:29 2010 +0200
Simplified joystick axis management
commit 690959a0adff79c29d65c62abf94ab888450f709
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Oct 16 01:44:11 2010 +0200
Prepared for vocal track configuration
commit 79b00f49b92cf507ec2b4c4482d40d3f1e61042b
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Oct 16 01:21:32 2010 +0200
Created path to songlist dumping
commit d756b8e1514b656f11b657441551bebb49146da6
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Oct 8 16:01:21 2010 +0200
Enabled multiple midi vocal tracks management
commit 0db9cd04f01640248cfdc70d38debe000da28601
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Oct 8 15:12:26 2010 +0200
Changed vocal tracks visibility, fixed bug crashing when midi song has multiple vocal tracks
commit 19d943858ea45fbb994cdab33a170bee552df1f9
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Oct 8 01:13:12 2010 +0200
Added debug message on broken tracks
commit 9afa8a95af41ac092e0a5add1b1c673a97a6d408
Author: Vincent Le Ligeour <yo...@us...>
Date: Thu Oct 7 15:14:59 2010 +0200
Renamed vocals to vocal when only one track is expected in the near future
commit 826c167fc46761d14cecf606c998692ff2b9d0e5
Author: Vincent Le Ligeour <yo...@us...>
Date: Thu Oct 7 13:57:24 2010 +0200
Enhanced multiple singer midi parsing, Fixed midi parsing bug
commit f45615bca4b4910f54389989136b81afccb4e661
Author: Fredrik Klasson <sci...@gm...>
Date: Thu Oct 7 17:08:25 2010 +0200
[ ] A little more work on the japanese translation.
commit 48698d1b25ad88cb2e3c1b00679654d3c776b3b4
Author: Fredrik Klasson <sci...@gm...>
Date: Thu Oct 7 14:52:24 2010 +0200
[ ] Updating swedish translation.
commit 8d5502adb5d2e7c6f18e663a3021bed3c6c21aae
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Oct 4 21:31:41 2010 +0200
Added GH Warriors of Rock guitar mappind/detection
commit 5823228f74f89984fec6c165ae82e539178b49cb
Author: Tapio Vierros <tap...@gm...>
Date: Mon Sep 27 18:34:08 2010 +0300
Improve FI translation and update "audio/devices" XML description.
commit f86db16a756ada97b8b6d6392d9e244ec34f7875
Author: Tapio Vierros <tap...@gm...>
Date: Mon Sep 27 17:52:45 2010 +0300
Guitar join menu key hints change to alt mapping (Z,X) when in lefty-mode.
commit 93400bba989aa5998e34f089c6145c761cb6fac0
Author: Tapio Vierros <tap...@gm...>
Date: Mon Sep 27 17:47:29 2010 +0300
Add alternative fret mapping for keyboard lefty-mode.
commit 2021565e08cc63cc3e0c7ce50e2d672dd3e51d09
Author: Tapio Vierros <tap...@gm...>
Date: Mon Sep 27 17:36:12 2010 +0300
Revert "Disabled lefty-mode with keyboard guitar."
This reverts commit d00e2e3e0c5ab071f00e9b33220490d0876bda6a.
commit d00e2e3e0c5ab071f00e9b33220490d0876bda6a
Author: Tapio Vierros <tap...@gm...>
Date: Mon Sep 27 17:15:34 2010 +0300
Disabled lefty-mode with keyboard guitar.
commit f23280dd2addd290f2d3cb3c88a8979629ca50e7
Author: Tapio Vierros <tap...@gm...>
Date: Mon Sep 27 17:11:57 2010 +0300
Reverse lefty mode strum direction in menu.
commit 215f10c7bf0cb8b96c71a3d4d57462ca941c2078
Author: Fredrik Klasson <sci...@gm...>
Date: Mon Sep 27 15:18:25 2010 +0200
[ ] updating comment to reflect commiting to tree
commit b1e3694784048423d61e6cdad5e750b236e7bf73
Author: Fredrik Klasson <sci...@gm...>
Date: Mon Sep 27 15:05:28 2010 +0200
[+] Adding jap translations, these are *NOT* ready for shipping with a release. (manually exclude from official releases for now; adding to have a backup in the tree)
commit 0d98883ab8fd426691c2386d49878047f3873b55
Author: Fredrik Klasson <sci...@gm...>
Date: Mon Sep 27 15:00:59 2010 +0200
[+] Translation wiki helper and it's companion lang/TRANSLATORS file.
commit 1eef0c4a3b9e64a5908939705425812c6038a2a6
Author: Fredrik Klasson <sci...@gm...>
Date: Sun Sep 26 23:41:34 2010 +0200
[ ] Swedish translation "self-proofreading" round 1. Translations still at 98%
commit 536fea845586a58f5185f1b73b2ffdaf170cf10e
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Sep 24 21:58:56 2010 +0200
Renamed ColorRIIA class
commit eb9cea7f8d7fa84d1f1369aa0c98531a242a96e8
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Sep 24 21:52:48 2010 +0200
Used OpenGL color RIIA
commit 3af5e403c4b62b0195a7a00ed901715f2aa0e679
Author: Vincent Le Ligeour <yo...@us...>
Date: Fri Sep 24 20:34:22 2010 +0200
Prepared for RAII OpenGL Color
commit aad1ea97b878ac80178e94366abb6510b8e73fb5
Author: Fredrik Klasson <sci...@gm...>
Date: Wed Sep 22 18:59:45 2010 +0200
[ ] On closer examination, suffixing isn't required as -L/--language bypasses the filename based language guessing of xgettext.
commit 7b4af9deb4c51d74fd8c9c8e52fb38277ea34876
Author: Fredrik Klasson <sci...@gm...>
Date: Wed Sep 22 18:56:44 2010 +0200
[ ] Small typo in translation.
commit daf359cec1d9fa778666cf221e8d048f5204f0e4
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Sep 22 05:03:04 2010 +0300
Remove unused outdated files
commit 520741fd6f17b2aa477e9ef971ee502223556fe9
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Sep 19 17:47:12 2010 +0300
Fix mixup with music/vocals filenames.
commit bf2ceb69ee98710a48962ad40cdc63ec968a2968
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Sep 19 08:49:44 2010 +0300
Massive ss_extract cleanup.
commit 15bb93132a6a6ceae152fdb06e78edcda55b5ecc
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Sep 18 05:24:11 2010 +0300
Add a tool for extracting 'Disney Sing It' archive files
commit 3cc848ac8e570e82d1437ab2698c528a7169ec20
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Sep 18 05:23:28 2010 +0300
Add SingStar SuomiHitit name transformation
commit a6bf0d1c9622d072300b98dd851ba6f61d6c74e4
Author: Lasse Karkkainen <tro...@tr...>
Date: Tue Aug 31 19:22:51 2010 +0300
Break parts of ss_extract.cc into separete headers + cleanup.
commit 53bef298d8cd0d5ce8d9ed65c8ace35adcdb59c3
Author: Anders Jenbo <an...@je...>
Date: Tue Sep 21 22:55:12 2010 +0200
Update translations to latest POT to help translators that dosn't set
up xml paring or update (credits retained)
commit bb90e854f0bc85eda40913a8f0850c2f139a1594
Merge: 26e788cceafa69510f0de6e148d0014edd0bae5c e451ba3c7d6a18114699c5c36486bbe14b9c6842
Author: Anders Jenbo <an...@je...>
Date: Tue Sep 21 22:43:34 2010 +0200
Merge branch 'master' of git.performous.org:/gitroot/performous/performous
commit 26e788cceafa69510f0de6e148d0014edd0bae5c
Author: Anders Jenbo <an...@je...>
Date: Tue Sep 21 22:33:36 2010 +0200
Added initial Danish translation
commit fc14d16207943535fbc118e900ed0cb1a16d0892
Author: Anders Jenbo <an...@je...>
Date: Tue Sep 21 22:32:29 2010 +0200
make mktemp command compatible with older versions
commit e451ba3c7d6a18114699c5c36486bbe14b9c6842
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 21 23:20:34 2010 +0300
Pressing any key after 'ready' but before t=0 brings back instrument join menu.
This is to make it easy to recover from accidental 'readiness'.
commit 457e6e91c7a376caa72e0e744967968f89d53a9c
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 21 23:07:44 2010 +0300
Short comment bg in config menu now has adaptive width (was wrong with i18n).
commit c51de888fbae6fba84d969a6237644b937ac476c
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Sep 21 00:41:56 2010 +0200
Started French translation update
commit 477a2663e090bd7b858013b4ccda5b31de6680e6
Author: Fredrik Klasson <sci...@gm...>
Date: Mon Sep 20 22:35:52 2010 +0200
[ ] Basically finishing the swedish trans. 98% done (only 2 strings not translated)
commit b9911fefd2d7c7e9be212ede37bf4d277326eb08
Author: Tapio Vierros <tap...@gm...>
Date: Sun Sep 19 14:11:25 2010 +0300
Add a match string to XBox360 drumkit.
commit 5f3be64b28a46640f17ef885eba9d1c18bea2a9e
Author: Philipp Funk <phi...@wh...>
Date: Sun Sep 19 12:42:39 2010 +0200
Updated German translation
commit 5a59f2b26d5e01a240b03b96d2d9837e878456b4
Author: Fredrik Klasson <sci...@gm...>
Date: Sat Sep 18 13:14:00 2010 +0200
[ ] Small updates to the swedish translations.
commit 89028ade1d573ed7cc1c26316cfa38bb237b0795
Author: Fredrik Klasson <sci...@gm...>
Date: Fri Sep 17 16:58:39 2010 +0200
[ ] Updating swedish translations.
commit b2365e0ed66f1b38d7a924522f18b789f1e88fb7
Author: Tapio Vierros <tap...@gm...>
Date: Fri Sep 17 16:03:25 2010 +0300
Fix a bug preventing XB360 RB guitar tilt & whammy from working.
commit 01e877d755661803d2e09f8b69906e6a984f4522
Author: Tapio Vierros <tap...@gm...>
Date: Fri Sep 17 14:04:39 2010 +0300
Update, refactor & improve the translation guide.
commit 647e50208f75916fcc6c9260cbd3ff9a988be573
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 15:12:22 2010 +0300
Tweak main menu.
commit 5e0dc2a36b157d1a7e5ca7111674ba1a933b985d
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 14:18:37 2010 +0300
Loading bar for loading.
commit fde45fa1e9f65e854b0d588254c3aba86b94575d
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 14:01:24 2010 +0300
Simple fade-in effect for submenu changing in screen_intro.
commit 553e453d3afddb7f8e28f1b84c8ce6ed93a592af
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 13:30:43 2010 +0300
Some animation to main menu selection moving.
commit 2d0fa43d73528f2d27b3c224079df238dc737255
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 13:11:12 2010 +0300
AntiAudioHang Technology (tm) to --audiohelp too.
commit 7b06c9e65743069503928505496771a4ff940a42
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 13:07:01 2010 +0300
Print audio devices to console only when in verbose or --audiohelp.
commit a66d2d477432b8888ec6819f0a5990979d11d7ef
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 12:51:11 2010 +0300
Notify user about audio hang in audio devices screen.
commit 02fca64eb917450f67003681de087709bdef88aa
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 12:23:46 2010 +0300
New configuration menus implemented inside main menu as submenus.
commit 790cfdf98b40d72a3574fcd4ac278e14217857b5
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 10:15:21 2010 +0300
Allow dismissing Dialog with instrument nav buttons.
commit a922772f3863a813cafd60dfcff54271e27cf70f
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 10:00:10 2010 +0300
Audio now has limited time to shut itself down (anti-hang hack).
commit 1fef67e8eb7caf9064bf1170fa6d2456ab960f75
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 09:16:07 2010 +0300
Fix hiscrore game mode IDs.
commit 5e4587b6432bbde4d2d4af20a7d9e912e69e3513
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Sep 16 01:05:04 2010 +0300
Fix compile warning about unused time parameter
commit b769ce164467fabedfa90142f257fc004a57eab2
Author: Tapio Vierros <tap...@gm...>
Date: Thu Sep 16 01:06:07 2010 +0300
Reduce alpha for devices that lack channels for selection type in audio config.
commit db94d0bf19fe8e2735864f42b7c07e4921303cd1
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 22:54:24 2010 +0300
Fix a missing ) in audio devices screen.
commit bf51daaa98e583e6d7318b6262b945226feff4ce
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 22:45:52 2010 +0300
Cross-compilation script fixes/tweaks.
commit 0e880d471a07fa8e3a3bb2c306c30a59c9dae1f6
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 20:53:23 2010 +0300
Use key names for keyboard instruments instead of icons in instrument menu.
commit a19cefecc60b0cfb6c6345cbd8dfd6adb74ad0e7
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 20:04:31 2010 +0300
Attempt to beautify the in-game menu background.
commit e45c1039882152e89ffb90a9489190e23d6e668b
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 19:22:25 2010 +0300
Refactor ppa script and make the version supercede the one in maverick repos.
commit 0ab67d1b0c92dda94d56b4e716ace3342b4fcb96
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 18:03:34 2010 +0300
Fix keyboard drum kit.
commit f5e1ae1dcc7c60a68f13ca560e587a425c212a62
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 08:33:17 2010 +0300
Fix Analyzer::input again.
commit 404d4ee397611574f0a028cecda0be6def004c6f
Merge: 8926b55eb9392b13aae7b5e8761ed33d1c7ab74e 72459cc6678c368a88fe5d2b3375ff4d482fbe6f
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Sep 15 01:08:39 2010 +0300
Merge branch 'master' of ssh://git.performous.org/gitroot/performous/performous
commit 8926b55eb9392b13aae7b5e8761ed33d1c7ab74e
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Sep 15 00:24:07 2010 +0300
Cleanup to pitch.hh (hopefully I don't break it again).
commit 72459cc6678c368a88fe5d2b3375ff4d482fbe6f
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 00:32:56 2010 +0300
Moved man pages to a subdir (cleaner looking docs dir), also updated slightly.
commit cb4a4cf7e14fc075b8118ff42bbf183771c27eab
Author: Tapio Vierros <tap...@gm...>
Date: Wed Sep 15 00:23:35 2010 +0300
Docs updates.
commit 5fa1c585e0e39a95cad37493ec4d187ee5ddc97b
Merge: e0e5bbd1a0a5eca3890041917344e1713bb93e81 c7dcba6fff1da81bb3491789d6e09e604d6331c7
Author: Lasse Karkkainen <tro...@tr...>
Date: Wed Sep 15 00:14:20 2010 +0300
Merge remote branch 'origin/master'
commit c7dcba6fff1da81bb3491789d6e09e604d6331c7
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 23:44:47 2010 +0300
Update fi translation + a couple of small tweaks.
commit 8d64557571abcc1bd8efdf90839e7200c5603dd2
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 21:18:41 2010 +0300
Fixed Analyzer::input so that we can sing again.
commit 58022eae5dd288936c3a46de776de5fc55507508
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 20:14:47 2010 +0300
Drop GL attribute errors to warning class.
commit 95d1976b857f62ff4c56b2509be50777d6138b78
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 20:03:11 2010 +0300
Simple framework for indicating loading progress to user.
* Main loop loading and screen_sing loading converted.
* Give more info than before.
* Currently output looks as lame as before.
commit a8245d29d660ef37a2772f54e46fc1768d7382c2
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 19:26:53 2010 +0300
Add awesomely simple-to-use warning popup dialog system.
* Intro screen and audio device config screen coverted to use this.
* Fixed flawed intro screen missing playback device detection.
commit 36fae85f9941822a95bad9dea1e5f3ef9cbda9e4
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 18:33:59 2010 +0300
Main menu selection highlight bg image now has adaptive width.
commit 334320ad3ccfaa30708328a489cb28c6c22c259f
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 18:11:06 2010 +0300
Allow mic colors to be assigned in any way wanted.
commit afe574b41eba53239270e21e5328deab236745ff
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 16:57:05 2010 +0300
Continued work on the audio device configuration screen.
* Incompatible existing config detection.
* Check/warn about errors after opening the new devices.
* Icon for playback device.
* Possibility to reset back to defaults.
* Refactoring.
commit 0da33e8197d74e541a0d32b0eaa9a653cc5e3187
Author: Tapio Vierros <tap...@gm...>
Date: Tue Sep 14 08:52:51 2010 +0300
Experimental audio device screen for simple & easy config.
* Detects and shows what devices are actually in use.
* Saving immediately loads the new settings into use.
* Quite a few of TODOs/FIXMEs left.
commit ec94c0f808052f95afbe619c8096a7808eb83a12
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Sep 12 14:17:21 2010 +0200
Moved whammy bar to button mapping
commit 172d32b8aca7308f9cafe6e627c410c788906a82
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Sep 12 13:13:15 2010 +0200
Used defined variables for button mapping
commit 0bbcb5457e5d730cb86239428f15a93e610f5fca
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Sep 12 01:54:32 2010 +0300
Cleanup and more comments for pitch.hh/cc.
Added postfix operator++ for sample step_iterator.
commit e0e5bbd1a0a5eca3890041917344e1713bb93e81
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Sep 6 21:18:46 2010 +0300
Minor cleanup of a confusing control structure into a confusing short-circuit structure + a clarifying comment.
commit 8258ae1f182df8fec6a194df2bdd0bff60b03f0b
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Sep 6 16:58:30 2010 +0300
Refactoring/cleanup for song browser draw function.
commit 78844c587320c5085be52dcb1568aa8cb2cdf20c
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Sep 6 04:12:14 2010 +0300
Yet another song browser idea (this time no mockup but actually in use)
commit 6832b541af75d09bcd982172a53b64dd8967a225
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Sep 6 01:54:38 2010 +0200
Added a song browser mockup
commit bcfdf8e043760e12cfb92e92ed08b216c5bc28d6
Author: Fredrik Klasson <sci...@gm...>
Date: Sun Sep 5 15:02:12 2010 +0200
[ ] Idea for now song browser look, now with top-3 highscores included.
commit 228f70316003d7c513e0da60e5fcd9f8d4f321fe
Author: Fredrik Klasson <sci...@gm...>
Date: Sat Sep 4 15:43:54 2010 +0200
[ ] Idea for now song browser look.
commit 347eeeebda1dff04515137892f7b557d83bbcf73
Author: Fredrik Klasson <sci...@gm...>
Date: Fri Sep 3 18:12:07 2010 +0200
[ ] Make xml_gettext.sh use the propper temp dir in the system (see --tmpdir in mktemp(1) for details)
commit ac7bb2d18e1a79f2500e398923e6587ec3ebdc95
Author: Fredrik Klasson <fr...@li...>
Date: Wed Sep 1 17:05:01 2010 +0200
[ ] Updating translations.
commit 393e8f974b619013fd479442776d6d753e4ca12e
Author: Fredrik Klasson <fr...@li...>
Date: Wed Sep 1 16:12:14 2010 +0200
[ ] Updating swedish translation.
commit 6590dcde0b654486c1a08a9d27032e027d956762
Author: Fredrik Klasson <fr...@li...>
Date: Wed Sep 1 16:11:57 2010 +0200
[ ] Allow translation to lanugages with different word order for "Hiscore for %1%".
commit 5621d5528f222c77bad262e4c3569a25ac4ae891
Author: Fredrik Klasson <fr...@li...>
Date: Sun Aug 29 22:02:37 2010 +0200
[ ] More swedish translations.
commit 3b72a0ac1423298b64b872f53d69f972ae216ea5
Author: Fredrik Klasson <fr...@li...>
Date: Sun Aug 29 21:44:49 2010 +0200
[+] Oops, missed adding the script doing the work on XML files.
commit 9a4f2b7d630f0d82b743806e856821ead63e558c
Author: Fredrik Klasson <fr...@li...>
Date: Sun Aug 29 21:41:24 2010 +0200
[ ] Update the swedish translation to show an example of the XML translations.
commit dda8d2b20c17edd548ef5d2ef1a585d83e0ee015
Author: Fredrik Klasson <fr...@li...>
Date: Sun Aug 29 21:38:43 2010 +0200
[+] I18N of XML locale blocks. Now the configuration UI should be translatable
commit 1afcd9b40897df65df0c81b5aac0348d28ada649
Author: Fredrik Klasson <fr...@li...>
Date: Sun Aug 29 12:15:02 2010 +0200
[+] A little swedish translations (needs some love/proof checking)
commit 4502574d87357279f2c84251515a2d35efe021b8
Author: Fredrik Klasson <fr...@li...>
Date: Sat Aug 28 19:09:47 2010 +0200
[ ] Updating comment about logger::teardown. More in sync with reality this way.
commit 6c8ed6fe9d4dcfc4b07ac7d848597a8855a421c7
Author: Fredrik Klasson <fr...@li...>
Date: Fri Aug 27 17:50:04 2010 +0200
[ ] Tear down the logger at exit and prevent a race. This should fix the reported crashes at exit. (needs verififaction from someone that got hit by the race cond.)
commit 99a061f00a58feaa3787837a365f25cf283dcc24
Author: Federico Pietta <f.p...@gm...>
Date: Thu Aug 26 20:26:44 2010 +0200
Update debian testing dependency
commit 2dc3a433538a7007675dda42b5af4d89f209e30f
Author: Federico Pietta <f.p...@gm...>
Date: Thu Aug 26 20:02:38 2010 +0200
Fix debian package name and debian testing recognition
commit 0aaf29f0c240fb4786073e2f759d0596792213e8
Author: Darkmagister <f.p...@gm...>
Date: Thu Aug 26 13:38:40 2010 +0200
Removed kick as Start button
commit 8e7a9b20212d161a10ebaf634103a6fc0251c8cd
Author: Vincent Le Ligeour <yo...@us...>
Date: Wed Aug 25 13:50:33 2010 +0200
Moved a controller error to the new logging feature
commit df13523ce4d3cbf745adbbd6d6fb5b7c4a2cd9ed
Author: Fredrik Klasson <fr...@li...>
Date: Wed Aug 25 13:48:40 2010 +0200
[+] Thread secure the logger. This should ensure clog'ing in two threads will at least print whole lines.
commit 671ce8e2cec41d1427a67617ffa63090422cdfc6
Author: Fredrik Klasson <fr...@li...>
Date: Wed Aug 25 13:26:23 2010 +0200
[ ] Updating log messages with (more) propper subsystem names.
commit 7479a8b266f37643cc02e1f8bb402010edff7c7a
Author: Fredrik Klasson <fr...@li...>
Date: Wed Aug 25 12:27:54 2010 +0200
[ ] Document \n vs std::endl behaviour.
commit 07859fcc20c152d480ffdc4547df6ec29b128b91
Author: Fredrik Klasson <fr...@li...>
Date: Wed Aug 25 12:19:24 2010 +0200
[ ] Updating code using clog. This prevents massive malformed message class warnings. (quick fix)
commit 15d348c8ea07e4d872cc40431fee59aa618d6f96
Author: Fredrik Klasson <fr...@li...>
Date: Wed Aug 25 12:18:12 2010 +0200
[+] Refactoring the logger code, now subsystem and message classification is supported.
commit cb839869341d9b605c1b557db223e7933dc4fdf5
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 24 17:27:46 2010 +0300
Update instrument menu fret hints to new navigation style.
commit 520ded594869d0d98b7f73ffc239ad890897422c
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 24 16:48:41 2010 +0300
Better scaling of joinmenu.
commit 5d50d15d643589232e40603378747f483e1cd4ee
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 24 00:17:16 2010 +0300
Fix bug in joinmenu current difficulty determination during menu setup.
commit 48f88df7c2d81a10eba1de36e21e812ab93f0822
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 24 00:06:35 2010 +0300
Change joinmenu navigation.
* Guitar strum for up/down
* Guitar green/red for left/right
* Drum yellow/blue for up/down
* Drum red/green+kick left/right
* Start for "right"
TODO: Lefty-mode handling
TODO: Update visual hints
commit e189e84596bc7cdc9c1f4081d7624bb9c077022a
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 23 23:40:33 2010 +0300
Default to Medium difficulty on instruments.
Fallback chain: Easy, Hard, Expert, Kids
commit b3e023807b4520195efed7534ba12db048b00858
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 23 23:22:37 2010 +0300
Tweak TODO.
commit 3e012340c4c9837313bda3f665f7fd92ada17c17
Author: Arto Seppä <za...@us...>
Date: Mon Aug 23 22:06:44 2010 +0300
Disabled building tools in OS X bundle script since they won't work anyway atm.
commit 494aaf3cc55ea4dfe1907f316850c628c25932ee
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 23 20:39:08 2010 +0300
Add a batch script to make song folder config easier for Windows users.
Until we have a proper GUI.
commit df246a1771b7c2ad4ebefa9ed8826476c48b3f89
Merge: 40a373163fb1c1498309ca3a9cbc2bd35dfd6527 3f3e4fce05c2e473b197d3db72dfc2fc220bcea0
Author: Fredrik Klasson <fr...@li...>
Date: Mon Aug 23 12:37:19 2010 +0200
Merge branch 'master' of git.performous.org:/gitroot/performous/performous
commit 40a373163fb1c1498309ca3a9cbc2bd35dfd6527
Author: Fredrik Klasson <fr...@li...>
Date: Mon Aug 23 12:36:39 2010 +0200
[+] Doxygen generator configuration. Note: documentation will be generated in docs/doxygen/ in the _source_ directory.
commit 3f3e4fce05c2e473b197d3db72dfc2fc220bcea0
Author: Miguel Sánchez de León Peque <msd...@gm...>
Date: Mon Aug 23 07:43:18 2010 +0200
Fedora 13 supported for packaging
commit 6dc50b4e3ef9105546efaf257c0be23182a3453a
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 21:46:55 2010 +0300
Increase audio config output verbosity.
commit f3befcd79b2a4fee063ca7e2102f7ed0d1f53b6b
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 20:46:37 2010 +0300
Add --audiohelp cmdline parameter.
commit 37d08085682c8fd8d8f5e7dfb68bccf7293ba1e7
Author: Miguel Sánchez de León Peque <msd...@gm...>
Date: Sun Aug 22 15:29:25 2010 +0200
Updated Spanish translation
commit a84373059aec782ee5f7eae0ef1a1d653fa0283a
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 16:00:17 2010 +0300
Alpha-blend options that are not available.
commit 48f4329750ad830b35aa5d32a82d694c8fc65dec
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 22 13:16:13 2010 +0200
Added eof svn ebuild
commit 358040d71f0b6e0a3701198760e374f77cf22ed2
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 22 12:58:52 2010 +0200
Added FoFLC ebuild, fixed performous ebuild
commit a09a0323410e8040b0f864723539da0558c18456
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 22 12:00:16 2010 +0200
Updated French translation
commit 8ba42c6941de410615f3b567d7a4524701818429
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 12:11:55 2010 +0300
OptionList loops around since drums don't have "select backwards" option in join menu.
commit c06c68e9551ec1e5136e1888e18fb41d1e1df4c1
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 03:09:53 2010 +0300
Fix some bugs in joining menu introduced by recent i18n.
commit 70560ac6669b6f5a6f90977e0f4386ec0cc8362c
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 02:57:03 2010 +0300
Use upper case instrument track names, update FI translation.
commit 7af171a7819d20b7bb29b70b6b3cbeef99b25906
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 02:26:00 2010 +0300
Fix some minor style issues from static analysis.
commit b8a3acf0ae6bf1ade8bc6f14ee10e8ca0426a66e
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 01:35:39 2010 +0300
Fix a clang++ warning.
commit 0942d99f84af35b839c95aacd4413e35ce9d9cfe
Author: Tapio Vierros <tap...@gm...>
Date: Sun Aug 22 01:29:50 2010 +0300
Localize game modes and difficulties, update FI.
commit a943d541b0c9d4bcee84f7edb58143b6c65b924b
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 23:42:39 2010 +0300
Update FI translation.
commit efe23cdc5277f549558781817238c9433b37d7a0
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 22:53:16 2010 +0300
Skip note rendering if time is NaN.
commit 48dd20b57f9a0a22cafca59a050e1105e49e1940
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 21:58:45 2010 +0300
Fix graphical artifact in dance hold note tail rendering.
commit 0274a98f338e73b4f07c7f8667f4e0e4d58a5e9b
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 21:24:03 2010 +0300
Catch exceptions in webcam frame capturing.
commit 569d783f50f853cc39e957cf62ed572e1a8f73f0
Merge: 1a7670c2e4c4254e1c0125c1755007be7ccd79cd 21c13ec0aa88e20cfdcc98273caaf3be8b22e913
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 20:56:19 2010 +0300
Merge branch 'joinmenu'
commit 1a7670c2e4c4254e1c0125c1755007be7ccd79cd
Author: Arto Seppä <za...@us...>
Date: Sat Aug 21 20:14:46 2010 +0300
Bumped version number to 0.5.1+
commit 98a815587e6d239c017b3e18912cbd333325921e
Author: Arto Seppä <za...@us...>
Date: Sat Aug 21 19:28:41 2010 +0300
Modified launch script to circumvent a possible crash bug.
commit b4b5685d52925e10e34428c6e5083b15905f1d5e
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 21 18:11:56 2010 +0200
Removed unused pattern from theme files
commit ca85963e75ce39e4c9a6b605378a08c682016c74
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Aug 21 18:11:56 2010 +0200
Removed unused pattern from theme files
commit 1a84a66b5ebb252c287dca179b0cae0fa014830e
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 18:34:27 2010 +0300
Update ppa script for the removal of libs-dir and add maverick uploading.
commit 21c13ec0aa88e20cfdcc98273caaf3be8b22e913
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 17:25:59 2010 +0300
Assure the menu is opened when rejoining from pause menu.
commit ed94641c08123d3725bb34e71eb36ddfbbbe4ab0
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 17:11:40 2010 +0300
Disable webcam video saving as it is not currently very usable.
commit 0a01e08641b058d8aa0cbd2d49dc55280c2d9513
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 17:10:24 2010 +0300
Disable "pitch shifter".
commit 4c7c17239cfaea986b02f2a16c3e85254f028890
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 17:01:30 2010 +0300
Implement "rejoin" pause menu action.
commit ffe7f4a2dd256f29f9ce2d84693a3fda967cfce0
Merge: 5e34cf994d3e2222c8281ce6c5cc66b41677b78a 3e162c65eba7770522970de5a4787139e0bd3d5e
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 16:20:54 2010 +0300
Merge branch 'master' into joinmenu
Conflicts:
game/guitargraph.hh
game/instrumentgraph.hh
game/screen_sing.cc
commit 3e162c65eba7770522970de5a4787139e0bd3d5e
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Aug 21 09:47:59 2010 +0300
Advanced audio sync redux
commit 96004a4e6d352921481a86014aff4d739da1fcda
Author: Arto Seppä <za...@us...>
Date: Fri Aug 20 01:12:03 2010 +0300
Initialized 'out' in struct Params to fix issue with no audio input on OS X.
commit 5e34cf994d3e2222c8281ce6c5cc66b41677b78a
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 17 20:10:58 2010 +0300
Various fixes & tweaks to joinmenu, incl. removing submenus from dance menu.
commit 9b7d0b0910edb18a897393da04a464ad7786855f
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 17 18:09:00 2010 +0300
Select is now GodMode and Start opens menu. Keyboard drum menu also work now.
commit 82275f4baa9c25a48b54bcdeeccfe63806d95125
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 17 00:52:37 2010 +0300
Guitar/drum joinmenu now uses "2d menu" instead of submenus.
Need to squash some bugs still.
commit 1a00a40e755e22b1f8c394957089aff3b7451388
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 17 00:50:29 2010 +0300
Implement new "option_list" ConfigItem type.
Does not yet support selection saving/loading to/from xml.
Also, typedef collides with StringList, so both cannot have constructors ATM.
commit 0924083b33d935cc3b9f1862cc263276138353f1
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Aug 16 22:12:00 2010 +0200
Moved/removed libs/* into game/
commit db8ea4dfbc027014e2ee21beb77bbe13a1eb2163
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 15 16:51:02 2010 +0200
Fixed use of new joystick code
commit a574fa87bd49c6cf2e7d297aef433b6fff82fcf5
Merge: 47fe51cbf64ef3da94b871462e4ff335ef25a04e b8429c74af2d412c10f2bd03074351a0fcfbaa1e
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Aug 15 16:50:29 2010 +0200
Merge branch 'master' into joinmenu
Conflicts:
game/screen_intro.cc
commit 47fe51cbf64ef3da94b871462e4ff335ef25a04e
Merge: d822381614709afffd8483d97a2fd8ac36def4d9 ffd1a78ff9729bd9400e77b99db74fe09acc396d
Author: Tapio Vierros <tap...@gm...>
Date: Thu Aug 12 23:53:10 2010 +0300
Merge branch 'master' into joinmenu
commit d822381614709afffd8483d97a2fd8ac36def4d9
Author: Tapio Vierros <tap...@gm...>
Date: Fri Aug 6 23:21:23 2010 +0300
Join menu size now adapts according to instrument count.
commit 42ea1b7aea14a9b0ebf6a40b95e4548c7e308a35
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 3 17:04:44 2010 +0300
Fix dance menu margins, since it doesn't (yet?) have icons.
commit 96e9c43548d43dbfa8b40361e30643892c33f304
Merge: 13325f573b4661a51c84af000e66d922ded29e4d 931c5874d4ca8fcc230a6f5e476cb1548a6e6723
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 3 14:33:58 2010 +0300
Merge branch 'master' into joinmenu
Conflicts:
game/instrumentgraph.hh
commit 13325f573b4661a51c84af000e66d922ded29e4d
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 3 00:28:01 2010 +0300
Fix instrument cursor rendering and don't crash with more than 5 menu items.
commit 07bd39363234da32765fa7025a3ab11ba701710c
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 3 00:11:58 2010 +0300
Change instrumenthelp image texts.
commit 2941e0d385b2075dbab3c32d05024745f957573a
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 3 00:06:30 2010 +0300
Revert "Document lefty mode in instrument selection screen."
This reverts commit cf97cf631b2b650e57eef46a69462fc17e11698a.
Reason: Lefty-mode is now selected through the menu.
commit 2489bb8dd85212d2f24f251ce49387f66152bead
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 23:55:40 2010 +0300
Instrument menu items are selected with frets.
* Color is shown next to the item for clarity.
* Strum+start alternative navigation disabled.
* Assumes there are max 5 options in the menu.
* Dance uses old navigation.
commit 6d757abe88d70767e5149b93fed23a12caaa5a14
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 20:23:26 2010 +0300
Better horizontal position & size calculation for instrument menu + comment.
commit 97e4b9531588305391ac7ae56e248b23c8250b75
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 18:59:26 2010 +0300
Hide lyrics and instrument "cursor" when menu is open (overlap with menu comments).
commit 78d1f9ff3c756e4bef94b2fbd74f1297132f4743
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 18:48:59 2010 +0300
Calculate instrument menu background size better.
commit 326198c0e6666254578a5c862ddc2e8368dd181f
Author: Tapio Vierros <tap...@gm...>
Date: Sat Jul 17 00:03:52 2010 +0300
Update theme file changes to nsis uninstall.
commit 94319ff930e7384f4776fce3fe233151f848772a
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jul 16 21:32:23 2010 +0300
Hack together a crude background for menus.
commit f7b863c50411638e1463514c3982963614afa829
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jul 16 21:03:06 2010 +0300
Implement song restart.
commit cb849b0288532bc58dcb80effccbf4b744ec6f7d
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jul 16 20:53:35 2010 +0300
Fix instruments not being allowed to open their pause menus.
commit 6bce9101c6b3981354a38d91ffd82d7b759af3fe
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jul 16 20:49:44 2010 +0300
Make setupPauseMenu() static member function used everywhere.
commit c815cde3dff0e33cea4c003f980957f2b43c5fe9
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jul 16 20:28:32 2010 +0300
Draw instrument menus on top of everything.
commit 0988ac618fea42eea1955aeebe3e5600a63341a1
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jul 16 19:37:26 2010 +0300
"Singer" pause menu.
Behaviour:
1) Esc at the very beginning of the song insta-quits
2) Esc during normal gameplay opens the "singer" pause menu
3) Instrument joining during singer pause menu quits it
4) Esc during instrument menu does nothing
commit 6f90b1ace68cda728d2953d4d3240c67f6927699
Merge: cac8b33763a04e8ea354472389628c0c9573b300 22d20084de7f009a363d89af10d2227818e3e20a
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jul 16 18:17:11 2010 +0300
Merge branch 'master' into joinmenu
Conflicts:
game/dancegraph.cc
game/instrumentgraph.hh
game/menu.cc
game/menu.hh
commit cac8b33763a04e8ea354472389628c0c9573b300
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 8 23:26:43 2010 +0300
Tighter instrument menu layout.
commit 59d7017c58374b4c24463401abbc6da5cfe163c0
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 8 21:57:53 2010 +0300
Menu theming stuff.
* Add dedicated theme files for instrument menu.
* Rename menu_* --> mainmenu_*
* Update nsis script.
* Still needs actual theming.
commit fc87927320d7744ad5496702e395668e0512db24
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 8 21:29:01 2010 +0300
Menu now remembers where it was previously when exiting submenu.
commit f6c39cfb3cf6ce95068e97928bf1f4cb588809c3
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 8 20:46:00 2010 +0300
Menu changes.
* Name and comment can optionally be dynamic
* Join menu is now only re-created if necessary (track change)
* Submenu stack changed to pointers to keep root easily synced
commit 33de4c23cb98a3f7f4b50354fd1cd43853a87794
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 8 19:21:29 2010 +0300
Support unlimited submenu levels.
Also fix a mistake in previous navigation commit.
commit a839bba5a254c7fe8f717bd1bd86716dbb12da0e
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 8 18:45:24 2010 +0300
Don't enter into an empty submenu.
commit 95fa380393074aa4049580103b43d3c81ac6a423
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 8 18:40:57 2010 +0300
Modify instrument menu navigation.
commit 06cbf09faa2896fe91bd073c7ee642aa0ffa50c5
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jul 8 17:58:51 2010 +0300
Lefty-mode can now be enabled via the menu.
commit 0ee98bb48cc6b95ab25f2956cb0561a34e62f2a5
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jul 7 22:40:29 2010 +0300
Track/difficulty selection menus based on submenu approach.
commit 9e0a8d2d5107af2484dbdddc5c5d74232d945b7e
Merge: db8e0e4ab54c3fd063d036dbc8e388d0d4b77980 cf96cf8b35d132aeb81f1a6fb4cc7205cdd09076
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jul 7 20:06:25 2010 +0300
Merge branch 'master' into joinmenu
Conflicts:
game/dancegraph.cc
commit db8e0e4ab54c3fd063d036dbc8e388d0d4b77980
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jul 7 20:03:20 2010 +0300
Use getters for Menu's current and options + add some helpers.
commit d709b2079842e00ebd1cd513f6ef363599568125
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jul 7 18:43:05 2010 +0300
Add screen changer menu option type and re-implement screen_intro using it.
This also allows quitting from songs.
commit 47e8b7b1325537952e7ddbd64d6708173d72c46b
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jul 7 18:02:16 2010 +0300
Implement exit from menu root, enables joining game.
commit 0e80e0d08d39bfbede80ac794e4166297b48f745
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jul 7 00:34:52 2010 +0300
Rewrite menu system.
* Much more generic
- No more member function pointers to InstrumentGraph
- Use pointers to ConfigItems instead
* Introduce submenu concept
- Only one additional level for now
* Introduce "set specific value and exit submenu" option type
* "Change value" option type still available (for numeric ConfigItems)
* Theme is outside of Menu structure
* Breaks functionality for now
- Exiting not root menu not implemented
- Proper difficulty/track selection + pause menu population N/A
- Some ConfigItems needs to be added to InstrumentGraph
commit 464fd8db834388590beefac936fc1282de6890f1
Author: Tapio Vierros <tap...@gm...>
Date: Wed Jun 23 21:17:06 2010 +0300
Theming support for instrument menu.
* Uses SVGs from main menu for place holders.
- Not very well suited.
* Background images are disabled.
- Waiting for proper pics to tune them with.
commit 0a988dc055e2e306be14ea5fd031e067af5d7eed
Author: Tapio Vierros <tap...@gm...>
Date: Tue Jun 22 21:50:59 2010 +0300
Work on instrument menu.
* Pause menu.
- Game pauses if any menus are open.
- Currently only resume and quit actions.
* Esc-key invokes global pause (menus for all).
* Game doesn't start if players aren't ready.
* InstrumentMenuOption doesn't have to have getter func.
* Added i18n stuff.
* Still looks butt-ugly.
* Much cleaning required, with heavy duty chemicals.
commit e27a92d4d2efa8c5943a11fd4392ad6ffb2f0344
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jun 21 22:30:36 2010 +0300
Initial implementation of instrument joining menu.
* Currently only two options, track and difficulty.
* Visual output is very crude placeholder.
* Guitars, drums and dancepads supported.
* Theming system is not yet used (although some code exists).
* input::Event now holds also translated NavButton enum.
* Especially keyboard guitar controls need love.
* Much clean-up required and room for guitar/dance unification.
* Doesn't yet wait for players' choices.
New options are added to the menu by giving description and
two pointers to InstrumentGraph member functions:
1. void adjust(int dir) - execute for option change
2. string getValue() - returns the display value
|
|
From: Tapio V. <aa...@us...> - 2011-01-28 06:51:01
|
Module: performous
Branch: opengl2
Commit: 086c18b373b01a42ed5c99700118c9052c02f2b5
Author: Tapio Vierros <tap...@gm...>
Date: Fri Jan 28 08:49:16 2011 +0200
Hot fix dance shader by adding the cruft that's in the other shaders.
---
themes/default/shaders/dancenote.frag | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/themes/default/shaders/dancenote.frag b/themes/default/shaders/dancenote.frag
index cd10132..8be9c5c 100644
--- a/themes/default/shaders/dancenote.frag
+++ b/themes/default/shaders/dancenote.frag
@@ -1,5 +1,8 @@
-uniform sampler2D tex;
+#extension GL_ARB_texture_rectangle : enable
+uniform int texMode;
+uniform sampler2D tex;
+uniform sampler2DRect texRect;
uniform int noteType;
uniform float hitAnim;
uniform float clock;
@@ -17,7 +20,17 @@ void colorGlow(inout vec4 c) {
void main()
{
- vec4 texel = texture2D(tex, gl_TexCoord[0].st).rgba;
+ vec4 texel;
+
+ if (texMode == 1) {
+ texel = texture2D(tex, gl_TexCoord[0].st).rgba;
+ } else if (texMode == 2) {
+ texel = texture2DRect(texRect, gl_TexCoord[0].st).rgba;
+ } else if (texMode == 0) {
+ texel = vec4(1.0, 1.0, 1.0, 1.0);
+ } else {
+ texel = vec4(1.0, 0.0, 1.0, 1.0); // Magenta to highlight
+ }
// Cursor arrows
if (noteType == 0) {
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-28 01:01:55
|
Module: performous
Branch: opengl2
Commit: e8c2622e43b4168611b669f0b42e07e0982dddfd
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jan 28 02:01:43 2011 +0100
Fix 3d separation handling + cleanup.
---
data/schema.xml | 2 +-
game/video_driver.cc | 8 ++++++--
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/data/schema.xml b/data/schema.xml
index ab20020..0bebc88 100644
--- a/data/schema.xml
+++ b/data/schema.xml
@@ -140,7 +140,7 @@ to save the current settings to XML.
</entry>
<entry name="graphic/stereo3dseparation" type="float" value="50">
<ui unit=" %" />
- <limits min="0" max="100" step="1" />
+ <limits min="0" max="100" step="2" />
<locale name="C">
<short>Stereo3D separation</short>
<long>The strenght of the effect. Experiment with different settings for best results.</long>
diff --git a/game/video_driver.cc b/game/video_driver.cc
index caed025..336f179 100644
--- a/game/video_driver.cc
+++ b/game/video_driver.cc
@@ -31,6 +31,10 @@ namespace {
int m_value;
};
+ double getSeparation() {
+ return config["graphic/stereo3d"].b() ? 0.001f * config["graphic/stereo3dseparation"].f() : 0.0;
+ }
+
// stump: under MSVC, near and far are #defined to nothing for compatibility with ancient code, hence the underscores.
const float near_ = 0.1f; // This determines the near clipping distance (must be > 0)
const float far_ = 110.0f; // How far away can things be seen
@@ -102,7 +106,7 @@ bool Window::view(unsigned num) {
glmath::Matrix colorMatrix;
if (stereo) {
if (num > 1) return false;
- double separation = 0.0004f * (num ? -1 : 1) * config["graphic/stereo3dseparation"].f();
+ double separation = (num ? -1 : 1) * getSeparation();
glMatrixMode(GL_PROJECTION);
glTranslatef(separation, 0.0f, 0.0f);
glMatrixMode(GL_MODELVIEW);
@@ -197,7 +201,7 @@ void Window::resize() {
FarTransform::FarTransform() {
float z = far_ - 0.1f; // Very near the far plane but just a bit closer to avoid accidental clipping
float s = z / z0; // Scale the image so that it looks the same size
- s *= 1.04; // A bit more for stereo3d (avoid black borders)
+ s *= 1.0 + 2.0 * getSeparation(); // A bit more for stereo3d (avoid black borders)
glTranslatef(0.0f, 0.0f, -z + z0); // Very near the farplane
glScalef(s, s, s);
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-28 00:12:48
|
Module: performous
Branch: opengl2
Commit: 791ad259be31cc805e25533d9c89ff6c32d8b50f
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jan 28 01:12:35 2011 +0100
B0rked anaglyph red-cyan 3d mode.
---
game/video_driver.cc | 6 +++++-
themes/default/shaders/core.frag | 4 +++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/game/video_driver.cc b/game/video_driver.cc
index 5dae9f0..caed025 100644
--- a/game/video_driver.cc
+++ b/game/video_driver.cc
@@ -99,6 +99,7 @@ bool Window::view(unsigned num) {
double vx = 0.5f * (screen->w - s_width);
double vy = 0.5f * (screen->h - s_height);
double vw = s_width, vh = s_height;
+ glmath::Matrix colorMatrix;
if (stereo) {
if (num > 1) return false;
double separation = 0.0004f * (num ? -1 : 1) * config["graphic/stereo3dseparation"].f();
@@ -107,7 +108,9 @@ bool Window::view(unsigned num) {
glMatrixMode(GL_MODELVIEW);
glTranslatef(-separation, 0.0f, 0.0f);
if (type == 0) {
- // TODO: implement color shaders for red/cyan
+ // FIXME: This is somewhat b0rked because what we really want is eye1 + eye2, not eye2 alpha-blended on top of eye1...
+ if (!num) colorMatrix.cols[0] = Vec4(0.0, 1.0, 1.0);
+ else { colorMatrix.cols[2] = colorMatrix.cols[1] = Vec4(1.0, 0.0, 0.0); colorMatrix(3,3) = 0.5; }
}
if (type == 1) {
double margin = screen->h - s_height;
@@ -117,6 +120,7 @@ bool Window::view(unsigned num) {
} else {
if (num != 0) return false;
}
+ m_shader->setUniformMatrix("colorMatrix", colorMatrix);
glViewport(vx, vy, vw, vh);
return true;
}
diff --git a/themes/default/shaders/core.frag b/themes/default/shaders/core.frag
index 8f78c53..bdf7016 100644
--- a/themes/default/shaders/core.frag
+++ b/themes/default/shaders/core.frag
@@ -1,5 +1,6 @@
#extension GL_ARB_texture_rectangle : enable
+uniform float4x4 colorMatrix;
uniform int texMode;
uniform sampler2D tex;
uniform sampler2DRect texRect;
@@ -18,5 +19,6 @@ void main()
texel = vec4(1.0, 0.0, 1.0, 1.0); // Magenta to highlight
}
- gl_FragColor = texel * gl_Color;
+ gl_FragColor = colorMatrix * gl_Color * texel;
}
+
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-27 23:27:06
|
Module: performous
Branch: opengl2
Commit: ba00f939525b1071cc523f657bf5342157090ddf
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jan 28 00:26:49 2011 +0100
Fix Shader::operator[] and add some error handling to it. Add setUniformMatrix.
---
game/glshader.cc | 10 +++++++---
game/glshader.hh | 9 ++++++++-
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/game/glshader.cc b/game/glshader.cc
index 0fa3c2b..9f35fe2 100644
--- a/game/glshader.cc
+++ b/game/glshader.cc
@@ -118,8 +118,12 @@ void Shader::bind() {
GLint Shader::operator[](const std::string& uniform) {
+ // Try to use a cached value
UniformMap::iterator it = uniforms.find(uniform);
- if (it == uniforms.end())
- it->second = glGetUniformLocation(program, uniform.c_str());
- return it->second;
+ if (it != uniforms.end()) return it->second;
+ // Get the value and cache it
+ GLint var = glGetUniformLocation(program, uniform.c_str());
+ if (var == -1) throw std::logic_error("GLSL shader uniform variable not found: " + uniform);
+ return uniforms[uniform] = var;
}
+
diff --git a/game/glshader.hh b/game/glshader.hh
index 57587e9..121d6a5 100644
--- a/game/glshader.hh
+++ b/game/glshader.hh
@@ -48,6 +48,13 @@ struct Shader: public boost::noncopyable {
Shader& setUniform(const std::string& uniform, float x, float y, float z, float w) {
glUniform4f((*this)[uniform], x, y, z, w); return *this;
}
+ Shader& setUniformMatrix(const std::string& uniform, GLfloat const* m) {
+ glUniformMatrix4fv((*this)[uniform], 1, GL_FALSE, m); return *this;
+ }
+ Shader& setUniformMatrix(const std::string& uniform, GLdouble const* m) {
+ // Note: need to convert into float because glUniformMatrix4dv is NULL on my machine
+ GLfloat arr[16]; std::copy(m, m + 16, arr); return setUniformMatrix(uniform, arr);
+ }
/** Get uniform location. Uses caching internally. */
GLint operator[](const std::string& uniform);
@@ -66,7 +73,7 @@ struct Shader: public boost::noncopyable {
return shader_progs[i];
}
- private:
+private:
GLuint program; ///< shader program object id
int gl_response; ///< save last return state
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-27 23:27:04
|
Module: performous
Branch: opengl2
Commit: 03b2052a915322b20ae0b35ff199c20e890b90b6
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Jan 28 00:25:11 2011 +0100
FBO not used, remove (should be in video_driver now anyway, I guess).
---
game/screen.hh | 1 -
game/screenmanager.cc | 2 +-
2 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/game/screen.hh b/game/screen.hh
index b0c053c..dd3c9ca 100644
--- a/game/screen.hh
+++ b/game/screen.hh
@@ -78,7 +78,6 @@ class ScreenManager: public Singleton <ScreenManager> {
private:
Window& m_window;
- FBO m_fbo;
bool m_finished;
typedef boost::ptr_map<std::string, Screen> screenmap_t;
screenmap_t screens;
diff --git a/game/screenmanager.cc b/game/screenmanager.cc
index 7b3e057..c47b9f9 100644
--- a/game/screenmanager.cc
+++ b/game/screenmanager.cc
@@ -12,7 +12,7 @@
template<> ScreenManager* Singleton<ScreenManager>::ms_Singleton = NULL;
ScreenManager::ScreenManager(Window& _window):
- m_window(_window), m_fbo(), m_finished(false), newScreen(), currentScreen(),
+ m_window(_window), m_finished(false), newScreen(), currentScreen(),
m_timeToFadeIn(), m_timeToFadeOut(), m_timeToShow(), m_message(),
m_messagePopup(0.0, 1.0), m_textMessage(getThemePath("message_text.svg"), config["graphic/text_lod"].f())
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-27 22:00:20
|
Module: performous
Branch: opengl2
Commit: 416c5dc807eec6745dc7cd78bd908ff52a70d3a6
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Jan 27 22:59:56 2011 +0100
RAII GLErrorChecker and better diagnostics.
---
game/glshader.cc | 18 ++++++++----------
game/glutil.hh | 32 +++++++++++++++++++-------------
game/guitargraph.cc | 3 +--
game/main.cc | 4 ++--
game/surface.cc | 10 ++++------
game/video_driver.cc | 5 ++---
6 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/game/glshader.cc b/game/glshader.cc
index 083fca5..0fa3c2b 100644
--- a/game/glshader.cc
+++ b/game/glshader.cc
@@ -70,12 +70,11 @@ void Shader::loadFromFile(const std::string& vert_path, const std::string& frag_
void Shader::compile(const char* source, GLenum type) {
- glutil::GLErrorChecker::reset();
+ glutil::GLErrorChecker ec("Shader::compile");
GLenum new_shader = glCreateShader(type);
- glutil::GLErrorChecker shadererror("Shader::compile - glCreateShader");
-
+ ec.check("glCreateShader");
glShaderSource(new_shader, 1, &source, NULL);
- glutil::GLErrorChecker shadersourceerror("Shader::compile - glShaderSource");
+ ec.check("glShaderSource");
glCompileShader(new_shader);
glGetShaderiv(new_shader, GL_COMPILE_STATUS, &gl_response);
@@ -89,16 +88,15 @@ void Shader::compile(const char* source, GLenum type) {
void Shader::link() {
- glutil::GLErrorChecker::reset();
+ glutil::GLErrorChecker ec("Shader::link");
if (program) throw std::runtime_error("Shader already linked.");
// Create the program id
program = glCreateProgram();
- glutil::GLErrorChecker createprogramerror("Shader::link - glCreateProgram");
-
+ ec.check("glCreateProgram");
// Attach all compiled shaders to it
for (ShaderObjects::const_iterator it = shader_ids.begin(); it != shader_ids.end(); ++it)
glAttachShader(program, *it);
- glutil::GLErrorChecker attachshadererror("Shader::link - glAttachShader");
+ ec.check("glAttachShader");
// Link and check status
glLinkProgram(program);
@@ -107,15 +105,15 @@ void Shader::link() {
dumpInfoLog(program);
throw std::runtime_error("Something went wrong linking the shader program.");
}
- glutil::GLErrorChecker linkerror("Shader::link - glLinkProgram");
+ ec.check("glLinkProgram");
shader_progs[program] = this;
}
void Shader::bind() {
+ glutil::GLErrorChecker ec("Shader::bind");
glUseProgram(program);
- glutil::GLErrorChecker glerror("Shader::bind");
}
diff --git a/game/glutil.hh b/game/glutil.hh
index 781b757..d07c25e 100644
--- a/game/glutil.hh
+++ b/game/glutil.hh
@@ -189,21 +189,27 @@ namespace glutil {
/// Checks for OpenGL error and displays it with given location info
struct GLErrorChecker {
- GLErrorChecker(std::string info = "") {
- GLenum err;
- if ((err = glGetError()) != GL_NO_ERROR) {
- if (!info.empty()) info = " (" + info +")";
- switch(err) {
- case GL_INVALID_ENUM: std::cerr << "OpenGL error: invalid enum" << info << std::endl; break;
- case GL_INVALID_VALUE: std::cerr << "OpenGL error: invalid value" << info << std::endl; break;
- case GL_INVALID_OPERATION: std::cerr << "OpenGL error: invalid operation" << info << std::endl; break;
- case GL_STACK_OVERFLOW: std::cerr << "OpenGL error: stack overflow" << info << std::endl; break;
- case GL_STACK_UNDERFLOW: std::cerr << "OpenGL error: stack underflow" << info << std::endl; break;
- case GL_OUT_OF_MEMORY: std::cerr << "OpenGL error: out of memory" << info << std::endl; break;
- }
- }
+ std::string info;
+ GLErrorChecker(std::string const& info): info(info) { check("precondition"); }
+ ~GLErrorChecker() { check("postcondition"); }
+ void check(std::string const& what = "check()") {
+ GLenum err = glGetError();
+ if (err == GL_NO_ERROR) return;
+ std::clog << "opengl/error: " << msg(err) << " in " << info << " " << what << std::endl;
}
static void reset() { glGetError(); }
+ static std::string msg(GLenum err) {
+ switch(err) {
+ case GL_NO_ERROR: return std::string();
+ case GL_INVALID_ENUM: return "Invalid enum";
+ case GL_INVALID_VALUE: return "Invalid value";
+ case GL_INVALID_OPERATION: return "Invalid operation";
+ case GL_STACK_OVERFLOW: return "Stack overflow";
+ case GL_STACK_UNDERFLOW: return "Stack underflow";
+ case GL_OUT_OF_MEMORY: return "Out of memory";
+ default: return "Unknown error";
+ }
+ }
};
}
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 66024c8..f241a4d 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -788,6 +788,7 @@ namespace {
/// Main drawing function (projection, neck, cursor...)
void GuitarGraph::draw(double time) {
+ // FIXME: There are errors here... glutil::GLErrorChecker ec("GuitarGraph::draw");
Dimensions dimensions(1.0); // FIXME: bogus aspect ratio (is this fixable?)
dimensions.screenBottom().middle(m_cx.get()).fixedWidth(std::min(m_width.get(),0.5));
double offsetX = 0.5 * (dimensions.x1() + dimensions.x2());
@@ -941,8 +942,6 @@ void GuitarGraph::draw(double time) {
}
}
}
- glutil::GLErrorChecker::reset(); // FIXME: There are errors here.
- //glutil::GLErrorChecker glerror("GuitarGraph::draw - objects");
} //< disable depth test
// Draw flames
for (int fret = 0; fret < m_pads; ++fret) { // Loop through the frets
diff --git a/game/main.cc b/game/main.cc
index 45d94ed..a7d7987 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -105,8 +105,6 @@ static void checkEvents_SDL(ScreenManager& sm) {
// This is needed to allow navigation (quiting the song) to function even then
input::SDL::pushEvent(event);
sm.getCurrentScreen()->manageEvent(event);
- // Check for OpenGL errors
- glutil::GLErrorChecker glerror;
}
if (config["graphic/fullscreen"].b() != sm.window().getFullscreen()) {
sm.window().setFullscreen(config["graphic/fullscreen"].b());
@@ -162,6 +160,7 @@ void mainLoop(std::string const& songlist) {
// Main loop
boost::xtime time = now();
unsigned frames = 0;
+ glutil::GLErrorChecker glerror("mainloop");
while (!sm.isFinished()) {
Profiler prof("mainloop");
if( g_take_screenshot ) {
@@ -206,6 +205,7 @@ void mainLoop(std::string const& songlist) {
std::cerr << "ERROR: " << e.what() << std::endl;
sm.flashMessage(std::string("ERROR: ") + e.what());
}
+ glerror.check("frame");
}
} catch (std::exception& e) {
// This should use ScreenManager fatalError, but it cannot
diff --git a/game/surface.cc b/game/surface.cc
index d95e0e9..ec2004e 100644
--- a/game/surface.cc
+++ b/game/surface.cc
@@ -77,6 +77,7 @@ namespace {
}
void Texture::load(unsigned int width, unsigned int height, pix::Format format, unsigned char const* buffer, float ar) {
+ glutil::GLErrorChecker glerror("Texture::load");
m_ar = ar ? ar : double(width) / height;
UseTexture texture(*this);
// When texture area is small, bilinear filter the closest mipmap
@@ -87,12 +88,12 @@ void Texture::load(unsigned int width, unsigned int height, pix::Format format,
glTexParameterf(type(), GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(type(), GL_TEXTURE_WRAP_T, GL_REPEAT);
//glTexParameterf(type(), GL_TEXTURE_MAX_LEVEL, 1);
- glutil::GLErrorChecker glerror1("Texture::load - glTexParameterf");
+ glerror.check("glTexParameterf");
// Anisotropy is potential trouble maker
if (GLEW_EXT_texture_filter_anisotropic)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16.0f);
- glutil::GLErrorChecker glerror2("Texture::load - MAX_ANISOTROPY_EXT");
+ glerror.check("MAX_ANISOTROPY_EXT");
glTexParameteri(type(), GL_GENERATE_MIPMAP, GL_TRUE);
PixFmt const& f = getPixFmt(format);
@@ -112,11 +113,10 @@ void Texture::load(unsigned int width, unsigned int height, pix::Format format,
// Just don't do it in Surface class, thanks. -Tronic
glTexImage2D(type(), 0, GL_RGBA, newWidth, newHeight, 0, f.format, f.type, &outBuf[0]);
}
- // Check for OpenGL errors
- glutil::GLErrorChecker glerror3("Texture::load");
}
void Surface::load(unsigned int width, unsigned int height, pix::Format format, unsigned char const* buffer, float ar) {
+ glutil::GLErrorChecker glerror("Surface::load");
using namespace pix;
// Initialize dimensions
m_width = width; m_height = height;
@@ -126,8 +126,6 @@ void Surface::load(unsigned int width, unsigned int height, pix::Format format,
PixFmt const& f = getPixFmt(format);
glPixelStorei(GL_UNPACK_SWAP_BYTES, f.swap);
glTexImage2D(m_texture.type(), 0, GL_RGBA, width, height, 0, f.format, f.type, buffer);
- // Check for OpenGL errors
- glutil::GLErrorChecker glerror("Surface::load");
}
void Surface::draw() const {
diff --git a/game/video_driver.cc b/game/video_driver.cc
index ecd05d4..5dae9f0 100644
--- a/game/video_driver.cc
+++ b/game/video_driver.cc
@@ -152,6 +152,7 @@ void Window::screenshot() {
void Window::resize() {
+ glutil::GLErrorChecker glerror("Window::resize");
unsigned width = m_fullscreen ? m_fsW : m_windowW;
unsigned height = m_fullscreen ? m_fsH : m_windowH;
{ // Setup GL attributes for context creation
@@ -170,7 +171,7 @@ void Window::resize() {
screen = SDL_SetVideoMode(width, height, 0, SDL_OPENGL | SDL_RESIZABLE | (m_fullscreen ? SDL_FULLSCREEN : 0));
if (!screen) throw std::runtime_error(std::string("SDL_SetVideoMode failed: ") + SDL_GetError());
}
-
+ glerror.check("SetVideoMode");
s_width = screen->w;
s_height = screen->h;
if (!m_fullscreen) {
@@ -187,8 +188,6 @@ void Window::resize() {
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glShadeModel(GL_SMOOTH);
glEnable(GL_BLEND);
- // Check for OpenGL errors
- glutil::GLErrorChecker glerror("Window::resize");
}
FarTransform::FarTransform() {
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 18:34:30
|
Module: editor
Branch: master
Commit: 9f1965959a499a159958450a1e1c308ca364a660
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 20:33:52 2011 +0200
Improve SeekHandle movement.
---
notegraphwidget.cc | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index f5bb331..e897beb 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -210,7 +210,7 @@ void NoteGraphWidget::updateMusicPos(qint64 time, bool smoothing)
m_seekHandle.killTimer(m_seekHandle.moveTimerId);
m_seekHandle.move(x, 0);
if (smoothing)
- m_seekHandle.moveTimerId = m_seekHandle.startTimer(px2s(1) * 1000);
+ m_seekHandle.moveTimerId = m_seekHandle.startTimer(std::ceil(px2s(1) * 1000));
}
void NoteGraphWidget::stopMusic()
@@ -275,7 +275,6 @@ void NoteGraphWidget::selectNextSentenceStart()
}
}
-
void NoteGraphWidget::mousePressEvent(QMouseEvent *event)
{
NoteLabel *child = qobject_cast<NoteLabel*>(childAt(event->pos()));
@@ -483,7 +482,6 @@ void NoteGraphWidget::mouseMoveEvent(QMouseEvent *event)
emit updateNoteInfo(m_selectedNote);
}
-
void NoteGraphWidget::keyPressEvent(QKeyEvent *event)
{
switch (event->key()) {
@@ -602,6 +600,9 @@ QString NoteGraphWidget::dumpLyrics() const
+
+/// SeekHandle
+
SeekHandle::SeekHandle(QWidget *parent)
: QLabel(parent)
{
@@ -643,13 +644,16 @@ void SeekHandle::timerEvent(QTimerEvent*)
QScrollBar *scrollVer = scrollArea->verticalScrollBar();
int y = 0;
if (scrollVer) y = scrollVer->value();
- scrollArea->ensureVisible(x() + scrollArea->width()/3, y, scrollArea->width()/3, 0);
+ scrollArea->ensureVisible(x() + scrollArea->width()/3, y, scrollArea->width()/3, 0);
}
}
}
+
+/// FloatingGap
+
void FloatingGap::addNote(NoteLabel* n)
{
notes.push_back(n);
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-27 17:33:57
|
Module: editor
Branch: master
Commit: 05b842e3d973a099aa871d4b4dfeaa66676a2238
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Jan 27 18:32:00 2011 +0100
A lot faster pitch detection. Does less analysis (e.g. no missing fundamental) but due to a fixed bug it still works better than the old one.
---
pitch.cc | 66 ++++++++++++++++++++++++-------------------------------------
pitch.hh | 1 +
2 files changed, 27 insertions(+), 40 deletions(-)
diff --git a/pitch.cc b/pitch.cc
index cf1a3a8..2c414be 100644
--- a/pitch.cc
+++ b/pitch.cc
@@ -70,6 +70,8 @@ void Combo::combine(Peak const& p) {
bool Combo::match(double freqOther) const { return matchFreq(freq, freqOther); }
+#include <iostream>
+
void Analyzer::calcTones() {
// Precalculated constants
const double freqPerBin = m_rate / FFT_N;
@@ -79,7 +81,6 @@ void Analyzer::calcTones() {
const size_t kMin = std::max(size_t(3), size_t(FFT_MINFREQ / freqPerBin));
const size_t kMax = std::min(FFT_N / 2, size_t(FFT_MAXFREQ / freqPerBin));
m_peaks.resize(kMax);
- std::vector<double> levels;
// Process FFT into peaks
for (size_t k = 1; k < kMax; ++k) {
double level = normCoeff * std::abs(m_fft[k]);
@@ -93,62 +94,47 @@ void Analyzer::calcTones() {
m_peaks[k].freqFFT = k * freqPerBin; // Calculate the simple FFT frequency
m_peaks[k].freq = (k + delta) * freqPerBin; // Calculate the true frequency
m_peaks[k].level = level;
- levels.push_back(level);
}
- std::sort(levels.begin(), levels.end());
- double l80 = levels[levels.size() * 80 / 100]; // l80 > 80 % peaks
- double lmax = levels.back(); // Max level of peaks (note: combos will combine peaks and go higher)
// Filter peaks and combine adjacent peaks pointing at the same frequency into one
typedef std::vector<Combo> Combos;
Combos combos;
for (size_t k = kMin; k < kMax; ++k) {
Peak const& p = m_peaks[k];
- if (p.level < l80) continue;
+ if (p.level < 1e-6) continue;
if (p.freq < FFT_MINFREQ || p.freq > FFT_MAXFREQ) continue;
// Do we need to add a new Combo (rather than using the last one)?
if (combos.empty() || !combos.back().match(p.freq)) combos.push_back(Combo());
combos.back().combine(p);
}
// Convert sum frequencies into averages
- for (Combos::iterator it = combos.begin(), end = combos.end(); it != end; ++it) it->freq /= it->level;
- // Strongest first
+ for (Combos::iterator it = combos.begin(), itend = combos.end(); it != itend; ++it) {
+ it->freq /= it->level;
+ if (it->freq != it->freq) std::cout << it->freq << ", " << it->level << std::endl;
+ }
+ // Only keep a reasonable amount of strongest combos
std::sort(combos.rbegin(), combos.rend(), Combo::cmpByLevel);
- // Keep only a reasonable amount of strongest frequencies.
- //if (combos.size() > 10) combos.resize(10);
+ if (combos.size() > 20) combos.resize(20);
+ // The order may not be strictly correct, fix it...
+ std::sort(combos.begin(), combos.end(), Combo::cmpByFreq);
// Try to combine combos into tones (collections of harmonics)
Tones tones;
- for (Combos::const_iterator it = combos.begin(), end = combos.end(); it != end; ++it) {
- if (it->level < 0.1 * lmax) break;
- Tone bestTone;
- int bestScore = 0;
- for (std::size_t div = 1; div <= Tone::MAXHARM; ++div) {
- // Assume that the *it is the div'th harmonic
- Tone t;
- double freq = it->freq / div; // Assumed fundamental frequency
- int score = 0;
- size_t misses = 0;
- t.level = 0.0;
- for (std::size_t n = 1; n <= Tone::MAXHARM && misses < 3; ++n) {
- double hfreq = n * freq;
- bool miss = true;
- for (Combos::const_iterator harm = combos.begin(), harmend = combos.end(); harm != harmend; ++harm) {
- if (!harm->match(hfreq)) continue; // Skip current combo if it doesn't match
- // Possible matching harmonic found, update t and scoring
- score += (n == 1 ? 3 : 2); // Score for finding a harmonic (extra for fundamental)
- double l = harm->level;
- t.harmonics[n - 1] += l;
- t.level += l;
- t.freq += l * harm->freq / n; // The sum of all harmonics' fundies (weighted by l)
- }
- if (miss) ++misses;
- }
- t.freq /= t.level; // Average instead of sum
- if (score > bestScore) {
- bestScore = score;
- bestTone = t;
+ for (Combos::const_iterator it = combos.begin(), itend = combos.end(); it != itend; ++it) {
+ Tone tone;
+ for (Combos::const_iterator harm = it + 1; harm != itend; ++harm) {
+ double ratio = harm->freq / it->freq;
+ unsigned n = round(ratio);
+ if (n == 0) {
+ continue;
}
+ if (n > Tone::MAXHARM) break; // No more harmonics can be found
+ if (std::abs(ratio - n) > 0.03) continue; // Frequency doesn't match
+ double l = harm->level;
+ tone.harmonics[n - 1] += l;
+ tone.level += l;
+ tone.freq += l * harm->freq / n; // The sum of all harmonics' fundies (weighted by l)
}
- tones.push_back(bestTone);
+ tone.freq /= tone.level; // Average instead of sum
+ tones.push_back(tone);
}
// Clean harmonics misdetected as fundamental
tones.sort();
diff --git a/pitch.hh b/pitch.hh
index d75116e..3b9c858 100644
--- a/pitch.hh
+++ b/pitch.hh
@@ -53,6 +53,7 @@ struct Combo {
Combo(): freq(), level() {}
void combine(Peak const& p);
bool match(double freqOther) const;
+ static bool cmpByFreq(Combo const& a, Combo const& b) { return a.freq < b.freq; }
static bool cmpByLevel(Combo const& a, Combo const& b) { return a.level < b.level; }
};
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-27 17:33:57
|
Module: editor
Branch: master
Commit: 4b63d0672e3e8a5c1b4494052d186f3df1d52a23
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Jan 27 18:32:26 2011 +0100
Fixed progress bar
---
pitchvis.cc | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/pitchvis.cc b/pitchvis.cc
index 4c9378a..071daa5 100644
--- a/pitchvis.cc
+++ b/pitchvis.cc
@@ -33,9 +33,9 @@ void PitchVis::run()
// Initialize FFmpeg decoding
FFmpeg mpeg(fileName.toStdString(), rate);
setWidth(pixScale * mpeg.duration() * rate / step); // Estimation
- curX = 0;
- int i = 0;
- for (std::vector<float> data(step*2); mpeg.audioQueue(&*data.begin(), &*data.end(), i * step * 2); ++i, curX += pixScale) {
+ unsigned x = 0;
+ for (std::vector<float> data(step*2); mpeg.audioQueue(&*data.begin(), &*data.end(), x * step * 2); ++x) {
+ curX = pixScale * x;
// Mix stereo into mono
for (unsigned j = 0; j < step; ++j) data[j] = 0.5 * (data[2*j] + data[2*j + 1]);
// Process
@@ -47,10 +47,10 @@ void PitchVis::run()
}
// Filter the analyzer output data into QPainterPaths.
Analyzer::Moments const& moments = analyzer.getMoments();
- curX = 0;
setWidth(pixScale * moments.size());
- for (Analyzer::Moments::const_iterator it = moments.begin(), itend = moments.end(); it != itend && curX < width(); ++it, ++curX) {
- moreAvailable = true;
+ curX = 0;
+ for (Analyzer::Moments::const_iterator it = moments.begin(), itend = moments.end(); it != itend; ++it) {
+ curX += pixScale;
Moment::Tones const& tones = it->m_tones;
for (Moment::Tones::const_iterator it2 = tones.begin(), it2end = tones.end(); it2 != it2end; ++it2) {
if (it2->prev) continue; // The tone doesn't begin at this moment, skip
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 17:28:12
|
Module: editor Branch: master Commit: 9524b58f01de8eca85c070291cf69d81085395e3 Author: Tapio Vierros <tap...@gm...> Date: Thu Jan 27 18:55:04 2011 +0200 ProgressBar should be initially hidden. --- editorapp.cc | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/editorapp.cc b/editorapp.cc index cb09dd9..99d2b5d 100644 --- a/editorapp.cc +++ b/editorapp.cc @@ -75,6 +75,7 @@ EditorApp::EditorApp(QWidget *parent): QMainWindow(parent), projectFileName(), h statusbarProgress = new QProgressBar(NULL); ui.statusbar->addPermanentWidget(statusbarProgress); + statusbarProgress->hide(); connect(noteGraph, SIGNAL(analyzeProgress(int, int)), this, SLOT(analyzeProgress(int, int))); hasUnsavedChanges = false; |
|
From: Tapio V. <aa...@us...> - 2011-01-27 17:28:12
|
Module: editor
Branch: master
Commit: da2e1f3bba92791e39d09912ca419bf1984962f2
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 19:27:36 2011 +0200
Fix progress bar.
---
pitchvis.cc | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/pitchvis.cc b/pitchvis.cc
index 5100d0f..4c9378a 100644
--- a/pitchvis.cc
+++ b/pitchvis.cc
@@ -34,9 +34,10 @@ void PitchVis::run()
FFmpeg mpeg(fileName.toStdString(), rate);
setWidth(pixScale * mpeg.duration() * rate / step); // Estimation
curX = 0;
- for (std::vector<float> data(step*2); mpeg.audioQueue(&*data.begin(), &*data.end(), curX * step * 2); ++curX) {
+ int i = 0;
+ for (std::vector<float> data(step*2); mpeg.audioQueue(&*data.begin(), &*data.end(), i * step * 2); ++i, curX += pixScale) {
// Mix stereo into mono
- for (unsigned i = 0; i < step; ++i) data[i] = 0.5 * (data[2*i] + data[2*i + 1]);
+ for (unsigned j = 0; j < step; ++j) data[j] = 0.5 * (data[2*j] + data[2*j + 1]);
// Process
analyzer.input(&data[0], &data[step]);
analyzer.process();
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-27 16:38:03
|
Module: editor
Branch: master
Commit: c04ac90c5b36ff67f14f12c16b41e535ec28047b
Author: Lasse Karkkainen <tro...@tr...>
Date: Thu Jan 27 17:36:20 2011 +0100
Keep pitch data in usable and scalable format instead of QPainterPath, do render with proper level, cleanup, do the rendering in PitchVis where it belongs. Timing moved from PitchVis to Analyzer::Moments as it should be.
---
notegraphwidget.cc | 19 +----------------
pitch.cc | 2 +-
pitchvis.cc | 53 +++++++++++++++++++++++++++++++++++++--------------
pitchvis.hh | 31 ++++++-----------------------
4 files changed, 48 insertions(+), 57 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 1287f82..f5bb331 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -30,7 +30,7 @@ NoteGraphWidget::NoteGraphWidget(QWidget *parent)
templabel.close();
setProperty("darkBackground", true);
- setStyleSheet("QLabel[darkBackground=\"true\"] { background: #222; }");
+ setStyleSheet("QLabel[darkBackground=\"true\"] { background: rgb(32, 32, 32); }");
// Initially expanding horizontally to fill the space
QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Fixed);
@@ -145,22 +145,7 @@ void NoteGraphWidget::timerEvent(QTimerEvent*)
}
void NoteGraphWidget::paintEvent(QPaintEvent*) {
- if (m_pitch) {
- QMutexLocker locker(&m_pitch->mutex);
- QPainter painter;
- painter.begin(this);
- painter.setRenderHint(QPainter::Antialiasing);
- QPen pen;
- pen.setColor(Qt::gray);
- pen.setWidth(8);
- pen.setCapStyle(Qt::RoundCap);
- painter.setPen(pen);
- PitchVis::Paths const& paths = m_pitch->getPaths();
- for (PitchVis::Paths::const_iterator it = paths.begin(), itend = paths.end(); it != itend; ++it) {
- painter.drawPath(*it);
- }
- painter.end();
- }
+ if (m_pitch) m_pitch->paint(this);
}
int NoteGraphWidget::getNoteLabelId(NoteLabel* note) const
diff --git a/pitch.cc b/pitch.cc
index 4b81537..cf1a3a8 100644
--- a/pitch.cc
+++ b/pitch.cc
@@ -179,7 +179,7 @@ void Analyzer::temporalMerge(Tones& tones) {
}
}
}
- m_moments.push_back(Moment(0.0));
+ m_moments.push_back(Moment(m_moments.size() * FFT_STEP / m_rate));
m_moments.back().stealTones(tones); // No pointers are invalidated
}
diff --git a/pitchvis.cc b/pitchvis.cc
index 7d5766d..5100d0f 100644
--- a/pitchvis.cc
+++ b/pitchvis.cc
@@ -5,6 +5,7 @@
#include <fstream>
#include <iostream>
#include <stdexcept>
+#include <QPainter>
#include <QProgressDialog>
#include <QLabel>
@@ -23,15 +24,15 @@ void PitchVis::setWidth(std::size_t w) {
void PitchVis::run()
{
try {
- unsigned scale = 8;
- unsigned int rate = 44100;
+ unsigned pixScale = 8;
+ unsigned rate = 44100;
Analyzer analyzer(rate, "");
{
unsigned step = 1024;
- pixelsPerSecond = scale * rate / step;
+ pixelsPerSecond = pixScale * rate / step;
// Initialize FFmpeg decoding
FFmpeg mpeg(fileName.toStdString(), rate);
- setWidth(scale * mpeg.duration() * rate / step); // Estimation
+ setWidth(pixScale * mpeg.duration() * rate / step); // Estimation
curX = 0;
for (std::vector<float> data(step*2); mpeg.audioQueue(&*data.begin(), &*data.end(), curX * step * 2); ++curX) {
// Mix stereo into mono
@@ -46,7 +47,7 @@ void PitchVis::run()
// Filter the analyzer output data into QPainterPaths.
Analyzer::Moments const& moments = analyzer.getMoments();
curX = 0;
- setWidth(scale * moments.size());
+ setWidth(pixScale * moments.size());
for (Analyzer::Moments::const_iterator it = moments.begin(), itend = moments.end(); it != itend && curX < width(); ++it, ++curX) {
moreAvailable = true;
Moment::Tones const& tones = it->m_tones;
@@ -54,17 +55,16 @@ void PitchVis::run()
if (it2->prev) continue; // The tone doesn't begin at this moment, skip
// Copy the linked list into vector for easier access and calculate max level
std::vector<Tone const*> tones;
- double lmax = 0.0;
- for (Tone const* n = &*it2; n; n = n->next) { tones.push_back(n); lmax = std::max(lmax, n->level); }
- if (tones.size() < 8) continue; // Too short or weak tone, ignored
- QPainterPath path;
- path.lineTo(20, 30);
+ for (Tone const* n = &*it2; n; n = n->next) { tones.push_back(n); }
+ if (tones.size() < 5) continue; // Too short or weak tone, ignored
+ PitchPath path;
+ Analyzer::Moments::const_iterator momit = it;
// Render
- for (unsigned i = 0; i < tones.size(); ++i) {
- //float value = 0.006 * (level2dB(tones[i]->level) + 60.0);
- unsigned x = scale * (curX + i);
- unsigned y = freq2px(tones[i]->freq);
- if (i == 0) path.moveTo(x, y); else path.lineTo(x, y);
+ for (unsigned i = 0; i < tones.size(); ++i, ++momit) {
+ float t = momit->m_time;
+ float n = scale.getNote(tones[i]->freq);
+ float level = level2dB(tones[i]->level);
+ path.push_back(PitchFragment(t, n, level));
}
QMutexLocker locker(&mutex);
paths.push_back(path);
@@ -80,6 +80,29 @@ void PitchVis::run()
curX = width();
}
+void PitchVis::paint(QPaintDevice* widget) {
+ QMutexLocker locker(&mutex);
+ QPainter painter;
+ painter.begin(widget);
+ painter.setRenderHint(QPainter::Antialiasing);
+ QPen pen;
+ pen.setWidth(8);
+ pen.setCapStyle(Qt::RoundCap);
+ PitchVis::Paths const& paths = getPaths();
+ for (PitchVis::Paths::const_iterator it = paths.begin(), itend = paths.end(); it != itend; ++it) {
+ int oldx, oldy;
+ for (PitchPath::const_iterator it2 = it->begin(), it2end = it->end(); it2 != it2end; ++it2) {
+ int x = time2px(it2->time);
+ int y = note2px(it2->note);
+ pen.setColor(QColor(32, clamp<int>(127 + it2->level, 32, 255), 32));
+ painter.setPen(pen);
+ if (it2 != it->begin()) painter.drawLine(oldx, oldy, x, y);
+ oldx = x; oldy = y;
+ }
+ }
+ painter.end();
+}
+
unsigned PitchVis::freq2px(double freq) const { return note2px(scale.getNote(freq)); }
/* static */ unsigned PitchVis::note2px(double tone) { return height - static_cast<unsigned>(16.0 * tone); }
/* static */ double PitchVis::px2note(unsigned px) { return (height - px) / 16.0; }
diff --git a/pitchvis.hh b/pitchvis.hh
index 11fe13f..c317da6 100644
--- a/pitchvis.hh
+++ b/pitchvis.hh
@@ -10,34 +10,17 @@
#include <string>
#include <vector>
-struct Pixel {
- float r,g,b,a;
- Pixel(float r, float g, float b, float a = 1.0f): r(r), g(g), b(b), a(a) {}
- Pixel(): r(), g(), b(), a(1.0f) {}
- static unsigned char conv(float c, float a) {
- return static_cast<unsigned char>(0.5 + 255.0 * clamp(a * std::sqrt(c))); // sqrt(c) is gamma correction
- }
- unsigned rgba() const {
- unsigned char red = conv(r, a);
- unsigned char green = conv(g, a);
- unsigned char blue = conv(b, a);
- unsigned char alpha = conv(1.0f, a);
- return alpha << 24 | red << 16 | green << 8 | blue;
- }
- float& operator[](unsigned idx) { return (&r)[idx]; }
- Pixel& operator+=(Pixel const& pix) {
- r += pix.r;
- g += pix.g;
- b += pix.b;
- a += pix.a;
- return *this;
- }
+struct PitchFragment {
+ float time, note, level; // seconds, MIDI note, dB
+ PitchFragment(float time, float note, float level): time(time), note(note), level(level) {}
};
+typedef std::vector<PitchFragment> PitchPath;
+
class PitchVis: public QWidget, public QThread {
public:
static const std::size_t height = 768;
- typedef std::vector<QPainterPath> Paths;
+ typedef std::vector<PitchPath> Paths;
QMutex mutex;
PitchVis(QString const& filename, QWidget *parent = NULL);
@@ -45,7 +28,7 @@ public:
void run(); // Thread runs here
void stop() { cancelled = true; }
-
+ void paint(QPaintDevice* widget);
Paths const& getPaths() { moreAvailable = false; return paths; }
bool newDataAvailable() const { return moreAvailable; }
int getXValue() const { return curX; }
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 13:58:47
|
Module: editor
Branch: master
Commit: ac9fb5f53707edd51e0cebedaa6a271f4e733e5e
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 15:58:07 2011 +0200
Line breaks are now inserted when importing plain text lyrics.
---
editorapp.cc | 10 ++--------
notegraphwidget.cc | 18 ++++++++++++------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/editorapp.cc b/editorapp.cc
index 3d7f839..cb09dd9 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -427,14 +427,8 @@ void EditorApp::on_actionLyricsFromFile_triggered()
return;
QTextStream in(&file);
- QString text = "";
- while (!in.atEnd()) {
- text += in.readLine();
- if (!in.atEnd()) text += " "; // TODO: Some kind of line separator here
- }
-
- if (text != "")
- noteGraph->setLyrics(text);
+ QString text = in.readAll();
+ if (text != "") noteGraph->setLyrics(text);
}
}
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index f5026cd..1287f82 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -77,13 +77,19 @@ void NoteGraphWidget::setLyrics(QString lyrics)
clearNotes();
bool first = true;
while (!ts.atEnd()) {
- QString word;
- ts >> word;
- if (!word.isEmpty()) {
- m_notes.push_back(new NoteLabel(Note(word), this, QPoint(0, n2px(24)), QSize(), !first));
- doOperation(opFromNote(*m_notes.back(), m_notes.size()-1), Operation::NO_EXEC);
- first = false;
+ // We want to loop one line at the time to insert line breaks
+ QString sentence = ts.readLine();
+ QTextStream ts2(&sentence, QIODevice::ReadOnly);
+ while (!ts2.atEnd()) {
+ QString word;
+ ts2 >> word;
+ if (!word.isEmpty()) {
+ m_notes.push_back(new NoteLabel(Note(word), this, QPoint(0, n2px(24)), QSize(), !first));
+ doOperation(opFromNote(*m_notes.back(), m_notes.size()-1), Operation::NO_EXEC);
+ first = false;
+ }
}
+ if (!m_notes.isEmpty()) setLineBreak(m_notes.back(), true);
}
finalizeNewLyrics();
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 13:18:39
|
Module: editor
Branch: master
Commit: 65084c3b531e6a153ab4d9dfa861fd1199a7ff50
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 15:17:38 2011 +0200
Initially NoteGraph contents are now vertically centered.
---
editorapp.cc | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/editorapp.cc b/editorapp.cc
index 1a30b21..3d7f839 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -51,6 +51,8 @@ EditorApp::EditorApp(QWidget *parent): QMainWindow(parent), projectFileName(), h
noteGraph->doOperation(Operation("BLOCK")); // Lock the undo stack
noteGraph->updateNotes();
updateNoteInfo(NULL);
+ // Scroll to middle to show the initial lyrics
+ ui.noteGraphScroller->ensureVisible(0, noteGraph->height()/2, 0, ui.noteGraphScroller->height()/2);
song.reset(new Song);
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 13:10:16
|
Module: editor
Branch: master
Commit: 3b326ae9eaeeb78fde716314c001357eea63a184
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 14:32:06 2011 +0200
NoteGraph and the dummy lyrics now initially fill the window.
---
editorapp.cc | 9 +++------
notegraphwidget.cc | 5 +++++
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/editorapp.cc b/editorapp.cc
index 1b4d4a8..1a30b21 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -43,14 +43,11 @@ EditorApp::EditorApp(QWidget *parent): QMainWindow(parent), projectFileName(), h
// Duplicate/reused signals/slots
connect(ui.cmdMusicFile, SIGNAL(clicked()), this, SLOT(on_actionMusicFile_triggered()));
+ show(); // Needed in order to get real values from width()
+
// We must set the initial lyrics here, because constructor doesn't have
- // signals yet ready, which leads to empty undo stack
+ // signals yet ready, which leads to empty undo stack (and thus b0rked saving)
noteGraph->setLyrics(tr("Please add music file and lyrics text."));
- // We want the initial text to be completely visible on screen
- // FIXME: This should be handled with more robustness and elegance
- Operation moveop("MOVE");
- moveop << (int)noteGraph->noteLabels().size()-1 << 600 - noteGraph->noteLabels().back()->width() << noteGraph->noteLabels().back()->y();
- noteGraph->doOperation(moveop);
noteGraph->doOperation(Operation("BLOCK")); // Lock the undo stack
noteGraph->updateNotes();
updateNoteInfo(NULL);
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 650ef15..f5026cd 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -32,6 +32,11 @@ NoteGraphWidget::NoteGraphWidget(QWidget *parent)
setProperty("darkBackground", true);
setStyleSheet("QLabel[darkBackground=\"true\"] { background: #222; }");
+ // Initially expanding horizontally to fill the space
+ QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ setSizePolicy(sp);
+ setFixedHeight(PitchVis::height);
+
setFocusPolicy(Qt::StrongFocus);
setWhatsThis(tr("Note graph that displays the song notes and allows you to manipulate them."));
|
|
From: Yoda-JM <yo...@us...> - 2011-01-27 13:05:22
|
Module: performous
Branch: opengl2
Commit: 39fdb034507efe7d99dd0229b3810cc9b4a5bd0a
Author: Vincent Le Ligeour <yo...@us...>
Date: Thu Jan 27 14:05:00 2011 +0100
Fixed broken merge
---
game/screen_songs.cc | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index e05d8ab..458d32d 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -397,12 +397,12 @@ void ScreenSongs::drawInstruments(Dimensions const& dim, float alpha) const {
float m = !(typeFilter & 1);
glutil::VertexArray va;
glutil::Color c(Color(m * 1.0f, 1.0f, m * 1.0f, a));
- x = dim.x1()+4*xincr*(dim.x2()-dim.x1());
- va.Color(c).TexCoord(getIconTex(5), 0.0f).Vertex(x, dim.y1());
- va.Color(c).TexCoord(getIconTex(5), 1.0f).Vertex(x, dim.y2());
x = dim.x1()+5*xincr*(dim.x2()-dim.x1());
va.Color(c).TexCoord(getIconTex(6), 0.0f).Vertex(x, dim.y1());
va.Color(c).TexCoord(getIconTex(6), 1.0f).Vertex(x, dim.y2());
+ x = dim.x1()+6*xincr*(dim.x2()-dim.x1());
+ va.Color(c).TexCoord(getIconTex(7), 0.0f).Vertex(x, dim.y1());
+ va.Color(c).TexCoord(getIconTex(7), 1.0f).Vertex(x, dim.y2());
va.Draw();
}
}
|
|
From: Yoda-JM <yo...@us...> - 2011-01-27 13:05:21
|
Module: performous Branch: opengl2 Commit: 01f357b983dc54f106275c2fb77a6a4717bbffd7 Author: Vincent Le Ligeour <yo...@us...> Date: Thu Jan 27 13:58:26 2011 +0100 Merge branch 'opengl2', remote-tracking branch 'origin/opengl2' into opengl2 --- |
|
From: Tapio V. <aa...@us...> - 2011-01-27 10:23:41
|
Module: editor
Branch: master
Commit: 3595ea7bc6e8c946aad0ced466560198f75e33db
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 12:20:08 2011 +0200
Split notes with middle click.
---
notegraphwidget.cc | 13 ++++++++-----
notegraphwidget.hh | 2 +-
2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 46da372..650ef15 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -320,6 +320,10 @@ void NoteGraphWidget::mousePressEvent(QMouseEvent *event)
}
child->createPixmap(child->size());
+ // Middle Click
+ } else if (event->button() == Qt::MiddleButton) {
+ split(child, float(hotSpot.x()) / child->width());
+
// Right Click
} else if (event->button() == Qt::RightButton) {
event->ignore();
@@ -370,19 +374,18 @@ void NoteGraphWidget::mouseDoubleClickEvent(QMouseEvent *event)
editLyric(child);
}
-void NoteGraphWidget::split(NoteLabel *note)
+void NoteGraphWidget::split(NoteLabel *note, float ratio)
{
if (!note) return;
if (m_selectedNote == note)
m_selectedNote = NULL;
- // Cut the text in half
- float relRatio = 0.5; //float(hotSpot.x()) / note->width();
- int cutpos = int(std::ceil(note->lyric().length() * relRatio));
+ // Cut the text
+ int cutpos = int(std::ceil(note->lyric().length() * ratio));
QString firstst = note->lyric().left(cutpos);
QString secondst = note->lyric().right(note->lyric().length() - cutpos);
- int w1 = relRatio * note->width();
+ int w1 = ratio * note->width();
// Create operations for adding the new labels and deleting the old one
int id = getNoteLabelId(note);
diff --git a/notegraphwidget.hh b/notegraphwidget.hh
index efa312e..eedaf14 100644
--- a/notegraphwidget.hh
+++ b/notegraphwidget.hh
@@ -44,7 +44,7 @@ public:
void selectNote(NoteLabel *note);
NoteLabel* selectedNote() const { return m_selectedNote; }
- void split(NoteLabel *note);
+ void split(NoteLabel *note, float ratio = 0.5f);
void del(NoteLabel *note);
void editLyric(NoteLabel *note);
void setFloating(NoteLabel *note, bool state);
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 09:00:57
|
Module: editor
Branch: master
Commit: 6caaae5a19a61c7a2d26f06fa00263e93ee20002
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 11:00:22 2011 +0200
Use PitchVis::height for SeekHandle's height.
---
notegraphwidget.cc | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 807a8b1..46da372 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -606,8 +606,7 @@ QString NoteGraphWidget::dumpLyrics() const
SeekHandle::SeekHandle(QWidget *parent)
: QLabel(parent)
{
- // FIXME: height from notegraph
- QImage image(16, 768, QImage::Format_ARGB32_Premultiplied);
+ QImage image(16, PitchVis::height, QImage::Format_ARGB32_Premultiplied);
image.fill(qRgba(0, 0, 0, 0));
QLinearGradient gradient(0, 0, image.width()-1, 0);
gradient.setColorAt(0.00, QColor(255,255,0,0));
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 08:37:55
|
Module: editor
Branch: master
Commit: 341966517e7e05292648963248e459bcb57c0e28
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 10:37:24 2011 +0200
Create context menu in stack instead of heap.
---
notelabel.cc | 107 ++++++++++++++++++++++++++++-----------------------------
1 files changed, 53 insertions(+), 54 deletions(-)
diff --git a/notelabel.cc b/notelabel.cc
index 93d6ac5..f8254da 100644
--- a/notelabel.cc
+++ b/notelabel.cc
@@ -169,63 +169,62 @@ void NoteLabel::updateNote()
void NoteLabel::showContextMenu(const QPoint &pos)
{
- QAction *actionFloating = new QAction(this);
- actionFloating->setCheckable(true);
- actionFloating->setChecked(isFloating());
-
- QAction *actionLineBreak = new QAction(this);
- actionLineBreak->setCheckable(this);
- actionLineBreak->setChecked(isLineBreak());
-
- QAction *actionNormal = new QAction(this);
- actionNormal->setCheckable(true);
- actionNormal->setChecked(m_note.type == Note::NORMAL);
-
- QAction *actionGolden = new QAction(this);
- actionGolden->setCheckable(true);
- actionGolden->setChecked(m_note.type == Note::GOLDEN);
-
- QAction *actionFreestyle = new QAction(this);
- actionFreestyle->setCheckable(true);
- actionFreestyle->setChecked(m_note.type == Note::FREESTYLE);
-
- QAction *actionSplit = new QAction(this);
- QAction *actionDelete = new QAction(this);
-
- QMenu *menuContext = new QMenu(this);
- QMenu *menuType = new QMenu(menuContext);
-
-
- menuContext->addAction(actionFloating);
- menuContext->addSeparator();
- menuContext->addAction(actionLineBreak);
- menuContext->addSeparator();
- menuContext->addAction(menuType->menuAction());
- menuContext->addAction(actionSplit);
- menuContext->addAction(actionDelete);
- menuType->addAction(actionNormal);
- menuType->addAction(actionGolden);
- menuType->addAction(actionFreestyle);
-
- actionFloating->setText(tr("Floating"));
- actionLineBreak->setText(tr("Line break"));
- actionNormal->setText(tr("Normal"));
- actionGolden->setText(tr("Golden"));
- actionFreestyle->setText(tr("Freestyle"));
- actionSplit->setText(tr("Split"));
- actionDelete->setText(tr("Delete"));
- menuType->setTitle(tr("Type"));
+ QAction actionFloating(NULL);
+ actionFloating.setCheckable(true);
+ actionFloating.setChecked(isFloating());
+
+ QAction actionLineBreak(NULL);
+ actionLineBreak.setCheckable(this);
+ actionLineBreak.setChecked(isLineBreak());
+
+ QAction actionNormal(NULL);
+ actionNormal.setCheckable(true);
+ actionNormal.setChecked(m_note.type == Note::NORMAL);
+
+ QAction actionGolden(NULL);
+ actionGolden.setCheckable(true);
+ actionGolden.setChecked(m_note.type == Note::GOLDEN);
+
+ QAction actionFreestyle(NULL);
+ actionFreestyle.setCheckable(true);
+ actionFreestyle.setChecked(m_note.type == Note::FREESTYLE);
+
+ QAction actionSplit(NULL);
+ QAction actionDelete(NULL);
+
+ QMenu menuContext(NULL);
+ QMenu menuType(NULL);
+
+ menuContext.addAction(&actionFloating);
+ menuContext.addSeparator();
+ menuContext.addAction(&actionLineBreak);
+ menuContext.addSeparator();
+ menuContext.addAction(menuType.menuAction());
+ menuContext.addAction(&actionSplit);
+ menuContext.addAction(&actionDelete);
+ menuType.addAction(&actionNormal);
+ menuType.addAction(&actionGolden);
+ menuType.addAction(&actionFreestyle);
+
+ actionFloating.setText(tr("Floating"));
+ actionLineBreak.setText(tr("Line break"));
+ actionNormal.setText(tr("Normal"));
+ actionGolden.setText(tr("Golden"));
+ actionFreestyle.setText(tr("Freestyle"));
+ actionSplit.setText(tr("Split"));
+ actionDelete.setText(tr("Delete"));
+ menuType.setTitle(tr("Type"));
QPoint globalPos = mapToGlobal(pos);
- QAction *sel = menuContext->exec(globalPos);
+ QAction *sel = menuContext.exec(globalPos);
NoteGraphWidget* ngw = qobject_cast<NoteGraphWidget*>(parent());
if (sel && ngw) {
- if (sel == actionSplit) ngw->split(this);
- else if (sel == actionFloating) ngw->setFloating(this, !isFloating());
- else if (sel == actionLineBreak) ngw->setLineBreak(this, !isLineBreak());
- else if (sel == actionNormal) ngw->setType(this, 0);
- else if (sel == actionGolden) ngw->setType(this, 1);
- else if (sel == actionFreestyle) ngw->setType(this, 2);
- else if (sel == actionDelete) ngw->del(this);
+ if (sel == &actionSplit) ngw->split(this);
+ else if (sel == &actionFloating) ngw->setFloating(this, !isFloating());
+ else if (sel == &actionLineBreak) ngw->setLineBreak(this, !isLineBreak());
+ else if (sel == &actionNormal) ngw->setType(this, 0);
+ else if (sel == &actionGolden) ngw->setType(this, 1);
+ else if (sel == &actionFreestyle) ngw->setType(this, 2);
+ else if (sel == &actionDelete) ngw->del(this);
}
}
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 08:22:20
|
Module: editor
Branch: master
Commit: 69d547adff99eaecf3d4fbff9293f7ff2c845b23
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 10:16:27 2011 +0200
Context menu now fully working with checked markers and whatnot.
---
notelabel.cc | 37 +++++++++++++++++++++++++++++--------
1 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/notelabel.cc b/notelabel.cc
index ea0627e..93d6ac5 100644
--- a/notelabel.cc
+++ b/notelabel.cc
@@ -169,42 +169,63 @@ void NoteLabel::updateNote()
void NoteLabel::showContextMenu(const QPoint &pos)
{
- QAction *actionSplit = new QAction(this);
QAction *actionFloating = new QAction(this);
actionFloating->setCheckable(true);
+ actionFloating->setChecked(isFloating());
+
QAction *actionLineBreak = new QAction(this);
actionLineBreak->setCheckable(this);
+ actionLineBreak->setChecked(isLineBreak());
+
QAction *actionNormal = new QAction(this);
+ actionNormal->setCheckable(true);
+ actionNormal->setChecked(m_note.type == Note::NORMAL);
+
QAction *actionGolden = new QAction(this);
+ actionGolden->setCheckable(true);
+ actionGolden->setChecked(m_note.type == Note::GOLDEN);
+
QAction *actionFreestyle = new QAction(this);
+ actionFreestyle->setCheckable(true);
+ actionFreestyle->setChecked(m_note.type == Note::FREESTYLE);
+
+ QAction *actionSplit = new QAction(this);
QAction *actionDelete = new QAction(this);
QMenu *menuContext = new QMenu(this);
QMenu *menuType = new QMenu(menuContext);
- menuContext->addAction(actionSplit);
- menuContext->addSeparator();
+
menuContext->addAction(actionFloating);
+ menuContext->addSeparator();
menuContext->addAction(actionLineBreak);
- menuContext->addAction(menuType->menuAction());
menuContext->addSeparator();
+ menuContext->addAction(menuType->menuAction());
+ menuContext->addAction(actionSplit);
menuContext->addAction(actionDelete);
menuType->addAction(actionNormal);
menuType->addAction(actionGolden);
menuType->addAction(actionFreestyle);
- actionSplit->setText(tr("Split"));
actionFloating->setText(tr("Floating"));
actionLineBreak->setText(tr("Line break"));
actionNormal->setText(tr("Normal"));
actionGolden->setText(tr("Golden"));
actionFreestyle->setText(tr("Freestyle"));
+ actionSplit->setText(tr("Split"));
actionDelete->setText(tr("Delete"));
menuType->setTitle(tr("Type"));
QPoint globalPos = mapToGlobal(pos);
- QAction *selectedItem = menuContext->exec(globalPos);
- if (selectedItem) {
- std::cout<< selectedItem->text().toStdString();
+ QAction *sel = menuContext->exec(globalPos);
+ NoteGraphWidget* ngw = qobject_cast<NoteGraphWidget*>(parent());
+ if (sel && ngw) {
+ if (sel == actionSplit) ngw->split(this);
+ else if (sel == actionFloating) ngw->setFloating(this, !isFloating());
+ else if (sel == actionLineBreak) ngw->setLineBreak(this, !isLineBreak());
+ else if (sel == actionNormal) ngw->setType(this, 0);
+ else if (sel == actionGolden) ngw->setType(this, 1);
+ else if (sel == actionFreestyle) ngw->setType(this, 2);
+ else if (sel == actionDelete) ngw->del(this);
}
}
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 08:22:20
|
Module: editor
Branch: master
Commit: 7f145f866337af4d5424c2a4b5f197adc9339910
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 10:06:45 2011 +0200
Note manipulation operations are now created in NoteGraphWidget.
---
editorapp.cc | 21 +++------------------
notegraphwidget.cc | 27 +++++++++++++++++++++++++++
notegraphwidget.hh | 3 +++
3 files changed, 33 insertions(+), 18 deletions(-)
diff --git a/editorapp.cc b/editorapp.cc
index a017c6b..1b4d4a8 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -565,34 +565,19 @@ void EditorApp::on_txtYear_editingFinished() { updateSongMeta(); }
void EditorApp::on_cmbNoteType_currentIndexChanged(int index)
{
- if (noteGraph->selectedNote() && noteGraph->selectedNote()->note().getTypeInt() != index) {
- noteGraph->selectedNote()->setType(index);
- Operation op("TYPE");
- op << noteGraph->getNoteLabelId(noteGraph->selectedNote()) << index;
- operationDone(op);
- }
+ if (noteGraph) noteGraph->setType(noteGraph->selectedNote(), index);
}
void EditorApp::on_chkFloating_stateChanged(int state)
{
bool floating = (state != 0);
- if (noteGraph->selectedNote() && noteGraph->selectedNote()->isFloating() != floating) {
- noteGraph->selectedNote()->setFloating(floating);
- Operation op("FLOATING");
- op << noteGraph->getNoteLabelId(noteGraph->selectedNote()) << floating;
- operationDone(op);
- }
+ if (noteGraph) noteGraph->setFloating(noteGraph->selectedNote(), floating);
}
void EditorApp::on_chkLineBreak_stateChanged(int state)
{
bool linebreak = (state != 0);
- if (noteGraph->selectedNote() && noteGraph->selectedNote()->isLineBreak() != linebreak) {
- noteGraph->selectedNote()->setLineBreak(linebreak);
- Operation op("LINEBREAK");
- op << noteGraph->getNoteLabelId(noteGraph->selectedNote()) << linebreak;
- operationDone(op);
- }
+ if (noteGraph) noteGraph->setLineBreak(noteGraph->selectedNote(), linebreak);
}
void EditorApp::closeEvent(QCloseEvent *event)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 21942d9..807a8b1 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -406,6 +406,33 @@ void NoteGraphWidget::del(NoteLabel *note)
doOperation(op);
}
+void NoteGraphWidget::setType(NoteLabel *note, int index)
+{
+ if (note && note->note().getTypeInt() != index) {
+ Operation op("TYPE");
+ op << getNoteLabelId(note) << index;
+ doOperation(op);
+ }
+}
+
+void NoteGraphWidget::setFloating(NoteLabel *note, bool state)
+{
+ if (note && note->isFloating() != state) {
+ Operation op("FLOATING");
+ op << getNoteLabelId(note) << state;
+ doOperation(op);
+ }
+}
+
+void NoteGraphWidget::setLineBreak(NoteLabel *note, bool state)
+{
+ if (note && note->isLineBreak() != state) {
+ Operation op("LINEBREAK");
+ op << getNoteLabelId(note) << state;
+ doOperation(op);
+ }
+}
+
void NoteGraphWidget::editLyric(NoteLabel *note) {
if (!note) return;
diff --git a/notegraphwidget.hh b/notegraphwidget.hh
index 1ff7b7e..efa312e 100644
--- a/notegraphwidget.hh
+++ b/notegraphwidget.hh
@@ -47,6 +47,9 @@ public:
void split(NoteLabel *note);
void del(NoteLabel *note);
void editLyric(NoteLabel *note);
+ void setFloating(NoteLabel *note, bool state);
+ void setLineBreak(NoteLabel *note, bool state);
+ void setType(NoteLabel *note, int newtype);
int getNoteLabelId(NoteLabel* note) const;
NoteLabels& noteLabels() { return m_notes; }
|
|
From: Tapio V. <aa...@us...> - 2011-01-27 08:22:20
|
Module: editor
Branch: master
Commit: 28db9a1c38f7a3c9696c98dcd94aa01780078a74
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 10:20:51 2011 +0200
Add the bits needed for translations.
---
CMakeLists.txt | 6 +++++-
main.cc | 6 ++++++
2 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 15c8a49..f675775 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -47,8 +47,10 @@ file(GLOB SOURCE_FILES "*.cc")
file(GLOB HEADER_FILES "*.hh")
file(GLOB RESOURCE_FILES "*.qrc")
file(GLOB UI_FILES "*.ui")
+file(GLOB LANG_FILES "lang/*.ts")
QT4_ADD_RESOURCES(RESOURCE_SOURCES ${RESOURCE_FILES})
+QT4_ADD_TRANSLATION(TRANSLATIONS ${LANG_FILES})
QT4_WRAP_UI(UI_SOURCES ${UI_FILES} )
QT4_WRAP_CPP(MOC_SOURCES ${MOC_HEADER_FILES})
@@ -58,5 +60,7 @@ configure_file("${CMAKE_SOURCE_DIR}/config.cmake.hh" "${CMAKE_BINARY_DIR}/config
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_SOURCE_DIR})
-add_executable(editor ${SOURCE_FILES} ${MOC_SOURCES} ${RESOURCE_SOURCES} ${UI_SOURCES})
+
+add_executable(editor ${SOURCE_FILES} ${MOC_SOURCES} ${RESOURCE_SOURCES} ${UI_SOURCES} ${TRANSLATIONS})
target_link_libraries(editor ${LIBS})
+
diff --git a/main.cc b/main.cc
index 43438b8..360938d 100644
--- a/main.cc
+++ b/main.cc
@@ -1,4 +1,5 @@
#include <QApplication>
+#include <QTranslator>
#include "config.hh"
#include "editorapp.hh"
@@ -12,6 +13,11 @@ int main(int argc, char *argv[])
app.setOrganizationName("Performous Team");
app.setOrganizationDomain("performous.org");
+ QString locale = QLocale::system().name();
+ QTranslator translator;
+ translator.load(locale);
+ app.installTranslator(&translator);
+
EditorApp window;
window.show();
|