diff --git a/.gitignore b/.gitignore
index b73fcf97..01c68b74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,3 +52,5 @@ AndroidRemote.dll.mdb
/ClientServerLib/AndroidRemote/bin/AndroidRemote.dll
/ClientServerLib/ClientTest/bin/Debug/Newtonsoft.Json.dll
*.apk
+Installer/VocaluxeSetup_0.3.0Beta.exe
+Output/Vocaluxe_x64.exe
diff --git a/GstreamerHelper/GstreamerHelper.vcxproj b/GstreamerHelper/GstreamerHelper.vcxproj
index 3f43af5b..81d50d0e 100644
--- a/GstreamerHelper/GstreamerHelper.vcxproj
+++ b/GstreamerHelper/GstreamerHelper.vcxproj
@@ -9,6 +9,14 @@
DebugWinx64
+
+ InstallerWin
+ Win32
+
+
+ InstallerWin
+ x64
+ ReleaseWinWin32
@@ -43,6 +51,13 @@
trueUnicode
+
+ DynamicLibrary
+ false
+ v110_xp
+ true
+ Unicode
+ DynamicLibraryfalse
@@ -50,6 +65,13 @@
trueUnicode
+
+ DynamicLibrary
+ false
+ v110_xp
+ true
+ Unicode
+
@@ -62,9 +84,15 @@
+
+
+
+
+
+
@@ -90,6 +118,13 @@
$(MSBuildProjectDirectory)\x86\lib;$(LibraryPath)obj\$(Configuration).$(Platform)\
+
+ false
+ bin\$(Configuration).$(Platform)\
+ $(MSBuildProjectDirectory)\x86\lib\glib-2.0\include;$(MSBuildProjectDirectory)\x86\include\gstreamer-1.0;$(MSBuildProjectDirectory)\x86\include\glib-2.0;$(MSBuildProjectDirectory)\x86\include;$(IncludePath)
+ $(MSBuildProjectDirectory)\x86\lib;$(LibraryPath)
+ obj\$(Configuration).$(Platform)\
+ falsebin\$(Configuration).$(Platform)\
@@ -97,6 +132,13 @@
$(MSBuildProjectDirectory)\x64\lib;$(LibraryPath)obj\$(Configuration).$(Platform)\
+
+ false
+ bin\$(Configuration).$(Platform)\
+ $(MSBuildProjectDirectory)\x64\lib\glib-2.0\include;$(MSBuildProjectDirectory)\x64\include\gstreamer-1.0;$(MSBuildProjectDirectory)\x64\include\glib-2.0;$(MSBuildProjectDirectory)\x64\include;$(IncludePath)
+ $(MSBuildProjectDirectory)\x64\lib;$(LibraryPath)
+ obj\$(Configuration).$(Platform)\
+ ..\Output\x86
@@ -168,6 +210,31 @@
Copying binary
+
+
+ Level3
+ Use
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;GSTREAMERHELPER_EXPORTS;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ false
+ true
+ true
+ gstreamer-1.0.lib;gstcontroller-1.0.lib;gobject-2.0.lib;glib-2.0.lib;gstapp-1.0.lib;%(AdditionalDependencies)
+ false
+
+
+ xcopy "$(OutDir)*.dll" "$(SolutionDir)Output\x86\gstreamer\" /I /Y
+
+
+ Copying binary
+
+ Level3
@@ -191,6 +258,29 @@
xcopy "$(OutDir)*.dll" "$(SolutionDir)Output\x64\gstreamer\" /I /Y
+
+
+ Level3
+ Use
+ Full
+ true
+ true
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;GSTREAMERHELPER_EXPORTS;%(PreprocessorDefinitions)
+ true
+ true
+ Speed
+
+
+ Windows
+ false
+ true
+ true
+ gstreamer-1.0.lib;gstcontroller-1.0.lib;gobject-2.0.lib;glib-2.0.lib;gstapp-1.0.lib;%(AdditionalDependencies)
+
+
+ xcopy "$(OutDir)*.dll" "$(SolutionDir)Output\x64\gstreamer\" /I /Y
+
+
@@ -209,11 +299,17 @@
false
+ falsefalse
+ false
+
+
+
+
@@ -223,11 +319,13 @@
CreateCreateCreate
+ CreateCreate
+ Create
-
\ No newline at end of file
+
diff --git a/Installer/Graphics/banner.jpg b/Installer/Graphics/banner.jpg
new file mode 100644
index 00000000..32f65992
Binary files /dev/null and b/Installer/Graphics/banner.jpg differ
diff --git a/Installer/Graphics/dialog.jpg b/Installer/Graphics/dialog.jpg
new file mode 100644
index 00000000..8663e39b
Binary files /dev/null and b/Installer/Graphics/dialog.jpg differ
diff --git a/Installer/License.rtf b/Installer/License.rtf
new file mode 100644
index 00000000..56bc4b51
--- /dev/null
+++ b/Installer/License.rtf
@@ -0,0 +1,879 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1031\deflangfe1031\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}
+{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}
+{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}
+{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}
+{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \f31506\fs22\lang1031\langfe1033\langfenp1033 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025
+\ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{
+\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext15 \sqformat \spriority1 \styrsid15035535
+No Spacing;}}{\*\rsidtbl \rsid8019918\rsid9454469\rsid15035535\rsid15863478}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Florian K\'fcpper}
+{\operator Florian K\'fcpper}{\creatim\yr2013\mo8\dy30\hr17\min37}{\revtim\yr2013\mo8\dy30\hr17\min37}{\version3}{\edmins0}{\nofpages13}{\nofwords4814}{\nofchars30333}{\nofcharsws35077}{\vern57435}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office
+/word/2003/wordml}}\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1134\gutter0\ltrsect
+\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0
+\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale110\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot15863478\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
+{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
+\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15035535 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
+\f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid9454469 }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid9454469\charrsid15035535
+GNU GENERAL PUBLIC LICENSE
+\par Version 3, 29 June 2007
+\par
+\par Copyright (C) 2007 Free Software Foundation, Inc.
+\par Everyone is permitted to copy and distribute verbatim copies
+\par of this license document, but changing it is not allowed.
+\par
+\par Preamble
+\par
+\par The GNU General Public License is a free, copyleft license for
+\par software and other kinds of works.
+\par
+\par The licenses for most software and other practical works are designed
+\par to take away your freedom to share and change the works. By contrast,
+\par the GNU General Public License is intended to guarantee your freedom to
+\par share and change all versions of a program--to make sure it remains free
+\par software for all its users. We, the Free Software Foundation, use the
+\par GNU General Public License for most of our software; it applies also to
+\par any other work released this way by its authors. You can apply it to
+\par your programs, too.
+\par
+\par When we speak of free software, we are referring to freedom, not
+\par price. Our General Public Licenses are designed to make sure that you
+\par have the freedom to distribute copies of free software (and charge for
+\par them if you wish), that you receive source code or can get it if you
+\par want it, that you can change the software or use pieces of it in new
+\par free programs, and that you know you can do these things.
+\par
+\par To protect your rights, we need to prevent others from denying you
+\par these rights or asking you to surrender the rights. Therefore, you have
+\par certain responsibilities if you distribute copies of the software, or if
+\par you modify it: responsibilities to respect the freedom of others.
+\par
+\par For example, if you distribute copies of such a program, whether
+\par gratis or for a fee, you must pass on to the recipients the same
+\par freedoms that you received. You must make sure that they, too, receive
+\par or can get the source code. And you must show them these terms so they
+\par know their rights.
+\par
+\par Developers that use the GNU GPL protect your rights with two steps:
+\par (1) assert copyright on the software, and (2) offer you this License
+\par giving you legal permission to copy, distribute and/or modify it.
+\par
+\par For the developers' and authors' protection, the GPL clearly explains
+\par that there is no warranty for this free software. For both users' and
+\par authors' sake, the GPL requires that modified versions be marked as
+\par changed, so that their problems will not be attributed erroneously to
+\par authors of previous versions.
+\par
+\par Some devices are designed to deny users access to install or run
+\par modified versions of the software inside them, although the manufacturer
+\par can do so. This is fundamentally incompatible with the aim of
+\par protecting users' freedom to change the software. The systematic
+\par pattern of such abuse occurs in the area of products for individuals to
+\par use, which is precisely where it is most unacceptable. Therefore, we
+\par have designed this version of the GPL to prohibit the practice for those
+\par products. If such problems arise substantially in other domains, we
+\par stand ready to extend this provision to those domains in future versions
+\par of the GPL, as needed to protect the freedom of users.
+\par
+\par Finally, every program is threatened constantly by software patents.
+\par States should not allow patents to restrict development and use of
+\par software on general-purpose computers, but in those that do, we wish to
+\par avoid the special danger that patents applied to a free program could
+\par make it effectively proprietary. To prevent this, the GPL assures that
+\par patents cannot be used to render the program non-free.
+\par
+\par The precise terms and conditions for copying, distribution and
+\par modification follow.
+\par
+\par TERMS AND CONDITIONS
+\par
+\par 0. Definitions.
+\par
+\par "This License" refers to version 3 of the GNU General Public License.
+\par
+\par "Copyright" also means copyright-like laws that apply to other kinds of
+\par works, such as semiconductor masks.
+\par
+\par "The Program" refers to any copyrightable work licensed under this
+\par License. Each licensee is addressed as "you". "Licensees" and
+\par "recipients" may be individuals or organizations.
+\par
+\par To "modify" a work means to copy from or adapt all or part of the work
+\par in a fashion requiring copyright permission, other than the making of an
+\par exact copy. The resulting work is called a "modified version" of the
+\par earlier work or a work "based on" the earlier work.
+\par
+\par A "covered work" means either the unmodified Program or a work based
+\par on the Program.
+\par
+\par To "propagate" a work means to do anything with it that, without
+\par permission, would make you directly or secondarily liable for
+\par infringement under applicable copyright law, except executing it on a
+\par computer or modifying a private copy. Propagation includes copying,
+\par distribution (with or without modification), making available to the
+\par public, and in some countries other activities as well.
+\par
+\par To "convey" a work means any kind of propagation that enables other
+\par parties to make or receive copies. Mere interaction with a user through
+\par a computer network, with no transfer of a copy, is not conveying.
+\par
+\par An interactive user interface displays "Appropriate Legal Notices"
+\par to the extent that it includes a convenient and prominently visible
+\par feature that (1) displays an appropriate copyright notice, and (2)
+\par tells the user that there is no warranty for the work (except to the
+\par extent that warranties are provided), that licensees may convey the
+\par work under this License, and how to view a copy of this License. If
+\par the interface presents a list of user commands or options, such as a
+\par menu, a prominent item in the list meets this criterion.
+\par
+\par 1. Source Code.
+\par
+\par The "source code" for a work means the preferred form of the work
+\par for making modifications to it. "Object code" means any non-source
+\par form of a work.
+\par
+\par A "Standard Interface" means an interface that either is an official
+\par standard defined by a recognized standards body, or, in the case of
+\par interfaces specified for a particular programming language, one that
+\par is widely used among developers working in that language.
+\par
+\par The "System Libraries" of an executable work include anything, other
+\par than the work as a whole, that (a) is included in the normal form of
+\par packaging a Major Component, but which is not part of that Major
+\par Component, and (b) serves only to enable use of the work with that
+\par Major Component, or to implement a Standard Interface for which an
+\par implementation is available to the public in source code form. A
+\par "Major Component", in this context, means a major essential component
+\par (kernel, window system, and so on) of the specific operating system
+\par (if any) on which the executable work runs, or a compiler used to
+\par produce the work, or an object code interpreter used to run it.
+\par
+\par The "Corresponding Source" for a work in object code form means all
+\par the source code needed to generate, install, and (for an executable
+\par work) run the object code and to modify the work, including scripts to
+\par control those activities. However, it does not include the work's
+\par System Libraries, or general-purpose tools or generally available free
+\par programs which are used unmodified in performing those activities but
+\par which are not part of the work. For example, Corresponding Source
+\par includes interface definition files associated with source files for
+\par the work, and the source code for shared libraries and dynamically
+\par linked subprograms that the work is specifically designed to require,
+\par such as by intimate data communication or control flow between those
+\par subprograms and other parts of the work.
+\par
+\par The Corresponding Source need not include anything that users
+\par can regenerate automatically from other parts of the Corresponding
+\par Source.
+\par
+\par The Corresponding Source for a work in source code form is that
+\par same work.
+\par
+\par 2. Basic Permissions.
+\par
+\par All rights granted under this License are granted for the term of
+\par copyright on the Program, and are irrevocable provided the stated
+\par conditions are met. This License explicitly affirms your unlimited
+\par permission to run the unmodified Program. The output from running a
+\par covered work is covered by this License only if the output, given its
+\par content, constitutes a covered work. This License acknowledges your
+\par rights of fair use or other equivalent, as provided by copyright law.
+\par
+\par You may make, run and propagate covered works that you do not
+\par convey, without conditions so long as your license otherwise remains
+\par in force. You may convey covered works to others for the sole purpose
+\par of having them make modifications exclusively for you, or provide you
+\par with facilities for running those works, provided that you comply with
+\par the terms of this License in conveying all material for which you do
+\par not control copyright. Those thus making or running the covered works
+\par for you must do so exclusively on your behalf, under your direction
+\par and control, on terms that prohibit them from making any copies of
+\par your copyrighted material outside their relationship with you.
+\par
+\par Conveying under any other circumstances is permitted solely under
+\par the conditions stated below. Sublicensing is not allowed; section 10
+\par makes it unnecessary.
+\par
+\par 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+\par
+\par No covered work shall be deemed part of an effective technological
+\par measure under any applicable law fulfilling obligations under article
+\par 11 of the WIPO copyright treaty adopted on 20 December 1996, or
+\par similar laws prohibiting or restricting circumvention of such
+\par measures.
+\par
+\par When you convey a covered work, you waive any legal power to forbid
+\par circumvention of technological measures to the extent such circumvention
+\par is effected by exercising rights under this License with respect to
+\par the covered work, and you disclaim any intention to limit operation or
+\par modification of the work as a means of enforcing, against the work's
+\par users, your or third parties' legal rights to forbid circumvention of
+\par technological measures.
+\par
+\par 4. Conveying Verbatim Copies.
+\par
+\par You may convey verbatim copies of the Program's source code as you
+\par receive it, in any medium, provided that you conspicuously and
+\par appropriately publish on each copy an appropriate copyright notice;
+\par keep intact all notices stating that this License and any
+\par non-permissive terms added in accord with section 7 apply to the code;
+\par keep intact all notices of the absence of any warranty; and give all
+\par recipients a copy of this License along with the Program.
+\par
+\par You may charge any price or no price for each copy that you convey,
+\par and you may offer support or warranty protection for a fee.
+\par
+\par 5. Conveying Modified Source Versions.
+\par
+\par You may convey a work based on the Program, or the modifications to
+\par produce it from the Program, in the form of source code under the
+\par terms of section 4, provided that you also meet all of these conditions:
+\par
+\par a) The work must carry prominent notices stating that you modified
+\par it, and giving a relevant date.
+\par
+\par b) The work must carry prominent notices stating that it is
+\par released under this License and any conditions added under section
+\par 7. This requirement modifies the requirement in section 4 to
+\par "keep intact all notices".
+\par
+\par c) You must license the entire work, as a whole, under this
+\par License to anyone who comes into possession of a copy. This
+\par License will therefore apply, along with any applicable section 7
+\par additional terms, to the whole of the work, and all its parts,
+\par regardless of how they are packaged. This License gives no
+\par permission to license the work in any other way, but it does not
+\par invalidate such permission if you have separately received it.
+\par
+\par d) If the work has interactive user interfaces, each must display
+\par Appropriate Legal Notices; however, if the Program has interactive
+\par interfaces that do not display Appropriate Legal Notices, your
+\par work need not make them do so.
+\par
+\par A compilation of a covered work with other separate and independent
+\par works, which are not by their nature extensions of the covered work,
+\par and which are not combined with it such as to form a larger program,
+\par in or on a volume of a storage or distribution medium, is called an
+\par "aggregate" if the compilation and its resulting copyright are not
+\par used to limit the access or legal rights of the compilation's users
+\par beyond what the individual works permit. Inclusion of a covered work
+\par in an aggregate does not cause this License to apply to the other
+\par parts of the aggregate.
+\par
+\par 6. Conveying Non-Source Forms.
+\par
+\par You may convey a covered work in object code form under the terms
+\par of sections 4 and 5, provided that you also convey the
+\par machine-readable Corresponding Source under the terms of this License,
+\par in one of these ways:
+\par
+\par a) Convey the object code in, or embodied in, a physical product
+\par (including a physical distribution medium), accompanied by the
+\par Corresponding Source fixed on a durable physical medium
+\par customarily used for software interchange.
+\par
+\par b) Convey the object code in, or embodied in, a physical product
+\par (including a physical distribution medium), accompanied by a
+\par written offer, valid for at least three years and valid for as
+\par long as you offer spare parts or customer support for that product
+\par model, to give anyone who possesses the object code either (1) a
+\par copy of the Corresponding Source for all the software in the
+\par product that is covered by this License, on a durable physical
+\par medium customarily used for software interchange, for a price no
+\par more than your reasonable cost of physically performing this
+\par conveying of source, or (2) access to copy the
+\par Corresponding Source from a network server at no charge.
+\par
+\par c) Convey individual copies of the object code with a copy of the
+\par written offer to provide the Corresponding Source. This
+\par alternative is allowed only occasionally and noncommercially, and
+\par only if you received the object code with such an offer, in accord
+\par with subsection 6b.
+\par
+\par d) Convey the object code by offering access from a designated
+\par place (gratis or for a charge), and offer equivalent access to the
+\par Corresponding Source in the same way through the same place at no
+\par further charge. You need not require recipients to copy the
+\par Corresponding Source along with the object code. If the place to
+\par copy the object code is a network server, the Corresponding Source
+\par may be on a different server (operated by you or a third party)
+\par that supports equivalent copying facilities, provided you maintain
+\par clear directions next to the object code saying where to find the
+\par Corresponding Source. Regardless of what server hosts the
+\par Corresponding Source, you remain obligated to ensure that it is
+\par available for as long as needed to satisfy these requirements.
+\par
+\par e) Convey the object code using peer-to-peer transmission, provided
+\par you inform other peers where the object code and Corresponding
+\par Source of the work are being offered to the general public at no
+\par charge under subsection 6d.
+\par
+\par A separable portion of the object code, whose source code is excluded
+\par from the Corresponding Source as a System Library, need not be
+\par included in conveying the object code work.
+\par
+\par A "User Product" is either (1) a "consumer product", which means any
+\par tangible personal property which is normally used for personal, family,
+\par or household purposes, or (2) anything designed or sold for incorporation
+\par into a dwelling. In determining whether a product is a consumer product,
+\par doubtful cases shall be resolved in favor of coverage. For a particular
+\par product received by a particular user, "normally used" refers to a
+\par typical or common use of that class of product, regardless of the status
+\par of the particular user or of the way in which the particular user
+\par actually uses, or expects or is expected to use, the product. A product
+\par is a consumer product regardless of whether the product has substantial
+\par commercial, industrial or non-consumer uses, unless such uses represent
+\par the only significant mode of use of the product.
+\par
+\par "Installation Information" for a User Product means any methods,
+\par procedures, authorization keys, or other information required to install
+\par and execute modified versions of a covered work in that User Product from
+\par a modified version of its Corresponding Source. The information must
+\par suffice to ensure that the continued functioning of the modified object
+\par code is in no case prevented or interfered with solely because
+\par modification has been made.
+\par
+\par If you convey an object code work under this section in, or with, or
+\par specifically for use in, a User Product, and the conveying occurs as
+\par part of a transaction in which the right of possession and use of the
+\par User Product is transferred to the recipient in perpetuity or for a
+\par fixed term (regardless of how the transaction is characterized), the
+\par Corresponding Source conveyed under this section must be accompanied
+\par by the Installation Information. But this requirement does not apply
+\par if neither you nor any third party retains the ability to install
+\par modified object code on the User Product (for example, the work has
+\par been installed in ROM).
+\par
+\par The requirement to provide Installation Information does not include a
+\par requirement to continue to provide support service, warranty, or updates
+\par for a work that has been modified or installed by the recipient, or for
+\par the User Product in which it has been modified or installed. Access to a
+\par network may be denied when the modification itself materially and
+\par adversely affects the operation of the network or violates the rules and
+\par protocols for communication across the network.
+\par
+\par Corresponding Source conveyed, and Installation Information provided,
+\par in accord with this section must be in a format that is publicly
+\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid9454469 documented (and with an implementation available to the public in
+\par source code form), and must require no special password or key for
+\par unpacking, reading or copying.
+\par
+\par 7. Additional Terms.
+\par
+\par "Additional permissions" are terms that supplement the terms of this
+\par License by making exceptions from one or more of its conditions.
+\par Additional permissions that are applicable to the entire Program shall
+\par be treated as though they were included in this License, to the extent
+\par that they are valid under applicable law. If additional permissions
+\par apply only to part of the Program, that part may be used separately
+\par under those permissions, but the entire Program remains governed by
+\par this License without regard to the additional permissions.
+\par
+\par When you convey a copy of a covered work, you may at your option
+\par remove any additional permissions from that copy, or from any part of
+\par it. (Additional permissions may be written to require their own
+\par removal in certain cases when you modify the work.) You may place
+\par additional permissions on material, added by you to a covered work,
+\par for which you have or can give appropriate copyright permission.
+\par
+\par Notwithstanding any other provision of this License, for material you
+\par add to a covered work, you may (if authorized by the copyright holders of
+\par that material) supplement the terms of this License with terms:
+\par
+\par a) Disclaiming warranty or limiting liability differently from the
+\par terms of sections 15 and 16 of this License; or
+\par
+\par b) Requiring preservation of specified reasonable legal notices or
+\par author attributions in that material or in the Appropriate Legal
+\par Notices displayed by works containing it; or
+\par
+\par c) Prohibiting misrepresentation of the origin of that material, or
+\par requiring that modified versions of such material be marked in
+\par reasonable ways as different from the original version; or
+\par
+\par d) Limiting the use for publicity purposes of names of licensors or
+\par authors of the material; or
+\par
+\par e) Declining to grant rights under trademark law for use of some
+\par trade names, trademarks, or service marks; or
+\par
+\par f) Requiring indemnification of licensors and authors of that
+\par material by anyone who conveys the material (or modified versions of
+\par it) with contractual assumptions of liability to the recipient, for
+\par any liability that these contractual assumptions directly impose on
+\par those licensors and authors.
+\par
+\par All other non-permissive additional terms are considered "further
+\par restrictions" within the meaning of section 10. If the Program as you
+\par received it, or any part of it, contains a notice stating that it is
+\par governed by this License along with a term that is a further
+\par restriction, you may remove that term. If a license document contains
+\par a further restriction but permits relicensing or conveying under this
+\par License, you may add to a covered work material governed by the terms
+\par of that license document, provided that the further restriction does
+\par not survive such relicensing or conveying.
+\par
+\par If you add terms to a covered work in accord with this section, you
+\par must place, in the relevant source files, a statement of the
+\par additional terms that apply to those files, or a notice indicating
+\par where to find the applicable terms.
+\par
+\par Additional terms, permissive or non-permissive, may be stated in the
+\par form of a separately written license, or stated as exceptions;
+\par the above requirements apply either way.
+\par
+\par 8. Termination.
+\par
+\par You may not propagate or modify a covered work except as expressly
+\par provided under this License. Any attempt otherwise to propagate or
+\par modify it is void, and will automatically terminate your rights under
+\par this License (including any patent licenses granted under the third
+\par paragraph of section 11).
+\par
+\par However, if you cease all violation of this License, then your
+\par license from a particular copyright holder is reinstated (a)
+\par provisionally, unless and until the copyright holder explicitly and
+\par finally terminates your license, and (b) permanently, if the copyright
+\par holder fails to notify you of the violation by some reasonable means
+\par prior to 60 days after the cessation.
+\par
+\par Moreover, your license from a particular copyright holder is
+\par reinstated permanently if the copyright holder notifies you of the
+\par violation by some reasonable means, this is the first time you have
+\par received notice of violation of this License (for any work) from that
+\par copyright holder, and you cure the violation prior to 30 days after
+\par your receipt of the notice.
+\par
+\par Termination of your rights under this section does not terminate the
+\par licenses of parties who have received copies or rights from you under
+\par this License. If your rights have been terminated and not permanently
+\par reinstated, you do not qualify to receive new licenses for the same
+\par material under section 10.
+\par
+\par 9. Acceptance Not Required for Having Copies.
+\par
+\par You are not required to accept this License in order to receive or
+\par run a copy of the Program. Ancillary propagation of a covered work
+\par occurring solely as a consequence of using peer-to-peer transmission
+\par to receive a copy likewise does not require acceptance. However,
+\par nothing other than this License grants you permission to propagate or
+\par modify any covered work. These actions infringe copyright if you do
+\par not accept this License. Therefore, by modifying or propagating a
+\par covered work, you indicate your acceptance of this License to do so.
+\par
+\par 10. Automatic Licensing of Downstream Recipients.
+\par
+\par Each time you convey a covered work, the recipient automatically
+\par receives a license from the original licensors, to run, modify and
+\par propagate that work, subject to this License. You are not responsible
+\par for enforcing compliance by third parties with this License.
+\par
+\par An "entity transaction" is a transaction transferring control of an
+\par organization, or substantially all assets of one, or subdividing an
+\par organization, or merging organizations. If propagation of a covered
+\par work results from an entity transaction, each party to that
+\par transaction who receives a copy of the work also receives whatever
+\par licenses to the work the party's predecessor in interest had or could
+\par give under the previous paragraph, plus a right to possession of the
+\par Corresponding Source of the work from the predecessor in interest, if
+\par the predecessor has it or can get it with reasonable efforts.
+\par
+\par You may not impose any further restrictions on the exercise of the
+\par rights granted or affirmed under this License. For example, you may
+\par not impose a license fee, royalty, or other charge for exercise of
+\par rights granted under this License, and you may not initiate litigation
+\par (including a cross-claim or counterclaim in a lawsuit) alleging that
+\par any patent claim is infringed by making, using, selling, offering for
+\par sale, or importing the Program or any portion of it.
+\par
+\par 11. Patents.
+\par
+\par A "contributor" is a copyright holder who authorizes use under this
+\par License of the Program or a work on which the Program is based. The
+\par work thus licensed is called the contributor's "contributor version".
+\par
+\par A contributor's "essential patent claims" are all patent claims
+\par owned or controlled by the contributor, whether already acquired or
+\par hereafter acquired, that would be infringed by some manner, permitted
+\par by this License, of making, using, or selling its contributor version,
+\par but do not include claims that would be infringed only as a
+\par consequence of further modification of the contributor version. For
+\par purposes of this definition, "control" includes the right to grant
+\par patent sublicenses in a manner consistent with the requirements of
+\par this License.
+\par
+\par Each contributor grants you a non-exclusive, worldwide, royalty-free
+\par patent license under the contributor's essential patent claims, to
+\par make, use, sell, offer for sale, import and otherwise run, modify and
+\par propagate the contents of its contributor version.
+\par
+\par In the following three paragraphs, a "patent license" is any express
+\par agreement or commitment, however denominated, not to enforce a patent
+\par (such as an express permission to practice a patent or covenant not to
+\par sue for patent infringement). To "grant" such a patent license to a
+\par party means to make such an agreement or commitment not to enforce a
+\par patent against the party.
+\par
+\par If you convey a covered work, knowingly relying on a patent license,
+\par and the Corresponding Source of the work is not available for anyone
+\par to copy, free of charge and under the terms of this License, through a
+\par publicly available network server or other readily accessible means,
+\par then you must either (1) cause the Corresponding Source to be so
+\par available, or (2) arrange to deprive yourself of the benefit of the
+\par patent license for this particular work, or (3) arrange, in a manner
+\par consistent with the requirements of this License, to extend the patent
+\par license to downstream recipients. "Knowingly relying" means you have
+\par actual knowledge that, but for the patent license, your conveying the
+\par covered work in a country, or your recipient's use of the covered work
+\par in a country, would infringe one or more identifiable patents in that
+\par country that you have reason to believe are valid.
+\par
+\par If, pursuant to or in connection with a single transaction or
+\par arrangement, you convey, or propagate by procuring conveyance of, a
+\par covered work, and grant a patent license to some of the parties
+\par receiving the covered work authorizing them to use, propagate, modify
+\par or convey a specific copy of the covered work, then the patent license
+\par you grant is automatically extended to all recipients of the covered
+\par work and works based on it.
+\par
+\par A patent license is "discriminatory" if it does not include within
+\par the scope of its coverage, prohibits the exercise of, or is
+\par conditioned on the non-exercise of one or more of the rights that are
+\par specifically granted under this License. You may not convey a covered
+\par work if you are a party to an arrangement with a third party that is
+\par in the business of distributing software, under which you make payment
+\par to the third party based on the extent of your activity of conveying
+\par the work, and under which the third party grants, to any of the
+\par parties who would receive the covered work from you, a discriminatory
+\par patent license (a) in connection with copies of the covered work
+\par conveyed by you (or copies made from those copies), or (b) primarily
+\par for and in connection with specific products or compilations that
+\par contain the covered work, unless you entered into that arrangement,
+\par or that patent license was granted, prior to 28 March 2007.
+\par
+\par Nothing in this License shall be construed as excluding or limiting
+\par any implied license or other defenses to infringement that may
+\par otherwise be available to you under applicable patent law.
+\par
+\par 12. No Surrender of Others' Freedom.
+\par
+\par If conditions are imposed on you (whether by court order, agreement or
+\par otherwise) that contradict the conditions of this License, they do not
+\par excuse you from the conditions of this License. If you cannot convey a
+\par covered work so as to satisfy simultaneously your obligations under this
+\par License and any other pertinent obligations, then as a consequence you may
+\par not convey it at all. For example, if you agree to terms that obligate you
+\par to collect a royalty for further conveying from those to whom you convey
+\par the Program, the only way you could satisfy both those terms and this
+\par License would be to refrain entirely from conveying the Program.
+\par
+\par 13. Use with the GNU Affero General Public License.
+\par
+\par Notwithstanding any other provision of this License, you have
+\par permission to link or combine any covered work with a work licensed
+\par under version 3 of the GNU Affero General Public License into a single
+\par combined work, and to convey the resulting work. The terms of this
+\par License will continue to apply to the part which is the covered work,
+\par but the special requirements of the GNU Affero General Public License,
+\par section 13, concerning interaction through a network will apply to the
+\par combination as such.
+\par
+\par 14. Revised Versions of this License.
+\par
+\par The Free Software Foundation may publish revised and/or new versions of
+\par the GNU General Public License from time to time. Such new versions will
+\par be similar in spirit to the present version, but may differ in detail to
+\par address new problems or concerns.
+\par
+\par Each version is given a distinguishing version number. If the
+\par Program specifies that a certain numbered version of the GNU General
+\par Public License "or any later version" applies to it, you have the
+\par option of following the terms and conditions either of that numbered
+\par version or of any later version published by the Free Software
+\par Foundation. If the Program does not specify a version number of the
+\par GNU General Public License, you may choose any version ever published
+\par by the Free Software Foundation.
+\par
+\par If the Program specifies that a proxy can decide which future
+\par versions of the GNU General Public License can be used, that proxy's
+\par public statement of acceptance of a version permanently authorizes you
+\par to choose that version for the Program.
+\par
+\par Later license versions may give you additional or different
+\par permissions. However, no additional obligations are imposed on any
+\par author or copyright holder as a result of your choosing to follow a
+\par later version.
+\par
+\par 15. Disclaimer of Warranty.
+\par
+\par THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+\par APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+\par HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+\par OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+\par THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+\par PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+\par IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+\par ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+\par
+\par 16. Limitation of Liability.
+\par
+\par IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+\par WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+\par THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+\par GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+\par USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+\par DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+\par PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+\par EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+\par SUCH DAMAGES.
+\par
+\par 17. Interpretation of Sections 15 and 16.
+\par
+\par If the disclaimer of warranty and limitation of liability provided
+\par above cannot be given local legal effect according to their terms,
+\par reviewing courts shall apply local law that most closely approximates
+\par an absolute waiver of all civil liability in connection with the
+\par Program, unless a warranty or assumption of liability accompanies a
+\par copy of the Program in return for a fee.
+\par
+\par END OF TERMS AND CONDITIONS
+\par
+\par How to Apply These Terms to Your New Programs
+\par
+\par If you develop a new program, and you want it to be of the greatest
+\par possible use to the public, the best way to achieve this is to make it
+\par free software which everyone can redistribute and change under these terms.
+\par
+\par To do so, attach the following notices to the program. It is safest
+\par to attach them to the start of each source file to most effectively
+\par state the exclusion of warranty; and each file should have at least
+\par the "copyright" line and a pointer to where the full notice is found.
+\par
+\par
+\par Copyright (C)
+\par
+\par This program is free software: you can redistribute it and/or modify
+\par it under the terms of the GNU General Public License as published by
+\par the Free Software Foundation, either version 3 of the License, or
+\par (at your option) any later version.
+\par
+\par This program is distributed in the hope that it will be useful,
+\par but WITHOUT ANY WARRANTY; without even the implied warranty of
+\par MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+\par GNU General Public License for more details.
+\par
+\par You should have received a copy of the GNU General Public License
+\par along with this program. If not, see .
+\par
+\par Also add information on how to contact you by electronic and paper mail.
+\par
+\par If the program does terminal interaction, make it output a short
+\par notice like this when it starts in an interactive mode:
+\par
+\par Copyright (C)
+\par This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+\par This is free software, and you are welcome to redistribute it
+\par under certain conditions; type `show c' for details.
+\par
+\par The hypothetical commands `show w' and `show c' should show the appropriate
+\par parts of the General Public License. Of course, your program's commands
+\par might be different; for a GUI interface, you would use an "about box".
+\par
+\par You should also get your employer (if you work as a programmer) or school,
+\par if any, to sign a "copyright disclaimer" for the program, if necessary.
+\par For more information on this, and how to apply and follow the GNU GPL, see
+\par .
+\par
+\par The GNU General Public License does not permit incorporating your program
+\par into proprietary programs. If your program is a subroutine library, you
+\par may consider it more useful to permit linking proprietary applications with
+\par the library. If this is what you want to do, use the GNU Lesser General
+\par Public License instead of this License. But first, please read
+\par .}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8019918
+\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
+9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
+5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
+b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
+0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
+a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
+c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
+0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
+a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
+4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
+4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100f6be4dafcc060000891a0000160000007468656d652f7468656d652f
+7468656d65312e786d6cec595d8bdb46147d2ff43f08bd3bfe92fcb1c41b6cd9ceb6d94d42eca4e4716c8fadc98e344633de8d0981923c160aa569e943037deb
+43691b48a02fe9afd936a54d217fa17746b63c638fbb9b2585a5640d8b343af7ce997bafce1d4997afdc8fa87384134e58dc708b970aae83e3211b9178d2706f
+f7bbb99aeb7081e211a22cc60d778eb97b65f7c30f2ea31d11e2083b601ff31dd4704321a63bf93c1fc230e297d814c7706dcc920809384d26f951828ec16f44
+f3a542a1928f10895d274611b8dd4709e11cb9bb4bbf1d0ace63c1e5c090263de9155bc0a3c3a284f0390f68e21c21da70618e113beee3fbc27528e2022e34dc
+82fa73f3bb97f368676144c5165bcdaeabfe16760b83d16149cd994c06d9a49ee77b9566e65f01a8d8c475aa9d4aa792f95300341cc252532eba4fbf556fb5fd
+055603a58716dfed6abb5c34f09afff206e7a62f7f065e8152ffde06bedb0d208a065e8152bcbf81f7bc6a29f00cbc02a5f8ca06be5a68b6bdaa8157a09092f8
+70035df02be560b9da0c326674cf0aaffb5eb75a5a385fa1a01ab2f292538c592cb6165b84eeb1a40b0889a44890d811f3291ea321947080281924c4d9279310
+2a6f8a62c661b8502a740b65f82f7f9e3a5221413b1869d6921850e11b439290c38709998a86fb31787535c89b973fbe79f9dc3979f4e2e4d12f278f1f9f3cfa
+39756458eda178a25bbdfefe8bbf9f7eeafcf5fcbbd74fbeb2e3b98efffda7cf7efbf54b3b1056ba0ac1abaf9ffdf1e2d9ab6f3efff3872716783341031dde27
+11e6ce757cecdc62112c4c85c0648e07c9db59f44344748b663ce1284672168bff8e080df4f539a2c8826b6133827712d0181bf0eaec9e41b8172633412c1eaf
+8591013c608cb658628dc235399716e6fe2c9ed8274f663aee164247b6b903141bf9edcca6a0aec4e63208b141f32645b140131c63e1c86bec1063cbeaee1262
+c4f5800c13c6d958387789d342c41a923e1918d5b432da2311e4656e2308f936627370c769316a5b751b1f9948b82b10b590ef636a84f12a9a0914d95cf65144
+f580ef2311da48f6e6c950c775b8804c4f30654e678465dfdb2cfd1b09ac574bfa3590177bda0fe83c3291892087369ffb88311dd966874188a2a90ddb2371a8
+633fe28750a2c8b9c9840d7ec0cc3b449e431e50bc35dd770836d27dba1adc0665d529ad0a445e992596285ec5cca8dfde9c8e11565203ca6fe87944e253c57d
+4dd6fdff56d641485f7dfbd4b2aa8b2ae8cd8458efa8bd3519df865b17ef80252372f1b5bb8d66f14d0cb7cbe65dfc5ebadf4bb7fbbf97ee6df7f3bb17ec9546
+837ccbad62ba57573bf768fbc67d4c28ed8939c5fb5ceddd39b4a6511706a5a17a62c5d993dc348443792bc30c066e922065e3244c7c4244d80bd11436f84557
+3a99f085eb0977a68cc3be5f0d5b7d4b3c9d45076c943eb0168bf2e134550f8ec46abce067e3f0ac215274a5ba7a08cbdc2bb613f5b4bc24206ddf8684369949
+a26c21515d0eca20a96773089a85845ad93b6151b7b0a849f7cb546db0006a595660efe4c08eabe1fa1e9880113c52218a47324f69aa97d955c97c9799de164c
+a3026023b1ac8055a6eb92ebd6e5c9d5a5a576864c1b24b4723349a8c8a826c64334c28bea94a367a1f1b6b9aeaf526ad093a150f34169ad68546bffc6e2bcb9
+06bb756da0b1ae1434768e1b6ea5ec43c90cd1b4e18ee1b91f0ea329d40e977b5e4427f0e66c2892f4863f8fb24c132eda888769c095e8a46a101181138792a8
+e1cae56769a0b1d210c5ad580241b8b0e4ea202b178d1c24dd4c321e8ff150e869d74664a4d35350f8542bac5795f9f9c1d292cd20ddbd7074ec0ce82cb985a0
+c4fc6a5106704438bcfe29a6d11c1178a19909d9aafed61ad34276f5378aaa86d27144a7215a74145dcc53b892f28c8e3acb62a09d2dd60c01d542b268848389
+6cb07a508d6e9a758d94c3d6ae7bba918c9c269aab9e69a88aec9a7615336658b681b5589eafc96bac9621064dd33b7c2addeb925b5f6addda3e21eb1210f02c
+7e96ae7b8686a0515b4d6650938c3765586af662d4ec1dcb059e42ed2c4d4253fdcad2ed5adcb21e619d0e06cfd5f9c16ebd6a6168bcdc58aa48abaf1efad709
+36b807e2d186b7c0332ab84a257c7a48106c887a6a4f92ca06dc22f7c5e2d6802367969086fba0e037bda0e407b942cdefe4bcb257c8d5fc6639d7f4fd72b1e3
+170bed56e92134161146453ffde2d285775174bef8eea2c637bebd44cbd76d97862ccab3f1980c715e1157df5e8a25e3dbcb0d75dde9cb2f2cae4340741e544a
+dd7ab9deaae4eae56637e7b55bb55c3da8b472ed4a506d77db815fab771fbace91027bcd72e0553ab55ca5180439af5290f46bf55cd52b959a5eb559eb78cd87
+8b6d0cac3c958f452c20bc8ad7ee3f000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f
+5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae
+2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a93
+9cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce023
+9baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b
+436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b0000000000000000000000000030010000
+5f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f74
+68656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100f6be4dafcc060000891a00001600000000000000000000000000d6
+0200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000
+000000d60900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000d10a00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
+\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text;
+\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;
+\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;
+\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;
+\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;
+\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;
+\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
+\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;
+\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;
+\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
+\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;
+\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;
+\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
+\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;
+\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
+\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
+\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
+\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
+\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
+\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
+\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
+\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
+\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
+\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000
+4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e500000000000000000000000000d7
+f2dd96a5ce01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
diff --git a/Installer/Prerequisites/.NET Framework 4.0 Client Profile/dotNetFx40_Client_x86_x64.exe b/Installer/Prerequisites/.NET Framework 4.0 Client Profile/dotNetFx40_Client_x86_x64.exe
new file mode 100644
index 00000000..80ce5d46
Binary files /dev/null and b/Installer/Prerequisites/.NET Framework 4.0 Client Profile/dotNetFx40_Client_x86_x64.exe differ
diff --git a/Installer/Prerequisites/DirectX 9/dxwebsetup.exe b/Installer/Prerequisites/DirectX 9/dxwebsetup.exe
new file mode 100644
index 00000000..c15749ed
Binary files /dev/null and b/Installer/Prerequisites/DirectX 9/dxwebsetup.exe differ
diff --git a/Installer/Prerequisites/Visual C++ 2008 SP1 Redistributable/vcredist_x86.exe b/Installer/Prerequisites/Visual C++ 2008 SP1 Redistributable/vcredist_x86.exe
new file mode 100644
index 00000000..05d0a05e
Binary files /dev/null and b/Installer/Prerequisites/Visual C++ 2008 SP1 Redistributable/vcredist_x86.exe differ
diff --git a/Installer/Prerequisites/Visual C++ Redistributable for Visual Studio 2012 x64/vcredist_x64.exe b/Installer/Prerequisites/Visual C++ Redistributable for Visual Studio 2012 x64/vcredist_x64.exe
new file mode 100644
index 00000000..9b5df432
Binary files /dev/null and b/Installer/Prerequisites/Visual C++ Redistributable for Visual Studio 2012 x64/vcredist_x64.exe differ
diff --git a/Installer/Prerequisites/Visual C++ Redistributable for Visual Studio 2012 x86/vcredist_x86.exe b/Installer/Prerequisites/Visual C++ Redistributable for Visual Studio 2012 x86/vcredist_x86.exe
new file mode 100644
index 00000000..c247e7e6
Binary files /dev/null and b/Installer/Prerequisites/Visual C++ Redistributable for Visual Studio 2012 x86/vcredist_x86.exe differ
diff --git a/Installer/build.bat b/Installer/build.bat
new file mode 100644
index 00000000..f4830f67
--- /dev/null
+++ b/Installer/build.bat
@@ -0,0 +1,14 @@
+REM compile x64
+call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" x64
+devenv.com ..\Vocaluxe.sln /Rebuild "InstallerWin|x64"
+
+REM remove old x64 executables if found and rename
+if exist "..\Output\Vocaluxe_x64.exe" del "..\Output\Vocaluxe_x64.exe"
+ren "..\Output\Vocaluxe.exe" "Vocaluxe_x64.exe"
+
+REM compile x86
+call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" x86
+devenv.com ..\Vocaluxe.sln /Rebuild "InstallerWin|x86"
+
+REM compile installer
+AdvancedInstaller.com /rebuild setup.aip
\ No newline at end of file
diff --git a/Installer/buildportable.bat b/Installer/buildportable.bat
new file mode 100644
index 00000000..1b7aa978
--- /dev/null
+++ b/Installer/buildportable.bat
@@ -0,0 +1,20 @@
+@echo off
+SET version=v0.3.0
+SET status=Beta
+SET buildnum=0081
+SET buildname=Vocaluxe %version% %status% (%buildnum%).rar
+
+REM compile x64
+call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" x64
+devenv.com ..\Vocaluxe.sln /Rebuild "ReleaseWin|x64"
+
+REM remove old x64 executables if found and rename
+if exist "..\Output\Vocaluxe_x64.exe" del "..\Output\Vocaluxe_x64.exe"
+ren "..\Output\Vocaluxe.exe" "Vocaluxe_x64.exe"
+
+REM compile x86
+call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" x86
+devenv.com ..\Vocaluxe.sln /Rebuild "ReleaseWin|x86"
+
+REM package
+rar a -r -ep1 -x..\Output\CoverDB.sqlite -x..\Output\HighscoreDB.sqlite -x..\Output\*.log -x..\Output\*.pdb -x..\Output\Config.xml -x..\Output\Vocaluxe.vshost* -x..\Output\Songs -x..\Output\Screenshots -x..\Output\Playlists "%buildname%" "..\Output\*"
\ No newline at end of file
diff --git a/Installer/setup.aip b/Installer/setup.aip
new file mode 100644
index 00000000..21576c70
--- /dev/null
+++ b/Installer/setup.aip
@@ -0,0 +1,1887 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Output/Languages/English.xml b/Output/Languages/English.xml
index 2d1be43b..282cea99 100644
--- a/Output/Languages/English.xml
+++ b/Output/Languages/English.xml
@@ -59,6 +59,7 @@
YearDecadeLanguage
+ Date addedEasyNormalHard
diff --git a/Output/x64/gstreamer/libFLAC-8.dll b/Output/x64/gstreamer/libFLAC-8.dll
index cd621d83..a1a1c256 100644
Binary files a/Output/x64/gstreamer/libFLAC-8.dll and b/Output/x64/gstreamer/libFLAC-8.dll differ
diff --git a/Output/x64/gstreamer/liba52-0.dll b/Output/x64/gstreamer/liba52-0.dll
index 0bafd57f..6dfdbb94 100644
Binary files a/Output/x64/gstreamer/liba52-0.dll and b/Output/x64/gstreamer/liba52-0.dll differ
diff --git a/Output/x64/gstreamer/libass-4.dll b/Output/x64/gstreamer/libass-4.dll
index d6598ff3..b3cc88b0 100644
Binary files a/Output/x64/gstreamer/libass-4.dll and b/Output/x64/gstreamer/libass-4.dll differ
diff --git a/Output/x64/gstreamer/libbz2.dll b/Output/x64/gstreamer/libbz2.dll
index 1b818bb4..ee820481 100644
Binary files a/Output/x64/gstreamer/libbz2.dll and b/Output/x64/gstreamer/libbz2.dll differ
diff --git a/Output/x64/gstreamer/libcairo-2.dll b/Output/x64/gstreamer/libcairo-2.dll
index 82099a0e..87965c8e 100644
Binary files a/Output/x64/gstreamer/libcairo-2.dll and b/Output/x64/gstreamer/libcairo-2.dll differ
diff --git a/Output/x64/gstreamer/libcairo-gobject-2.dll b/Output/x64/gstreamer/libcairo-gobject-2.dll
index af4b7d5f..e9aae569 100644
Binary files a/Output/x64/gstreamer/libcairo-gobject-2.dll and b/Output/x64/gstreamer/libcairo-gobject-2.dll differ
diff --git a/Output/x64/gstreamer/libcairo-script-interpreter-2.dll b/Output/x64/gstreamer/libcairo-script-interpreter-2.dll
index cfde7bdb..8ddf3911 100644
Binary files a/Output/x64/gstreamer/libcairo-script-interpreter-2.dll and b/Output/x64/gstreamer/libcairo-script-interpreter-2.dll differ
diff --git a/Output/x64/gstreamer/libcharset-1.dll b/Output/x64/gstreamer/libcharset-1.dll
index 4b178fbf..af20e572 100644
Binary files a/Output/x64/gstreamer/libcharset-1.dll and b/Output/x64/gstreamer/libcharset-1.dll differ
diff --git a/Output/x64/gstreamer/libdca-0.dll b/Output/x64/gstreamer/libdca-0.dll
index fce15507..f3077d4c 100644
Binary files a/Output/x64/gstreamer/libdca-0.dll and b/Output/x64/gstreamer/libdca-0.dll differ
diff --git a/Output/x64/gstreamer/libdv-4.dll b/Output/x64/gstreamer/libdv-4.dll
index 77e247a6..de42c8eb 100644
Binary files a/Output/x64/gstreamer/libdv-4.dll and b/Output/x64/gstreamer/libdv-4.dll differ
diff --git a/Output/x64/gstreamer/libdvdnav-4.dll b/Output/x64/gstreamer/libdvdnav-4.dll
index 7ae0ea49..78d701c0 100644
Binary files a/Output/x64/gstreamer/libdvdnav-4.dll and b/Output/x64/gstreamer/libdvdnav-4.dll differ
diff --git a/Output/x64/gstreamer/libdvdnavmini-4.dll b/Output/x64/gstreamer/libdvdnavmini-4.dll
index b43bd9de..d94459aa 100644
Binary files a/Output/x64/gstreamer/libdvdnavmini-4.dll and b/Output/x64/gstreamer/libdvdnavmini-4.dll differ
diff --git a/Output/x64/gstreamer/libdvdread-4.dll b/Output/x64/gstreamer/libdvdread-4.dll
index efef2df5..dd80070f 100644
Binary files a/Output/x64/gstreamer/libdvdread-4.dll and b/Output/x64/gstreamer/libdvdread-4.dll differ
diff --git a/Output/x64/gstreamer/libexpat-1.dll b/Output/x64/gstreamer/libexpat-1.dll
index f043d1fb..7b425c4d 100644
Binary files a/Output/x64/gstreamer/libexpat-1.dll and b/Output/x64/gstreamer/libexpat-1.dll differ
diff --git a/Output/x64/gstreamer/libfaad-2.dll b/Output/x64/gstreamer/libfaad-2.dll
index 39ab2c8a..ac9a9fc5 100644
Binary files a/Output/x64/gstreamer/libfaad-2.dll and b/Output/x64/gstreamer/libfaad-2.dll differ
diff --git a/Output/x64/gstreamer/libffi-5.dll b/Output/x64/gstreamer/libffi-5.dll
deleted file mode 100644
index c3d4a6e6..00000000
Binary files a/Output/x64/gstreamer/libffi-5.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libffi-6.dll b/Output/x64/gstreamer/libffi-6.dll
new file mode 100644
index 00000000..207ef431
Binary files /dev/null and b/Output/x64/gstreamer/libffi-6.dll differ
diff --git a/Output/x64/gstreamer/libfontconfig-1.dll b/Output/x64/gstreamer/libfontconfig-1.dll
index c32217e7..7230751d 100644
Binary files a/Output/x64/gstreamer/libfontconfig-1.dll and b/Output/x64/gstreamer/libfontconfig-1.dll differ
diff --git a/Output/x64/gstreamer/libfreetype-6.dll b/Output/x64/gstreamer/libfreetype-6.dll
index 840b6467..c2c2e4f9 100644
Binary files a/Output/x64/gstreamer/libfreetype-6.dll and b/Output/x64/gstreamer/libfreetype-6.dll differ
diff --git a/Output/x64/gstreamer/libfribidi-0.dll b/Output/x64/gstreamer/libfribidi-0.dll
index bfedb381..e484d1b5 100644
Binary files a/Output/x64/gstreamer/libfribidi-0.dll and b/Output/x64/gstreamer/libfribidi-0.dll differ
diff --git a/Output/x64/gstreamer/libgcc_s_sjlj-1.dll b/Output/x64/gstreamer/libgcc_s_sjlj-1.dll
index 0f10cd06..c03ac645 100644
Binary files a/Output/x64/gstreamer/libgcc_s_sjlj-1.dll and b/Output/x64/gstreamer/libgcc_s_sjlj-1.dll differ
diff --git a/Output/x64/gstreamer/libgdk_pixbuf-2.0-0.dll b/Output/x64/gstreamer/libgdk_pixbuf-2.0-0.dll
index 2e6f0edc..5120d9df 100644
Binary files a/Output/x64/gstreamer/libgdk_pixbuf-2.0-0.dll and b/Output/x64/gstreamer/libgdk_pixbuf-2.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgio-2.0-0.dll b/Output/x64/gstreamer/libgio-2.0-0.dll
index 67452ca2..8d2ac100 100644
Binary files a/Output/x64/gstreamer/libgio-2.0-0.dll and b/Output/x64/gstreamer/libgio-2.0-0.dll differ
diff --git a/Output/x64/gstreamer/libglib-2.0-0.dll b/Output/x64/gstreamer/libglib-2.0-0.dll
index ba9d1343..7e4e5637 100644
Binary files a/Output/x64/gstreamer/libglib-2.0-0.dll and b/Output/x64/gstreamer/libglib-2.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgmodule-2.0-0.dll b/Output/x64/gstreamer/libgmodule-2.0-0.dll
index bc062d9d..09f590a1 100644
Binary files a/Output/x64/gstreamer/libgmodule-2.0-0.dll and b/Output/x64/gstreamer/libgmodule-2.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgmp-10.dll b/Output/x64/gstreamer/libgmp-10.dll
deleted file mode 100644
index 817c5c12..00000000
Binary files a/Output/x64/gstreamer/libgmp-10.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgmpxx-4.dll b/Output/x64/gstreamer/libgmpxx-4.dll
deleted file mode 100644
index 109878a6..00000000
Binary files a/Output/x64/gstreamer/libgmpxx-4.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgnutls-28.dll b/Output/x64/gstreamer/libgnutls-28.dll
index d095e6d1..7bc8d264 100644
Binary files a/Output/x64/gstreamer/libgnutls-28.dll and b/Output/x64/gstreamer/libgnutls-28.dll differ
diff --git a/Output/x64/gstreamer/libgnutls-openssl-27.dll b/Output/x64/gstreamer/libgnutls-openssl-27.dll
index 6dc6b112..0f1f8444 100644
Binary files a/Output/x64/gstreamer/libgnutls-openssl-27.dll and b/Output/x64/gstreamer/libgnutls-openssl-27.dll differ
diff --git a/Output/x64/gstreamer/libgnutlsxx-28.dll b/Output/x64/gstreamer/libgnutlsxx-28.dll
index bcbe1df0..3b661f06 100644
Binary files a/Output/x64/gstreamer/libgnutlsxx-28.dll and b/Output/x64/gstreamer/libgnutlsxx-28.dll differ
diff --git a/Output/x64/gstreamer/libgobject-2.0-0.dll b/Output/x64/gstreamer/libgobject-2.0-0.dll
index afe8430e..6867b13c 100644
Binary files a/Output/x64/gstreamer/libgobject-2.0-0.dll and b/Output/x64/gstreamer/libgobject-2.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgomp-1.dll b/Output/x64/gstreamer/libgomp-1.dll
new file mode 100644
index 00000000..bfdef6d9
Binary files /dev/null and b/Output/x64/gstreamer/libgomp-1.dll differ
diff --git a/Output/x64/gstreamer/libgsta52dec.dll b/Output/x64/gstreamer/libgsta52dec.dll
index 820dedae..00c5259f 100644
Binary files a/Output/x64/gstreamer/libgsta52dec.dll and b/Output/x64/gstreamer/libgsta52dec.dll differ
diff --git a/Output/x64/gstreamer/libgstadder.dll b/Output/x64/gstreamer/libgstadder.dll
index d3d70fcf..7eadd57e 100644
Binary files a/Output/x64/gstreamer/libgstadder.dll and b/Output/x64/gstreamer/libgstadder.dll differ
diff --git a/Output/x64/gstreamer/libgstadpcmdec.dll b/Output/x64/gstreamer/libgstadpcmdec.dll
index 702daa65..b99288b7 100644
Binary files a/Output/x64/gstreamer/libgstadpcmdec.dll and b/Output/x64/gstreamer/libgstadpcmdec.dll differ
diff --git a/Output/x64/gstreamer/libgstadpcmenc.dll b/Output/x64/gstreamer/libgstadpcmenc.dll
index af56a988..8c6058cc 100644
Binary files a/Output/x64/gstreamer/libgstadpcmenc.dll and b/Output/x64/gstreamer/libgstadpcmenc.dll differ
diff --git a/Output/x64/gstreamer/libgstalaw.dll b/Output/x64/gstreamer/libgstalaw.dll
index ac0fdade..1e1c0b70 100644
Binary files a/Output/x64/gstreamer/libgstalaw.dll and b/Output/x64/gstreamer/libgstalaw.dll differ
diff --git a/Output/x64/gstreamer/libgstalpha.dll b/Output/x64/gstreamer/libgstalpha.dll
index 498e1efc..31a5e2ab 100644
Binary files a/Output/x64/gstreamer/libgstalpha.dll and b/Output/x64/gstreamer/libgstalpha.dll differ
diff --git a/Output/x64/gstreamer/libgstalphacolor.dll b/Output/x64/gstreamer/libgstalphacolor.dll
index 1f7cadea..b10ba835 100644
Binary files a/Output/x64/gstreamer/libgstalphacolor.dll and b/Output/x64/gstreamer/libgstalphacolor.dll differ
diff --git a/Output/x64/gstreamer/libgstamrnb.dll b/Output/x64/gstreamer/libgstamrnb.dll
index 622b2114..027bea98 100644
Binary files a/Output/x64/gstreamer/libgstamrnb.dll and b/Output/x64/gstreamer/libgstamrnb.dll differ
diff --git a/Output/x64/gstreamer/libgstamrwbdec.dll b/Output/x64/gstreamer/libgstamrwbdec.dll
index 3911e15b..34b27764 100644
Binary files a/Output/x64/gstreamer/libgstamrwbdec.dll and b/Output/x64/gstreamer/libgstamrwbdec.dll differ
diff --git a/Output/x64/gstreamer/libgstapetag.dll b/Output/x64/gstreamer/libgstapetag.dll
index d75fcabf..6c22c267 100644
Binary files a/Output/x64/gstreamer/libgstapetag.dll and b/Output/x64/gstreamer/libgstapetag.dll differ
diff --git a/Output/x64/gstreamer/libgstapp-1.0-0.dll b/Output/x64/gstreamer/libgstapp-1.0-0.dll
index 8446b371..66d90a9e 100644
Binary files a/Output/x64/gstreamer/libgstapp-1.0-0.dll and b/Output/x64/gstreamer/libgstapp-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstapp.dll b/Output/x64/gstreamer/libgstapp.dll
index 6122ea31..51119f40 100644
Binary files a/Output/x64/gstreamer/libgstapp.dll and b/Output/x64/gstreamer/libgstapp.dll differ
diff --git a/Output/x64/gstreamer/libgstasf.dll b/Output/x64/gstreamer/libgstasf.dll
index c9b24abe..3b909cb7 100644
Binary files a/Output/x64/gstreamer/libgstasf.dll and b/Output/x64/gstreamer/libgstasf.dll differ
diff --git a/Output/x64/gstreamer/libgstasfmux.dll b/Output/x64/gstreamer/libgstasfmux.dll
index d3cbca93..2fed359a 100644
Binary files a/Output/x64/gstreamer/libgstasfmux.dll and b/Output/x64/gstreamer/libgstasfmux.dll differ
diff --git a/Output/x64/gstreamer/libgstassrender.dll b/Output/x64/gstreamer/libgstassrender.dll
index fecf7569..782743ed 100644
Binary files a/Output/x64/gstreamer/libgstassrender.dll and b/Output/x64/gstreamer/libgstassrender.dll differ
diff --git a/Output/x64/gstreamer/libgstaudio-1.0-0.dll b/Output/x64/gstreamer/libgstaudio-1.0-0.dll
index 8138ef75..29d444a0 100644
Binary files a/Output/x64/gstreamer/libgstaudio-1.0-0.dll and b/Output/x64/gstreamer/libgstaudio-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstaudioconvert.dll b/Output/x64/gstreamer/libgstaudioconvert.dll
index 36043c25..dd9fee01 100644
Binary files a/Output/x64/gstreamer/libgstaudioconvert.dll and b/Output/x64/gstreamer/libgstaudioconvert.dll differ
diff --git a/Output/x64/gstreamer/libgstaudiofx.dll b/Output/x64/gstreamer/libgstaudiofx.dll
index 105aed8e..383aa8ea 100644
Binary files a/Output/x64/gstreamer/libgstaudiofx.dll and b/Output/x64/gstreamer/libgstaudiofx.dll differ
diff --git a/Output/x64/gstreamer/libgstaudioparsers.dll b/Output/x64/gstreamer/libgstaudioparsers.dll
index f4b47c4a..49732b19 100644
Binary files a/Output/x64/gstreamer/libgstaudioparsers.dll and b/Output/x64/gstreamer/libgstaudioparsers.dll differ
diff --git a/Output/x64/gstreamer/libgstaudiorate.dll b/Output/x64/gstreamer/libgstaudiorate.dll
index f949ee24..fb616c78 100644
Binary files a/Output/x64/gstreamer/libgstaudiorate.dll and b/Output/x64/gstreamer/libgstaudiorate.dll differ
diff --git a/Output/x64/gstreamer/libgstaudioresample.dll b/Output/x64/gstreamer/libgstaudioresample.dll
index ad738dc5..a23d4c06 100644
Binary files a/Output/x64/gstreamer/libgstaudioresample.dll and b/Output/x64/gstreamer/libgstaudioresample.dll differ
diff --git a/Output/x64/gstreamer/libgstaudiotestsrc.dll b/Output/x64/gstreamer/libgstaudiotestsrc.dll
index c4cf5d3d..d327ab9e 100644
Binary files a/Output/x64/gstreamer/libgstaudiotestsrc.dll and b/Output/x64/gstreamer/libgstaudiotestsrc.dll differ
diff --git a/Output/x64/gstreamer/libgstaudiovisualizers.dll b/Output/x64/gstreamer/libgstaudiovisualizers.dll
index ba68ac91..b275b9f3 100644
Binary files a/Output/x64/gstreamer/libgstaudiovisualizers.dll and b/Output/x64/gstreamer/libgstaudiovisualizers.dll differ
diff --git a/Output/x64/gstreamer/libgstauparse.dll b/Output/x64/gstreamer/libgstauparse.dll
index 1014e575..3adc80ff 100644
Binary files a/Output/x64/gstreamer/libgstauparse.dll and b/Output/x64/gstreamer/libgstauparse.dll differ
diff --git a/Output/x64/gstreamer/libgstautoconvert.dll b/Output/x64/gstreamer/libgstautoconvert.dll
index e1b047ad..bab7fdb0 100644
Binary files a/Output/x64/gstreamer/libgstautoconvert.dll and b/Output/x64/gstreamer/libgstautoconvert.dll differ
diff --git a/Output/x64/gstreamer/libgstautodetect.dll b/Output/x64/gstreamer/libgstautodetect.dll
index b3cc5657..7436de81 100644
Binary files a/Output/x64/gstreamer/libgstautodetect.dll and b/Output/x64/gstreamer/libgstautodetect.dll differ
diff --git a/Output/x64/gstreamer/libgstavi.dll b/Output/x64/gstreamer/libgstavi.dll
index fa29dca0..2f547941 100644
Binary files a/Output/x64/gstreamer/libgstavi.dll and b/Output/x64/gstreamer/libgstavi.dll differ
diff --git a/Output/x64/gstreamer/libgstavscale.dll b/Output/x64/gstreamer/libgstavscale.dll
deleted file mode 100644
index 15862156..00000000
Binary files a/Output/x64/gstreamer/libgstavscale.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstbase-1.0-0.dll b/Output/x64/gstreamer/libgstbase-1.0-0.dll
index 96f57b50..63b2f4ea 100644
Binary files a/Output/x64/gstreamer/libgstbase-1.0-0.dll and b/Output/x64/gstreamer/libgstbase-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstbasecamerabinsrc-1.0-0.dll b/Output/x64/gstreamer/libgstbasecamerabinsrc-1.0-0.dll
index d2a5cf9d..862d25d2 100644
Binary files a/Output/x64/gstreamer/libgstbasecamerabinsrc-1.0-0.dll and b/Output/x64/gstreamer/libgstbasecamerabinsrc-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstbasevideo-1.0-0.dll b/Output/x64/gstreamer/libgstbasevideo-1.0-0.dll
deleted file mode 100644
index f09bd9fc..00000000
Binary files a/Output/x64/gstreamer/libgstbasevideo-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstbayer.dll b/Output/x64/gstreamer/libgstbayer.dll
index 1364436d..516f8ab9 100644
Binary files a/Output/x64/gstreamer/libgstbayer.dll and b/Output/x64/gstreamer/libgstbayer.dll differ
diff --git a/Output/x64/gstreamer/libgstcairo.dll b/Output/x64/gstreamer/libgstcairo.dll
new file mode 100644
index 00000000..c9b2fb1a
Binary files /dev/null and b/Output/x64/gstreamer/libgstcairo.dll differ
diff --git a/Output/x64/gstreamer/libgstcamerabin2.dll b/Output/x64/gstreamer/libgstcamerabin2.dll
index 4abcace7..09697842 100644
Binary files a/Output/x64/gstreamer/libgstcamerabin2.dll and b/Output/x64/gstreamer/libgstcamerabin2.dll differ
diff --git a/Output/x64/gstreamer/libgstcodecparsers-1.0-0.dll b/Output/x64/gstreamer/libgstcodecparsers-1.0-0.dll
index 743fb63b..3715513a 100644
Binary files a/Output/x64/gstreamer/libgstcodecparsers-1.0-0.dll and b/Output/x64/gstreamer/libgstcodecparsers-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstcoloreffects.dll b/Output/x64/gstreamer/libgstcoloreffects.dll
index eb899a93..39fd1479 100644
Binary files a/Output/x64/gstreamer/libgstcoloreffects.dll and b/Output/x64/gstreamer/libgstcoloreffects.dll differ
diff --git a/Output/x64/gstreamer/libgstcontroller-1.0-0.dll b/Output/x64/gstreamer/libgstcontroller-1.0-0.dll
index b42447c3..94ba8048 100644
Binary files a/Output/x64/gstreamer/libgstcontroller-1.0-0.dll and b/Output/x64/gstreamer/libgstcontroller-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstcoreelements.dll b/Output/x64/gstreamer/libgstcoreelements.dll
index f43034cd..869b0ce2 100644
Binary files a/Output/x64/gstreamer/libgstcoreelements.dll and b/Output/x64/gstreamer/libgstcoreelements.dll differ
diff --git a/Output/x64/gstreamer/libgstcutter.dll b/Output/x64/gstreamer/libgstcutter.dll
index 8c85375b..34acce50 100644
Binary files a/Output/x64/gstreamer/libgstcutter.dll and b/Output/x64/gstreamer/libgstcutter.dll differ
diff --git a/Output/x64/gstreamer/libgstd3dvideosink.dll b/Output/x64/gstreamer/libgstd3dvideosink.dll
index fc936d66..699a79fb 100644
Binary files a/Output/x64/gstreamer/libgstd3dvideosink.dll and b/Output/x64/gstreamer/libgstd3dvideosink.dll differ
diff --git a/Output/x64/gstreamer/libgstdataurisrc.dll b/Output/x64/gstreamer/libgstdataurisrc.dll
index 5f7c1278..a7edde9c 100644
Binary files a/Output/x64/gstreamer/libgstdataurisrc.dll and b/Output/x64/gstreamer/libgstdataurisrc.dll differ
diff --git a/Output/x64/gstreamer/libgstdebug.dll b/Output/x64/gstreamer/libgstdebug.dll
index f295e60b..b2fb0d4d 100644
Binary files a/Output/x64/gstreamer/libgstdebug.dll and b/Output/x64/gstreamer/libgstdebug.dll differ
diff --git a/Output/x64/gstreamer/libgstdebugutilsbad.dll b/Output/x64/gstreamer/libgstdebugutilsbad.dll
deleted file mode 100644
index 30d4b378..00000000
Binary files a/Output/x64/gstreamer/libgstdebugutilsbad.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdeinterlace.dll b/Output/x64/gstreamer/libgstdeinterlace.dll
index 596035bf..6c039aab 100644
Binary files a/Output/x64/gstreamer/libgstdeinterlace.dll and b/Output/x64/gstreamer/libgstdeinterlace.dll differ
diff --git a/Output/x64/gstreamer/libgstdirectsoundsink.dll b/Output/x64/gstreamer/libgstdirectsoundsink.dll
index f9b5c547..0a322fd0 100644
Binary files a/Output/x64/gstreamer/libgstdirectsoundsink.dll and b/Output/x64/gstreamer/libgstdirectsoundsink.dll differ
diff --git a/Output/x64/gstreamer/libgstdirectsoundsrc.dll b/Output/x64/gstreamer/libgstdirectsoundsrc.dll
deleted file mode 100644
index cfad6296..00000000
Binary files a/Output/x64/gstreamer/libgstdirectsoundsrc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdtmf.dll b/Output/x64/gstreamer/libgstdtmf.dll
index a18f85f1..649cd6de 100644
Binary files a/Output/x64/gstreamer/libgstdtmf.dll and b/Output/x64/gstreamer/libgstdtmf.dll differ
diff --git a/Output/x64/gstreamer/libgstdtsdec.dll b/Output/x64/gstreamer/libgstdtsdec.dll
index 119fb28c..2715d521 100644
Binary files a/Output/x64/gstreamer/libgstdtsdec.dll and b/Output/x64/gstreamer/libgstdtsdec.dll differ
diff --git a/Output/x64/gstreamer/libgstdv.dll b/Output/x64/gstreamer/libgstdv.dll
index 1a81fc8b..c16c774f 100644
Binary files a/Output/x64/gstreamer/libgstdv.dll and b/Output/x64/gstreamer/libgstdv.dll differ
diff --git a/Output/x64/gstreamer/libgstdvbsuboverlay.dll b/Output/x64/gstreamer/libgstdvbsuboverlay.dll
index 54bf16a6..25d128ef 100644
Binary files a/Output/x64/gstreamer/libgstdvbsuboverlay.dll and b/Output/x64/gstreamer/libgstdvbsuboverlay.dll differ
diff --git a/Output/x64/gstreamer/libgstdvdlpcmdec.dll b/Output/x64/gstreamer/libgstdvdlpcmdec.dll
index 189bd269..b84b6a3d 100644
Binary files a/Output/x64/gstreamer/libgstdvdlpcmdec.dll and b/Output/x64/gstreamer/libgstdvdlpcmdec.dll differ
diff --git a/Output/x64/gstreamer/libgstdvdread.dll b/Output/x64/gstreamer/libgstdvdread.dll
index 67076e2e..a0ecc4b3 100644
Binary files a/Output/x64/gstreamer/libgstdvdread.dll and b/Output/x64/gstreamer/libgstdvdread.dll differ
diff --git a/Output/x64/gstreamer/libgstdvdspu.dll b/Output/x64/gstreamer/libgstdvdspu.dll
index f359262a..42bbe1d0 100644
Binary files a/Output/x64/gstreamer/libgstdvdspu.dll and b/Output/x64/gstreamer/libgstdvdspu.dll differ
diff --git a/Output/x64/gstreamer/libgstdvdsub.dll b/Output/x64/gstreamer/libgstdvdsub.dll
deleted file mode 100644
index 1f30ef8e..00000000
Binary files a/Output/x64/gstreamer/libgstdvdsub.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsteffectv.dll b/Output/x64/gstreamer/libgsteffectv.dll
index 96fd9c1e..2cfb508f 100644
Binary files a/Output/x64/gstreamer/libgsteffectv.dll and b/Output/x64/gstreamer/libgsteffectv.dll differ
diff --git a/Output/x64/gstreamer/libgstencodebin.dll b/Output/x64/gstreamer/libgstencodebin.dll
index c82b9472..31ad9580 100644
Binary files a/Output/x64/gstreamer/libgstencodebin.dll and b/Output/x64/gstreamer/libgstencodebin.dll differ
diff --git a/Output/x64/gstreamer/libgstequalizer.dll b/Output/x64/gstreamer/libgstequalizer.dll
index 87bfefa8..bb8fd76f 100644
Binary files a/Output/x64/gstreamer/libgstequalizer.dll and b/Output/x64/gstreamer/libgstequalizer.dll differ
diff --git a/Output/x64/gstreamer/libgstfaad.dll b/Output/x64/gstreamer/libgstfaad.dll
index d568b95d..33e71994 100644
Binary files a/Output/x64/gstreamer/libgstfaad.dll and b/Output/x64/gstreamer/libgstfaad.dll differ
diff --git a/Output/x64/gstreamer/libgstfft-1.0-0.dll b/Output/x64/gstreamer/libgstfft-1.0-0.dll
index c7fab12e..e3b62ca0 100644
Binary files a/Output/x64/gstreamer/libgstfft-1.0-0.dll and b/Output/x64/gstreamer/libgstfft-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstfieldanalysis.dll b/Output/x64/gstreamer/libgstfieldanalysis.dll
index 1cac1676..2d87c4a8 100644
Binary files a/Output/x64/gstreamer/libgstfieldanalysis.dll and b/Output/x64/gstreamer/libgstfieldanalysis.dll differ
diff --git a/Output/x64/gstreamer/libgstflac.dll b/Output/x64/gstreamer/libgstflac.dll
index 574cd425..e042be81 100644
Binary files a/Output/x64/gstreamer/libgstflac.dll and b/Output/x64/gstreamer/libgstflac.dll differ
diff --git a/Output/x64/gstreamer/libgstflv.dll b/Output/x64/gstreamer/libgstflv.dll
index 1428a8fb..366dc0da 100644
Binary files a/Output/x64/gstreamer/libgstflv.dll and b/Output/x64/gstreamer/libgstflv.dll differ
diff --git a/Output/x64/gstreamer/libgstflxdec.dll b/Output/x64/gstreamer/libgstflxdec.dll
index f12dc4e8..6201a42c 100644
Binary files a/Output/x64/gstreamer/libgstflxdec.dll and b/Output/x64/gstreamer/libgstflxdec.dll differ
diff --git a/Output/x64/gstreamer/libgstfragmented.dll b/Output/x64/gstreamer/libgstfragmented.dll
index 436e6573..f8aff5d4 100644
Binary files a/Output/x64/gstreamer/libgstfragmented.dll and b/Output/x64/gstreamer/libgstfragmented.dll differ
diff --git a/Output/x64/gstreamer/libgstfrei0r.dll b/Output/x64/gstreamer/libgstfrei0r.dll
index 5abd9c89..1aadb4b8 100644
Binary files a/Output/x64/gstreamer/libgstfrei0r.dll and b/Output/x64/gstreamer/libgstfrei0r.dll differ
diff --git a/Output/x64/gstreamer/libgstgaudieffects.dll b/Output/x64/gstreamer/libgstgaudieffects.dll
index b25cedad..d61728c1 100644
Binary files a/Output/x64/gstreamer/libgstgaudieffects.dll and b/Output/x64/gstreamer/libgstgaudieffects.dll differ
diff --git a/Output/x64/gstreamer/libgstgdkpixbuf.dll b/Output/x64/gstreamer/libgstgdkpixbuf.dll
index 14db5f5d..c5eac411 100644
Binary files a/Output/x64/gstreamer/libgstgdkpixbuf.dll and b/Output/x64/gstreamer/libgstgdkpixbuf.dll differ
diff --git a/Output/x64/gstreamer/libgstgdp.dll b/Output/x64/gstreamer/libgstgdp.dll
deleted file mode 100644
index cfde484e..00000000
Binary files a/Output/x64/gstreamer/libgstgdp.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstgeometrictransform.dll b/Output/x64/gstreamer/libgstgeometrictransform.dll
index 6b3187f8..4c98ad14 100644
Binary files a/Output/x64/gstreamer/libgstgeometrictransform.dll and b/Output/x64/gstreamer/libgstgeometrictransform.dll differ
diff --git a/Output/x64/gstreamer/libgstgio.dll b/Output/x64/gstreamer/libgstgio.dll
index 44f4c32d..3d414b8c 100644
Binary files a/Output/x64/gstreamer/libgstgio.dll and b/Output/x64/gstreamer/libgstgio.dll differ
diff --git a/Output/x64/gstreamer/libgstgoom.dll b/Output/x64/gstreamer/libgstgoom.dll
index e7312b37..81e7214a 100644
Binary files a/Output/x64/gstreamer/libgstgoom.dll and b/Output/x64/gstreamer/libgstgoom.dll differ
diff --git a/Output/x64/gstreamer/libgstgoom2k1.dll b/Output/x64/gstreamer/libgstgoom2k1.dll
index b6532434..e7056c6e 100644
Binary files a/Output/x64/gstreamer/libgstgoom2k1.dll and b/Output/x64/gstreamer/libgstgoom2k1.dll differ
diff --git a/Output/x64/gstreamer/libgsticydemux.dll b/Output/x64/gstreamer/libgsticydemux.dll
index e716f8ed..080bc46a 100644
Binary files a/Output/x64/gstreamer/libgsticydemux.dll and b/Output/x64/gstreamer/libgsticydemux.dll differ
diff --git a/Output/x64/gstreamer/libgstid3demux.dll b/Output/x64/gstreamer/libgstid3demux.dll
index eb1e57bc..2e382a58 100644
Binary files a/Output/x64/gstreamer/libgstid3demux.dll and b/Output/x64/gstreamer/libgstid3demux.dll differ
diff --git a/Output/x64/gstreamer/libgstid3tag.dll b/Output/x64/gstreamer/libgstid3tag.dll
index cada1063..7026760f 100644
Binary files a/Output/x64/gstreamer/libgstid3tag.dll and b/Output/x64/gstreamer/libgstid3tag.dll differ
diff --git a/Output/x64/gstreamer/libgstimagefreeze.dll b/Output/x64/gstreamer/libgstimagefreeze.dll
index 16d18c45..bfa313d9 100644
Binary files a/Output/x64/gstreamer/libgstimagefreeze.dll and b/Output/x64/gstreamer/libgstimagefreeze.dll differ
diff --git a/Output/x64/gstreamer/libgstinterlace.dll b/Output/x64/gstreamer/libgstinterlace.dll
index da9b8e4f..7965bcb1 100644
Binary files a/Output/x64/gstreamer/libgstinterlace.dll and b/Output/x64/gstreamer/libgstinterlace.dll differ
diff --git a/Output/x64/gstreamer/libgstinterleave.dll b/Output/x64/gstreamer/libgstinterleave.dll
index e3679ca8..d2565443 100644
Binary files a/Output/x64/gstreamer/libgstinterleave.dll and b/Output/x64/gstreamer/libgstinterleave.dll differ
diff --git a/Output/x64/gstreamer/libgstisomp4.dll b/Output/x64/gstreamer/libgstisomp4.dll
index 03e0eb40..dac057ac 100644
Binary files a/Output/x64/gstreamer/libgstisomp4.dll and b/Output/x64/gstreamer/libgstisomp4.dll differ
diff --git a/Output/x64/gstreamer/libgstjpeg.dll b/Output/x64/gstreamer/libgstjpeg.dll
index 49155cab..da8ef641 100644
Binary files a/Output/x64/gstreamer/libgstjpeg.dll and b/Output/x64/gstreamer/libgstjpeg.dll differ
diff --git a/Output/x64/gstreamer/libgstjpegformat.dll b/Output/x64/gstreamer/libgstjpegformat.dll
index 901ad750..ae4f4caa 100644
Binary files a/Output/x64/gstreamer/libgstjpegformat.dll and b/Output/x64/gstreamer/libgstjpegformat.dll differ
diff --git a/Output/x64/gstreamer/libgstlevel.dll b/Output/x64/gstreamer/libgstlevel.dll
index 2f26ba08..e5352d09 100644
Binary files a/Output/x64/gstreamer/libgstlevel.dll and b/Output/x64/gstreamer/libgstlevel.dll differ
diff --git a/Output/x64/gstreamer/libgstlibav.dll b/Output/x64/gstreamer/libgstlibav.dll
index 50a5d7ae..a71321e1 100644
Binary files a/Output/x64/gstreamer/libgstlibav.dll and b/Output/x64/gstreamer/libgstlibav.dll differ
diff --git a/Output/x64/gstreamer/libgstlibvisual.dll b/Output/x64/gstreamer/libgstlibvisual.dll
index 37b66adb..d5aff467 100644
Binary files a/Output/x64/gstreamer/libgstlibvisual.dll and b/Output/x64/gstreamer/libgstlibvisual.dll differ
diff --git a/Output/x64/gstreamer/libgstliveadder.dll b/Output/x64/gstreamer/libgstliveadder.dll
index 91f4bc94..273cdb9f 100644
Binary files a/Output/x64/gstreamer/libgstliveadder.dll and b/Output/x64/gstreamer/libgstliveadder.dll differ
diff --git a/Output/x64/gstreamer/libgstmad.dll b/Output/x64/gstreamer/libgstmad.dll
index 056dcf00..8e3ea946 100644
Binary files a/Output/x64/gstreamer/libgstmad.dll and b/Output/x64/gstreamer/libgstmad.dll differ
diff --git a/Output/x64/gstreamer/libgstmatroska.dll b/Output/x64/gstreamer/libgstmatroska.dll
index d3036e3c..459e06a9 100644
Binary files a/Output/x64/gstreamer/libgstmatroska.dll and b/Output/x64/gstreamer/libgstmatroska.dll differ
diff --git a/Output/x64/gstreamer/libgstmms.dll b/Output/x64/gstreamer/libgstmms.dll
index d98a34c5..1c58c1a8 100644
Binary files a/Output/x64/gstreamer/libgstmms.dll and b/Output/x64/gstreamer/libgstmms.dll differ
diff --git a/Output/x64/gstreamer/libgstmpeg2dec.dll b/Output/x64/gstreamer/libgstmpeg2dec.dll
index 7c431553..ea5f4c01 100644
Binary files a/Output/x64/gstreamer/libgstmpeg2dec.dll and b/Output/x64/gstreamer/libgstmpeg2dec.dll differ
diff --git a/Output/x64/gstreamer/libgstmpegpsdemux.dll b/Output/x64/gstreamer/libgstmpegpsdemux.dll
index 20ae666b..fd962f17 100644
Binary files a/Output/x64/gstreamer/libgstmpegpsdemux.dll and b/Output/x64/gstreamer/libgstmpegpsdemux.dll differ
diff --git a/Output/x64/gstreamer/libgstmpegpsmux.dll b/Output/x64/gstreamer/libgstmpegpsmux.dll
index dac144b1..61d9b94d 100644
Binary files a/Output/x64/gstreamer/libgstmpegpsmux.dll and b/Output/x64/gstreamer/libgstmpegpsmux.dll differ
diff --git a/Output/x64/gstreamer/libgstmpegtsdemux.dll b/Output/x64/gstreamer/libgstmpegtsdemux.dll
index c68b9486..5f1098d2 100644
Binary files a/Output/x64/gstreamer/libgstmpegtsdemux.dll and b/Output/x64/gstreamer/libgstmpegtsdemux.dll differ
diff --git a/Output/x64/gstreamer/libgstmpegtsmux.dll b/Output/x64/gstreamer/libgstmpegtsmux.dll
index 7497bfe8..04f3eec1 100644
Binary files a/Output/x64/gstreamer/libgstmpegtsmux.dll and b/Output/x64/gstreamer/libgstmpegtsmux.dll differ
diff --git a/Output/x64/gstreamer/libgstmulaw.dll b/Output/x64/gstreamer/libgstmulaw.dll
index 92149dfc..78dffccc 100644
Binary files a/Output/x64/gstreamer/libgstmulaw.dll and b/Output/x64/gstreamer/libgstmulaw.dll differ
diff --git a/Output/x64/gstreamer/libgstmultifile.dll b/Output/x64/gstreamer/libgstmultifile.dll
index fba7f29a..d8e6e38b 100644
Binary files a/Output/x64/gstreamer/libgstmultifile.dll and b/Output/x64/gstreamer/libgstmultifile.dll differ
diff --git a/Output/x64/gstreamer/libgstmultipart.dll b/Output/x64/gstreamer/libgstmultipart.dll
index 3d5c1f12..052d2391 100644
Binary files a/Output/x64/gstreamer/libgstmultipart.dll and b/Output/x64/gstreamer/libgstmultipart.dll differ
diff --git a/Output/x64/gstreamer/libgstnavigationtest.dll b/Output/x64/gstreamer/libgstnavigationtest.dll
deleted file mode 100644
index 3ab08199..00000000
Binary files a/Output/x64/gstreamer/libgstnavigationtest.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstnet-1.0-0.dll b/Output/x64/gstreamer/libgstnet-1.0-0.dll
index aad245ac..b86e2ba9 100644
Binary files a/Output/x64/gstreamer/libgstnet-1.0-0.dll and b/Output/x64/gstreamer/libgstnet-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstogg.dll b/Output/x64/gstreamer/libgstogg.dll
index e79f78a5..ddfb2afc 100644
Binary files a/Output/x64/gstreamer/libgstogg.dll and b/Output/x64/gstreamer/libgstogg.dll differ
diff --git a/Output/x64/gstreamer/libgstopus.dll b/Output/x64/gstreamer/libgstopus.dll
index 96b359f8..7e9693fb 100644
Binary files a/Output/x64/gstreamer/libgstopus.dll and b/Output/x64/gstreamer/libgstopus.dll differ
diff --git a/Output/x64/gstreamer/libgstpango.dll b/Output/x64/gstreamer/libgstpango.dll
index afb07f67..9f5aca51 100644
Binary files a/Output/x64/gstreamer/libgstpango.dll and b/Output/x64/gstreamer/libgstpango.dll differ
diff --git a/Output/x64/gstreamer/libgstpbutils-1.0-0.dll b/Output/x64/gstreamer/libgstpbutils-1.0-0.dll
index 9cb3eb81..4707f42e 100644
Binary files a/Output/x64/gstreamer/libgstpbutils-1.0-0.dll and b/Output/x64/gstreamer/libgstpbutils-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstpcapparse.dll b/Output/x64/gstreamer/libgstpcapparse.dll
index 100eddee..21a38916 100644
Binary files a/Output/x64/gstreamer/libgstpcapparse.dll and b/Output/x64/gstreamer/libgstpcapparse.dll differ
diff --git a/Output/x64/gstreamer/libgstphotography-1.0-0.dll b/Output/x64/gstreamer/libgstphotography-1.0-0.dll
index e03b2adc..f81715bd 100644
Binary files a/Output/x64/gstreamer/libgstphotography-1.0-0.dll and b/Output/x64/gstreamer/libgstphotography-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstplayback.dll b/Output/x64/gstreamer/libgstplayback.dll
index 933db878..a9fe4240 100644
Binary files a/Output/x64/gstreamer/libgstplayback.dll and b/Output/x64/gstreamer/libgstplayback.dll differ
diff --git a/Output/x64/gstreamer/libgstpng.dll b/Output/x64/gstreamer/libgstpng.dll
index 80ea95a9..1ef950a3 100644
Binary files a/Output/x64/gstreamer/libgstpng.dll and b/Output/x64/gstreamer/libgstpng.dll differ
diff --git a/Output/x64/gstreamer/libgstpnm.dll b/Output/x64/gstreamer/libgstpnm.dll
index 83556085..3413c0d4 100644
Binary files a/Output/x64/gstreamer/libgstpnm.dll and b/Output/x64/gstreamer/libgstpnm.dll differ
diff --git a/Output/x64/gstreamer/libgstrawparse.dll b/Output/x64/gstreamer/libgstrawparse.dll
index 6d08881f..fde08be7 100644
Binary files a/Output/x64/gstreamer/libgstrawparse.dll and b/Output/x64/gstreamer/libgstrawparse.dll differ
diff --git a/Output/x64/gstreamer/libgstreamer-1.0-0.dll b/Output/x64/gstreamer/libgstreamer-1.0-0.dll
index 64de5551..fd28d6da 100644
Binary files a/Output/x64/gstreamer/libgstreamer-1.0-0.dll and b/Output/x64/gstreamer/libgstreamer-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstremovesilence.dll b/Output/x64/gstreamer/libgstremovesilence.dll
index 118ba4b7..217836ad 100644
Binary files a/Output/x64/gstreamer/libgstremovesilence.dll and b/Output/x64/gstreamer/libgstremovesilence.dll differ
diff --git a/Output/x64/gstreamer/libgstreplaygain.dll b/Output/x64/gstreamer/libgstreplaygain.dll
index ceb41c54..ac319f4d 100644
Binary files a/Output/x64/gstreamer/libgstreplaygain.dll and b/Output/x64/gstreamer/libgstreplaygain.dll differ
diff --git a/Output/x64/gstreamer/libgstresindvd.dll b/Output/x64/gstreamer/libgstresindvd.dll
index d0805f96..b655c9f7 100644
Binary files a/Output/x64/gstreamer/libgstresindvd.dll and b/Output/x64/gstreamer/libgstresindvd.dll differ
diff --git a/Output/x64/gstreamer/libgstriff-1.0-0.dll b/Output/x64/gstreamer/libgstriff-1.0-0.dll
index 270fb8d5..9e3ba8cd 100644
Binary files a/Output/x64/gstreamer/libgstriff-1.0-0.dll and b/Output/x64/gstreamer/libgstriff-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstrmdemux.dll b/Output/x64/gstreamer/libgstrmdemux.dll
index 22a89bdc..1574c885 100644
Binary files a/Output/x64/gstreamer/libgstrmdemux.dll and b/Output/x64/gstreamer/libgstrmdemux.dll differ
diff --git a/Output/x64/gstreamer/libgstrtp-1.0-0.dll b/Output/x64/gstreamer/libgstrtp-1.0-0.dll
index c5c708d4..ac5b0217 100644
Binary files a/Output/x64/gstreamer/libgstrtp-1.0-0.dll and b/Output/x64/gstreamer/libgstrtp-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstrtp.dll b/Output/x64/gstreamer/libgstrtp.dll
index f5ec2961..c1251e30 100644
Binary files a/Output/x64/gstreamer/libgstrtp.dll and b/Output/x64/gstreamer/libgstrtp.dll differ
diff --git a/Output/x64/gstreamer/libgstrtpmanager.dll b/Output/x64/gstreamer/libgstrtpmanager.dll
index b993391b..be15b958 100644
Binary files a/Output/x64/gstreamer/libgstrtpmanager.dll and b/Output/x64/gstreamer/libgstrtpmanager.dll differ
diff --git a/Output/x64/gstreamer/libgstrtpmux.dll b/Output/x64/gstreamer/libgstrtpmux.dll
deleted file mode 100644
index ece76be5..00000000
Binary files a/Output/x64/gstreamer/libgstrtpmux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrtpvp8.dll b/Output/x64/gstreamer/libgstrtpvp8.dll
deleted file mode 100644
index 12cae8a3..00000000
Binary files a/Output/x64/gstreamer/libgstrtpvp8.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrtsp-1.0-0.dll b/Output/x64/gstreamer/libgstrtsp-1.0-0.dll
index 647f77f1..e1bce28d 100644
Binary files a/Output/x64/gstreamer/libgstrtsp-1.0-0.dll and b/Output/x64/gstreamer/libgstrtsp-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstrtsp.dll b/Output/x64/gstreamer/libgstrtsp.dll
index 705fce03..6ffdac1e 100644
Binary files a/Output/x64/gstreamer/libgstrtsp.dll and b/Output/x64/gstreamer/libgstrtsp.dll differ
diff --git a/Output/x64/gstreamer/libgstscaletempoplugin.dll b/Output/x64/gstreamer/libgstscaletempoplugin.dll
index 8424da44..0a759969 100644
Binary files a/Output/x64/gstreamer/libgstscaletempoplugin.dll and b/Output/x64/gstreamer/libgstscaletempoplugin.dll differ
diff --git a/Output/x64/gstreamer/libgstschro.dll b/Output/x64/gstreamer/libgstschro.dll
index cbffd70f..502a92d0 100644
Binary files a/Output/x64/gstreamer/libgstschro.dll and b/Output/x64/gstreamer/libgstschro.dll differ
diff --git a/Output/x64/gstreamer/libgstsdp-1.0-0.dll b/Output/x64/gstreamer/libgstsdp-1.0-0.dll
index a3771317..ca9ef0b4 100644
Binary files a/Output/x64/gstreamer/libgstsdp-1.0-0.dll and b/Output/x64/gstreamer/libgstsdp-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstsdpelem.dll b/Output/x64/gstreamer/libgstsdpelem.dll
index d0463960..c4329857 100644
Binary files a/Output/x64/gstreamer/libgstsdpelem.dll and b/Output/x64/gstreamer/libgstsdpelem.dll differ
diff --git a/Output/x64/gstreamer/libgstsegmentclip.dll b/Output/x64/gstreamer/libgstsegmentclip.dll
index 954f52b4..38fe57b8 100644
Binary files a/Output/x64/gstreamer/libgstsegmentclip.dll and b/Output/x64/gstreamer/libgstsegmentclip.dll differ
diff --git a/Output/x64/gstreamer/libgstshapewipe.dll b/Output/x64/gstreamer/libgstshapewipe.dll
index 6a0936aa..d5c668f3 100644
Binary files a/Output/x64/gstreamer/libgstshapewipe.dll and b/Output/x64/gstreamer/libgstshapewipe.dll differ
diff --git a/Output/x64/gstreamer/libgstsignalprocessor-1.0-0.dll b/Output/x64/gstreamer/libgstsignalprocessor-1.0-0.dll
deleted file mode 100644
index 7f33c919..00000000
Binary files a/Output/x64/gstreamer/libgstsignalprocessor-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsiren.dll b/Output/x64/gstreamer/libgstsiren.dll
index 159da8be..ff076dbf 100644
Binary files a/Output/x64/gstreamer/libgstsiren.dll and b/Output/x64/gstreamer/libgstsiren.dll differ
diff --git a/Output/x64/gstreamer/libgstsmooth.dll b/Output/x64/gstreamer/libgstsmooth.dll
index 113cf2b0..372ab1b8 100644
Binary files a/Output/x64/gstreamer/libgstsmooth.dll and b/Output/x64/gstreamer/libgstsmooth.dll differ
diff --git a/Output/x64/gstreamer/libgstsmpte.dll b/Output/x64/gstreamer/libgstsmpte.dll
index 09a16592..614aadb7 100644
Binary files a/Output/x64/gstreamer/libgstsmpte.dll and b/Output/x64/gstreamer/libgstsmpte.dll differ
diff --git a/Output/x64/gstreamer/libgstsouphttpsrc.dll b/Output/x64/gstreamer/libgstsouphttpsrc.dll
index 62d64579..734edcf3 100644
Binary files a/Output/x64/gstreamer/libgstsouphttpsrc.dll and b/Output/x64/gstreamer/libgstsouphttpsrc.dll differ
diff --git a/Output/x64/gstreamer/libgstspectrum.dll b/Output/x64/gstreamer/libgstspectrum.dll
index c83f596d..46794d6d 100644
Binary files a/Output/x64/gstreamer/libgstspectrum.dll and b/Output/x64/gstreamer/libgstspectrum.dll differ
diff --git a/Output/x64/gstreamer/libgstspeed.dll b/Output/x64/gstreamer/libgstspeed.dll
index 85e052f0..f2cc2f3e 100644
Binary files a/Output/x64/gstreamer/libgstspeed.dll and b/Output/x64/gstreamer/libgstspeed.dll differ
diff --git a/Output/x64/gstreamer/libgstspeex.dll b/Output/x64/gstreamer/libgstspeex.dll
index 6b17a43b..049f206d 100644
Binary files a/Output/x64/gstreamer/libgstspeex.dll and b/Output/x64/gstreamer/libgstspeex.dll differ
diff --git a/Output/x64/gstreamer/libgstsubenc.dll b/Output/x64/gstreamer/libgstsubenc.dll
index 360cd077..9adc6545 100644
Binary files a/Output/x64/gstreamer/libgstsubenc.dll and b/Output/x64/gstreamer/libgstsubenc.dll differ
diff --git a/Output/x64/gstreamer/libgstsubparse.dll b/Output/x64/gstreamer/libgstsubparse.dll
index 0537023b..5e87eb87 100644
Binary files a/Output/x64/gstreamer/libgstsubparse.dll and b/Output/x64/gstreamer/libgstsubparse.dll differ
diff --git a/Output/x64/gstreamer/libgsttag-1.0-0.dll b/Output/x64/gstreamer/libgsttag-1.0-0.dll
index 0ae7647b..ad3cee28 100644
Binary files a/Output/x64/gstreamer/libgsttag-1.0-0.dll and b/Output/x64/gstreamer/libgsttag-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgsttaglib.dll b/Output/x64/gstreamer/libgsttaglib.dll
index 687a4e21..f98cfdbd 100644
Binary files a/Output/x64/gstreamer/libgsttaglib.dll and b/Output/x64/gstreamer/libgsttaglib.dll differ
diff --git a/Output/x64/gstreamer/libgsttcp.dll b/Output/x64/gstreamer/libgsttcp.dll
index decdab47..e7d07f4f 100644
Binary files a/Output/x64/gstreamer/libgsttcp.dll and b/Output/x64/gstreamer/libgsttcp.dll differ
diff --git a/Output/x64/gstreamer/libgsttheora.dll b/Output/x64/gstreamer/libgsttheora.dll
index 5529919f..9a3bd84b 100644
Binary files a/Output/x64/gstreamer/libgsttheora.dll and b/Output/x64/gstreamer/libgsttheora.dll differ
diff --git a/Output/x64/gstreamer/libgsttypefindfunctions.dll b/Output/x64/gstreamer/libgsttypefindfunctions.dll
index 6f5c36c4..2a964ed5 100644
Binary files a/Output/x64/gstreamer/libgsttypefindfunctions.dll and b/Output/x64/gstreamer/libgsttypefindfunctions.dll differ
diff --git a/Output/x64/gstreamer/libgstudp.dll b/Output/x64/gstreamer/libgstudp.dll
index 2892aafa..dfb67a65 100644
Binary files a/Output/x64/gstreamer/libgstudp.dll and b/Output/x64/gstreamer/libgstudp.dll differ
diff --git a/Output/x64/gstreamer/libgstvideo-1.0-0.dll b/Output/x64/gstreamer/libgstvideo-1.0-0.dll
index 841a0f3c..d62d1fa9 100644
Binary files a/Output/x64/gstreamer/libgstvideo-1.0-0.dll and b/Output/x64/gstreamer/libgstvideo-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libgstvideobox.dll b/Output/x64/gstreamer/libgstvideobox.dll
index 6d08eac2..a83878e8 100644
Binary files a/Output/x64/gstreamer/libgstvideobox.dll and b/Output/x64/gstreamer/libgstvideobox.dll differ
diff --git a/Output/x64/gstreamer/libgstvideoconvert.dll b/Output/x64/gstreamer/libgstvideoconvert.dll
index 1378b21b..55fafe60 100644
Binary files a/Output/x64/gstreamer/libgstvideoconvert.dll and b/Output/x64/gstreamer/libgstvideoconvert.dll differ
diff --git a/Output/x64/gstreamer/libgstvideocrop.dll b/Output/x64/gstreamer/libgstvideocrop.dll
index 21e46092..6bffb58f 100644
Binary files a/Output/x64/gstreamer/libgstvideocrop.dll and b/Output/x64/gstreamer/libgstvideocrop.dll differ
diff --git a/Output/x64/gstreamer/libgstvideofilter.dll b/Output/x64/gstreamer/libgstvideofilter.dll
index 7f803d79..2794659c 100644
Binary files a/Output/x64/gstreamer/libgstvideofilter.dll and b/Output/x64/gstreamer/libgstvideofilter.dll differ
diff --git a/Output/x64/gstreamer/libgstvideomixer.dll b/Output/x64/gstreamer/libgstvideomixer.dll
index c0588761..8afff8b8 100644
Binary files a/Output/x64/gstreamer/libgstvideomixer.dll and b/Output/x64/gstreamer/libgstvideomixer.dll differ
diff --git a/Output/x64/gstreamer/libgstvideoparsersbad.dll b/Output/x64/gstreamer/libgstvideoparsersbad.dll
index 5075f9f4..accf5150 100644
Binary files a/Output/x64/gstreamer/libgstvideoparsersbad.dll and b/Output/x64/gstreamer/libgstvideoparsersbad.dll differ
diff --git a/Output/x64/gstreamer/libgstvideorate.dll b/Output/x64/gstreamer/libgstvideorate.dll
index 5ca6a5de..fde189bf 100644
Binary files a/Output/x64/gstreamer/libgstvideorate.dll and b/Output/x64/gstreamer/libgstvideorate.dll differ
diff --git a/Output/x64/gstreamer/libgstvideoscale.dll b/Output/x64/gstreamer/libgstvideoscale.dll
index 2e6eeaed..2959a67c 100644
Binary files a/Output/x64/gstreamer/libgstvideoscale.dll and b/Output/x64/gstreamer/libgstvideoscale.dll differ
diff --git a/Output/x64/gstreamer/libgstvideotestsrc.dll b/Output/x64/gstreamer/libgstvideotestsrc.dll
index 88cf8f23..1798302a 100644
Binary files a/Output/x64/gstreamer/libgstvideotestsrc.dll and b/Output/x64/gstreamer/libgstvideotestsrc.dll differ
diff --git a/Output/x64/gstreamer/libgstvolume.dll b/Output/x64/gstreamer/libgstvolume.dll
index 7af96cdb..2b30281a 100644
Binary files a/Output/x64/gstreamer/libgstvolume.dll and b/Output/x64/gstreamer/libgstvolume.dll differ
diff --git a/Output/x64/gstreamer/libgstvorbis.dll b/Output/x64/gstreamer/libgstvorbis.dll
index f52aa5bd..0c64ac52 100644
Binary files a/Output/x64/gstreamer/libgstvorbis.dll and b/Output/x64/gstreamer/libgstvorbis.dll differ
diff --git a/Output/x64/gstreamer/libgstvpx.dll b/Output/x64/gstreamer/libgstvpx.dll
index a0354257..0137a047 100644
Binary files a/Output/x64/gstreamer/libgstvpx.dll and b/Output/x64/gstreamer/libgstvpx.dll differ
diff --git a/Output/x64/gstreamer/libgstwaveformsink.dll b/Output/x64/gstreamer/libgstwaveformsink.dll
deleted file mode 100644
index 3e667a9c..00000000
Binary files a/Output/x64/gstreamer/libgstwaveformsink.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstwavenc.dll b/Output/x64/gstreamer/libgstwavenc.dll
index 843db1b7..7747c35f 100644
Binary files a/Output/x64/gstreamer/libgstwavenc.dll and b/Output/x64/gstreamer/libgstwavenc.dll differ
diff --git a/Output/x64/gstreamer/libgstwavpack.dll b/Output/x64/gstreamer/libgstwavpack.dll
index fa48c92c..ad971582 100644
Binary files a/Output/x64/gstreamer/libgstwavpack.dll and b/Output/x64/gstreamer/libgstwavpack.dll differ
diff --git a/Output/x64/gstreamer/libgstwavparse.dll b/Output/x64/gstreamer/libgstwavparse.dll
index f735231e..a194542a 100644
Binary files a/Output/x64/gstreamer/libgstwavparse.dll and b/Output/x64/gstreamer/libgstwavparse.dll differ
diff --git a/Output/x64/gstreamer/libgstx264.dll b/Output/x64/gstreamer/libgstx264.dll
new file mode 100644
index 00000000..72e7ce5d
Binary files /dev/null and b/Output/x64/gstreamer/libgstx264.dll differ
diff --git a/Output/x64/gstreamer/libgstxingmux.dll b/Output/x64/gstreamer/libgstxingmux.dll
index 33c8f0cc..d79ae5bd 100644
Binary files a/Output/x64/gstreamer/libgstxingmux.dll and b/Output/x64/gstreamer/libgstxingmux.dll differ
diff --git a/Output/x64/gstreamer/libgsty4mdec.dll b/Output/x64/gstreamer/libgsty4mdec.dll
index 52083894..992cdd85 100644
Binary files a/Output/x64/gstreamer/libgsty4mdec.dll and b/Output/x64/gstreamer/libgsty4mdec.dll differ
diff --git a/Output/x64/gstreamer/libgsty4menc.dll b/Output/x64/gstreamer/libgsty4menc.dll
index 97d658cf..e1173d7a 100644
Binary files a/Output/x64/gstreamer/libgsty4menc.dll and b/Output/x64/gstreamer/libgsty4menc.dll differ
diff --git a/Output/x64/gstreamer/libgthread-2.0-0.dll b/Output/x64/gstreamer/libgthread-2.0-0.dll
index 79e809f7..a6bbbcad 100644
Binary files a/Output/x64/gstreamer/libgthread-2.0-0.dll and b/Output/x64/gstreamer/libgthread-2.0-0.dll differ
diff --git a/Output/x64/gstreamer/libhogweed-2-2.dll b/Output/x64/gstreamer/libhogweed-2-2.dll
index 35290f4b..f99fe527 100644
Binary files a/Output/x64/gstreamer/libhogweed-2-2.dll and b/Output/x64/gstreamer/libhogweed-2-2.dll differ
diff --git a/Output/x64/gstreamer/libiconv-2.dll b/Output/x64/gstreamer/libiconv-2.dll
index cff071f6..525b96ee 100644
Binary files a/Output/x64/gstreamer/libiconv-2.dll and b/Output/x64/gstreamer/libiconv-2.dll differ
diff --git a/Output/x64/gstreamer/libintl-8.dll b/Output/x64/gstreamer/libintl-8.dll
index c3083aea..c4f8427c 100644
Binary files a/Output/x64/gstreamer/libintl-8.dll and b/Output/x64/gstreamer/libintl-8.dll differ
diff --git a/Output/x64/gstreamer/libjasper-1.dll b/Output/x64/gstreamer/libjasper-1.dll
deleted file mode 100644
index 4f681a41..00000000
Binary files a/Output/x64/gstreamer/libjasper-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libjpeg-8.dll b/Output/x64/gstreamer/libjpeg-8.dll
index 51941dfb..545f9efc 100644
Binary files a/Output/x64/gstreamer/libjpeg-8.dll and b/Output/x64/gstreamer/libjpeg-8.dll differ
diff --git a/Output/x64/gstreamer/libkate-1.dll b/Output/x64/gstreamer/libkate-1.dll
index 0ca86381..c53dd128 100644
Binary files a/Output/x64/gstreamer/libkate-1.dll and b/Output/x64/gstreamer/libkate-1.dll differ
diff --git a/Output/x64/gstreamer/libmms-0.dll b/Output/x64/gstreamer/libmms-0.dll
index 1256f441..d510509f 100644
Binary files a/Output/x64/gstreamer/libmms-0.dll and b/Output/x64/gstreamer/libmms-0.dll differ
diff --git a/Output/x64/gstreamer/libmpeg2-0.dll b/Output/x64/gstreamer/libmpeg2-0.dll
index e0d0fa8a..1d2b87a8 100644
Binary files a/Output/x64/gstreamer/libmpeg2-0.dll and b/Output/x64/gstreamer/libmpeg2-0.dll differ
diff --git a/Output/x64/gstreamer/libmpeg2convert-0.dll b/Output/x64/gstreamer/libmpeg2convert-0.dll
index 31b667a1..f212e850 100644
Binary files a/Output/x64/gstreamer/libmpeg2convert-0.dll and b/Output/x64/gstreamer/libmpeg2convert-0.dll differ
diff --git a/Output/x64/gstreamer/libnettle-4-4.dll b/Output/x64/gstreamer/libnettle-4-4.dll
index aa3c9360..e991bad2 100644
Binary files a/Output/x64/gstreamer/libnettle-4-4.dll and b/Output/x64/gstreamer/libnettle-4-4.dll differ
diff --git a/Output/x64/gstreamer/libogg-0.dll b/Output/x64/gstreamer/libogg-0.dll
index 12c376da..f247f6c6 100644
Binary files a/Output/x64/gstreamer/libogg-0.dll and b/Output/x64/gstreamer/libogg-0.dll differ
diff --git a/Output/x64/gstreamer/liboggkate-1.dll b/Output/x64/gstreamer/liboggkate-1.dll
index 8b83fdcc..562c6586 100644
Binary files a/Output/x64/gstreamer/liboggkate-1.dll and b/Output/x64/gstreamer/liboggkate-1.dll differ
diff --git a/Output/x64/gstreamer/libopencore-amrnb-0.dll b/Output/x64/gstreamer/libopencore-amrnb-0.dll
index b6295d0d..408b4365 100644
Binary files a/Output/x64/gstreamer/libopencore-amrnb-0.dll and b/Output/x64/gstreamer/libopencore-amrnb-0.dll differ
diff --git a/Output/x64/gstreamer/libopencore-amrwb-0.dll b/Output/x64/gstreamer/libopencore-amrwb-0.dll
index cd345b87..99f59d7d 100644
Binary files a/Output/x64/gstreamer/libopencore-amrwb-0.dll and b/Output/x64/gstreamer/libopencore-amrwb-0.dll differ
diff --git a/Output/x64/gstreamer/libopus-0.dll b/Output/x64/gstreamer/libopus-0.dll
index d712859e..95237c43 100644
Binary files a/Output/x64/gstreamer/libopus-0.dll and b/Output/x64/gstreamer/libopus-0.dll differ
diff --git a/Output/x64/gstreamer/liborc-0.4-0.dll b/Output/x64/gstreamer/liborc-0.4-0.dll
index ed3d517e..fe08479d 100644
Binary files a/Output/x64/gstreamer/liborc-0.4-0.dll and b/Output/x64/gstreamer/liborc-0.4-0.dll differ
diff --git a/Output/x64/gstreamer/liborc-test-0.4-0.dll b/Output/x64/gstreamer/liborc-test-0.4-0.dll
index 2acf2386..b13d2787 100644
Binary files a/Output/x64/gstreamer/liborc-test-0.4-0.dll and b/Output/x64/gstreamer/liborc-test-0.4-0.dll differ
diff --git a/Output/x64/gstreamer/libpango-1.0-0.dll b/Output/x64/gstreamer/libpango-1.0-0.dll
index 5352b5ba..5284e414 100644
Binary files a/Output/x64/gstreamer/libpango-1.0-0.dll and b/Output/x64/gstreamer/libpango-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libpangocairo-1.0-0.dll b/Output/x64/gstreamer/libpangocairo-1.0-0.dll
index bdb219e6..47e96ff3 100644
Binary files a/Output/x64/gstreamer/libpangocairo-1.0-0.dll and b/Output/x64/gstreamer/libpangocairo-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libpangoft2-1.0-0.dll b/Output/x64/gstreamer/libpangoft2-1.0-0.dll
index 549a26d0..b6c1a482 100644
Binary files a/Output/x64/gstreamer/libpangoft2-1.0-0.dll and b/Output/x64/gstreamer/libpangoft2-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libpangowin32-1.0-0.dll b/Output/x64/gstreamer/libpangowin32-1.0-0.dll
index ed883546..8fd59964 100644
Binary files a/Output/x64/gstreamer/libpangowin32-1.0-0.dll and b/Output/x64/gstreamer/libpangowin32-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libpixman-1-0.dll b/Output/x64/gstreamer/libpixman-1-0.dll
index 9728181b..77861e8c 100644
Binary files a/Output/x64/gstreamer/libpixman-1-0.dll and b/Output/x64/gstreamer/libpixman-1-0.dll differ
diff --git a/Output/x64/gstreamer/libpng15-15.dll b/Output/x64/gstreamer/libpng15-15.dll
index ae3dd680..365c1092 100644
Binary files a/Output/x64/gstreamer/libpng15-15.dll and b/Output/x64/gstreamer/libpng15-15.dll differ
diff --git a/Output/x64/gstreamer/libschroedinger-1.0-0.dll b/Output/x64/gstreamer/libschroedinger-1.0-0.dll
index c582f4d6..cde8841e 100644
Binary files a/Output/x64/gstreamer/libschroedinger-1.0-0.dll and b/Output/x64/gstreamer/libschroedinger-1.0-0.dll differ
diff --git a/Output/x64/gstreamer/libsoup-2.4-1.dll b/Output/x64/gstreamer/libsoup-2.4-1.dll
index e04f6af4..49ff8507 100644
Binary files a/Output/x64/gstreamer/libsoup-2.4-1.dll and b/Output/x64/gstreamer/libsoup-2.4-1.dll differ
diff --git a/Output/x64/gstreamer/libspeex-1.dll b/Output/x64/gstreamer/libspeex-1.dll
index 82f158f6..c566a3d2 100644
Binary files a/Output/x64/gstreamer/libspeex-1.dll and b/Output/x64/gstreamer/libspeex-1.dll differ
diff --git a/Output/x64/gstreamer/libspeexdsp-1.dll b/Output/x64/gstreamer/libspeexdsp-1.dll
index 95e6f434..f129899a 100644
Binary files a/Output/x64/gstreamer/libspeexdsp-1.dll and b/Output/x64/gstreamer/libspeexdsp-1.dll differ
diff --git a/Output/x64/gstreamer/libstdc++-6.dll b/Output/x64/gstreamer/libstdc++-6.dll
index 14bec120..f21f9d04 100644
Binary files a/Output/x64/gstreamer/libstdc++-6.dll and b/Output/x64/gstreamer/libstdc++-6.dll differ
diff --git a/Output/x64/gstreamer/libtag.dll b/Output/x64/gstreamer/libtag.dll
index 99716141..51e98425 100644
Binary files a/Output/x64/gstreamer/libtag.dll and b/Output/x64/gstreamer/libtag.dll differ
diff --git a/Output/x64/gstreamer/libtag_c.dll b/Output/x64/gstreamer/libtag_c.dll
index a3433c02..91edaab8 100644
Binary files a/Output/x64/gstreamer/libtag_c.dll and b/Output/x64/gstreamer/libtag_c.dll differ
diff --git a/Output/x64/gstreamer/libtasn1-3.dll b/Output/x64/gstreamer/libtasn1-3.dll
index 67057c7a..9d5e7c98 100644
Binary files a/Output/x64/gstreamer/libtasn1-3.dll and b/Output/x64/gstreamer/libtasn1-3.dll differ
diff --git a/Output/x64/gstreamer/libtheora-0.dll b/Output/x64/gstreamer/libtheora-0.dll
index 6a993d4b..9444654c 100644
Binary files a/Output/x64/gstreamer/libtheora-0.dll and b/Output/x64/gstreamer/libtheora-0.dll differ
diff --git a/Output/x64/gstreamer/libtheoradec-1.dll b/Output/x64/gstreamer/libtheoradec-1.dll
index 58dbab54..5695322d 100644
Binary files a/Output/x64/gstreamer/libtheoradec-1.dll and b/Output/x64/gstreamer/libtheoradec-1.dll differ
diff --git a/Output/x64/gstreamer/libtheoraenc-1.dll b/Output/x64/gstreamer/libtheoraenc-1.dll
index 785b7457..97f6d413 100644
Binary files a/Output/x64/gstreamer/libtheoraenc-1.dll and b/Output/x64/gstreamer/libtheoraenc-1.dll differ
diff --git a/Output/x64/gstreamer/libtiff-5.dll b/Output/x64/gstreamer/libtiff-5.dll
index 83bab4a7..2946cbbf 100644
Binary files a/Output/x64/gstreamer/libtiff-5.dll and b/Output/x64/gstreamer/libtiff-5.dll differ
diff --git a/Output/x64/gstreamer/libvisual-0.4-0.dll b/Output/x64/gstreamer/libvisual-0.4-0.dll
index 6e203113..41380ba0 100644
Binary files a/Output/x64/gstreamer/libvisual-0.4-0.dll and b/Output/x64/gstreamer/libvisual-0.4-0.dll differ
diff --git a/Output/x64/gstreamer/libvorbis-0.dll b/Output/x64/gstreamer/libvorbis-0.dll
index 203f6905..16ed64eb 100644
Binary files a/Output/x64/gstreamer/libvorbis-0.dll and b/Output/x64/gstreamer/libvorbis-0.dll differ
diff --git a/Output/x64/gstreamer/libvorbisenc-2.dll b/Output/x64/gstreamer/libvorbisenc-2.dll
index 2085b45b..74076909 100644
Binary files a/Output/x64/gstreamer/libvorbisenc-2.dll and b/Output/x64/gstreamer/libvorbisenc-2.dll differ
diff --git a/Output/x64/gstreamer/libvorbisfile-3.dll b/Output/x64/gstreamer/libvorbisfile-3.dll
index 6a0fc95a..f72cc6b7 100644
Binary files a/Output/x64/gstreamer/libvorbisfile-3.dll and b/Output/x64/gstreamer/libvorbisfile-3.dll differ
diff --git a/Output/x64/gstreamer/libwavpack-1.dll b/Output/x64/gstreamer/libwavpack-1.dll
index 438356fe..eda6f846 100644
Binary files a/Output/x64/gstreamer/libwavpack-1.dll and b/Output/x64/gstreamer/libwavpack-1.dll differ
diff --git a/Output/x64/gstreamer/libwinpthread-1.dll b/Output/x64/gstreamer/libwinpthread-1.dll
new file mode 100644
index 00000000..e517c82d
Binary files /dev/null and b/Output/x64/gstreamer/libwinpthread-1.dll differ
diff --git a/Output/x64/gstreamer/libx264-125.dll b/Output/x64/gstreamer/libx264-125.dll
new file mode 100644
index 00000000..661089e3
Binary files /dev/null and b/Output/x64/gstreamer/libx264-125.dll differ
diff --git a/Output/x64/gstreamer/libxml2-2.dll b/Output/x64/gstreamer/libxml2-2.dll
index 86e22cb5..6cea9673 100644
Binary files a/Output/x64/gstreamer/libxml2-2.dll and b/Output/x64/gstreamer/libxml2-2.dll differ
diff --git a/Output/x64/gstreamer/libz.dll b/Output/x64/gstreamer/libz.dll
index a67b4e9c..5daeaade 100644
Binary files a/Output/x64/gstreamer/libz.dll and b/Output/x64/gstreamer/libz.dll differ
diff --git a/Output/x64/gstreamer/pthreadGC2-w64.dll b/Output/x64/gstreamer/pthreadGC2-w64.dll
deleted file mode 100644
index 59cd89f1..00000000
Binary files a/Output/x64/gstreamer/pthreadGC2-w64.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/x86_64-w64-mingw32-gst-inspect-1.0.exe b/Output/x64/gstreamer/x86_64-w64-mingw32-gst-inspect-1.0.exe
deleted file mode 100644
index a3133322..00000000
Binary files a/Output/x64/gstreamer/x86_64-w64-mingw32-gst-inspect-1.0.exe and /dev/null differ
diff --git a/Output/x64/gstreamer/x86_64-w64-mingw32-gst-launch-1.0.exe b/Output/x64/gstreamer/x86_64-w64-mingw32-gst-launch-1.0.exe
deleted file mode 100644
index 9d640961..00000000
Binary files a/Output/x64/gstreamer/x86_64-w64-mingw32-gst-launch-1.0.exe and /dev/null differ
diff --git a/Output/x64/hidapi.dll b/Output/x64/hidapi.dll
index 9e65d33a..54422765 100644
Binary files a/Output/x64/hidapi.dll and b/Output/x64/hidapi.dll differ
diff --git a/Output/x86/gstreamer/libFLAC-8.dll b/Output/x86/gstreamer/libFLAC-8.dll
index e0e00543..f18d03ba 100644
Binary files a/Output/x86/gstreamer/libFLAC-8.dll and b/Output/x86/gstreamer/libFLAC-8.dll differ
diff --git a/Output/x86/gstreamer/liba52-0.dll b/Output/x86/gstreamer/liba52-0.dll
index a22ef1d1..0ca827a8 100644
Binary files a/Output/x86/gstreamer/liba52-0.dll and b/Output/x86/gstreamer/liba52-0.dll differ
diff --git a/Output/x86/gstreamer/libass-4.dll b/Output/x86/gstreamer/libass-4.dll
index 4065bd16..652e351c 100644
Binary files a/Output/x86/gstreamer/libass-4.dll and b/Output/x86/gstreamer/libass-4.dll differ
diff --git a/Output/x86/gstreamer/libbz2.dll b/Output/x86/gstreamer/libbz2.dll
index 0c995786..bc4906bf 100644
Binary files a/Output/x86/gstreamer/libbz2.dll and b/Output/x86/gstreamer/libbz2.dll differ
diff --git a/Output/x86/gstreamer/libcairo-2.dll b/Output/x86/gstreamer/libcairo-2.dll
index d2034400..41d46bab 100644
Binary files a/Output/x86/gstreamer/libcairo-2.dll and b/Output/x86/gstreamer/libcairo-2.dll differ
diff --git a/Output/x86/gstreamer/libcairo-gobject-2.dll b/Output/x86/gstreamer/libcairo-gobject-2.dll
index 09a3abfd..254ad744 100644
Binary files a/Output/x86/gstreamer/libcairo-gobject-2.dll and b/Output/x86/gstreamer/libcairo-gobject-2.dll differ
diff --git a/Output/x86/gstreamer/libcairo-script-interpreter-2.dll b/Output/x86/gstreamer/libcairo-script-interpreter-2.dll
index b4a2f7b2..cb94ab63 100644
Binary files a/Output/x86/gstreamer/libcairo-script-interpreter-2.dll and b/Output/x86/gstreamer/libcairo-script-interpreter-2.dll differ
diff --git a/Output/x86/gstreamer/libcharset-1.dll b/Output/x86/gstreamer/libcharset-1.dll
index b0075e55..adf7ff56 100644
Binary files a/Output/x86/gstreamer/libcharset-1.dll and b/Output/x86/gstreamer/libcharset-1.dll differ
diff --git a/Output/x86/gstreamer/libdca-0.dll b/Output/x86/gstreamer/libdca-0.dll
index 06816f47..810ec4ad 100644
Binary files a/Output/x86/gstreamer/libdca-0.dll and b/Output/x86/gstreamer/libdca-0.dll differ
diff --git a/Output/x86/gstreamer/libdv-4.dll b/Output/x86/gstreamer/libdv-4.dll
index ed40c157..f4550758 100644
Binary files a/Output/x86/gstreamer/libdv-4.dll and b/Output/x86/gstreamer/libdv-4.dll differ
diff --git a/Output/x86/gstreamer/libdvdnav-4.dll b/Output/x86/gstreamer/libdvdnav-4.dll
index cd767f6f..9d6b2708 100644
Binary files a/Output/x86/gstreamer/libdvdnav-4.dll and b/Output/x86/gstreamer/libdvdnav-4.dll differ
diff --git a/Output/x86/gstreamer/libdvdnavmini-4.dll b/Output/x86/gstreamer/libdvdnavmini-4.dll
index 5841a527..18b93733 100644
Binary files a/Output/x86/gstreamer/libdvdnavmini-4.dll and b/Output/x86/gstreamer/libdvdnavmini-4.dll differ
diff --git a/Output/x86/gstreamer/libdvdread-4.dll b/Output/x86/gstreamer/libdvdread-4.dll
index af0586db..792db099 100644
Binary files a/Output/x86/gstreamer/libdvdread-4.dll and b/Output/x86/gstreamer/libdvdread-4.dll differ
diff --git a/Output/x86/gstreamer/libexpat-1.dll b/Output/x86/gstreamer/libexpat-1.dll
index 627f7382..755a3191 100644
Binary files a/Output/x86/gstreamer/libexpat-1.dll and b/Output/x86/gstreamer/libexpat-1.dll differ
diff --git a/Output/x86/gstreamer/libfaad-2.dll b/Output/x86/gstreamer/libfaad-2.dll
index 28861278..8b530f21 100644
Binary files a/Output/x86/gstreamer/libfaad-2.dll and b/Output/x86/gstreamer/libfaad-2.dll differ
diff --git a/Output/x86/gstreamer/libffi-5.dll b/Output/x86/gstreamer/libffi-5.dll
deleted file mode 100644
index ae89c8a2..00000000
Binary files a/Output/x86/gstreamer/libffi-5.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libffi-6.dll b/Output/x86/gstreamer/libffi-6.dll
new file mode 100644
index 00000000..3b439f96
Binary files /dev/null and b/Output/x86/gstreamer/libffi-6.dll differ
diff --git a/Output/x86/gstreamer/libfontconfig-1.dll b/Output/x86/gstreamer/libfontconfig-1.dll
index e1573704..12384b6b 100644
Binary files a/Output/x86/gstreamer/libfontconfig-1.dll and b/Output/x86/gstreamer/libfontconfig-1.dll differ
diff --git a/Output/x86/gstreamer/libfreetype-6.dll b/Output/x86/gstreamer/libfreetype-6.dll
index 969ce4ea..2681a07f 100644
Binary files a/Output/x86/gstreamer/libfreetype-6.dll and b/Output/x86/gstreamer/libfreetype-6.dll differ
diff --git a/Output/x86/gstreamer/libfribidi-0.dll b/Output/x86/gstreamer/libfribidi-0.dll
index ba85b561..5ff8d465 100644
Binary files a/Output/x86/gstreamer/libfribidi-0.dll and b/Output/x86/gstreamer/libfribidi-0.dll differ
diff --git a/Output/x86/gstreamer/libgcc_s_sjlj-1.dll b/Output/x86/gstreamer/libgcc_s_sjlj-1.dll
index 0e1c64f3..d7d77a76 100644
Binary files a/Output/x86/gstreamer/libgcc_s_sjlj-1.dll and b/Output/x86/gstreamer/libgcc_s_sjlj-1.dll differ
diff --git a/Output/x86/gstreamer/libgdk_pixbuf-2.0-0.dll b/Output/x86/gstreamer/libgdk_pixbuf-2.0-0.dll
index 7b0531e1..70f3e79f 100644
Binary files a/Output/x86/gstreamer/libgdk_pixbuf-2.0-0.dll and b/Output/x86/gstreamer/libgdk_pixbuf-2.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgio-2.0-0.dll b/Output/x86/gstreamer/libgio-2.0-0.dll
index a9f3cf77..159bc588 100644
Binary files a/Output/x86/gstreamer/libgio-2.0-0.dll and b/Output/x86/gstreamer/libgio-2.0-0.dll differ
diff --git a/Output/x86/gstreamer/libglib-2.0-0.dll b/Output/x86/gstreamer/libglib-2.0-0.dll
index 02846ed8..400805b4 100644
Binary files a/Output/x86/gstreamer/libglib-2.0-0.dll and b/Output/x86/gstreamer/libglib-2.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgmodule-2.0-0.dll b/Output/x86/gstreamer/libgmodule-2.0-0.dll
index ead44201..54c7a026 100644
Binary files a/Output/x86/gstreamer/libgmodule-2.0-0.dll and b/Output/x86/gstreamer/libgmodule-2.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgmp-10.dll b/Output/x86/gstreamer/libgmp-10.dll
deleted file mode 100644
index 6945a933..00000000
Binary files a/Output/x86/gstreamer/libgmp-10.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgmpxx-4.dll b/Output/x86/gstreamer/libgmpxx-4.dll
deleted file mode 100644
index f8f505a9..00000000
Binary files a/Output/x86/gstreamer/libgmpxx-4.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgnutls-28.dll b/Output/x86/gstreamer/libgnutls-28.dll
index 856a47d4..a2fc2320 100644
Binary files a/Output/x86/gstreamer/libgnutls-28.dll and b/Output/x86/gstreamer/libgnutls-28.dll differ
diff --git a/Output/x86/gstreamer/libgnutls-openssl-27.dll b/Output/x86/gstreamer/libgnutls-openssl-27.dll
index 487c616a..cff30817 100644
Binary files a/Output/x86/gstreamer/libgnutls-openssl-27.dll and b/Output/x86/gstreamer/libgnutls-openssl-27.dll differ
diff --git a/Output/x86/gstreamer/libgnutlsxx-28.dll b/Output/x86/gstreamer/libgnutlsxx-28.dll
index 248ec2a3..cfbe9cdb 100644
Binary files a/Output/x86/gstreamer/libgnutlsxx-28.dll and b/Output/x86/gstreamer/libgnutlsxx-28.dll differ
diff --git a/Output/x86/gstreamer/libgobject-2.0-0.dll b/Output/x86/gstreamer/libgobject-2.0-0.dll
index d1c8e3b9..7ade25ec 100644
Binary files a/Output/x86/gstreamer/libgobject-2.0-0.dll and b/Output/x86/gstreamer/libgobject-2.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgomp-1.dll b/Output/x86/gstreamer/libgomp-1.dll
new file mode 100644
index 00000000..7a50d33b
Binary files /dev/null and b/Output/x86/gstreamer/libgomp-1.dll differ
diff --git a/Output/x86/gstreamer/libgsta52dec.dll b/Output/x86/gstreamer/libgsta52dec.dll
index ea5fbc50..0674bc61 100644
Binary files a/Output/x86/gstreamer/libgsta52dec.dll and b/Output/x86/gstreamer/libgsta52dec.dll differ
diff --git a/Output/x86/gstreamer/libgstadder.dll b/Output/x86/gstreamer/libgstadder.dll
index b1f0c4c8..33784b7e 100644
Binary files a/Output/x86/gstreamer/libgstadder.dll and b/Output/x86/gstreamer/libgstadder.dll differ
diff --git a/Output/x86/gstreamer/libgstadpcmdec.dll b/Output/x86/gstreamer/libgstadpcmdec.dll
index 348a1995..85732dc4 100644
Binary files a/Output/x86/gstreamer/libgstadpcmdec.dll and b/Output/x86/gstreamer/libgstadpcmdec.dll differ
diff --git a/Output/x86/gstreamer/libgstadpcmenc.dll b/Output/x86/gstreamer/libgstadpcmenc.dll
index 6874da47..5541b423 100644
Binary files a/Output/x86/gstreamer/libgstadpcmenc.dll and b/Output/x86/gstreamer/libgstadpcmenc.dll differ
diff --git a/Output/x86/gstreamer/libgstalaw.dll b/Output/x86/gstreamer/libgstalaw.dll
index e1d385c7..4decabf2 100644
Binary files a/Output/x86/gstreamer/libgstalaw.dll and b/Output/x86/gstreamer/libgstalaw.dll differ
diff --git a/Output/x86/gstreamer/libgstalpha.dll b/Output/x86/gstreamer/libgstalpha.dll
index f2d2419a..31a17709 100644
Binary files a/Output/x86/gstreamer/libgstalpha.dll and b/Output/x86/gstreamer/libgstalpha.dll differ
diff --git a/Output/x86/gstreamer/libgstalphacolor.dll b/Output/x86/gstreamer/libgstalphacolor.dll
index e8637754..45fc0eb1 100644
Binary files a/Output/x86/gstreamer/libgstalphacolor.dll and b/Output/x86/gstreamer/libgstalphacolor.dll differ
diff --git a/Output/x86/gstreamer/libgstamrnb.dll b/Output/x86/gstreamer/libgstamrnb.dll
index b93247f0..df4269fd 100644
Binary files a/Output/x86/gstreamer/libgstamrnb.dll and b/Output/x86/gstreamer/libgstamrnb.dll differ
diff --git a/Output/x86/gstreamer/libgstamrwbdec.dll b/Output/x86/gstreamer/libgstamrwbdec.dll
index dd9311c8..016e1040 100644
Binary files a/Output/x86/gstreamer/libgstamrwbdec.dll and b/Output/x86/gstreamer/libgstamrwbdec.dll differ
diff --git a/Output/x86/gstreamer/libgstapetag.dll b/Output/x86/gstreamer/libgstapetag.dll
index 1f115998..e024fb8a 100644
Binary files a/Output/x86/gstreamer/libgstapetag.dll and b/Output/x86/gstreamer/libgstapetag.dll differ
diff --git a/Output/x86/gstreamer/libgstapp-1.0-0.dll b/Output/x86/gstreamer/libgstapp-1.0-0.dll
index 3f9752d0..23fdc027 100644
Binary files a/Output/x86/gstreamer/libgstapp-1.0-0.dll and b/Output/x86/gstreamer/libgstapp-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstapp.dll b/Output/x86/gstreamer/libgstapp.dll
index ffdd315f..8af1de0e 100644
Binary files a/Output/x86/gstreamer/libgstapp.dll and b/Output/x86/gstreamer/libgstapp.dll differ
diff --git a/Output/x86/gstreamer/libgstasf.dll b/Output/x86/gstreamer/libgstasf.dll
index f6cd3c27..d69a19f6 100644
Binary files a/Output/x86/gstreamer/libgstasf.dll and b/Output/x86/gstreamer/libgstasf.dll differ
diff --git a/Output/x86/gstreamer/libgstasfmux.dll b/Output/x86/gstreamer/libgstasfmux.dll
index ec0ac132..81ae5027 100644
Binary files a/Output/x86/gstreamer/libgstasfmux.dll and b/Output/x86/gstreamer/libgstasfmux.dll differ
diff --git a/Output/x86/gstreamer/libgstassrender.dll b/Output/x86/gstreamer/libgstassrender.dll
index 93cc8b01..b5e8b75b 100644
Binary files a/Output/x86/gstreamer/libgstassrender.dll and b/Output/x86/gstreamer/libgstassrender.dll differ
diff --git a/Output/x86/gstreamer/libgstaudio-1.0-0.dll b/Output/x86/gstreamer/libgstaudio-1.0-0.dll
index 673eb6b7..b901a739 100644
Binary files a/Output/x86/gstreamer/libgstaudio-1.0-0.dll and b/Output/x86/gstreamer/libgstaudio-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstaudioconvert.dll b/Output/x86/gstreamer/libgstaudioconvert.dll
index a8033a7e..577d55c6 100644
Binary files a/Output/x86/gstreamer/libgstaudioconvert.dll and b/Output/x86/gstreamer/libgstaudioconvert.dll differ
diff --git a/Output/x86/gstreamer/libgstaudiofx.dll b/Output/x86/gstreamer/libgstaudiofx.dll
index 5a643f61..3b4519b1 100644
Binary files a/Output/x86/gstreamer/libgstaudiofx.dll and b/Output/x86/gstreamer/libgstaudiofx.dll differ
diff --git a/Output/x86/gstreamer/libgstaudioparsers.dll b/Output/x86/gstreamer/libgstaudioparsers.dll
index 36c45e03..ea454be6 100644
Binary files a/Output/x86/gstreamer/libgstaudioparsers.dll and b/Output/x86/gstreamer/libgstaudioparsers.dll differ
diff --git a/Output/x86/gstreamer/libgstaudiorate.dll b/Output/x86/gstreamer/libgstaudiorate.dll
index b8ba408b..411f2ba6 100644
Binary files a/Output/x86/gstreamer/libgstaudiorate.dll and b/Output/x86/gstreamer/libgstaudiorate.dll differ
diff --git a/Output/x86/gstreamer/libgstaudioresample.dll b/Output/x86/gstreamer/libgstaudioresample.dll
index bd899d81..08e57dc0 100644
Binary files a/Output/x86/gstreamer/libgstaudioresample.dll and b/Output/x86/gstreamer/libgstaudioresample.dll differ
diff --git a/Output/x86/gstreamer/libgstaudiotestsrc.dll b/Output/x86/gstreamer/libgstaudiotestsrc.dll
index cd9e4f64..8f1c4547 100644
Binary files a/Output/x86/gstreamer/libgstaudiotestsrc.dll and b/Output/x86/gstreamer/libgstaudiotestsrc.dll differ
diff --git a/Output/x86/gstreamer/libgstaudiovisualizers.dll b/Output/x86/gstreamer/libgstaudiovisualizers.dll
index 9b52b960..5115aed0 100644
Binary files a/Output/x86/gstreamer/libgstaudiovisualizers.dll and b/Output/x86/gstreamer/libgstaudiovisualizers.dll differ
diff --git a/Output/x86/gstreamer/libgstauparse.dll b/Output/x86/gstreamer/libgstauparse.dll
index b31e8ef3..5a415d16 100644
Binary files a/Output/x86/gstreamer/libgstauparse.dll and b/Output/x86/gstreamer/libgstauparse.dll differ
diff --git a/Output/x86/gstreamer/libgstautoconvert.dll b/Output/x86/gstreamer/libgstautoconvert.dll
index cb4cfb0c..eeaa5c2d 100644
Binary files a/Output/x86/gstreamer/libgstautoconvert.dll and b/Output/x86/gstreamer/libgstautoconvert.dll differ
diff --git a/Output/x86/gstreamer/libgstautodetect.dll b/Output/x86/gstreamer/libgstautodetect.dll
index 1e8dbf77..f560416a 100644
Binary files a/Output/x86/gstreamer/libgstautodetect.dll and b/Output/x86/gstreamer/libgstautodetect.dll differ
diff --git a/Output/x86/gstreamer/libgstavi.dll b/Output/x86/gstreamer/libgstavi.dll
index b543003d..ce14cebd 100644
Binary files a/Output/x86/gstreamer/libgstavi.dll and b/Output/x86/gstreamer/libgstavi.dll differ
diff --git a/Output/x86/gstreamer/libgstavscale.dll b/Output/x86/gstreamer/libgstavscale.dll
deleted file mode 100644
index 151295bd..00000000
Binary files a/Output/x86/gstreamer/libgstavscale.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstbase-1.0-0.dll b/Output/x86/gstreamer/libgstbase-1.0-0.dll
index aaf7b7aa..c7f9c325 100644
Binary files a/Output/x86/gstreamer/libgstbase-1.0-0.dll and b/Output/x86/gstreamer/libgstbase-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstbasecamerabinsrc-1.0-0.dll b/Output/x86/gstreamer/libgstbasecamerabinsrc-1.0-0.dll
index 59756955..90173e16 100644
Binary files a/Output/x86/gstreamer/libgstbasecamerabinsrc-1.0-0.dll and b/Output/x86/gstreamer/libgstbasecamerabinsrc-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstbasevideo-1.0-0.dll b/Output/x86/gstreamer/libgstbasevideo-1.0-0.dll
deleted file mode 100644
index 72d688f9..00000000
Binary files a/Output/x86/gstreamer/libgstbasevideo-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstbayer.dll b/Output/x86/gstreamer/libgstbayer.dll
index b6483c0a..6c40b2fa 100644
Binary files a/Output/x86/gstreamer/libgstbayer.dll and b/Output/x86/gstreamer/libgstbayer.dll differ
diff --git a/Output/x86/gstreamer/libgstcairo.dll b/Output/x86/gstreamer/libgstcairo.dll
new file mode 100644
index 00000000..a6d3811d
Binary files /dev/null and b/Output/x86/gstreamer/libgstcairo.dll differ
diff --git a/Output/x86/gstreamer/libgstcamerabin2.dll b/Output/x86/gstreamer/libgstcamerabin2.dll
index 50f980b7..47d9bb6e 100644
Binary files a/Output/x86/gstreamer/libgstcamerabin2.dll and b/Output/x86/gstreamer/libgstcamerabin2.dll differ
diff --git a/Output/x86/gstreamer/libgstcodecparsers-1.0-0.dll b/Output/x86/gstreamer/libgstcodecparsers-1.0-0.dll
index d1c5e3ec..b2486237 100644
Binary files a/Output/x86/gstreamer/libgstcodecparsers-1.0-0.dll and b/Output/x86/gstreamer/libgstcodecparsers-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstcoloreffects.dll b/Output/x86/gstreamer/libgstcoloreffects.dll
index cb597ccd..77d9d251 100644
Binary files a/Output/x86/gstreamer/libgstcoloreffects.dll and b/Output/x86/gstreamer/libgstcoloreffects.dll differ
diff --git a/Output/x86/gstreamer/libgstcontroller-1.0-0.dll b/Output/x86/gstreamer/libgstcontroller-1.0-0.dll
index d37ae1ac..9f3269b8 100644
Binary files a/Output/x86/gstreamer/libgstcontroller-1.0-0.dll and b/Output/x86/gstreamer/libgstcontroller-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstcoreelements.dll b/Output/x86/gstreamer/libgstcoreelements.dll
index e0383584..e07af1f4 100644
Binary files a/Output/x86/gstreamer/libgstcoreelements.dll and b/Output/x86/gstreamer/libgstcoreelements.dll differ
diff --git a/Output/x86/gstreamer/libgstcutter.dll b/Output/x86/gstreamer/libgstcutter.dll
index 2d5a0480..701c2e8a 100644
Binary files a/Output/x86/gstreamer/libgstcutter.dll and b/Output/x86/gstreamer/libgstcutter.dll differ
diff --git a/Output/x86/gstreamer/libgstd3dvideosink.dll b/Output/x86/gstreamer/libgstd3dvideosink.dll
index 385efb4c..a87a4205 100644
Binary files a/Output/x86/gstreamer/libgstd3dvideosink.dll and b/Output/x86/gstreamer/libgstd3dvideosink.dll differ
diff --git a/Output/x86/gstreamer/libgstdataurisrc.dll b/Output/x86/gstreamer/libgstdataurisrc.dll
index 7b1d2476..18038a72 100644
Binary files a/Output/x86/gstreamer/libgstdataurisrc.dll and b/Output/x86/gstreamer/libgstdataurisrc.dll differ
diff --git a/Output/x86/gstreamer/libgstdebug.dll b/Output/x86/gstreamer/libgstdebug.dll
index 0dd4c055..87f5bb0d 100644
Binary files a/Output/x86/gstreamer/libgstdebug.dll and b/Output/x86/gstreamer/libgstdebug.dll differ
diff --git a/Output/x86/gstreamer/libgstdebugutilsbad.dll b/Output/x86/gstreamer/libgstdebugutilsbad.dll
deleted file mode 100644
index a478ad82..00000000
Binary files a/Output/x86/gstreamer/libgstdebugutilsbad.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdeinterlace.dll b/Output/x86/gstreamer/libgstdeinterlace.dll
index 7b5ec030..de5a9665 100644
Binary files a/Output/x86/gstreamer/libgstdeinterlace.dll and b/Output/x86/gstreamer/libgstdeinterlace.dll differ
diff --git a/Output/x86/gstreamer/libgstdirectsoundsink.dll b/Output/x86/gstreamer/libgstdirectsoundsink.dll
index d425f9f9..981d7722 100644
Binary files a/Output/x86/gstreamer/libgstdirectsoundsink.dll and b/Output/x86/gstreamer/libgstdirectsoundsink.dll differ
diff --git a/Output/x86/gstreamer/libgstdirectsoundsrc.dll b/Output/x86/gstreamer/libgstdirectsoundsrc.dll
deleted file mode 100644
index 024f15d8..00000000
Binary files a/Output/x86/gstreamer/libgstdirectsoundsrc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdtmf.dll b/Output/x86/gstreamer/libgstdtmf.dll
index 1816f9e4..a45d8bae 100644
Binary files a/Output/x86/gstreamer/libgstdtmf.dll and b/Output/x86/gstreamer/libgstdtmf.dll differ
diff --git a/Output/x86/gstreamer/libgstdtsdec.dll b/Output/x86/gstreamer/libgstdtsdec.dll
index 021c6e98..80815aed 100644
Binary files a/Output/x86/gstreamer/libgstdtsdec.dll and b/Output/x86/gstreamer/libgstdtsdec.dll differ
diff --git a/Output/x86/gstreamer/libgstdv.dll b/Output/x86/gstreamer/libgstdv.dll
index 969940ef..64bba83f 100644
Binary files a/Output/x86/gstreamer/libgstdv.dll and b/Output/x86/gstreamer/libgstdv.dll differ
diff --git a/Output/x86/gstreamer/libgstdvbsuboverlay.dll b/Output/x86/gstreamer/libgstdvbsuboverlay.dll
index b0de1eb5..b677005d 100644
Binary files a/Output/x86/gstreamer/libgstdvbsuboverlay.dll and b/Output/x86/gstreamer/libgstdvbsuboverlay.dll differ
diff --git a/Output/x86/gstreamer/libgstdvdlpcmdec.dll b/Output/x86/gstreamer/libgstdvdlpcmdec.dll
index b64b9651..6b4e8d7a 100644
Binary files a/Output/x86/gstreamer/libgstdvdlpcmdec.dll and b/Output/x86/gstreamer/libgstdvdlpcmdec.dll differ
diff --git a/Output/x86/gstreamer/libgstdvdread.dll b/Output/x86/gstreamer/libgstdvdread.dll
index 5afc930b..c6346cfa 100644
Binary files a/Output/x86/gstreamer/libgstdvdread.dll and b/Output/x86/gstreamer/libgstdvdread.dll differ
diff --git a/Output/x86/gstreamer/libgstdvdspu.dll b/Output/x86/gstreamer/libgstdvdspu.dll
index 2f937b16..01587444 100644
Binary files a/Output/x86/gstreamer/libgstdvdspu.dll and b/Output/x86/gstreamer/libgstdvdspu.dll differ
diff --git a/Output/x86/gstreamer/libgstdvdsub.dll b/Output/x86/gstreamer/libgstdvdsub.dll
deleted file mode 100644
index 03bbeaed..00000000
Binary files a/Output/x86/gstreamer/libgstdvdsub.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsteffectv.dll b/Output/x86/gstreamer/libgsteffectv.dll
index cd641348..71ac25b3 100644
Binary files a/Output/x86/gstreamer/libgsteffectv.dll and b/Output/x86/gstreamer/libgsteffectv.dll differ
diff --git a/Output/x86/gstreamer/libgstencodebin.dll b/Output/x86/gstreamer/libgstencodebin.dll
index efa6ddbf..1dc99224 100644
Binary files a/Output/x86/gstreamer/libgstencodebin.dll and b/Output/x86/gstreamer/libgstencodebin.dll differ
diff --git a/Output/x86/gstreamer/libgstequalizer.dll b/Output/x86/gstreamer/libgstequalizer.dll
index 8b8696c4..2f1cba5a 100644
Binary files a/Output/x86/gstreamer/libgstequalizer.dll and b/Output/x86/gstreamer/libgstequalizer.dll differ
diff --git a/Output/x86/gstreamer/libgstfaad.dll b/Output/x86/gstreamer/libgstfaad.dll
index dfc210d4..2d29d553 100644
Binary files a/Output/x86/gstreamer/libgstfaad.dll and b/Output/x86/gstreamer/libgstfaad.dll differ
diff --git a/Output/x86/gstreamer/libgstfft-1.0-0.dll b/Output/x86/gstreamer/libgstfft-1.0-0.dll
index dae057a9..fd02f6c5 100644
Binary files a/Output/x86/gstreamer/libgstfft-1.0-0.dll and b/Output/x86/gstreamer/libgstfft-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstfieldanalysis.dll b/Output/x86/gstreamer/libgstfieldanalysis.dll
index 4d72c71c..4caf5a8d 100644
Binary files a/Output/x86/gstreamer/libgstfieldanalysis.dll and b/Output/x86/gstreamer/libgstfieldanalysis.dll differ
diff --git a/Output/x86/gstreamer/libgstflac.dll b/Output/x86/gstreamer/libgstflac.dll
index db85b9c5..1cdec1d5 100644
Binary files a/Output/x86/gstreamer/libgstflac.dll and b/Output/x86/gstreamer/libgstflac.dll differ
diff --git a/Output/x86/gstreamer/libgstflv.dll b/Output/x86/gstreamer/libgstflv.dll
index cb517cab..c8d678fa 100644
Binary files a/Output/x86/gstreamer/libgstflv.dll and b/Output/x86/gstreamer/libgstflv.dll differ
diff --git a/Output/x86/gstreamer/libgstflxdec.dll b/Output/x86/gstreamer/libgstflxdec.dll
index 4e2d1c60..9d558801 100644
Binary files a/Output/x86/gstreamer/libgstflxdec.dll and b/Output/x86/gstreamer/libgstflxdec.dll differ
diff --git a/Output/x86/gstreamer/libgstfragmented.dll b/Output/x86/gstreamer/libgstfragmented.dll
index fef04e0e..f282f6f0 100644
Binary files a/Output/x86/gstreamer/libgstfragmented.dll and b/Output/x86/gstreamer/libgstfragmented.dll differ
diff --git a/Output/x86/gstreamer/libgstfrei0r.dll b/Output/x86/gstreamer/libgstfrei0r.dll
index 66901906..f9d743df 100644
Binary files a/Output/x86/gstreamer/libgstfrei0r.dll and b/Output/x86/gstreamer/libgstfrei0r.dll differ
diff --git a/Output/x86/gstreamer/libgstgaudieffects.dll b/Output/x86/gstreamer/libgstgaudieffects.dll
index 0cf42a3a..e643af7b 100644
Binary files a/Output/x86/gstreamer/libgstgaudieffects.dll and b/Output/x86/gstreamer/libgstgaudieffects.dll differ
diff --git a/Output/x86/gstreamer/libgstgdkpixbuf.dll b/Output/x86/gstreamer/libgstgdkpixbuf.dll
index 1b3d59de..ce9e2be1 100644
Binary files a/Output/x86/gstreamer/libgstgdkpixbuf.dll and b/Output/x86/gstreamer/libgstgdkpixbuf.dll differ
diff --git a/Output/x86/gstreamer/libgstgdp.dll b/Output/x86/gstreamer/libgstgdp.dll
deleted file mode 100644
index 5a0235ff..00000000
Binary files a/Output/x86/gstreamer/libgstgdp.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstgeometrictransform.dll b/Output/x86/gstreamer/libgstgeometrictransform.dll
index b96e1390..df16b7fa 100644
Binary files a/Output/x86/gstreamer/libgstgeometrictransform.dll and b/Output/x86/gstreamer/libgstgeometrictransform.dll differ
diff --git a/Output/x86/gstreamer/libgstgio.dll b/Output/x86/gstreamer/libgstgio.dll
index b2af5414..48552e8f 100644
Binary files a/Output/x86/gstreamer/libgstgio.dll and b/Output/x86/gstreamer/libgstgio.dll differ
diff --git a/Output/x86/gstreamer/libgstgoom.dll b/Output/x86/gstreamer/libgstgoom.dll
index c8f98405..50c24afe 100644
Binary files a/Output/x86/gstreamer/libgstgoom.dll and b/Output/x86/gstreamer/libgstgoom.dll differ
diff --git a/Output/x86/gstreamer/libgstgoom2k1.dll b/Output/x86/gstreamer/libgstgoom2k1.dll
index 6af469e3..5da701f5 100644
Binary files a/Output/x86/gstreamer/libgstgoom2k1.dll and b/Output/x86/gstreamer/libgstgoom2k1.dll differ
diff --git a/Output/x86/gstreamer/libgsticydemux.dll b/Output/x86/gstreamer/libgsticydemux.dll
index da1de0b9..e07a828a 100644
Binary files a/Output/x86/gstreamer/libgsticydemux.dll and b/Output/x86/gstreamer/libgsticydemux.dll differ
diff --git a/Output/x86/gstreamer/libgstid3demux.dll b/Output/x86/gstreamer/libgstid3demux.dll
index 516fe447..5178e494 100644
Binary files a/Output/x86/gstreamer/libgstid3demux.dll and b/Output/x86/gstreamer/libgstid3demux.dll differ
diff --git a/Output/x86/gstreamer/libgstid3tag.dll b/Output/x86/gstreamer/libgstid3tag.dll
index 8b6d910e..8b9cacb8 100644
Binary files a/Output/x86/gstreamer/libgstid3tag.dll and b/Output/x86/gstreamer/libgstid3tag.dll differ
diff --git a/Output/x86/gstreamer/libgstimagefreeze.dll b/Output/x86/gstreamer/libgstimagefreeze.dll
index f0fd4b2b..726f0e56 100644
Binary files a/Output/x86/gstreamer/libgstimagefreeze.dll and b/Output/x86/gstreamer/libgstimagefreeze.dll differ
diff --git a/Output/x86/gstreamer/libgstinterlace.dll b/Output/x86/gstreamer/libgstinterlace.dll
index 1f8516a7..ba1a09fd 100644
Binary files a/Output/x86/gstreamer/libgstinterlace.dll and b/Output/x86/gstreamer/libgstinterlace.dll differ
diff --git a/Output/x86/gstreamer/libgstinterleave.dll b/Output/x86/gstreamer/libgstinterleave.dll
index b88347b2..e0841d33 100644
Binary files a/Output/x86/gstreamer/libgstinterleave.dll and b/Output/x86/gstreamer/libgstinterleave.dll differ
diff --git a/Output/x86/gstreamer/libgstisomp4.dll b/Output/x86/gstreamer/libgstisomp4.dll
index 2ae79bcc..e0a237aa 100644
Binary files a/Output/x86/gstreamer/libgstisomp4.dll and b/Output/x86/gstreamer/libgstisomp4.dll differ
diff --git a/Output/x86/gstreamer/libgstjpeg.dll b/Output/x86/gstreamer/libgstjpeg.dll
index bca6bde3..1acf3ac0 100644
Binary files a/Output/x86/gstreamer/libgstjpeg.dll and b/Output/x86/gstreamer/libgstjpeg.dll differ
diff --git a/Output/x86/gstreamer/libgstjpegformat.dll b/Output/x86/gstreamer/libgstjpegformat.dll
index b14cc3dc..7317e8ca 100644
Binary files a/Output/x86/gstreamer/libgstjpegformat.dll and b/Output/x86/gstreamer/libgstjpegformat.dll differ
diff --git a/Output/x86/gstreamer/libgstlevel.dll b/Output/x86/gstreamer/libgstlevel.dll
index e98cc369..a3196c8f 100644
Binary files a/Output/x86/gstreamer/libgstlevel.dll and b/Output/x86/gstreamer/libgstlevel.dll differ
diff --git a/Output/x86/gstreamer/libgstlibav.dll b/Output/x86/gstreamer/libgstlibav.dll
index 958b7135..cc53b994 100644
Binary files a/Output/x86/gstreamer/libgstlibav.dll and b/Output/x86/gstreamer/libgstlibav.dll differ
diff --git a/Output/x86/gstreamer/libgstlibvisual.dll b/Output/x86/gstreamer/libgstlibvisual.dll
index f43bc2bc..e47f6063 100644
Binary files a/Output/x86/gstreamer/libgstlibvisual.dll and b/Output/x86/gstreamer/libgstlibvisual.dll differ
diff --git a/Output/x86/gstreamer/libgstliveadder.dll b/Output/x86/gstreamer/libgstliveadder.dll
index 1dea1d78..438087f6 100644
Binary files a/Output/x86/gstreamer/libgstliveadder.dll and b/Output/x86/gstreamer/libgstliveadder.dll differ
diff --git a/Output/x86/gstreamer/libgstmad.dll b/Output/x86/gstreamer/libgstmad.dll
index 549030e6..5f162650 100644
Binary files a/Output/x86/gstreamer/libgstmad.dll and b/Output/x86/gstreamer/libgstmad.dll differ
diff --git a/Output/x86/gstreamer/libgstmatroska.dll b/Output/x86/gstreamer/libgstmatroska.dll
index 6e93f5cb..f65d9821 100644
Binary files a/Output/x86/gstreamer/libgstmatroska.dll and b/Output/x86/gstreamer/libgstmatroska.dll differ
diff --git a/Output/x86/gstreamer/libgstmms.dll b/Output/x86/gstreamer/libgstmms.dll
index 8042b11f..dc9724ca 100644
Binary files a/Output/x86/gstreamer/libgstmms.dll and b/Output/x86/gstreamer/libgstmms.dll differ
diff --git a/Output/x86/gstreamer/libgstmpeg2dec.dll b/Output/x86/gstreamer/libgstmpeg2dec.dll
index 60102ed8..a446faca 100644
Binary files a/Output/x86/gstreamer/libgstmpeg2dec.dll and b/Output/x86/gstreamer/libgstmpeg2dec.dll differ
diff --git a/Output/x86/gstreamer/libgstmpegpsdemux.dll b/Output/x86/gstreamer/libgstmpegpsdemux.dll
index 1e3ee494..6dd27e97 100644
Binary files a/Output/x86/gstreamer/libgstmpegpsdemux.dll and b/Output/x86/gstreamer/libgstmpegpsdemux.dll differ
diff --git a/Output/x86/gstreamer/libgstmpegpsmux.dll b/Output/x86/gstreamer/libgstmpegpsmux.dll
index 7d0dfd76..2ce4185e 100644
Binary files a/Output/x86/gstreamer/libgstmpegpsmux.dll and b/Output/x86/gstreamer/libgstmpegpsmux.dll differ
diff --git a/Output/x86/gstreamer/libgstmpegtsdemux.dll b/Output/x86/gstreamer/libgstmpegtsdemux.dll
index 4fca24a1..0348f638 100644
Binary files a/Output/x86/gstreamer/libgstmpegtsdemux.dll and b/Output/x86/gstreamer/libgstmpegtsdemux.dll differ
diff --git a/Output/x86/gstreamer/libgstmpegtsmux.dll b/Output/x86/gstreamer/libgstmpegtsmux.dll
index ecdd9f58..f6ca0fa9 100644
Binary files a/Output/x86/gstreamer/libgstmpegtsmux.dll and b/Output/x86/gstreamer/libgstmpegtsmux.dll differ
diff --git a/Output/x86/gstreamer/libgstmulaw.dll b/Output/x86/gstreamer/libgstmulaw.dll
index 611108af..3cfe5b04 100644
Binary files a/Output/x86/gstreamer/libgstmulaw.dll and b/Output/x86/gstreamer/libgstmulaw.dll differ
diff --git a/Output/x86/gstreamer/libgstmultifile.dll b/Output/x86/gstreamer/libgstmultifile.dll
index f75c7e3f..608c8b8d 100644
Binary files a/Output/x86/gstreamer/libgstmultifile.dll and b/Output/x86/gstreamer/libgstmultifile.dll differ
diff --git a/Output/x86/gstreamer/libgstmultipart.dll b/Output/x86/gstreamer/libgstmultipart.dll
index 2016dcec..58b4bc8d 100644
Binary files a/Output/x86/gstreamer/libgstmultipart.dll and b/Output/x86/gstreamer/libgstmultipart.dll differ
diff --git a/Output/x86/gstreamer/libgstnavigationtest.dll b/Output/x86/gstreamer/libgstnavigationtest.dll
deleted file mode 100644
index 9b38cd7e..00000000
Binary files a/Output/x86/gstreamer/libgstnavigationtest.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstnet-1.0-0.dll b/Output/x86/gstreamer/libgstnet-1.0-0.dll
index 00acaf51..37ff4075 100644
Binary files a/Output/x86/gstreamer/libgstnet-1.0-0.dll and b/Output/x86/gstreamer/libgstnet-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstogg.dll b/Output/x86/gstreamer/libgstogg.dll
index ab45c435..83df5f20 100644
Binary files a/Output/x86/gstreamer/libgstogg.dll and b/Output/x86/gstreamer/libgstogg.dll differ
diff --git a/Output/x86/gstreamer/libgstopus.dll b/Output/x86/gstreamer/libgstopus.dll
index 2a833fe2..3c81ecf6 100644
Binary files a/Output/x86/gstreamer/libgstopus.dll and b/Output/x86/gstreamer/libgstopus.dll differ
diff --git a/Output/x86/gstreamer/libgstpango.dll b/Output/x86/gstreamer/libgstpango.dll
index 7a7a78bf..eab7f62e 100644
Binary files a/Output/x86/gstreamer/libgstpango.dll and b/Output/x86/gstreamer/libgstpango.dll differ
diff --git a/Output/x86/gstreamer/libgstpbutils-1.0-0.dll b/Output/x86/gstreamer/libgstpbutils-1.0-0.dll
index edc82832..bfd889ee 100644
Binary files a/Output/x86/gstreamer/libgstpbutils-1.0-0.dll and b/Output/x86/gstreamer/libgstpbutils-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstpcapparse.dll b/Output/x86/gstreamer/libgstpcapparse.dll
index b2be7bb4..a93eab1d 100644
Binary files a/Output/x86/gstreamer/libgstpcapparse.dll and b/Output/x86/gstreamer/libgstpcapparse.dll differ
diff --git a/Output/x86/gstreamer/libgstphotography-1.0-0.dll b/Output/x86/gstreamer/libgstphotography-1.0-0.dll
index c68f3a5f..ab9c9cb4 100644
Binary files a/Output/x86/gstreamer/libgstphotography-1.0-0.dll and b/Output/x86/gstreamer/libgstphotography-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstplayback.dll b/Output/x86/gstreamer/libgstplayback.dll
index 88a3e3c5..debe2dca 100644
Binary files a/Output/x86/gstreamer/libgstplayback.dll and b/Output/x86/gstreamer/libgstplayback.dll differ
diff --git a/Output/x86/gstreamer/libgstpng.dll b/Output/x86/gstreamer/libgstpng.dll
index 49ce1089..57df4d65 100644
Binary files a/Output/x86/gstreamer/libgstpng.dll and b/Output/x86/gstreamer/libgstpng.dll differ
diff --git a/Output/x86/gstreamer/libgstpnm.dll b/Output/x86/gstreamer/libgstpnm.dll
index fc317c69..1bcb49d8 100644
Binary files a/Output/x86/gstreamer/libgstpnm.dll and b/Output/x86/gstreamer/libgstpnm.dll differ
diff --git a/Output/x86/gstreamer/libgstrawparse.dll b/Output/x86/gstreamer/libgstrawparse.dll
index 0f6142d1..0b9d5f35 100644
Binary files a/Output/x86/gstreamer/libgstrawparse.dll and b/Output/x86/gstreamer/libgstrawparse.dll differ
diff --git a/Output/x86/gstreamer/libgstreamer-1.0-0.dll b/Output/x86/gstreamer/libgstreamer-1.0-0.dll
index 078eb3bd..10bb3208 100644
Binary files a/Output/x86/gstreamer/libgstreamer-1.0-0.dll and b/Output/x86/gstreamer/libgstreamer-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstremovesilence.dll b/Output/x86/gstreamer/libgstremovesilence.dll
index 1c609c19..0b489a18 100644
Binary files a/Output/x86/gstreamer/libgstremovesilence.dll and b/Output/x86/gstreamer/libgstremovesilence.dll differ
diff --git a/Output/x86/gstreamer/libgstreplaygain.dll b/Output/x86/gstreamer/libgstreplaygain.dll
index 93826e4a..39857e99 100644
Binary files a/Output/x86/gstreamer/libgstreplaygain.dll and b/Output/x86/gstreamer/libgstreplaygain.dll differ
diff --git a/Output/x86/gstreamer/libgstresindvd.dll b/Output/x86/gstreamer/libgstresindvd.dll
index 9afd6f35..9302e3af 100644
Binary files a/Output/x86/gstreamer/libgstresindvd.dll and b/Output/x86/gstreamer/libgstresindvd.dll differ
diff --git a/Output/x86/gstreamer/libgstriff-1.0-0.dll b/Output/x86/gstreamer/libgstriff-1.0-0.dll
index 7c6d5704..2a068e7c 100644
Binary files a/Output/x86/gstreamer/libgstriff-1.0-0.dll and b/Output/x86/gstreamer/libgstriff-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstrmdemux.dll b/Output/x86/gstreamer/libgstrmdemux.dll
index 515b82a2..fd602a5d 100644
Binary files a/Output/x86/gstreamer/libgstrmdemux.dll and b/Output/x86/gstreamer/libgstrmdemux.dll differ
diff --git a/Output/x86/gstreamer/libgstrtp-1.0-0.dll b/Output/x86/gstreamer/libgstrtp-1.0-0.dll
index 9f348886..df40de79 100644
Binary files a/Output/x86/gstreamer/libgstrtp-1.0-0.dll and b/Output/x86/gstreamer/libgstrtp-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstrtp.dll b/Output/x86/gstreamer/libgstrtp.dll
index a1a08380..c6a4c95a 100644
Binary files a/Output/x86/gstreamer/libgstrtp.dll and b/Output/x86/gstreamer/libgstrtp.dll differ
diff --git a/Output/x86/gstreamer/libgstrtpmanager.dll b/Output/x86/gstreamer/libgstrtpmanager.dll
index 5bc72a02..bb6ba895 100644
Binary files a/Output/x86/gstreamer/libgstrtpmanager.dll and b/Output/x86/gstreamer/libgstrtpmanager.dll differ
diff --git a/Output/x86/gstreamer/libgstrtpmux.dll b/Output/x86/gstreamer/libgstrtpmux.dll
deleted file mode 100644
index 0dbdbff0..00000000
Binary files a/Output/x86/gstreamer/libgstrtpmux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrtpvp8.dll b/Output/x86/gstreamer/libgstrtpvp8.dll
deleted file mode 100644
index 9ebf7f5f..00000000
Binary files a/Output/x86/gstreamer/libgstrtpvp8.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrtsp-1.0-0.dll b/Output/x86/gstreamer/libgstrtsp-1.0-0.dll
index b8f8d5be..dedb31e3 100644
Binary files a/Output/x86/gstreamer/libgstrtsp-1.0-0.dll and b/Output/x86/gstreamer/libgstrtsp-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstrtsp.dll b/Output/x86/gstreamer/libgstrtsp.dll
index d9ed991e..2c350de0 100644
Binary files a/Output/x86/gstreamer/libgstrtsp.dll and b/Output/x86/gstreamer/libgstrtsp.dll differ
diff --git a/Output/x86/gstreamer/libgstscaletempoplugin.dll b/Output/x86/gstreamer/libgstscaletempoplugin.dll
index 40622d4c..6c857794 100644
Binary files a/Output/x86/gstreamer/libgstscaletempoplugin.dll and b/Output/x86/gstreamer/libgstscaletempoplugin.dll differ
diff --git a/Output/x86/gstreamer/libgstschro.dll b/Output/x86/gstreamer/libgstschro.dll
index b0550943..c1f6c667 100644
Binary files a/Output/x86/gstreamer/libgstschro.dll and b/Output/x86/gstreamer/libgstschro.dll differ
diff --git a/Output/x86/gstreamer/libgstsdp-1.0-0.dll b/Output/x86/gstreamer/libgstsdp-1.0-0.dll
index 4c6135f6..d299174d 100644
Binary files a/Output/x86/gstreamer/libgstsdp-1.0-0.dll and b/Output/x86/gstreamer/libgstsdp-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstsdpelem.dll b/Output/x86/gstreamer/libgstsdpelem.dll
index fa3b00b5..e29664b9 100644
Binary files a/Output/x86/gstreamer/libgstsdpelem.dll and b/Output/x86/gstreamer/libgstsdpelem.dll differ
diff --git a/Output/x86/gstreamer/libgstsegmentclip.dll b/Output/x86/gstreamer/libgstsegmentclip.dll
index a695edab..57eb1f28 100644
Binary files a/Output/x86/gstreamer/libgstsegmentclip.dll and b/Output/x86/gstreamer/libgstsegmentclip.dll differ
diff --git a/Output/x86/gstreamer/libgstshapewipe.dll b/Output/x86/gstreamer/libgstshapewipe.dll
index e38e320d..6839d947 100644
Binary files a/Output/x86/gstreamer/libgstshapewipe.dll and b/Output/x86/gstreamer/libgstshapewipe.dll differ
diff --git a/Output/x86/gstreamer/libgstsignalprocessor-1.0-0.dll b/Output/x86/gstreamer/libgstsignalprocessor-1.0-0.dll
deleted file mode 100644
index 0ac96df8..00000000
Binary files a/Output/x86/gstreamer/libgstsignalprocessor-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsiren.dll b/Output/x86/gstreamer/libgstsiren.dll
index 48639ec7..4d6cc6df 100644
Binary files a/Output/x86/gstreamer/libgstsiren.dll and b/Output/x86/gstreamer/libgstsiren.dll differ
diff --git a/Output/x86/gstreamer/libgstsmooth.dll b/Output/x86/gstreamer/libgstsmooth.dll
index 8b712e31..aa582672 100644
Binary files a/Output/x86/gstreamer/libgstsmooth.dll and b/Output/x86/gstreamer/libgstsmooth.dll differ
diff --git a/Output/x86/gstreamer/libgstsmpte.dll b/Output/x86/gstreamer/libgstsmpte.dll
index 5255c8da..8b744500 100644
Binary files a/Output/x86/gstreamer/libgstsmpte.dll and b/Output/x86/gstreamer/libgstsmpte.dll differ
diff --git a/Output/x86/gstreamer/libgstsouphttpsrc.dll b/Output/x86/gstreamer/libgstsouphttpsrc.dll
index b17b28e2..39201051 100644
Binary files a/Output/x86/gstreamer/libgstsouphttpsrc.dll and b/Output/x86/gstreamer/libgstsouphttpsrc.dll differ
diff --git a/Output/x86/gstreamer/libgstspectrum.dll b/Output/x86/gstreamer/libgstspectrum.dll
index 7682552f..9b4e9936 100644
Binary files a/Output/x86/gstreamer/libgstspectrum.dll and b/Output/x86/gstreamer/libgstspectrum.dll differ
diff --git a/Output/x86/gstreamer/libgstspeed.dll b/Output/x86/gstreamer/libgstspeed.dll
index 3f0b1eeb..a57031dc 100644
Binary files a/Output/x86/gstreamer/libgstspeed.dll and b/Output/x86/gstreamer/libgstspeed.dll differ
diff --git a/Output/x86/gstreamer/libgstspeex.dll b/Output/x86/gstreamer/libgstspeex.dll
index 112b5241..a45eab57 100644
Binary files a/Output/x86/gstreamer/libgstspeex.dll and b/Output/x86/gstreamer/libgstspeex.dll differ
diff --git a/Output/x86/gstreamer/libgstsubenc.dll b/Output/x86/gstreamer/libgstsubenc.dll
index d4024ef7..1efc8e45 100644
Binary files a/Output/x86/gstreamer/libgstsubenc.dll and b/Output/x86/gstreamer/libgstsubenc.dll differ
diff --git a/Output/x86/gstreamer/libgstsubparse.dll b/Output/x86/gstreamer/libgstsubparse.dll
index a9b3dbb6..c13898f6 100644
Binary files a/Output/x86/gstreamer/libgstsubparse.dll and b/Output/x86/gstreamer/libgstsubparse.dll differ
diff --git a/Output/x86/gstreamer/libgsttag-1.0-0.dll b/Output/x86/gstreamer/libgsttag-1.0-0.dll
index c57cdad4..eff7d616 100644
Binary files a/Output/x86/gstreamer/libgsttag-1.0-0.dll and b/Output/x86/gstreamer/libgsttag-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgsttaglib.dll b/Output/x86/gstreamer/libgsttaglib.dll
index ed43466f..2a2ad451 100644
Binary files a/Output/x86/gstreamer/libgsttaglib.dll and b/Output/x86/gstreamer/libgsttaglib.dll differ
diff --git a/Output/x86/gstreamer/libgsttcp.dll b/Output/x86/gstreamer/libgsttcp.dll
index 3b0708a1..c0d049b9 100644
Binary files a/Output/x86/gstreamer/libgsttcp.dll and b/Output/x86/gstreamer/libgsttcp.dll differ
diff --git a/Output/x86/gstreamer/libgsttheora.dll b/Output/x86/gstreamer/libgsttheora.dll
index 8e28b65a..afbe8529 100644
Binary files a/Output/x86/gstreamer/libgsttheora.dll and b/Output/x86/gstreamer/libgsttheora.dll differ
diff --git a/Output/x86/gstreamer/libgsttypefindfunctions.dll b/Output/x86/gstreamer/libgsttypefindfunctions.dll
index ca68a9bc..7f2fb7f3 100644
Binary files a/Output/x86/gstreamer/libgsttypefindfunctions.dll and b/Output/x86/gstreamer/libgsttypefindfunctions.dll differ
diff --git a/Output/x86/gstreamer/libgstudp.dll b/Output/x86/gstreamer/libgstudp.dll
index 9a8d9715..7c7bbdd3 100644
Binary files a/Output/x86/gstreamer/libgstudp.dll and b/Output/x86/gstreamer/libgstudp.dll differ
diff --git a/Output/x86/gstreamer/libgstvideo-1.0-0.dll b/Output/x86/gstreamer/libgstvideo-1.0-0.dll
index fea95abb..228d3eeb 100644
Binary files a/Output/x86/gstreamer/libgstvideo-1.0-0.dll and b/Output/x86/gstreamer/libgstvideo-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libgstvideobox.dll b/Output/x86/gstreamer/libgstvideobox.dll
index ad2fa566..39f5c89f 100644
Binary files a/Output/x86/gstreamer/libgstvideobox.dll and b/Output/x86/gstreamer/libgstvideobox.dll differ
diff --git a/Output/x86/gstreamer/libgstvideoconvert.dll b/Output/x86/gstreamer/libgstvideoconvert.dll
index a8555e26..99d55036 100644
Binary files a/Output/x86/gstreamer/libgstvideoconvert.dll and b/Output/x86/gstreamer/libgstvideoconvert.dll differ
diff --git a/Output/x86/gstreamer/libgstvideocrop.dll b/Output/x86/gstreamer/libgstvideocrop.dll
index 4f9f8df6..ee9f6651 100644
Binary files a/Output/x86/gstreamer/libgstvideocrop.dll and b/Output/x86/gstreamer/libgstvideocrop.dll differ
diff --git a/Output/x86/gstreamer/libgstvideofilter.dll b/Output/x86/gstreamer/libgstvideofilter.dll
index f9b0759b..fa924756 100644
Binary files a/Output/x86/gstreamer/libgstvideofilter.dll and b/Output/x86/gstreamer/libgstvideofilter.dll differ
diff --git a/Output/x86/gstreamer/libgstvideomixer.dll b/Output/x86/gstreamer/libgstvideomixer.dll
index 25ee1900..8e740fbc 100644
Binary files a/Output/x86/gstreamer/libgstvideomixer.dll and b/Output/x86/gstreamer/libgstvideomixer.dll differ
diff --git a/Output/x86/gstreamer/libgstvideoparsersbad.dll b/Output/x86/gstreamer/libgstvideoparsersbad.dll
index 580925ff..85bb03ac 100644
Binary files a/Output/x86/gstreamer/libgstvideoparsersbad.dll and b/Output/x86/gstreamer/libgstvideoparsersbad.dll differ
diff --git a/Output/x86/gstreamer/libgstvideorate.dll b/Output/x86/gstreamer/libgstvideorate.dll
index cfa464ec..86fc11cf 100644
Binary files a/Output/x86/gstreamer/libgstvideorate.dll and b/Output/x86/gstreamer/libgstvideorate.dll differ
diff --git a/Output/x86/gstreamer/libgstvideoscale.dll b/Output/x86/gstreamer/libgstvideoscale.dll
index 19fed78f..6300992d 100644
Binary files a/Output/x86/gstreamer/libgstvideoscale.dll and b/Output/x86/gstreamer/libgstvideoscale.dll differ
diff --git a/Output/x86/gstreamer/libgstvideotestsrc.dll b/Output/x86/gstreamer/libgstvideotestsrc.dll
index 64c6b1b3..48ba83ad 100644
Binary files a/Output/x86/gstreamer/libgstvideotestsrc.dll and b/Output/x86/gstreamer/libgstvideotestsrc.dll differ
diff --git a/Output/x86/gstreamer/libgstvolume.dll b/Output/x86/gstreamer/libgstvolume.dll
index 86cc45c7..ada5b9e1 100644
Binary files a/Output/x86/gstreamer/libgstvolume.dll and b/Output/x86/gstreamer/libgstvolume.dll differ
diff --git a/Output/x86/gstreamer/libgstvorbis.dll b/Output/x86/gstreamer/libgstvorbis.dll
index 3c2e95de..aeb22ae4 100644
Binary files a/Output/x86/gstreamer/libgstvorbis.dll and b/Output/x86/gstreamer/libgstvorbis.dll differ
diff --git a/Output/x86/gstreamer/libgstvpx.dll b/Output/x86/gstreamer/libgstvpx.dll
index 55033d05..9c86f27a 100644
Binary files a/Output/x86/gstreamer/libgstvpx.dll and b/Output/x86/gstreamer/libgstvpx.dll differ
diff --git a/Output/x86/gstreamer/libgstwaveformsink.dll b/Output/x86/gstreamer/libgstwaveformsink.dll
deleted file mode 100644
index cb439dd6..00000000
Binary files a/Output/x86/gstreamer/libgstwaveformsink.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstwavenc.dll b/Output/x86/gstreamer/libgstwavenc.dll
index 0e5c3c41..87422b13 100644
Binary files a/Output/x86/gstreamer/libgstwavenc.dll and b/Output/x86/gstreamer/libgstwavenc.dll differ
diff --git a/Output/x86/gstreamer/libgstwavpack.dll b/Output/x86/gstreamer/libgstwavpack.dll
index e15413e2..08b7f0f9 100644
Binary files a/Output/x86/gstreamer/libgstwavpack.dll and b/Output/x86/gstreamer/libgstwavpack.dll differ
diff --git a/Output/x86/gstreamer/libgstwavparse.dll b/Output/x86/gstreamer/libgstwavparse.dll
index 16757786..6e364532 100644
Binary files a/Output/x86/gstreamer/libgstwavparse.dll and b/Output/x86/gstreamer/libgstwavparse.dll differ
diff --git a/Output/x86/gstreamer/libgstx264.dll b/Output/x86/gstreamer/libgstx264.dll
new file mode 100644
index 00000000..5dd3fd5c
Binary files /dev/null and b/Output/x86/gstreamer/libgstx264.dll differ
diff --git a/Output/x86/gstreamer/libgstxingmux.dll b/Output/x86/gstreamer/libgstxingmux.dll
index cc7314e2..fc09d237 100644
Binary files a/Output/x86/gstreamer/libgstxingmux.dll and b/Output/x86/gstreamer/libgstxingmux.dll differ
diff --git a/Output/x86/gstreamer/libgsty4mdec.dll b/Output/x86/gstreamer/libgsty4mdec.dll
index 4ed519e5..d839532b 100644
Binary files a/Output/x86/gstreamer/libgsty4mdec.dll and b/Output/x86/gstreamer/libgsty4mdec.dll differ
diff --git a/Output/x86/gstreamer/libgsty4menc.dll b/Output/x86/gstreamer/libgsty4menc.dll
index 384a0949..129f2f37 100644
Binary files a/Output/x86/gstreamer/libgsty4menc.dll and b/Output/x86/gstreamer/libgsty4menc.dll differ
diff --git a/Output/x86/gstreamer/libgthread-2.0-0.dll b/Output/x86/gstreamer/libgthread-2.0-0.dll
index a17bc5c6..5c8e03e8 100644
Binary files a/Output/x86/gstreamer/libgthread-2.0-0.dll and b/Output/x86/gstreamer/libgthread-2.0-0.dll differ
diff --git a/Output/x86/gstreamer/libhogweed-2-2.dll b/Output/x86/gstreamer/libhogweed-2-2.dll
index 3cccacde..04cec47f 100644
Binary files a/Output/x86/gstreamer/libhogweed-2-2.dll and b/Output/x86/gstreamer/libhogweed-2-2.dll differ
diff --git a/Output/x86/gstreamer/libiconv-2.dll b/Output/x86/gstreamer/libiconv-2.dll
index cb363ae5..98b3e824 100644
Binary files a/Output/x86/gstreamer/libiconv-2.dll and b/Output/x86/gstreamer/libiconv-2.dll differ
diff --git a/Output/x86/gstreamer/libintl-8.dll b/Output/x86/gstreamer/libintl-8.dll
index 10332191..76b00225 100644
Binary files a/Output/x86/gstreamer/libintl-8.dll and b/Output/x86/gstreamer/libintl-8.dll differ
diff --git a/Output/x86/gstreamer/libjasper-1.dll b/Output/x86/gstreamer/libjasper-1.dll
deleted file mode 100644
index 57edb779..00000000
Binary files a/Output/x86/gstreamer/libjasper-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libjpeg-8.dll b/Output/x86/gstreamer/libjpeg-8.dll
index 4d04b230..e4f52bad 100644
Binary files a/Output/x86/gstreamer/libjpeg-8.dll and b/Output/x86/gstreamer/libjpeg-8.dll differ
diff --git a/Output/x86/gstreamer/libkate-1.dll b/Output/x86/gstreamer/libkate-1.dll
index f639c2d5..e6bc08bf 100644
Binary files a/Output/x86/gstreamer/libkate-1.dll and b/Output/x86/gstreamer/libkate-1.dll differ
diff --git a/Output/x86/gstreamer/libmms-0.dll b/Output/x86/gstreamer/libmms-0.dll
index 8943fd8a..495397cc 100644
Binary files a/Output/x86/gstreamer/libmms-0.dll and b/Output/x86/gstreamer/libmms-0.dll differ
diff --git a/Output/x86/gstreamer/libmpeg2-0.dll b/Output/x86/gstreamer/libmpeg2-0.dll
index 09fb018f..03d4d18d 100644
Binary files a/Output/x86/gstreamer/libmpeg2-0.dll and b/Output/x86/gstreamer/libmpeg2-0.dll differ
diff --git a/Output/x86/gstreamer/libmpeg2convert-0.dll b/Output/x86/gstreamer/libmpeg2convert-0.dll
index 1b040750..68ffc517 100644
Binary files a/Output/x86/gstreamer/libmpeg2convert-0.dll and b/Output/x86/gstreamer/libmpeg2convert-0.dll differ
diff --git a/Output/x86/gstreamer/libnettle-4-4.dll b/Output/x86/gstreamer/libnettle-4-4.dll
index 8524bff6..5eb48dae 100644
Binary files a/Output/x86/gstreamer/libnettle-4-4.dll and b/Output/x86/gstreamer/libnettle-4-4.dll differ
diff --git a/Output/x86/gstreamer/libogg-0.dll b/Output/x86/gstreamer/libogg-0.dll
index 43a7a89f..e0053c58 100644
Binary files a/Output/x86/gstreamer/libogg-0.dll and b/Output/x86/gstreamer/libogg-0.dll differ
diff --git a/Output/x86/gstreamer/liboggkate-1.dll b/Output/x86/gstreamer/liboggkate-1.dll
index 3caf5922..3ffe1994 100644
Binary files a/Output/x86/gstreamer/liboggkate-1.dll and b/Output/x86/gstreamer/liboggkate-1.dll differ
diff --git a/Output/x86/gstreamer/libopencore-amrnb-0.dll b/Output/x86/gstreamer/libopencore-amrnb-0.dll
index b9ab1561..1eef9151 100644
Binary files a/Output/x86/gstreamer/libopencore-amrnb-0.dll and b/Output/x86/gstreamer/libopencore-amrnb-0.dll differ
diff --git a/Output/x86/gstreamer/libopencore-amrwb-0.dll b/Output/x86/gstreamer/libopencore-amrwb-0.dll
index 840ad1b5..09f6d1c2 100644
Binary files a/Output/x86/gstreamer/libopencore-amrwb-0.dll and b/Output/x86/gstreamer/libopencore-amrwb-0.dll differ
diff --git a/Output/x86/gstreamer/libopus-0.dll b/Output/x86/gstreamer/libopus-0.dll
index 8a151912..4c37357f 100644
Binary files a/Output/x86/gstreamer/libopus-0.dll and b/Output/x86/gstreamer/libopus-0.dll differ
diff --git a/Output/x86/gstreamer/liborc-0.4-0.dll b/Output/x86/gstreamer/liborc-0.4-0.dll
index f48dde2f..c8b97949 100644
Binary files a/Output/x86/gstreamer/liborc-0.4-0.dll and b/Output/x86/gstreamer/liborc-0.4-0.dll differ
diff --git a/Output/x86/gstreamer/liborc-test-0.4-0.dll b/Output/x86/gstreamer/liborc-test-0.4-0.dll
index e226485f..0d830d91 100644
Binary files a/Output/x86/gstreamer/liborc-test-0.4-0.dll and b/Output/x86/gstreamer/liborc-test-0.4-0.dll differ
diff --git a/Output/x86/gstreamer/libpango-1.0-0.dll b/Output/x86/gstreamer/libpango-1.0-0.dll
index bdde5e90..3bc7dbd2 100644
Binary files a/Output/x86/gstreamer/libpango-1.0-0.dll and b/Output/x86/gstreamer/libpango-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libpangocairo-1.0-0.dll b/Output/x86/gstreamer/libpangocairo-1.0-0.dll
index 340fb8b9..a230677a 100644
Binary files a/Output/x86/gstreamer/libpangocairo-1.0-0.dll and b/Output/x86/gstreamer/libpangocairo-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libpangoft2-1.0-0.dll b/Output/x86/gstreamer/libpangoft2-1.0-0.dll
index 7ff78998..972fc2b3 100644
Binary files a/Output/x86/gstreamer/libpangoft2-1.0-0.dll and b/Output/x86/gstreamer/libpangoft2-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libpangowin32-1.0-0.dll b/Output/x86/gstreamer/libpangowin32-1.0-0.dll
index ef44eedc..a8ca6052 100644
Binary files a/Output/x86/gstreamer/libpangowin32-1.0-0.dll and b/Output/x86/gstreamer/libpangowin32-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libpixman-1-0.dll b/Output/x86/gstreamer/libpixman-1-0.dll
index a3264b27..8b0e7510 100644
Binary files a/Output/x86/gstreamer/libpixman-1-0.dll and b/Output/x86/gstreamer/libpixman-1-0.dll differ
diff --git a/Output/x86/gstreamer/libpng15-15.dll b/Output/x86/gstreamer/libpng15-15.dll
index 692e1cb6..25b86025 100644
Binary files a/Output/x86/gstreamer/libpng15-15.dll and b/Output/x86/gstreamer/libpng15-15.dll differ
diff --git a/Output/x86/gstreamer/libschroedinger-1.0-0.dll b/Output/x86/gstreamer/libschroedinger-1.0-0.dll
index b90aaf6e..5b550844 100644
Binary files a/Output/x86/gstreamer/libschroedinger-1.0-0.dll and b/Output/x86/gstreamer/libschroedinger-1.0-0.dll differ
diff --git a/Output/x86/gstreamer/libsoup-2.4-1.dll b/Output/x86/gstreamer/libsoup-2.4-1.dll
index 5f2b87f1..3f9d3f5b 100644
Binary files a/Output/x86/gstreamer/libsoup-2.4-1.dll and b/Output/x86/gstreamer/libsoup-2.4-1.dll differ
diff --git a/Output/x86/gstreamer/libspeex-1.dll b/Output/x86/gstreamer/libspeex-1.dll
index 1bbbaef8..e20e3aeb 100644
Binary files a/Output/x86/gstreamer/libspeex-1.dll and b/Output/x86/gstreamer/libspeex-1.dll differ
diff --git a/Output/x86/gstreamer/libspeexdsp-1.dll b/Output/x86/gstreamer/libspeexdsp-1.dll
index 3198ce5e..b8c4c07f 100644
Binary files a/Output/x86/gstreamer/libspeexdsp-1.dll and b/Output/x86/gstreamer/libspeexdsp-1.dll differ
diff --git a/Output/x86/gstreamer/libstdc++-6.dll b/Output/x86/gstreamer/libstdc++-6.dll
index 73958a43..dcd41a9d 100644
Binary files a/Output/x86/gstreamer/libstdc++-6.dll and b/Output/x86/gstreamer/libstdc++-6.dll differ
diff --git a/Output/x86/gstreamer/libtag.dll b/Output/x86/gstreamer/libtag.dll
index 72128dda..302fb280 100644
Binary files a/Output/x86/gstreamer/libtag.dll and b/Output/x86/gstreamer/libtag.dll differ
diff --git a/Output/x86/gstreamer/libtag_c.dll b/Output/x86/gstreamer/libtag_c.dll
index 1643687f..f9b18a5a 100644
Binary files a/Output/x86/gstreamer/libtag_c.dll and b/Output/x86/gstreamer/libtag_c.dll differ
diff --git a/Output/x86/gstreamer/libtasn1-3.dll b/Output/x86/gstreamer/libtasn1-3.dll
index a7cd1de5..3efd4c60 100644
Binary files a/Output/x86/gstreamer/libtasn1-3.dll and b/Output/x86/gstreamer/libtasn1-3.dll differ
diff --git a/Output/x86/gstreamer/libtheora-0.dll b/Output/x86/gstreamer/libtheora-0.dll
index 8d9402ba..97ef40c8 100644
Binary files a/Output/x86/gstreamer/libtheora-0.dll and b/Output/x86/gstreamer/libtheora-0.dll differ
diff --git a/Output/x86/gstreamer/libtheoradec-1.dll b/Output/x86/gstreamer/libtheoradec-1.dll
index a30d2c74..7136909b 100644
Binary files a/Output/x86/gstreamer/libtheoradec-1.dll and b/Output/x86/gstreamer/libtheoradec-1.dll differ
diff --git a/Output/x86/gstreamer/libtheoraenc-1.dll b/Output/x86/gstreamer/libtheoraenc-1.dll
index 39e52496..38a7187a 100644
Binary files a/Output/x86/gstreamer/libtheoraenc-1.dll and b/Output/x86/gstreamer/libtheoraenc-1.dll differ
diff --git a/Output/x86/gstreamer/libtiff-5.dll b/Output/x86/gstreamer/libtiff-5.dll
index fd0d2e0e..4f64c71c 100644
Binary files a/Output/x86/gstreamer/libtiff-5.dll and b/Output/x86/gstreamer/libtiff-5.dll differ
diff --git a/Output/x86/gstreamer/libvisual-0.4-0.dll b/Output/x86/gstreamer/libvisual-0.4-0.dll
index e9e4c58b..e25b19f2 100644
Binary files a/Output/x86/gstreamer/libvisual-0.4-0.dll and b/Output/x86/gstreamer/libvisual-0.4-0.dll differ
diff --git a/Output/x86/gstreamer/libvorbis-0.dll b/Output/x86/gstreamer/libvorbis-0.dll
index ae7da204..dc0bed93 100644
Binary files a/Output/x86/gstreamer/libvorbis-0.dll and b/Output/x86/gstreamer/libvorbis-0.dll differ
diff --git a/Output/x86/gstreamer/libvorbisenc-2.dll b/Output/x86/gstreamer/libvorbisenc-2.dll
index 02755ede..695beb90 100644
Binary files a/Output/x86/gstreamer/libvorbisenc-2.dll and b/Output/x86/gstreamer/libvorbisenc-2.dll differ
diff --git a/Output/x86/gstreamer/libvorbisfile-3.dll b/Output/x86/gstreamer/libvorbisfile-3.dll
index ec59a400..eae3fda5 100644
Binary files a/Output/x86/gstreamer/libvorbisfile-3.dll and b/Output/x86/gstreamer/libvorbisfile-3.dll differ
diff --git a/Output/x86/gstreamer/libwavpack-1.dll b/Output/x86/gstreamer/libwavpack-1.dll
index 4cc147b1..7f5ece56 100644
Binary files a/Output/x86/gstreamer/libwavpack-1.dll and b/Output/x86/gstreamer/libwavpack-1.dll differ
diff --git a/Output/x86/gstreamer/libwinpthread-1.dll b/Output/x86/gstreamer/libwinpthread-1.dll
new file mode 100644
index 00000000..e27a40c6
Binary files /dev/null and b/Output/x86/gstreamer/libwinpthread-1.dll differ
diff --git a/Output/x86/gstreamer/libx264-125.dll b/Output/x86/gstreamer/libx264-125.dll
new file mode 100644
index 00000000..caf83228
Binary files /dev/null and b/Output/x86/gstreamer/libx264-125.dll differ
diff --git a/Output/x86/gstreamer/libxml2-2.dll b/Output/x86/gstreamer/libxml2-2.dll
index ca1d0ec2..70e68238 100644
Binary files a/Output/x86/gstreamer/libxml2-2.dll and b/Output/x86/gstreamer/libxml2-2.dll differ
diff --git a/Output/x86/gstreamer/libz.dll b/Output/x86/gstreamer/libz.dll
index 3298ad60..49dd02aa 100644
Binary files a/Output/x86/gstreamer/libz.dll and b/Output/x86/gstreamer/libz.dll differ
diff --git a/Output/x86/gstreamer/log.txt b/Output/x86/gstreamer/log.txt
deleted file mode 100644
index f0cfa4a2..00000000
--- a/Output/x86/gstreamer/log.txt
+++ /dev/null
@@ -1,929 +0,0 @@
-y4menc: y4menc: YUV4MPEG video encoder
-y4mdec: y4mdec: YUV4MPEG demuxer/decoder
-xingmux: xingmux: MP3 Xing muxer
-wavparse: wavparse: WAV audio demuxer
-wavpack: wavpackdec: Wavpack audio decoder
-wavpack: wavpackenc: Wavpack audio encoder
-wavenc: wavenc: WAV audio muxer
-waveform: waveformsink: WaveForm Audio Sink
-vorbis: vorbisenc: Vorbis audio encoder
-vorbis: vorbisdec: Vorbis audio decoder
-vorbis: vorbisparse: VorbisParse
-vorbis: vorbistag: VorbisTag
-volume: volume: Volume
-videotestsrc: videotestsrc: Video test source
-videoscale: videoscale: Video scaler
-videorate: videorate: Video rate adjuster
-videoparsersbad: h263parse: H.263 parser
-videoparsersbad: h264parse: H.264 parser
-videoparsersbad: diracparse: Dirac parser
-videoparsersbad: mpegvideoparse: MPEG video elementary stream parser
-videoparsersbad: mpeg4videoparse: MPEG 4 video elementary stream parser
-videomixer: videomixer: Video mixer 2
-videofilter: gamma: Video gamma correction
-videofilter: videobalance: Video balance
-videofilter: videoflip: Video flipper
-videofilter: videomedian: Median effect
-videocrop: videocrop: Crop
-videocrop: aspectratiocrop: aspectratiocrop
-videoconvert: videoconvert: Colorspace converter
-videobox: videobox: Video box filter
-udp: udpsink: UDP packet sender
-udp: multiudpsink: UDP packet sender
-udp: dynudpsink: UDP packet sender
-udp: udpsrc: UDP packet receiver
-typefindfunctions: video/x-ms-asf: asf, wm, wma, wmv
-typefindfunctions: audio/x-musepack: mpc, mpp, mp+
-typefindfunctions: audio/x-au: au, snd
-typefindfunctions: video/x-msvideo: avi
-typefindfunctions: audio/qcelp: qcp
-typefindfunctions: video/x-cdxa: dat
-typefindfunctions: video/x-vcd: dat
-typefindfunctions: audio/x-imelody: imy, ime, imelody
-typefindfunctions: audio/midi: mid, midi
-typefindfunctions: audio/riff-midi: mid, midi
-typefindfunctions: audio/mobile-xmf: mxmf
-typefindfunctions: video/x-fli: flc, fli
-typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta
-typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta
-typefindfunctions: application/x-apetag: mp3, ape, mpc, wv
-typefindfunctions: audio/x-ttafile: tta
-typefindfunctions: audio/x-mod: 669, amf, dsm, gdm, far, imf, it, med, mod, mtm, okt, sam, s3m, stm, stx, ult, xm
-typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga
-typefindfunctions: audio/x-ac3: ac3, eac3
-typefindfunctions: audio/x-dts: dts
-typefindfunctions: audio/x-gsm: gsm
-typefindfunctions: video/mpeg-sys: mpe, mpeg, mpg
-typefindfunctions: video/mpegts: ts, mts
-typefindfunctions: application/ogg: ogg, oga, ogv, ogm, ogx, spx, anx, axa, axv
-typefindfunctions: video/mpeg-elementary: mpv, mpeg, mpg
-typefindfunctions: video/mpeg4: m4v
-typefindfunctions: video/x-h263: h263, 263
-typefindfunctions: video/x-h264: h264, x264, 264
-typefindfunctions: video/x-nuv: nuv
-typefindfunctions: audio/x-m4a: m4a
-typefindfunctions: application/x-3gp: 3gp
-typefindfunctions: video/quicktime: mov
-typefindfunctions: image/x-quicktime: qif, qtif, qti
-typefindfunctions: image/jp2: jp2
-typefindfunctions: video/mj2: mj2
-typefindfunctions: text/html: htm, html
-typefindfunctions: application/vnd.rn-realmedia: ra, ram, rm, rmvb
-typefindfunctions: application/x-pn-realaudio: ra, ram, rm, rmvb
-typefindfunctions: application/x-shockwave-flash: swf, swfl
-typefindfunctions: video/x-flv: flv
-typefindfunctions: text/plain: txt
-typefindfunctions: text/utf-16: txt
-typefindfunctions: text/utf-32: txt
-typefindfunctions: text/uri-list: ram
-typefindfunctions: application/x-hls: m3u8
-typefindfunctions: application/sdp: sdp
-typefindfunctions: application/smil: smil
-typefindfunctions: application/xml: xml
-typefindfunctions: audio/x-wav: wav
-typefindfunctions: audio/x-aiff: aiff, aif, aifc
-typefindfunctions: audio/x-svx: iff, svx
-typefindfunctions: audio/x-paris: paf
-typefindfunctions: audio/x-nist: nist
-typefindfunctions: audio/x-voc: voc
-typefindfunctions: audio/x-sds: sds
-typefindfunctions: audio/x-ircam: sf
-typefindfunctions: audio/x-w64: w64
-typefindfunctions: audio/x-shorten: shn
-typefindfunctions: application/x-ape: ape
-typefindfunctions: image/jpeg: jpg, jpe, jpeg
-typefindfunctions: image/gif: gif
-typefindfunctions: image/png: png
-typefindfunctions: image/bmp: bmp
-typefindfunctions: image/tiff: tif, tiff
-typefindfunctions: image/x-portable-pixmap: pnm, ppm, pgm, pbm
-typefindfunctions: video/x-matroska: mkv, mka, mk3d, webm
-typefindfunctions: application/mxf: mxf
-typefindfunctions: video/x-mve: mve
-typefindfunctions: video/x-dv: dv, dif
-typefindfunctions: audio/x-amr-nb-sh: amr
-typefindfunctions: audio/x-amr-wb-sh: amr
-typefindfunctions: audio/iLBC-sh: ilbc
-typefindfunctions: audio/x-sid: sid
-typefindfunctions: image/x-xcf: xcf
-typefindfunctions: video/x-mng: mng
-typefindfunctions: image/x-jng: jng
-typefindfunctions: image/x-xpixmap: xpm
-typefindfunctions: image/x-sun-raster: ras
-typefindfunctions: application/x-bzip: bz2
-typefindfunctions: application/x-gzip: gz
-typefindfunctions: application/zip: zip
-typefindfunctions: application/x-compress: Z
-typefindfunctions: subtitle/x-kate: no extensions
-typefindfunctions: audio/x-flac: flac
-typefindfunctions: audio/x-vorbis: no extensions
-typefindfunctions: video/x-theora: no extensions
-typefindfunctions: application/x-ogm-video: no extensions
-typefindfunctions: application/x-ogm-audio: no extensions
-typefindfunctions: application/x-ogm-text: no extensions
-typefindfunctions: audio/x-speex: no extensions
-typefindfunctions: audio/x-celt: no extensions
-typefindfunctions: application/x-ogg-skeleton: no extensions
-typefindfunctions: text/x-cmml: no extensions
-typefindfunctions: application/x-executable: no extensions
-typefindfunctions: audio/aac: aac, adts, adif, loas
-typefindfunctions: audio/x-spc: spc
-typefindfunctions: audio/x-wavpack: wv, wvp
-typefindfunctions: audio/x-wavpack-correction: wvc
-typefindfunctions: application/postscript: ps
-typefindfunctions: image/svg+xml: svg
-typefindfunctions: application/x-rar: rar
-typefindfunctions: application/x-tar: tar
-typefindfunctions: application/x-ar: a
-typefindfunctions: application/x-ms-dos-executable: dll, exe, ocx, sys, scr, msstyles, cpl
-typefindfunctions: video/x-dirac: no extensions
-typefindfunctions: multipart/x-mixed-replace: no extensions
-typefindfunctions: application/x-mmsh: no extensions
-typefindfunctions: video/vivo: viv
-typefindfunctions: audio/x-nsf: nsf
-typefindfunctions: audio/x-gym: gym
-typefindfunctions: audio/x-ay: ay
-typefindfunctions: audio/x-gbs: gbs
-typefindfunctions: audio/x-vgm: vgm
-typefindfunctions: audio/x-sap: sap
-typefindfunctions: video/x-ivf: ivf
-typefindfunctions: audio/x-kss: kss
-typefindfunctions: application/pdf: pdf
-typefindfunctions: application/msword: doc
-typefindfunctions: image/vnd.adobe.photoshop: psd
-typefindfunctions: image/vnd.wap.wbmp: no extensions
-typefindfunctions: application/x-yuv4mpeg: y4m
-typefindfunctions: image/x-icon: no extensions
-typefindfunctions: image/x-degas: no extensions
-typefindfunctions: application/octet-stream: no extensions
-theora: theoradec: Theora video decoder
-theora: theoraenc: Theora video encoder
-theora: theoraparse: Theora video parser
-tcp: tcpclientsink: TCP client sink
-tcp: tcpclientsrc: TCP client source
-tcp: tcpserversink: TCP server sink
-tcp: tcpserversrc: TCP server source
-tcp: multisocketsink: Multi socket sink
-taglib: id3v2mux: TagLib-based ID3v2 Muxer
-taglib: apev2mux: TagLib-based APEv2 Muxer
-subparse: subparse_typefind: srt, sub, mpsub, mdvd, smi, txt, dks
-subparse: subparse: Subtitle parser
-subparse: ssaparse: SSA Subtitle Parser
-subenc: srtenc: Srt encoder
-subenc: webvttenc: WebVTT encoder
-speex: speexenc: Speex audio encoder
-speex: speexdec: Speex audio decoder
-speed: speed: Speed
-spectrum: spectrum: Spectrum analyzer
-soup: souphttpsrc: HTTP client source
-soup: souphttpclientsink: HTTP client sink
-smpte: smpte: SMPTE transitions
-smpte: smptealpha: SMPTE transitions
-smooth: smooth: Smooth effect
-gstsiren: sirendec: Siren Decoder element
-gstsiren: sirenenc: Siren Encoder element
-shapewipe: shapewipe: Shape Wipe transition filter
-segmentclip: audiosegmentclip: Audio buffer segment clipper
-segmentclip: videosegmentclip: Video buffer segment clipper
-sdp: sdpdemux: SDP session setup
-schro: schrodec: Dirac Decoder
-schro: schroenc: Dirac Encoder
-scaletempo: scaletempo: Scaletempo
-rtsp: rtspsrc: RTSP packet receiver
-rtsp: rtpdec: RTP Decoder
-rtpvp8: rtpvp8depay: RTP VP8 depayloader
-rtpvp8: rtpvp8pay: RTP VP8 payloader
-rtpmux: rtpmux: RTP muxer
-rtpmux: rtpdtmfmux: RTP muxer
-rtpmanager: rtpbin: RTP Bin
-rtpmanager: rtpjitterbuffer: RTP packet jitter-buffer
-rtpmanager: rtpptdemux: RTP Demux
-rtpmanager: rtpsession: RTP Session
-rtpmanager: rtpssrcdemux: RTP SSRC Demux
-rtp: rtpac3depay: RTP AC3 depayloader
-rtp: rtpac3pay: RTP AC3 audio payloader
-rtp: rtpbvdepay: RTP BroadcomVoice depayloader
-rtp: rtpbvpay: RTP BV Payloader
-rtp: rtpceltdepay: RTP CELT depayloader
-rtp: rtpceltpay: RTP CELT payloader
-rtp: rtpdvdepay: RTP DV Depayloader
-rtp: rtpdvpay: RTP DV Payloader
-rtp: rtpgstdepay: GStreamer depayloader
-rtp: rtpgstpay: RTP GStreamer payloader
-rtp: rtpilbcpay: RTP iLBC Payloader
-rtp: rtpilbcdepay: RTP iLBC depayloader
-rtp: rtpg722depay: RTP audio depayloader
-rtp: rtpg722pay: RTP audio payloader
-rtp: rtpg723depay: RTP G.723 depayloader
-rtp: rtpg723pay: RTP G.723 payloader
-rtp: rtpg726depay: RTP G.726 depayloader
-rtp: rtpg726pay: RTP G.726 payloader
-rtp: rtpg729depay: RTP G.729 depayloader
-rtp: rtpg729pay: RTP G.729 payloader
-rtp: rtpgsmdepay: RTP GSM depayloader
-rtp: rtpgsmpay: RTP GSM payloader
-rtp: rtpamrdepay: RTP AMR depayloader
-rtp: rtpamrpay: RTP AMR payloader
-rtp: rtppcmadepay: RTP PCMA depayloader
-rtp: rtppcmudepay: RTP PCMU depayloader
-rtp: rtppcmupay: RTP PCMU payloader
-rtp: rtppcmapay: RTP PCMA payloader
-rtp: rtpmpadepay: RTP MPEG audio depayloader
-rtp: rtpmpapay: RTP MPEG audio payloader
-rtp: rtpmparobustdepay: RTP MPEG audio depayloader
-rtp: rtpmpvdepay: RTP MPEG video depayloader
-rtp: rtpmpvpay: RTP MPEG2 ES video payloader
-rtp: rtph263ppay: RTP H263 payloader
-rtp: rtph263pdepay: RTP H263 depayloader
-rtp: rtph263depay: RTP H263 depayloader
-rtp: rtph263pay: RTP H263 packet payloader
-rtp: rtph264depay: RTP H264 depayloader
-rtp: rtph264pay: RTP H264 payloader
-rtp: rtpj2kdepay: RTP JPEG 2000 depayloader
-rtp: rtpj2kpay: RTP JPEG 2000 payloader
-rtp: rtpjpegdepay: RTP JPEG depayloader
-rtp: rtpjpegpay: RTP JPEG payloader
-rtp: rtpL16pay: RTP audio payloader
-rtp: rtpL16depay: RTP audio depayloader
-rtp: asteriskh263: RTP Asterisk H263 depayloader
-rtp: rtpmp1sdepay: RTP MPEG1 System Stream depayloader
-rtp: rtpmp2tdepay: RTP MPEG Transport Stream depayloader
-rtp: rtpmp2tpay: RTP MPEG2 Transport Stream payloader
-rtp: rtpmp4vpay: RTP MPEG4 Video payloader
-rtp: rtpmp4vdepay: RTP MPEG4 video depayloader
-rtp: rtpmp4apay: RTP MPEG4 audio payloader
-rtp: rtpmp4adepay: RTP MPEG4 audio depayloader
-rtp: rtpmp4gdepay: RTP MPEG4 ES depayloader
-rtp: rtpmp4gpay: RTP MPEG4 ES payloader
-rtp: rtpqcelpdepay: RTP QCELP depayloader
-rtp: rtpqdm2depay: RTP QDM2 depayloader
-rtp: rtpsirenpay: RTP Payloader for Siren Audio
-rtp: rtpsirendepay: RTP Siren packet depayloader
-rtp: rtpspeexpay: RTP Speex payloader
-rtp: rtpspeexdepay: RTP Speex depayloader
-rtp: rtpsv3vdepay: RTP SVQ3 depayloader
-rtp: rtptheoradepay: RTP Theora depayloader
-rtp: rtptheorapay: RTP Theora payloader
-rtp: rtpvorbisdepay: RTP Vorbis depayloader
-rtp: rtpvorbispay: RTP Vorbis depayloader
-rtp: rtpvrawdepay: RTP Raw Video depayloader
-rtp: rtpvrawpay: RTP Raw Video payloader
-realmedia: rmdemux: RealMedia Demuxer
-realmedia: rademux: RealAudio Demuxer
-realmedia: rdtdepay: RDT packet parser
-realmedia: rdtmanager: RTP Decoder
-realmedia: rtspreal: RealMedia RTSP Extension
-realmedia: pnmsrc: PNM packet receiver
-resindvd: rsndvdbin: rsndvdbin
-replaygain: rganalysis: ReplayGain analysis
-replaygain: rglimiter: ReplayGain limiter
-replaygain: rgvolume: ReplayGain volume
-removesilence: removesilence: RemoveSilence
-rawparse: videoparse: Video Parse
-rawparse: audioparse: Audio Parse
-pnm: pnmdec: PNM image decoder
-pnm: pnmenc: PNM image encoder
-png: pngdec: PNG image decoder
-png: pngenc: PNG image encoder
-playback: playbin: Player Bin 2
-playback: playsink: Player Sink
-playback: subtitleoverlay: Subtitle Overlay
-playback: decodebin: Decoder Bin
-playback: uridecodebin: URI Decoder
-pcapparse: pcapparse: PCapParse
-pcapparse: irtspparse: IRTSPParse
-pango: textoverlay: Text overlay
-pango: timeoverlay: Time overlay
-pango: clockoverlay: Clock overlay
-pango: textrender: Text renderer
-opus: opusenc: Opus audio encoder
-opus: opusdec: Opus audio decoder
-opus: opusparse: Opus audio parser
-opus: rtpopusdepay: RTP Opus packet depayloader
-opus: rtpopuspay: RTP Opus payloader
-ogg: oggdemux: Ogg demuxer
-ogg: oggmux: Ogg muxer
-ogg: ogmaudioparse: OGM audio stream parser
-ogg: ogmvideoparse: OGM video stream parser
-ogg: ogmtextparse: OGM text stream parser
-ogg: oggparse: Ogg parser
-ogg: oggaviparse: Ogg AVI parser
-navigationtest: navigationtest: Video navigation test
-multipart: multipartdemux: Multipart demuxer
-multipart: multipartmux: Multipart muxer
-multifile: multifilesrc: Multi-File Source
-multifile: multifilesink: Multi-File Sink
-multifile: splitfilesrc: Split-File Source
-mulaw: mulawenc: Mu Law audio encoder
-mulaw: mulawdec: Mu Law audio decoder
-mpegtsmux: mpegtsmux: MPEG Transport Stream Muxer
-mpegtsdemux: tsparse: MPEG transport stream parser
-mpegtsdemux: tsdemux: MPEG transport stream demuxer
-mpegpsmux: mpegpsmux: MPEG Program Stream Muxer
-mpegpsdemux: mpegpsdemux: The Fluendo MPEG Program Stream Demuxer
-mpeg2dec: mpeg2dec: mpeg1 and mpeg2 video decoder
-mms: mmssrc: MMS streaming source
-matroska: matroskademux: Matroska demuxer
-matroska: matroskaparse: Matroska parser
-matroska: matroskamux: Matroska muxer
-matroska: webmmux: WebM muxer
-mad: mad: mad mp3 decoder
-liveadder: liveadder: Live Adder element
-libav: avenc_aac: libav Advanced Audio Coding encoder
-libav: avenc_ac3: libav ATSC A/52A (AC-3) encoder
-libav: avenc_ac3_fixed: libav ATSC A/52A (AC-3) encoder
-libav: avenc_alac: libav ALAC (Apple Lossless Audio Codec) encoder
-libav: avenc_eac3: libav ATSC A/52 E-AC-3 encoder
-libav: avenc_mp2: libav MP2 (MPEG audio layer 2) encoder
-libav: avenc_nellymoser: libav Nellymoser Asao encoder
-libav: avenc_real_144: libav RealAudio 1.0 (14.4K) encoder encoder
-libav: avenc_wmav1: libav Windows Media Audio 1 encoder
-libav: avenc_wmav2: libav Windows Media Audio 2 encoder
-libav: avenc_roq_dpcm: libav id RoQ DPCM encoder
-libav: avenc_adpcm_adx: libav SEGA CRI ADX ADPCM encoder
-libav: avenc_g722: libav G.722 ADPCM encoder
-libav: avenc_g726: libav G.726 ADPCM encoder
-libav: avenc_adpcm_ima_qt: libav ADPCM IMA QuickTime encoder
-libav: avenc_adpcm_ima_wav: libav ADPCM IMA WAV encoder
-libav: avenc_adpcm_ms: libav ADPCM Microsoft encoder
-libav: avenc_adpcm_swf: libav ADPCM Shockwave Flash encoder
-libav: avenc_adpcm_yamaha: libav ADPCM Yamaha encoder
-libav: avenc_a64multi: libav Multicolor charset for Commodore 64 encoder
-libav: avenc_a64multi5: libav Multicolor charset for Commodore 64, extended with 5th color (colram) encoder
-libav: avenc_asv1: libav ASUS V1 encoder
-libav: avenc_asv2: libav ASUS V2 encoder
-libav: avenc_bmp: libav BMP image encoder
-libav: avenc_cljr: libav Cirrus Logic AccuPak encoder
-libav: avenc_dnxhd: libav VC3/DNxHD encoder
-libav: avenc_dpx: libav DPX image encoder
-libav: avenc_dvvideo: libav DV (Digital Video) encoder
-libav: avenc_ffv1: libav FFmpeg video codec #1 encoder
-libav: avenc_ffvhuff: libav Huffyuv FFmpeg variant encoder
-libav: avenc_flashsv: libav Flash Screen Video encoder
-libav: avenc_flv: libav Flash Video (FLV) / Sorenson Spark / Sorenson H.263 encoder
-libav: avenc_h261: libav H.261 encoder
-libav: avenc_h263: libav H.263 / H.263-1996 encoder
-libav: avenc_h263p: libav H.263+ / H.263-1998 / H.263 version 2 encoder
-libav: avenc_huffyuv: libav Huffyuv / HuffYUV encoder
-libav: avenc_jpegls: libav JPEG-LS encoder
-libav: avenc_ljpeg: libav Lossless JPEG encoder
-libav: avenc_mjpeg: libav MJPEG (Motion JPEG) encoder
-libav: avenc_mpeg1video: libav MPEG-1 video encoder
-libav: avenc_mpeg2video: libav MPEG-2 video encoder
-libav: avenc_mpeg4: libav MPEG-4 part 2 encoder
-libav: avenc_msmpeg4v2: libav MPEG-4 part 2 Microsoft variant version 2 encoder
-libav: avenc_msmpeg4: libav MPEG-4 part 2 Microsoft variant version 3 encoder
-libav: avenc_pam: libav PAM (Portable AnyMap) image encoder
-libav: avenc_pbm: libav PBM (Portable BitMap) image encoder
-libav: avenc_pcx: libav PC Paintbrush PCX image encoder
-libav: avenc_pgm: libav PGM (Portable GrayMap) image encoder
-libav: avenc_pgmyuv: libav PGMYUV (Portable GrayMap YUV) image encoder
-libav: avenc_png: libav PNG image encoder
-libav: avenc_ppm: libav PPM (Portable PixelMap) image encoder
-libav: avenc_qtrle: libav QuickTime Animation (RLE) video encoder
-libav: avenc_roqvideo: libav id RoQ video encoder
-libav: avenc_rv10: libav RealVideo 1.0 encoder
-libav: avenc_rv20: libav RealVideo 2.0 encoder
-libav: avenc_sgi: libav SGI image encoder
-libav: avenc_snow: libav Snow encoder
-libav: avenc_svq1: libav Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1 encoder
-libav: avenc_targa: libav Truevision Targa image encoder
-libav: avenc_tiff: libav TIFF image encoder
-libav: avenc_v410: libav Uncompressed 4:4:4 10-bit encoder
-libav: avenc_wmv1: libav Windows Media Video 7 encoder
-libav: avenc_wmv2: libav Windows Media Video 8 encoder
-libav: avenc_zmbv: libav Zip Motion Blocks Video encoder
-libav: avdec_8svx_exp: libav 8SVX exponential decoder
-libav: avdec_8svx_fib: libav 8SVX fibonacci decoder
-libav: avdec_s302m: libav SMPTE 302M decoder
-libav: avdec_aac: libav Advanced Audio Coding decoder
-libav: avdec_aac_latm: libav AAC LATM (Advanced Audio Codec LATM syntax) decoder
-libav: avdec_ac3: libav ATSC A/52A (AC-3) decoder
-libav: avdec_alac: libav ALAC (Apple Lossless Audio Codec) decoder
-libav: avdec_als: libav MPEG-4 Audio Lossless Coding (ALS) decoder
-libav: avdec_amrnb: libav Adaptive Multi-Rate NarrowBand decoder
-libav: avdec_amrwb: libav Adaptive Multi-Rate WideBand decoder
-libav: avdec_ape: libav Monkey's Audio decoder
-libav: avdec_atrac1: libav Atrac 1 (Adaptive TRansform Acoustic Coding) decoder
-libav: avdec_atrac3: libav Atrac 3 (Adaptive TRansform Acoustic Coding 3) decoder
-libav: avdec_binkaudio_dct: libav Bink Audio (DCT) decoder
-libav: avdec_binkaudio_rdft: libav Bink Audio (RDFT) decoder
-libav: avdec_bmv_audio: libav Discworld II BMV audio decoder
-libav: avdec_cook: libav COOK decoder
-libav: avdec_dca: libav DCA (DTS Coherent Acoustics) decoder
-libav: avdec_dsicinaudio: libav Delphine Software International CIN audio decoder
-libav: avdec_eac3: libav ATSC A/52B (AC-3, E-AC-3) decoder
-libav: avdec_flac: libav FLAC (Free Lossless Audio Codec) decoder
-libav: avdec_gsm: libav GSM decoder
-libav: avdec_gsm_ms: libav GSM Microsoft variant decoder
-libav: avdec_imc: libav IMC (Intel Music Coder) decoder
-libav: avdec_mace3: libav MACE (Macintosh Audio Compression/Expansion) 3:1 decoder
-libav: avdec_mace6: libav MACE (Macintosh Audio Compression/Expansion) 6:1 decoder
-libav: avdec_mlp: libav MLP (Meridian Lossless Packing) decoder
-libav: avdec_mp1float: libav MP1 (MPEG audio layer 1) decoder
-libav: avdec_mp2float: libav MP2 (MPEG audio layer 2) decoder
-libav: avdec_mp3: libav MP3 (MPEG audio layer 3) decoder
-libav: avdec_mp3float: libav MP3 (MPEG audio layer 3) decoder
-libav: avdec_mp3adu: libav ADU (Application Data Unit) MP3 (MPEG audio layer 3) decoder
-libav: avdec_mp3adufloat: libav ADU (Application Data Unit) MP3 (MPEG audio layer 3) decoder
-libav: avdec_mp3on4: libav MP3onMP4 decoder
-libav: avdec_mp3on4float: libav MP3onMP4 decoder
-libav: avdec_mpc7: libav Musepack SV7 decoder
-libav: avdec_mpc8: libav Musepack SV8 decoder
-libav: avdec_nellymoser: libav Nellymoser Asao decoder
-libav: avdec_qcelp: libav QCELP / PureVoice decoder
-libav: avdec_qdm2: libav QDesign Music Codec 2 decoder
-libav: avdec_real_144: libav RealAudio 1.0 (14.4K) decoder
-libav: avdec_real_288: libav RealAudio 2.0 (28.8K) decoder
-libav: avdec_shorten: libav Shorten decoder
-libav: avdec_sipr: libav RealAudio SIPR / ACELP.NET decoder
-libav: avdec_smackaud: libav Smacker audio decoder
-libav: avdec_truehd: libav TrueHD decoder
-libav: avdec_truespeech: libav DSP Group TrueSpeech decoder
-libav: avdec_tta: libav True Audio (TTA) decoder
-libav: avdec_twinvq: libav VQF TwinVQ decoder
-libav: avdec_vmdaudio: libav Sierra VMD audio decoder
-libav: avdec_wmapro: libav Windows Media Audio 9 Professional decoder
-libav: avdec_wmav1: libav Windows Media Audio 1 decoder
-libav: avdec_wmav2: libav Windows Media Audio 2 decoder
-libav: avdec_wmavoice: libav Windows Media Audio Voice decoder
-libav: avdec_ws_snd1: libav Westwood Audio (SND1) decoder
-libav: avdec_pcm_lxf: libav PCM signed 20-bit little-endian planar decoder
-libav: avdec_pcm_s8_planar: libav PCM signed 8-bit planar decoder
-libav: avdec_interplay_dpcm: libav DPCM Interplay decoder
-libav: avdec_roq_dpcm: libav DPCM id RoQ decoder
-libav: avdec_sol_dpcm: libav DPCM Sol decoder
-libav: avdec_xan_dpcm: libav DPCM Xan decoder
-libav: avdec_adpcm_4xm: libav ADPCM 4X Movie decoder
-libav: avdec_adpcm_adx: libav SEGA CRI ADX ADPCM decoder
-libav: avdec_adpcm_ct: libav ADPCM Creative Technology decoder
-libav: avdec_adpcm_ea: libav ADPCM Electronic Arts decoder
-libav: avdec_adpcm_ea_maxis_xa: libav ADPCM Electronic Arts Maxis CDROM XA decoder
-libav: avdec_adpcm_ea_r1: libav ADPCM Electronic Arts R1 decoder
-libav: avdec_adpcm_ea_r2: libav ADPCM Electronic Arts R2 decoder
-libav: avdec_adpcm_ea_r3: libav ADPCM Electronic Arts R3 decoder
-libav: avdec_adpcm_ea_xas: libav ADPCM Electronic Arts XAS decoder
-libav: avdec_g722: libav G.722 ADPCM decoder
-libav: avdec_g726: libav G.726 ADPCM decoder
-libav: avdec_adpcm_ima_amv: libav ADPCM IMA AMV decoder
-libav: avdec_adpcm_ima_dk3: libav ADPCM IMA Duck DK3 decoder
-libav: avdec_adpcm_ima_dk4: libav ADPCM IMA Duck DK4 decoder
-libav: avdec_adpcm_ima_ea_eacs: libav ADPCM IMA Electronic Arts EACS decoder
-libav: avdec_adpcm_ima_ea_sead: libav ADPCM IMA Electronic Arts SEAD decoder
-libav: avdec_adpcm_ima_iss: libav ADPCM IMA Funcom ISS decoder
-libav: avdec_adpcm_ima_qt: libav ADPCM IMA QuickTime decoder
-libav: avdec_adpcm_ima_smjpeg: libav ADPCM IMA Loki SDL MJPEG decoder
-libav: avdec_adpcm_ima_wav: libav ADPCM IMA WAV decoder
-libav: avdec_adpcm_ima_ws: libav ADPCM IMA Westwood decoder
-libav: avdec_adpcm_ms: libav ADPCM Microsoft decoder
-libav: avdec_adpcm_sbpro_2: libav ADPCM Sound Blaster Pro 2-bit decoder
-libav: avdec_adpcm_sbpro_3: libav ADPCM Sound Blaster Pro 2.6-bit decoder
-libav: avdec_adpcm_sbpro_4: libav ADPCM Sound Blaster Pro 4-bit decoder
-libav: avdec_adpcm_swf: libav ADPCM Shockwave Flash decoder
-libav: avdec_adpcm_thp: libav ADPCM Nintendo Gamecube THP decoder
-libav: avdec_adpcm_xa: libav ADPCM CDROM XA decoder
-libav: avdec_adpcm_yamaha: libav ADPCM Yamaha decoder
-libav: avdec_aasc: libav Autodesk RLE decoder
-libav: avdec_amv: libav AMV Video decoder
-libav: avdec_anm: libav Deluxe Paint Animation decoder
-libav: avdec_ansi: libav ASCII/ANSI art decoder
-libav: avdec_asv1: libav ASUS V1 decoder
-libav: avdec_asv2: libav ASUS V2 decoder
-libav: avdec_aura: libav Auravision AURA decoder
-libav: avdec_aura2: libav Auravision Aura 2 decoder
-libav: avdec_avs: libav AVS (Audio Video Standard) video decoder
-libav: avdec_bethsoftvid: libav Bethesda VID video decoder
-libav: avdec_bfi: libav Brute Force & Ignorance decoder
-libav: avdec_binkvideo: libav Bink video decoder
-libav: avdec_bmp: libav BMP image decoder
-libav: avdec_bmv_video: libav Discworld II BMV video decoder
-libav: avdec_c93: libav Interplay C93 decoder
-libav: avdec_cdgraphics: libav CD Graphics video decoder
-libav: avdec_cinepak: libav Cinepak decoder
-libav: avdec_cljr: libav Cirrus Logic AccuPak decoder
-libav: avdec_camstudio: libav CamStudio decoder
-libav: avdec_cyuv: libav Creative YUV (CYUV) decoder
-libav: avdec_dfa: libav Chronomaster DFA decoder
-libav: avdec_dnxhd: libav VC3/DNxHD decoder
-libav: avdec_dpx: libav DPX image decoder
-libav: avdec_dsicinvideo: libav Delphine Software International CIN video decoder
-libav: avdec_dvvideo: libav DV (Digital Video) decoder
-libav: avdec_dxa: libav Feeble Files/ScummVM DXA decoder
-libav: avdec_dxtory: libav Dxtory decoder
-libav: avdec_eacmv: libav Electronic Arts CMV video decoder
-libav: avdec_eamad: libav Electronic Arts Madcow Video decoder
-libav: avdec_eatgq: libav Electronic Arts TGQ video decoder
-libav: avdec_eatgv: libav Electronic Arts TGV video decoder
-libav: avdec_eatqi: libav Electronic Arts TQI Video decoder
-libav: avdec_8bps: libav QuickTime 8BPS video decoder
-libav: avdec_escape124: libav Escape 124 decoder
-libav: avdec_ffv1: libav FFmpeg video codec #1 decoder
-libav: avdec_ffvhuff: libav Huffyuv FFmpeg variant decoder
-libav: avdec_flashsv: libav Flash Screen Video v1 decoder
-libav: avdec_flashsv2: libav Flash Screen Video v2 decoder
-libav: avdec_flic: libav Autodesk Animator Flic video decoder
-libav: avdec_flv: libav Flash Video (FLV) / Sorenson Spark / Sorenson H.263 decoder
-libav: avdec_4xm: libav 4X Movie decoder
-libav: avdec_fraps: libav Fraps decoder
-libav: avdec_FRWU: libav Forward Uncompressed decoder
-libav: avdec_h261: libav H.261 decoder
-libav: avdec_h263: libav H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2 decoder
-libav: avdec_h263i: libav Intel H.263 decoder
-libav: avdec_h264: libav H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 decoder
-libav: avdec_huffyuv: libav Huffyuv / HuffYUV decoder
-libav: avdec_idcinvideo: libav id Quake II CIN video decoder
-libav: avdec_iff_byterun1: libav IFF ByteRun1 decoder
-libav: avdec_iff_ilbm: libav IFF ILBM decoder
-libav: avdec_indeo2: libav Intel Indeo 2 decoder
-libav: avdec_indeo3: libav Intel Indeo 3 decoder
-libav: avdec_indeo4: libav Intel Indeo Video Interactive 4 decoder
-libav: avdec_indeo5: libav Intel Indeo Video Interactive 5 decoder
-libav: avdec_interplayvideo: libav Interplay MVE video decoder
-libav: avdec_jpegls: libav JPEG-LS decoder
-libav: avdec_jv: libav Bitmap Brothers JV video decoder
-libav: avdec_kgv1: libav Kega Game Video decoder
-libav: avdec_kmvc: libav Karl Morton's video codec decoder
-libav: avdec_lagarith: libav Lagarith lossless decoder
-libav: avdec_loco: libav LOCO decoder
-libav: avdec_mdec: libav Sony PlayStation MDEC (Motion DECoder) decoder
-libav: avdec_mimic: libav Mimic decoder
-libav: avdec_mjpeg: libav MJPEG (Motion JPEG) decoder
-libav: avdec_mjpegb: libav Apple MJPEG-B decoder
-libav: avdec_mmvideo: libav American Laser Games MM Video decoder
-libav: avdec_motionpixels: libav Motion Pixels video decoder
-libav: avdec_mpeg2video: libav MPEG-2 video decoder
-libav: avdec_mpeg4: libav MPEG-4 part 2 decoder
-libav: avdec_msmpeg4v1: libav MPEG-4 part 2 Microsoft variant version 1 decoder
-libav: avdec_msmpeg4v2: libav MPEG-4 part 2 Microsoft variant version 2 decoder
-libav: avdec_msmpeg4: libav MPEG-4 part 2 Microsoft variant version 3 decoder
-libav: avdec_msrle: libav Microsoft RLE decoder
-libav: avdec_msvideo1: libav Microsoft Video 1 decoder
-libav: avdec_mszh: libav LCL (LossLess Codec Library) MSZH decoder
-libav: avdec_mxpeg: libav Mobotix MxPEG video decoder
-libav: avdec_nuv: libav NuppelVideo/RTJPEG decoder
-libav: avdec_pam: libav PAM (Portable AnyMap) image decoder
-libav: avdec_pbm: libav PBM (Portable BitMap) image decoder
-libav: avdec_pcx: libav PC Paintbrush PCX image decoder
-libav: avdec_pgm: libav PGM (Portable GrayMap) image decoder
-libav: avdec_pgmyuv: libav PGMYUV (Portable GrayMap YUV) image decoder
-libav: avdec_pictor: libav Pictor/PC Paint decoder
-libav: avdec_png: libav PNG image decoder
-libav: avdec_ppm: libav PPM (Portable PixelMap) image decoder
-libav: avdec_prores: libav Apple ProRes (iCodec Pro) decoder
-libav: avdec_ptx: libav V.Flash PTX image decoder
-libav: avdec_qdraw: libav Apple QuickDraw decoder
-libav: avdec_qpeg: libav Q-team QPEG decoder
-libav: avdec_qtrle: libav QuickTime Animation (RLE) video decoder
-libav: avdec_r10k: libav AJA Kona 10-bit RGB Codec decoder
-libav: avdec_rl2: libav RL2 video decoder
-libav: avdec_roqvideo: libav id RoQ video decoder
-libav: avdec_rpza: libav QuickTime video (RPZA) decoder
-libav: avdec_rv10: libav RealVideo 1.0 decoder
-libav: avdec_rv20: libav RealVideo 2.0 decoder
-libav: avdec_rv30: libav RealVideo 3.0 decoder
-libav: avdec_rv40: libav RealVideo 4.0 decoder
-libav: avdec_sgi: libav SGI image decoder
-libav: avdec_smackvid: libav Smacker video decoder
-libav: avdec_smc: libav QuickTime Graphics (SMC) decoder
-libav: avdec_snow: libav Snow decoder
-libav: avdec_sp5x: libav Sunplus JPEG (SP5X) decoder
-libav: avdec_sunrast: libav Sun Rasterfile image decoder
-libav: avdec_svq1: libav Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1 decoder
-libav: avdec_svq3: libav Sorenson Vector Quantizer 3 / Sorenson Video 3 / SVQ3 decoder
-libav: avdec_targa: libav Truevision Targa image decoder
-libav: avdec_thp: libav Nintendo Gamecube THP video decoder
-libav: avdec_tiertexseqvideo: libav Tiertex Limited SEQ video decoder
-libav: avdec_tiff: libav TIFF image decoder
-libav: avdec_tmv: libav 8088flex TMV decoder
-libav: avdec_truemotion1: libav Duck TrueMotion 1.0 decoder
-libav: avdec_truemotion2: libav Duck TrueMotion 2.0 decoder
-libav: avdec_camtasia: libav TechSmith Screen Capture Codec decoder
-libav: avdec_txd: libav Renderware TXD (TeXture Dictionary) image decoder
-libav: avdec_ultimotion: libav IBM UltiMotion decoder
-libav: avdec_utvideo: libav Ut Video decoder
-libav: avdec_v410: libav Uncompressed 4:4:4 10-bit decoder
-libav: avdec_vb: libav Beam Software VB decoder
-libav: avdec_vble: libav VBLE Lossless Codec decoder
-libav: avdec_vc1: libav SMPTE VC-1 decoder
-libav: avdec_vc1image: libav Windows Media Video 9 Image v2 decoder
-libav: avdec_vcr1: libav ATI VCR1 decoder
-libav: avdec_vmdvideo: libav Sierra VMD video decoder
-libav: avdec_vmnc: libav VMware Screen Codec / VMware Video decoder
-libav: avdec_vp3: libav On2 VP3 decoder
-libav: avdec_vp5: libav On2 VP5 decoder
-libav: avdec_vp6: libav On2 VP6 decoder
-libav: avdec_vp6a: libav On2 VP6 (Flash version, with alpha channel) decoder
-libav: avdec_vp6f: libav On2 VP6 (Flash version) decoder
-libav: avdec_vp8: libav On2 VP8 decoder
-libav: avdec_vqavideo: libav Westwood Studios VQA (Vector Quantized Animation) video decoder
-libav: avdec_wmv1: libav Windows Media Video 7 decoder
-libav: avdec_wmv2: libav Windows Media Video 8 decoder
-libav: avdec_wmv3: libav Windows Media Video 9 decoder
-libav: avdec_wmv3image: libav Windows Media Video 9 Image decoder
-libav: avdec_wnv1: libav Winnov WNV1 decoder
-libav: avdec_xan_wc3: libav Wing Commander III / Xan decoder
-libav: avdec_xan_wc4: libav Wing Commander IV / Xxan decoder
-libav: avdec_xl: libav Miro VideoXL decoder
-libav: avdec_yop: libav Psygnosis YOP Video decoder
-libav: avdec_zlib: libav LCL (LossLess Codec Library) ZLIB decoder
-libav: avdec_zmbv: libav Zip Motion Blocks Video decoder
-libav: avdemux_aiff: libav Audio IFF demuxer
-libav: avdemux_ape: libav Monkey's Audio demuxer
-libav: avdemux_avs: libav AVS format demuxer
-libav: avtype_avs: no extensions
-libav: avdemux_daud: libav D-Cinema audio format demuxer
-libav: avtype_daud: 302
-libav: avdemux_ea: libav Electronic Arts Multimedia Format demuxer
-libav: avtype_ea: no extensions
-libav: avdemux_ffm: libav FFM (AVserver live feed) format demuxer
-libav: avtype_ffm: no extensions
-libav: avdemux_4xm: libav 4X Technologies format demuxer
-libav: avtype_4xm: no extensions
-libav: avdemux_gxf: libav GXF format demuxer
-libav: avtype_gxf: no extensions
-libav: avdemux_idcin: libav id Cinematic format demuxer
-libav: avtype_idcin: no extensions
-libav: avdemux_ipmovie: libav Interplay MVE format demuxer
-libav: avtype_ipmovie: no extensions
-libav: avdemux_mm: libav American Laser Games MM format demuxer
-libav: avtype_mm: no extensions
-libav: avdemux_mmf: libav Yamaha SMAF demuxer
-libav: avtype_mmf: no extensions
-libav: avdemux_mpc: libav Musepack demuxer
-libav: avdemux_mxf: libav Material eXchange Format demuxer
-libav: avdemux_nsv: libav Nullsoft Streaming Video demuxer
-libav: avtype_nsv: no extensions
-libav: avdemux_nut: libav NUT format demuxer
-libav: avtype_nut: nut
-libav: avdemux_nuv: libav NuppelVideo format demuxer
-libav: avdemux_RoQ: libav id RoQ format demuxer
-libav: avtype_RoQ: no extensions
-libav: avdemux_film_cpk: libav Sega FILM/CPK format demuxer
-libav: avtype_film_cpk: no extensions
-libav: avdemux_smk: libav Smacker video demuxer
-libav: avtype_smk: no extensions
-libav: avdemux_sol: libav Sierra SOL format demuxer
-libav: avtype_sol: no extensions
-libav: avdemux_psxstr: libav Sony Playstation STR format demuxer
-libav: avtype_psxstr: no extensions
-libav: avdemux_tta: libav True Audio demuxer
-libav: avdemux_vmd: libav Sierra VMD format demuxer
-libav: avtype_vmd: no extensions
-libav: avdemux_voc: libav Creative Voice file format demuxer
-libav: avdemux_wc3movie: libav Wing Commander III movie format demuxer
-libav: avtype_wc3movie: no extensions
-libav: avdemux_wsaud: libav Westwood Studios audio format demuxer
-libav: avtype_wsaud: no extensions
-libav: avdemux_wsvqa: libav Westwood Studios VQA format demuxer
-libav: avtype_wsvqa: no extensions
-libav: avdemux_yuv4mpegpipe: libav YUV4MPEG pipe format demuxer
-libav: avtype_yuv4mpegpipe: y4m
-libav: avmux_a64: libav a64 - video for Commodore 64 muxer
-libav: avmux_adts: libav ADTS AAC muxer (not recommended, use aacparse instead)
-libav: avmux_adx: libav CRI ADX muxer
-libav: avmux_aiff: libav Audio IFF muxer (not recommended, use aiffmux instead)
-libav: avmux_amr: libav 3GPP AMR file format muxer
-libav: avmux_asf: libav ASF format muxer (not recommended, use asfmux instead)
-libav: avmux_asf_stream: libav ASF format muxer (not recommended, use asfmux instead)
-libav: avmux_au: libav SUN AU format muxer
-libav: avmux_avi: libav AVI format muxer (not recommended, use avimux instead)
-libav: avmux_avm2: libav Flash 9 (AVM2) format muxer
-libav: avmux_daud: libav D-Cinema audio format muxer
-libav: avmux_dv: libav DV video format muxer
-libav: avmux_ffm: libav FFM (AVserver live feed) format muxer
-libav: avmux_filmstrip: libav Adobe Filmstrip muxer
-libav: avmux_flv: libav FLV format muxer (not recommended, use flvmux instead)
-libav: avmux_gxf: libav GXF format muxer
-libav: avmux_ipod: libav iPod H.264 MP4 format muxer
-libav: avmux_ivf: libav On2 IVF muxer
-libav: avmux_latm: libav LOAS/LATM muxer
-libav: avmux_md5: libav MD5 testing format muxer
-libav: avmux_matroska: libav Matroska file format muxer (not recommended, use matroskamux instead)
-libav: avmux_mmf: libav Yamaha SMAF muxer
-libav: avmux_mov: libav MOV format muxer (not recommended, use qtmux instead)
-libav: avmux_mp2: libav MPEG audio layer 2 formatter (not recommended, use id3v2mux instead)
-libav: avmux_mp3: libav MPEG audio layer 3 formatter (not recommended, use id3v2mux instead)
-libav: avmux_mp4: libav MP4 format muxer (not recommended, use mp4mux instead)
-libav: avmux_mpeg: libav MPEG-1 System format muxer
-libav: avmux_vcd: libav MPEG-1 System format (VCD) muxer
-libav: avmux_dvd: libav MPEG-2 PS format (DVD VOB) muxer
-libav: avmux_svcd: libav MPEG-2 PS format (VOB) muxer
-libav: avmux_vob: libav MPEG-2 PS format (VOB) muxer
-libav: avmux_mpegts: libav MPEG-2 transport stream format muxer (not recommended, use mpegtsmux instead)
-libav: avmux_mpjpeg: libav MIME multipart JPEG format muxer (not recommended, use multipartmux instead)
-libav: avmux_mxf: libav Material eXchange Format muxer (not recommended, use mxfmux instead)
-libav: avmux_mxf_d10: libav Material eXchange Format, D-10 Mapping muxer
-libav: avmux_nut: libav NUT format muxer
-libav: avmux_ogg: libav Ogg muxer (not recommended, use oggmux instead)
-libav: avmux_oma: libav Sony OpenMG audio muxer
-libav: avmux_psp: libav PSP MP4 format muxer
-libav: avmux_rm: libav RealMedia format muxer
-libav: avmux_rso: libav Lego Mindstorms RSO format muxer
-libav: avmux_smjpeg: libav Loki SDL MJPEG muxer
-libav: avmux_sox: libav SoX native format muxer
-libav: avmux_spdif: libav IEC 61937 (used on S/PDIF - IEC958) muxer
-libav: avmux_swf: libav Flash format muxer
-libav: avmux_3g2: libav 3GP2 format muxer
-libav: avmux_3gp: libav 3GP format muxer (not recommended, use gppmux instead)
-libav: avmux_rcv: libav VC-1 test bitstream muxer
-libav: avmux_voc: libav Creative Voice file format muxer
-libav: avmux_wav: libav WAV format muxer (not recommended, use wavenc instead)
-libav: avmux_webm: libav WebM file format muxer (not recommended, use webmmux instead)
-libav: avmux_yuv4mpegpipe: libav YUV4MPEG pipe format muxer (not recommended, use y4menc instead)
-libav: avdeinterlace: libav Deinterlace element
-level: level: Level
-jpegformat: jpegparse: JPEG stream parser
-jpegformat: jifmux: JPEG stream muxer
-jpeg: jpegenc: JPEG image encoder
-jpeg: jpegdec: JPEG image decoder
-isomp4: qtdemux: QuickTime demuxer
-isomp4: rtpxqtdepay: RTP packet depayloader
-isomp4: qtmux: QuickTime Muxer
-isomp4: mp4mux: MP4 Muxer
-isomp4: ismlmux: ISML Muxer
-isomp4: 3gppmux: 3GPP Muxer
-isomp4: mj2mux: MJ2 Muxer
-isomp4: qtmoovrecover: QT Moov Recover
-interleave: interleave: Audio interleaver
-interleave: deinterleave: Audio deinterleaver
-interlace: interlace: Interlace filter
-imagefreeze: imagefreeze: Still frame stream generator
-id3tag: id3mux: ID3 v1 and v2 Muxer
-id3demux: id3demux: ID3 tag demuxer
-icydemux: icydemux: ICY tag demuxer
-goom2k1: goom2k1: GOOM: what a GOOM! 2k1 edition
-goom: goom: GOOM: what a GOOM!
-gio: giosink: GIO sink
-gio: giosrc: GIO source
-gio: giostreamsink: GIO stream sink
-gio: giostreamsrc: GIO stream source
-geometrictransform: circle: circle
-geometrictransform: diffuse: diffuse
-geometrictransform: kaleidoscope: kaleidoscope
-geometrictransform: marble: marble
-geometrictransform: pinch: pinch
-geometrictransform: rotate: rotate
-geometrictransform: sphere: sphere
-geometrictransform: twirl: twirl
-geometrictransform: waterripple: waterripple
-geometrictransform: stretch: stretch
-geometrictransform: bulge: bulge
-geometrictransform: tunnel: tunnel
-geometrictransform: square: square
-geometrictransform: mirror: mirror
-geometrictransform: fisheye: fisheye
-gdp: gdpdepay: GDP Depayloader
-gdp: gdppay: GDP Payloader
-gdkpixbuf: gdkpixbufdec: GdkPixbuf image decoder
-gdkpixbuf: gdkpixbufoverlay: GdkPixbuf Overlay
-gdkpixbuf: gdkpixbufsink: GdkPixbuf sink
-gaudieffects: burn: Burn
-gaudieffects: chromium: Chromium
-gaudieffects: dilate: Dilate
-gaudieffects: dodge: Dodge
-gaudieffects: exclusion: Exclusion
-gaudieffects: solarize: Solarize
-gaudieffects: gaussianblur: GstGaussianBlur
-fragmented: hlsdemux: HLS Demuxer
-flxdec: flxdec: FLX video decoder
-flv: flvdemux: FLV Demuxer
-flv: flvmux: FLV muxer
-flac: flacenc: FLAC audio encoder
-flac: flacdec: FLAC audio decoder
-flac: flactag: FLAC tagger
-fieldanalysis: fieldanalysis: Video field analysis
-faad: faad: AAC audio decoder
-equalizer: equalizer-nbands: N Band Equalizer
-equalizer: equalizer-3bands: 3 Band Equalizer
-equalizer: equalizer-10bands: 10 Band Equalizer
-encoding: encodebin: Encoder Bin
-effectv: edgetv: EdgeTV effect
-effectv: agingtv: AgingTV effect
-effectv: dicetv: DiceTV effect
-effectv: warptv: WarpTV effect
-effectv: shagadelictv: ShagadelicTV
-effectv: vertigotv: VertigoTV effect
-effectv: revtv: RevTV effect
-effectv: quarktv: QuarkTV effect
-effectv: optv: OpTV effect
-effectv: radioactv: RadioacTV effect
-effectv: streaktv: StreakTV effect
-effectv: rippletv: RippleTV effect
-dvdsub: dvdsubdec: DVD subtitle decoder
-dvdsub: dvdsubparse: DVD subtitle parser
-dvdspu: dvdspu: Sub-picture Overlay
-dvdread: dvdreadsrc: DVD Source
-dvdlpcmdec: dvdlpcmdec: DVD LPCM Audio decoder
-dvbsuboverlay: dvbsuboverlay: DVB Subtitles Overlay
-dv: dvdemux: DV system stream demuxer
-dv: dvdec: DV video decoder
-dtsdec: dtsdec: DTS audio decoder
-dtmf: dtmfdetect: DTMF detector element
-dtmf: dtmfsrc: DTMF tone generator
-dtmf: rtpdtmfsrc: RTP DTMF packet generator
-dtmf: rtpdtmfdepay: RTP DTMF packet depayloader
-directsoundsrc: directsoundsrc: DirectSound audio source
-directsound: directsoundsink: Direct Sound Audio Sink
-deinterlace: deinterlace: Deinterlacer
-debugutilsbad: checksumsink: Checksum sink
-debugutilsbad: fpsdisplaysink: Measure and show framerate on videosink
-debugutilsbad: chopmydata: FIXME
-debugutilsbad: compare: Compare buffers
-debugutilsbad: debugspy: DebugSpy
-debug: breakmydata: Break my data
-debug: capssetter: CapsSetter
-debug: rndbuffersize: Random buffer size
-debug: navseek: Seek based on left-right arrows
-debug: pushfilesrc: Push File Source
-debug: progressreport: Progress report
-debug: taginject: TagInject
-debug: testsink: Test plugin
-debug: cpureport: CPU report
-dataurisrc: dataurisrc: data: URI source element
-d3dsinkwrapper: d3dvideosink: Direct3D video sink
-cutter: cutter: Audio cutter
-coreelements: capsfilter: CapsFilter
-coreelements: fakesrc: Fake Source
-coreelements: fakesink: Fake Sink
-coreelements: filesrc: File Source
-coreelements: funnel: Funnel pipe fitting
-coreelements: identity: Identity
-coreelements: input-selector: Input selector
-coreelements: output-selector: Output selector
-coreelements: queue: Queue
-coreelements: queue2: Queue 2
-coreelements: filesink: File Sink
-coreelements: tee: Tee pipe fitting
-coreelements: typefind: TypeFind
-coreelements: multiqueue: MultiQueue
-coreelements: valve: Valve element
-coloreffects: coloreffects: Color Look-up Table filter
-coloreffects: chromahold: Chroma hold filter
-camerabin: viewfinderbin: Viewfinder Bin
-camerabin: wrappercamerabinsrc: Wrapper camera src element for camerabin2
-camerabin: camerabin: Camera Bin
-bayer: bayer2rgb: Bayer to RGB decoder for cameras
-bayer: rgb2bayer: RGB to Bayer converter
-avvideoscale: avvideoscale: libav Scale element
-avi: avidemux: Avi demuxer
-avi: avimux: Avi muxer
-avi: avisubtitle: Avi subtitle parser
-autodetect: autovideosink: Auto video sink
-autodetect: autovideosrc: Auto video source
-autodetect: autoaudiosink: Auto audio sink
-autodetect: autoaudiosrc: Auto audio source
-autoconvert: autoconvert: Select convertor based on caps
-autoconvert: autovideoconvert: Select color space convertor based on caps
-auparse: auparse: AU audio demuxer
-audiovisualizers: spacescope: Stereo visualizer
-audiovisualizers: spectrascope: Frequency spectrum scope
-audiovisualizers: synaescope: Synaescope
-audiovisualizers: wavescope: Waveform oscilloscope
-audiotestsrc: audiotestsrc: Audio test source
-audioresample: audioresample: Audio resampler
-audiorate: audiorate: Audio rate adjuster
-audioparsers: aacparse: AAC audio stream parser
-audioparsers: amrparse: AMR audio stream parser
-audioparsers: ac3parse: AC3 audio stream parser
-audioparsers: dcaparse: DTS Coherent Acoustics audio stream parser
-audioparsers: flacparse: FLAC audio parser
-audioparsers: mpegaudioparse: MPEG1 Audio Parser
-audioparsers: wavpackparse: Wavpack audio stream parser
-audiofx: audiopanorama: Stereo positioning
-audiofx: audioinvert: Audio inversion
-audiofx: audiokaraoke: AudioKaraoke
-audiofx: audioamplify: Audio amplifier
-audiofx: audiodynamic: Dynamic range controller
-audiofx: audiocheblimit: Low pass & high pass filter
-audiofx: audiochebband: Band pass & band reject filter
-audiofx: audioiirfilter: Audio IIR filter
-audiofx: audiowsinclimit: Low pass & high pass filter
-audiofx: audiowsincband: Band pass & band reject filter
-audiofx: audiofirfilter: Audio FIR filter
-audiofx: audioecho: Audio echo
-audioconvert: audioconvert: Audio converter
-assrender: assrender: ASS/SSA Render
-asfmux: asfmux: ASF muxer
-asfmux: rtpasfpay: RTP ASF payloader
-asfmux: asfparse: ASF parser
-asf: asfdemux: ASF Demuxer
-asf: rtspwms: WMS RTSP Extension
-asf: rtpasfdepay: RTP ASF packet depayloader
-app: appsrc: AppSrc
-app: appsink: AppSink
-apetag: apedemux: APE tag demuxer
-amrwbdec: amrwbdec: AMR-WB audio decoder
-amrnb: amrnbdec: AMR-NB audio decoder
-amrnb: amrnbenc: AMR-NB audio encoder
-alphacolor: alphacolor: Alpha color filter
-alpha: alpha: Alpha filter
-alaw: alawenc: A Law audio encoder
-alaw: alawdec: A Law audio decoder
-adpcmenc: adpcmenc: ADPCM encoder
-adpcmdec: adpcmdec: ADPCM decoder
-adder: adder: Adder
-a52dec: a52dec: ATSC A/52 audio decoder
-staticelements: bin: Generic bin
-staticelements: pipeline: Pipeline object
-
-Total count: 144 plugins, 927 features
diff --git a/Output/x86/gstreamer/pthreadGC2-w32.dll b/Output/x86/gstreamer/pthreadGC2-w32.dll
deleted file mode 100644
index 8b5fca03..00000000
Binary files a/Output/x86/gstreamer/pthreadGC2-w32.dll and /dev/null differ
diff --git a/Output/x86/hidapi.dll b/Output/x86/hidapi.dll
index b24dfb33..7bdc8fe2 100644
Binary files a/Output/x86/hidapi.dll and b/Output/x86/hidapi.dll differ
diff --git a/PartyModes/PartyModeChallenge/CChallengeRounds.cs b/PartyModes/PartyModeChallenge/CChallengeRounds.cs
index ed122395..bb2d05cb 100644
--- a/PartyModes/PartyModeChallenge/CChallengeRounds.cs
+++ b/PartyModes/PartyModeChallenge/CChallengeRounds.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
index 1c6fa0d8..46260c81 100644
--- a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
+++ b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
@@ -1,27 +1,24 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using VocaluxeLib.Menu;
-using VocaluxeLib.Profile;
[assembly: ComVisible(false)]
@@ -65,7 +62,7 @@ namespace VocaluxeLib.PartyModes.Challenge
public int CompareTo(object obj)
{
- CResultTableRow row = obj as CResultTableRow;
+ var row = obj as CResultTableRow;
if (row != null)
{
int res = row.NumGamePoints.CompareTo(NumGamePoints);
@@ -545,9 +542,7 @@ namespace VocaluxeLib.PartyModes.Challenge
for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
{
if (c != null)
- {
_ScreenSongOptions.Selection.TeamNames[i] = CBase.Profiles.GetPlayerName(_GameData.ProfileIDs[c.Player[i]]);
- }
else
_ScreenSongOptions.Selection.TeamNames[i] = "foobar";
}
@@ -559,7 +554,7 @@ namespace VocaluxeLib.PartyModes.Challenge
{
for (int i = 0; i < _GameData.NumPlayer; i++)
{
- CResultTableRow row = new CResultTableRow {PlayerID = _GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
+ var row = new CResultTableRow {PlayerID = _GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
_GameData.ResultTable.Add(row);
}
@@ -627,10 +622,10 @@ namespace VocaluxeLib.PartyModes.Challenge
private List _GetPointsForPlayer(SPlayer[] results)
{
- List result = new List();
+ var result = new List();
for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
{
- SStats stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
+ var stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
result.Add(stat);
}
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
index 7e856321..229d68ba 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
index 60a8bd86..22945876 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
@@ -1,27 +1,24 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using VocaluxeLib.Menu;
-using VocaluxeLib.Profile;
namespace VocaluxeLib.PartyModes.Challenge
{
@@ -143,7 +140,7 @@ namespace VocaluxeLib.PartyModes.Challenge
{
try
{
- SDataToScreenMain data = (SDataToScreenMain)receivedData;
+ var data = (SDataToScreenMain)receivedData;
_GameState = data;
}
catch (Exception e)
@@ -405,7 +402,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_RoundsTable = new List();
for (int i = 0; i < 5; i++)
{
- CRoundsTableRow rtr = new CRoundsTableRow {TextPlayer = new List(), TextScores = new List()};
+ var rtr = new CRoundsTableRow {TextPlayer = new List(), TextScores = new List()};
_RoundsTable.Add(rtr);
}
//Create statics and texts for rounds
@@ -457,7 +454,7 @@ namespace VocaluxeLib.PartyModes.Challenge
//Round-number
roundRow.Number.X = numberX;
roundRow.Number.Y = numberY;
- int numInnerRows = (int)Math.Ceiling(_GameState.NumPlayerAtOnce / ((double)numPlayerInOneRow));
+ var numInnerRows = (int)Math.Ceiling(_GameState.NumPlayerAtOnce / ((double)numPlayerInOneRow));
for (int row = 0; row < numInnerRows; row++)
{
int num = (row + 1) * numPlayerInOneRow;
@@ -541,7 +538,7 @@ namespace VocaluxeLib.PartyModes.Challenge
for (int i = 0; i < 10; i++)
{
- STableRow row = new STableRow
+ var row = new STableRow
{
Pos = GetNewText(_Texts[_TextPosition]),
Name = GetNewText(_Texts[_TextPlayerName]),
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
index 289f7a6d..16b275de 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -22,6 +20,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using VocaluxeLib.Menu;
+using VocaluxeLib.Profile;
namespace VocaluxeLib.PartyModes.Challenge
{
@@ -88,7 +87,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_ThemeButtons = new string[] {_ButtonBack, _ButtonNext, _ButtonPlayerDestination, _ButtonPlayerChoose};
_Data = new SDataFromScreen();
- SFromScreenNames names = new SFromScreenNames {FadeBack = false, ProfileIDs = new List()};
+ var names = new SFromScreenNames {FadeBack = false, ProfileIDs = new List()};
_Data.ScreenNames = names;
}
@@ -96,7 +95,7 @@ namespace VocaluxeLib.PartyModes.Challenge
{
try
{
- SDataToScreenNames config = (SDataToScreenNames)receivedData;
+ var config = (SDataToScreenNames)receivedData;
_Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List();
_NumPlayer = config.NumPlayer;
@@ -247,7 +246,7 @@ namespace VocaluxeLib.PartyModes.Challenge
CButton b = GetNewButton(_Buttons[_ButtonPlayerChoose]);
b.Rect.X = _PlayerChooseButtonsFirstX + column * (b.Rect.W + _PlayerChooseButtonsSpaceH);
b.Rect.Y = _PlayerChooseButtonsFirstY + row * (b.Rect.H + _PlayerChooseButtonsSpaceW);
- CPlayerChooseButton pcb = new CPlayerChooseButton {Button = b, ProfileID = -1};
+ var pcb = new CPlayerChooseButton {Button = b, ProfileID = -1};
_PlayerChooseButtons.Add(pcb);
column++;
if (column >= _PlayerChooseButtonsNumH)
@@ -309,15 +308,15 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateVisibleProfiles()
{
_PlayerChooseButtonsVisibleProfiles.Clear();
- Profile.CProfile[] profiles = CBase.Profiles.GetProfiles();
- for (int i = 0; i < profiles.Length; i++)
+ CProfile[] profiles = CBase.Profiles.GetProfiles();
+ foreach (CProfile profile in profiles)
{
bool visible = false;
//Show profile only if active
- if (profiles[i].Active == EOffOn.TR_CONFIG_ON)
- visible = _Data.ScreenNames.ProfileIDs.All(profileID => profileID != profiles[i].ID);
+ if (profile.Active == EOffOn.TR_CONFIG_ON)
+ visible = _Data.ScreenNames.ProfileIDs.All(profileID => profileID != profile.ID);
if (visible)
- _PlayerChooseButtonsVisibleProfiles.Add(profiles[i].ID);
+ _PlayerChooseButtonsVisibleProfiles.Add(profile.ID);
}
}
diff --git a/PartyModes/PartyModeChallenge/GlobalSuppressions.cs b/PartyModes/PartyModeChallenge/GlobalSuppressions.cs
index a29227be..e661ff03 100644
Binary files a/PartyModes/PartyModeChallenge/GlobalSuppressions.cs and b/PartyModes/PartyModeChallenge/GlobalSuppressions.cs differ
diff --git a/PartyModes/PartyModeChallenge/PartyModeChallenge.csproj b/PartyModes/PartyModeChallenge/PartyModeChallenge.csproj
index 4623278b..e9ca8fc6 100644
--- a/PartyModes/PartyModeChallenge/PartyModeChallenge.csproj
+++ b/PartyModes/PartyModeChallenge/PartyModeChallenge.csproj
@@ -106,6 +106,26 @@
+
+ bin
+ WIN
+ true
+ AnyCPU
+ false
+ Off
+ prompt
+ ManagedMinimumRules.ruleset
+
+
+ bin
+ WIN
+ true
+ AnyCPU
+ false
+ Off
+ prompt
+ ManagedMinimumRules.ruleset
+
@@ -141,4 +161,4 @@ xcopy "$(ProjectDir)*.cs" "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\"
-->
-
\ No newline at end of file
+
diff --git a/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs b/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
index d2345005..3b7f00a8 100644
--- a/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
+++ b/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
index f108e66f..234d1ca1 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
index ab99973c..b39c7052 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
index 47d7ff93..47dcb43c 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
@@ -1,27 +1,24 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using VocaluxeLib.Menu;
-using VocaluxeLib.Profile;
namespace VocaluxeLib.PartyModes.ChallengeMedley
{
@@ -143,7 +140,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
try
{
- SDataToScreenMain data = (SDataToScreenMain)receivedData;
+ var data = (SDataToScreenMain)receivedData;
_GameState = data;
}
catch (Exception e)
@@ -405,7 +402,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_RoundsTable = new List();
for (int i = 0; i < 5; i++)
{
- CRoundsTableRow rtr = new CRoundsTableRow {TextPlayer = new List(), TextScores = new List()};
+ var rtr = new CRoundsTableRow {TextPlayer = new List(), TextScores = new List()};
_RoundsTable.Add(rtr);
}
//Create statics and texts for rounds
@@ -457,7 +454,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
//Round-number
roundRow.Number.X = numberX;
roundRow.Number.Y = numberY;
- int numInnerRows = (int)Math.Ceiling(_GameState.NumPlayerAtOnce / ((double)numPlayerInOneRow));
+ var numInnerRows = (int)Math.Ceiling(_GameState.NumPlayerAtOnce / ((double)numPlayerInOneRow));
for (int row = 0; row < numInnerRows; row++)
{
int num = (row + 1) * numPlayerInOneRow;
@@ -541,7 +538,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
for (int i = 0; i < 10; i++)
{
- STableRow row = new STableRow
+ var row = new STableRow
{
Pos = GetNewText(_Texts[_TextPosition]),
Name = GetNewText(_Texts[_TextPlayerName]),
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
index 7346fccf..9959e330 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -22,6 +20,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using VocaluxeLib.Menu;
+using VocaluxeLib.Profile;
namespace VocaluxeLib.PartyModes.ChallengeMedley
{
@@ -85,10 +84,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_Data.ScreenNames.ProfileIDs = new List();
- _ThemeButtons = new string[] { _ButtonBack, _ButtonNext, _ButtonPlayerDestination, _ButtonPlayerChoose };
+ _ThemeButtons = new string[] {_ButtonBack, _ButtonNext, _ButtonPlayerDestination, _ButtonPlayerChoose};
_Data = new SDataFromScreen();
- SFromScreenNames names = new SFromScreenNames { FadeToConfig = false, ProfileIDs = new List() };
+ var names = new SFromScreenNames {FadeToConfig = false, ProfileIDs = new List()};
_Data.ScreenNames = names;
}
@@ -96,7 +95,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
try
{
- SDataToScreenNames config = (SDataToScreenNames)receivedData;
+ var config = (SDataToScreenNames)receivedData;
_Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List();
_NumPlayer = config.NumPlayer;
@@ -114,7 +113,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
base.HandleInput(keyEvent);
- if (keyEvent.KeyPressed) { }
+ if (keyEvent.KeyPressed) {}
else
{
switch (keyEvent.Key)
@@ -156,7 +155,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_OldMouseX = mouseEvent.X;
_OldMouseY = mouseEvent.Y;
}
- // LeftButton isn't hold anymore, but Selec-Mode is still active -> "Drop" of Avatar
+ // LeftButton isn't hold anymore, but Selec-Mode is still active -> "Drop" of Avatar
else if (_SelectingMouseActive)
{
//Reset variables
@@ -247,7 +246,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
CButton b = GetNewButton(_Buttons[_ButtonPlayerChoose]);
b.Rect.X = _PlayerChooseButtonsFirstX + column * (b.Rect.W + _PlayerChooseButtonsSpaceH);
b.Rect.Y = _PlayerChooseButtonsFirstY + row * (b.Rect.H + _PlayerChooseButtonsSpaceW);
- CPlayerChooseButton pcb = new CPlayerChooseButton { Button = b, ProfileID = -1 };
+ var pcb = new CPlayerChooseButton {Button = b, ProfileID = -1};
_PlayerChooseButtons.Add(pcb);
column++;
if (column >= _PlayerChooseButtonsNumH)
@@ -309,15 +308,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateVisibleProfiles()
{
_PlayerChooseButtonsVisibleProfiles.Clear();
- Profile.CProfile[] profiles = CBase.Profiles.GetProfiles();
- for (int i = 0; i < profiles.Length; i++)
+ CProfile[] profiles = CBase.Profiles.GetProfiles();
+ foreach (CProfile profile in profiles)
{
bool visible = false;
//Show profile only if active
- if (profiles[i].Active == EOffOn.TR_CONFIG_ON)
- visible = _Data.ScreenNames.ProfileIDs.All(profileID => profileID != profiles[i].ID);
+ if (profile.Active == EOffOn.TR_CONFIG_ON)
+ visible = _Data.ScreenNames.ProfileIDs.All(profileID => profileID != profile.ID);
if (visible)
- _PlayerChooseButtonsVisibleProfiles.Add(profiles[i].ID);
+ _PlayerChooseButtonsVisibleProfiles.Add(profile.ID);
}
}
diff --git a/PartyModes/PartyModeChallengeMedley/GlobalSuppressions.cs b/PartyModes/PartyModeChallengeMedley/GlobalSuppressions.cs
index a29227be..e661ff03 100644
Binary files a/PartyModes/PartyModeChallengeMedley/GlobalSuppressions.cs and b/PartyModes/PartyModeChallengeMedley/GlobalSuppressions.cs differ
diff --git a/PartyModes/PartyModeChallengeMedley/PartyModeChallengeMedley.csproj b/PartyModes/PartyModeChallengeMedley/PartyModeChallengeMedley.csproj
index 9b4f39d5..4f6ab862 100644
--- a/PartyModes/PartyModeChallengeMedley/PartyModeChallengeMedley.csproj
+++ b/PartyModes/PartyModeChallengeMedley/PartyModeChallengeMedley.csproj
@@ -106,6 +106,26 @@
+
+ bin
+ WIN
+ true
+ AnyCPU
+ false
+ Off
+ prompt
+ ManagedMinimumRules.ruleset
+
+
+ bin
+ WIN
+ true
+ AnyCPU
+ false
+ Off
+ prompt
+ ManagedMinimumRules.ruleset
+
@@ -141,4 +161,4 @@ xcopy "$(ProjectDir)*.cs" "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\"
-->
-
\ No newline at end of file
+
diff --git a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
index d7730f65..33102ced 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
@@ -1,27 +1,24 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using VocaluxeLib.Menu;
-using VocaluxeLib.Profile;
[assembly: ComVisible(false)]
@@ -248,7 +245,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public override void DataFromScreen(string screenName, Object data)
{
- SDataFromScreen dataFrom = new SDataFromScreen();
+ var dataFrom = new SDataFromScreen();
switch (screenName)
{
case "PartyScreenTicTacToeConfig":
@@ -492,7 +489,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public override void SongSelected(int songID)
{
- EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
+ var gm = EGameMode.TR_GAMEMODE_NORMAL;
switch (_GameData.GameMode)
{
@@ -525,7 +522,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_GameData.Rounds = new List();
for (int i = 0; i < _GameData.NumFields; i++)
{
- CRound r = new CRound();
+ var r = new CRound();
_GameData.Rounds.Add(r);
}
}
@@ -540,11 +537,11 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_GameData.PlayerTeam2 = new List();
//Prepare Player-IDs
- List ids1 = new List();
- List ids2 = new List();
+ var ids1 = new List();
+ var ids2 = new List();
//Add IDs to team-list
while (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0] &&
- _GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1] )
+ _GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1])
{
if (ids1.Count == 0)
{
@@ -579,7 +576,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
case 1:
{
//Prepare Player-IDs
- List ids = new List();
+ var ids = new List();
//Add IDs to team-list
while (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0] && ids.Count == 0)
{
@@ -602,7 +599,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
case 2:
{
//Prepare Player-IDs
- List ids = new List();
+ var ids = new List();
//Add IDs to team-list
while (_GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1] && ids.Count == 0)
{
@@ -627,7 +624,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _PrepareSongList()
{
- EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
+ var gm = EGameMode.TR_GAMEMODE_NORMAL;
switch (_GameData.GameMode)
{
@@ -646,7 +643,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
while (_GameData.Songs.Count < (_GameData.NumFields + _GameData.NumJokerRandom[0] + _GameData.NumJokerRandom[1]))
{
- List songs = new List();
+ var songs = new List();
switch (_GameData.SongSource)
{
case ESongSource.TR_PLAYLIST:
@@ -741,11 +738,11 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
players[0].ProfileID = _GameData.ProfileIDsTeam1[r.SingerTeam1];
if (isDuet)
- players[0].LineNr = 0;
+ players[0].VoiceNr = 0;
players[1].ProfileID = _GameData.ProfileIDsTeam2[r.SingerTeam2];
if (isDuet)
- players[1].LineNr = 1;
+ players[1].VoiceNr = 1;
SongSelected(r.SongID);
}
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
index a03c839d..a72bc05a 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
index 46887b31..6cfad473 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -22,7 +20,6 @@ using System.Collections.Generic;
using System.Windows.Forms;
using VocaluxeLib.Menu;
using VocaluxeLib.Songs;
-using VocaluxeLib.Profile;
namespace VocaluxeLib.PartyModes.TicTacToe
{
@@ -104,7 +101,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ThemeStatics = new string[] {_StaticPopupBG, _StaticAvatarT1, _StaticAvatarT2};
_Data = new SDataFromScreen();
- SFromScreenMain config = new SFromScreenMain();
+ var config = new SFromScreenMain();
_GameData = new SDataToScreenMain();
config.SingRoundNr = 1;
config.Rounds = new List();
@@ -130,7 +127,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
try
{
- SDataToScreenMain config = (SDataToScreenMain)receivedData;
+ var config = (SDataToScreenMain)receivedData;
_GameData = config;
}
catch (Exception e)
@@ -389,7 +386,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
for (int i = 0; i < 25; i++)
{
- CField f = new CField {Button = GetNewButton(_Buttons[_ButtonField])};
+ var f = new CField {Button = GetNewButton(_Buttons[_ButtonField])};
f.Button.Visible = false;
f.Content = new CRound();
_AddButton(f.Button);
@@ -399,7 +396,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateFields()
{
- int numOneRow = (int)Math.Sqrt(_GameData.NumFields);
+ var numOneRow = (int)Math.Sqrt(_GameData.NumFields);
float fieldSizeY = ((float)CBase.Settings.GetRenderH() - 150 - numOneRow * _FieldSpace) / numOneRow;
float fieldSizeX = ((float)CBase.Settings.GetRenderW() - 300 - numOneRow * _FieldSpace) / numOneRow;
_FieldSize = Math.Min(fieldSizeX, fieldSizeY);
@@ -495,7 +492,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_GameData.Rounds[_SelectedField].SingerTeam2 = singerTeam2;
_UpdatePlayerInformation();
-
}
int songID = 0;
if (_GameData.Songs.Count > 0)
@@ -508,7 +504,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
CBase.BackgroundMusic.SetStatus(true);
_PreviewStream = CBase.Sound.Load(song.GetMP3(), false);
- CBase.Sound.SetPosition(_PreviewStream, song.PreviewStart);
+ CBase.Sound.SetPosition(_PreviewStream, song.Preview.StartTime);
CBase.Sound.SetStreamVolume(_PreviewStream, 0f);
CBase.Sound.Play(_PreviewStream);
CBase.Sound.Fade(_PreviewStream, CBase.Config.GetBackgroundMusicVolume(), 1f);
@@ -532,7 +528,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
CBase.BackgroundMusic.SetStatus(true);
_PreviewStream = CBase.Sound.Load(song.GetMP3(), false);
- CBase.Sound.SetPosition(_PreviewStream, song.PreviewStart);
+ CBase.Sound.SetPosition(_PreviewStream, song.Preview.StartTime);
CBase.Sound.SetStreamVolume(_PreviewStream, 0f);
CBase.Sound.Play(_PreviewStream);
CBase.Sound.Fade(_PreviewStream, CBase.Config.GetBackgroundMusicVolume(), 1f);
@@ -672,7 +668,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private int _BuildWinnerPossibilities()
{
- int numOneRow = (int)Math.Sqrt(_GameData.NumFields);
+ var numOneRow = (int)Math.Sqrt(_GameData.NumFields);
_Possibilities = new int[(numOneRow * 2) + 2,numOneRow];
for (int i = 0; i < _Possibilities.GetLength(0); i++)
{
@@ -704,7 +700,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
for (int i = 0; i < _Possibilities.GetLength(0); i++)
{
- List check = new List();
+ var check = new List();
for (int j = 0; j < _Possibilities.GetLength(1); j++)
{
if (_Fields[_Possibilities[i, j]].Content.Winner > 0)
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
index f1c3c144..4f8a86cd 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -22,6 +20,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using VocaluxeLib.Menu;
+using VocaluxeLib.Profile;
namespace VocaluxeLib.PartyModes.TicTacToe
{
@@ -93,7 +92,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ThemeButtons = new string[] {_ButtonBack, _ButtonNext, _ButtonPlayerDestination, _ButtonPlayerChoose, _ButtonPlayerChooseScrollUp, _ButtonPlayerChooseScrollDown};
_Data = new SDataFromScreen();
- SFromScreenNames names = new SFromScreenNames {FadeToConfig = false, ProfileIDsTeam1 = new List(), ProfileIDsTeam2 = new List()};
+ var names = new SFromScreenNames {FadeToConfig = false, ProfileIDsTeam1 = new List(), ProfileIDsTeam2 = new List()};
_Data.ScreenNames = names;
}
@@ -101,7 +100,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
try
{
- SDataToScreenNames config = (SDataToScreenNames)receivedData;
+ var config = (SDataToScreenNames)receivedData;
_Data.ScreenNames.ProfileIDsTeam1 = config.ProfileIDsTeam1;
_Data.ScreenNames.ProfileIDsTeam2 = config.ProfileIDsTeam2;
if (_Data.ScreenNames.ProfileIDsTeam1 == null)
@@ -375,7 +374,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
CButton b = GetNewButton(_Buttons[_ButtonPlayerChoose]);
b.Rect.X = _PlayerChooseButtonsFirstX + column * (b.Rect.W + _PlayerChooseButtonsSpaceH);
b.Rect.Y = _PlayerChooseButtonsFirstY + row * (b.Rect.H + _PlayerChooseButtonsSpaceW);
- CPlayerChooseButton pcb = new CPlayerChooseButton {Button = b, ProfileID = -1};
+ var pcb = new CPlayerChooseButton {Button = b, ProfileID = -1};
_PlayerChooseButtons.Add(pcb);
column++;
if (column >= _PlayerChooseButtonsNumH)
@@ -418,7 +417,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_PlayerChooseButtons[i].ProfileID = id;
_PlayerChooseButtons[i].Button.Text.Text = CBase.Profiles.GetPlayerName(id);
_PlayerChooseButtons[i].Button.Texture = CBase.Profiles.GetAvatar(id);
- _PlayerChooseButtons[i].Button.SelTexture = CBase.Profiles.GetAvatar(id);
+ _PlayerChooseButtons[i].Button.SelTexture = CBase.Profiles.GetAvatar(id);
_PlayerChooseButtons[i].Button.Color = new SColorF(1, 1, 1, 0.6f);
_PlayerChooseButtons[i].Button.SelColor = new SColorF(1, 1, 1, 1);
_PlayerChooseButtons[i].Button.Enabled = true;
@@ -440,15 +439,18 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateVisibleProfiles()
{
_PlayerChooseButtonsVisibleProfiles.Clear();
- Profile.CProfile[] profiles = CBase.Profiles.GetProfiles();
- for (int i = 0; i < profiles.Length; i++)
+ CProfile[] profiles = CBase.Profiles.GetProfiles();
+ foreach (CProfile profile in profiles)
{
bool visible = false;
//Show profile only if active
- if (profiles[i].Active == EOffOn.TR_CONFIG_ON)
- visible = _Data.ScreenNames.ProfileIDsTeam1.All(profileID => profileID != profiles[i].ID) && _Data.ScreenNames.ProfileIDsTeam2.All(profileID => profileID != profiles[i].ID);
+ if (profile.Active == EOffOn.TR_CONFIG_ON)
+ {
+ visible = _Data.ScreenNames.ProfileIDsTeam1.All(profileID => profileID != profile.ID) &&
+ _Data.ScreenNames.ProfileIDsTeam2.All(profileID => profileID != profile.ID);
+ }
if (visible)
- _PlayerChooseButtonsVisibleProfiles.Add(profiles[i].ID);
+ _PlayerChooseButtonsVisibleProfiles.Add(profile.ID);
}
}
@@ -486,7 +488,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
if (_Data.ScreenNames.ProfileIDsTeam1[i] != -1)
{
- int id = _Data.ScreenNames.ProfileIDsTeam1[i];
+ int id = _Data.ScreenNames.ProfileIDsTeam1[i];
_PlayerDestinationButtons[i].Color = new SColorF(1, 1, 1, 0.6f);
_PlayerDestinationButtons[i].SelColor = new SColorF(1, 1, 1, 1);
_PlayerDestinationButtons[i].Texture = CBase.Profiles.GetAvatar(id);
@@ -511,7 +513,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
if (_Data.ScreenNames.ProfileIDsTeam2[i] != -1)
{
- int id = _Data.ScreenNames.ProfileIDsTeam2[i];
+ int id = _Data.ScreenNames.ProfileIDsTeam2[i];
_PlayerDestinationButtons[i + _PlayerDestinationButtonsNumH].Color = new SColorF(1, 1, 1, 0.6f);
_PlayerDestinationButtons[i + _PlayerDestinationButtonsNumH].SelColor = new SColorF(1, 1, 1, 1);
_PlayerDestinationButtons[i].Texture = CBase.Profiles.GetAvatar(id);
diff --git a/PartyModes/PartyModeTicTacToe/GlobalSuppressions.cs b/PartyModes/PartyModeTicTacToe/GlobalSuppressions.cs
index a29227be..e661ff03 100644
Binary files a/PartyModes/PartyModeTicTacToe/GlobalSuppressions.cs and b/PartyModes/PartyModeTicTacToe/GlobalSuppressions.cs differ
diff --git a/PartyModes/PartyModeTicTacToe/PartyModeTicTacToe.csproj b/PartyModes/PartyModeTicTacToe/PartyModeTicTacToe.csproj
index 7c64e9ac..fb739e23 100644
--- a/PartyModes/PartyModeTicTacToe/PartyModeTicTacToe.csproj
+++ b/PartyModes/PartyModeTicTacToe/PartyModeTicTacToe.csproj
@@ -106,6 +106,26 @@
+
+ bin
+ WIN
+ true
+ AnyCPU
+ false
+ Off
+ prompt
+ ManagedMinimumRules.ruleset
+
+
+ bin
+ WIN
+ true
+ AnyCPU
+ false
+ Off
+ prompt
+ ManagedMinimumRules.ruleset
+
@@ -140,4 +160,4 @@ xcopy "$(ProjectDir)*.cs" "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\"
-->
-
\ No newline at end of file
+
diff --git a/Vocaluxe.sln b/Vocaluxe.sln
index 636ec3bf..0896a6f6 100644
--- a/Vocaluxe.sln
+++ b/Vocaluxe.sln
@@ -26,6 +26,8 @@ Global
DebugLinux|x86 = DebugLinux|x86
DebugWin|x64 = DebugWin|x64
DebugWin|x86 = DebugWin|x86
+ InstallerWin|x64 = InstallerWin|x64
+ InstallerWin|x86 = InstallerWin|x86
ReleaseLinux|x64 = ReleaseLinux|x64
ReleaseLinux|x86 = ReleaseLinux|x86
ReleaseWin|x64 = ReleaseWin|x64
@@ -40,6 +42,10 @@ Global
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugWin|x64.Build.0 = DebugWin|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugWin|x86.ActiveCfg = DebugWin|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugWin|x86.Build.0 = DebugWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|x64.ActiveCfg = InstallerWin|x64
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|x64.Build.0 = InstallerWin|x64
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|x86.ActiveCfg = InstallerWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|x86.Build.0 = InstallerWin|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseLinux|x64.Build.0 = ReleaseLinux|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|x86
@@ -56,6 +62,10 @@ Global
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|x64.Build.0 = DebugWin|x64
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|x86.ActiveCfg = DebugWin|x86
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|x86.Build.0 = DebugWin|x86
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|x64.ActiveCfg = InstallerWin|x64
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|x64.Build.0 = InstallerWin|x64
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|x86.ActiveCfg = InstallerWin|x86
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|x86.Build.0 = InstallerWin|x86
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|x64
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|x64.Build.0 = ReleaseLinux|x64
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|x86
@@ -72,6 +82,10 @@ Global
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|x64.Build.0 = DebugWin|x64
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|x86.ActiveCfg = DebugWin|x86
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|x86.Build.0 = DebugWin|x86
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|x64.ActiveCfg = InstallerWin|x64
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|x64.Build.0 = InstallerWin|x64
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|x86.ActiveCfg = InstallerWin|x86
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|x86.Build.0 = InstallerWin|x86
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|x64
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|x64.Build.0 = ReleaseLinux|x64
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|x86
@@ -88,6 +102,10 @@ Global
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|x64.Build.0 = DebugWin|x64
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|x86.ActiveCfg = DebugWin|x86
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|x86.Build.0 = DebugWin|x86
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|x64.ActiveCfg = InstallerWin|x64
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|x64.Build.0 = InstallerWin|x64
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|x86.ActiveCfg = InstallerWin|x86
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|x86.Build.0 = InstallerWin|x86
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|x64
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|x64.Build.0 = ReleaseLinux|x64
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|x86
@@ -104,6 +122,10 @@ Global
{6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugWin|x64.Build.0 = DebugWin|x64
{6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugWin|x86.ActiveCfg = DebugWin|x86
{6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugWin|x86.Build.0 = DebugWin|x86
+ {6F3E1874-F28A-40E9-AFBD-31934D593678}.InstallerWin|x64.ActiveCfg = InstallerWin|x64
+ {6F3E1874-F28A-40E9-AFBD-31934D593678}.InstallerWin|x64.Build.0 = InstallerWin|x64
+ {6F3E1874-F28A-40E9-AFBD-31934D593678}.InstallerWin|x86.ActiveCfg = InstallerWin|x86
+ {6F3E1874-F28A-40E9-AFBD-31934D593678}.InstallerWin|x86.Build.0 = InstallerWin|x86
{6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|x64
{6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseLinux|x64.Build.0 = ReleaseLinux|x64
{6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|x86
@@ -118,6 +140,10 @@ Global
{ED007796-367F-4142-AA55-5450C7645C2C}.DebugWin|x64.Build.0 = DebugWin|x64
{ED007796-367F-4142-AA55-5450C7645C2C}.DebugWin|x86.ActiveCfg = DebugWin|Win32
{ED007796-367F-4142-AA55-5450C7645C2C}.DebugWin|x86.Build.0 = DebugWin|Win32
+ {ED007796-367F-4142-AA55-5450C7645C2C}.InstallerWin|x64.ActiveCfg = InstallerWin|x64
+ {ED007796-367F-4142-AA55-5450C7645C2C}.InstallerWin|x64.Build.0 = InstallerWin|x64
+ {ED007796-367F-4142-AA55-5450C7645C2C}.InstallerWin|x86.ActiveCfg = InstallerWin|Win32
+ {ED007796-367F-4142-AA55-5450C7645C2C}.InstallerWin|x86.Build.0 = InstallerWin|Win32
{ED007796-367F-4142-AA55-5450C7645C2C}.ReleaseLinux|x64.ActiveCfg = ReleaseWin|x64
{ED007796-367F-4142-AA55-5450C7645C2C}.ReleaseLinux|x86.ActiveCfg = ReleaseWin|x64
{ED007796-367F-4142-AA55-5450C7645C2C}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
@@ -128,7 +154,4 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
EndGlobal
diff --git a/Vocaluxe.sln.DotSettings b/Vocaluxe.sln.DotSettings
index 33cad2d0..edc4800a 100644
--- a/Vocaluxe.sln.DotSettings
+++ b/Vocaluxe.sln.DotSettings
@@ -9,8 +9,8 @@
DO_NOT_SHOWDO_NOT_SHOWDO_NOT_SHOW
- <?xml version="1.0" encoding="utf-16"?><Profile name="Cleanup"><CSArrangeThisQualifier>True</CSArrangeThisQualifier><CSRemoveCodeRedundancies>True</CSRemoveCodeRedundancies><CSMakeFieldReadonly>True</CSMakeFieldReadonly><CSUseVar><BehavourStyle>CAN_CHANGE_TO_IMPLICIT</BehavourStyle><LocalVariableStyle>IMPLICIT_WHEN_INITIALIZER_HAS_TYPE</LocalVariableStyle><ForeachVariableStyle>ALWAYS_EXPLICIT</ForeachVariableStyle></CSUseVar><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSReformatCode>True</CSReformatCode><CSharpFormatDocComments>True</CSharpFormatDocComments><CSShortenReferences>True</CSShortenReferences><StyleCop.Documentation><SA1600ElementsMustBeDocumented>False</SA1600ElementsMustBeDocumented><SA1604ElementDocumentationMustHaveSummary>False</SA1604ElementDocumentationMustHaveSummary><SA1609PropertyDocumentationMustHaveValueDocumented>False</SA1609PropertyDocumentationMustHaveValueDocumented><SA1611ElementParametersMustBeDocumented>False</SA1611ElementParametersMustBeDocumented><SA1615ElementReturnValueMustBeDocumented>False</SA1615ElementReturnValueMustBeDocumented><SA1617VoidReturnValueMustNotBeDocumented>False</SA1617VoidReturnValueMustNotBeDocumented><SA1618GenericTypeParametersMustBeDocumented>False</SA1618GenericTypeParametersMustBeDocumented><SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes>False</SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes><SA1628DocumentationTextMustBeginWithACapitalLetter>False</SA1628DocumentationTextMustBeginWithACapitalLetter><SA1629DocumentationTextMustEndWithAPeriod>False</SA1629DocumentationTextMustEndWithAPeriod><SA1633SA1641UpdateFileHeader>Ignore</SA1633SA1641UpdateFileHeader><SA1639FileHeaderMustHaveSummary>False</SA1639FileHeaderMustHaveSummary><SA1642ConstructorSummaryDocumentationMustBeginWithStandardText>False</SA1642ConstructorSummaryDocumentationMustBeginWithStandardText><SA1643DestructorSummaryDocumentationMustBeginWithStandardText>False</SA1643DestructorSummaryDocumentationMustBeginWithStandardText><SA1644DocumentationHeadersMustNotContainBlankLines>False</SA1644DocumentationHeadersMustNotContainBlankLines></StyleCop.Documentation><StyleCop.Layout><SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine>False</SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine><SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine>True</SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine><SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine>True</SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine><SA1511WhileDoFooterMustNotBePrecededByBlankLine>True</SA1511WhileDoFooterMustNotBePrecededByBlankLine><SA1512SingleLineCommentsMustNotBeFollowedByBlankLine>True</SA1512SingleLineCommentsMustNotBeFollowedByBlankLine><SA1513ClosingCurlyBracketMustBeFollowedByBlankLine>False</SA1513ClosingCurlyBracketMustBeFollowedByBlankLine><SA1514ElementDocumentationHeaderMustBePrecededByBlankLine>False</SA1514ElementDocumentationHeaderMustBePrecededByBlankLine><SA1515SingleLineCommentMustBeProceededByBlankLine>False</SA1515SingleLineCommentMustBeProceededByBlankLine></StyleCop.Layout><StyleCop.Readability><SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists>True</SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists><SA1106CodeMustNotContainEmptyStatements>True</SA1106CodeMustNotContainEmptyStatements><SA1108BlockStatementsMustNotContainEmbeddedComments>True</SA1108BlockStatementsMustNotContainEmbeddedComments><SA1109BlockStatementsMustNotContainEmbeddedRegions>True</SA1109BlockStatementsMustNotContainEmbeddedRegions><SA1120CommentsMustContainText>False</SA1120CommentsMustContainText><SA1121UseBuiltInTypeAlias>False</SA1121UseBuiltInTypeAlias><SA1122UseStringEmptyForEmptyStrings>False</SA1122UseStringEmptyForEmptyStrings><SA1123DoNotPlaceRegionsWithinElements>False</SA1123DoNotPlaceRegionsWithinElements><SA1124CodeMustNotContainEmptyRegions>True</SA1124CodeMustNotContainEmptyRegions></StyleCop.Readability><StyleCop.Spacing><SA1001CommasMustBeSpacedCorrectly>False</SA1001CommasMustBeSpacedCorrectly><SA1005SingleLineCommentsMustBeginWithSingleSpace>False</SA1005SingleLineCommentsMustBeginWithSingleSpace><SA1006PreprocessorKeywordsMustNotBePrecededBySpace>True</SA1006PreprocessorKeywordsMustNotBePrecededBySpace><SA1021NegativeSignsMustBeSpacedCorrectly>True</SA1021NegativeSignsMustBeSpacedCorrectly><SA1022PositiveSignsMustBeSpacedCorrectly>True</SA1022PositiveSignsMustBeSpacedCorrectly><SA1025CodeMustNotContainMultipleWhitespaceInARow>True</SA1025CodeMustNotContainMultipleWhitespaceInARow></StyleCop.Spacing><StyleCop.Ordering><AlphabeticalUsingDirectives>Ignore</AlphabeticalUsingDirectives><ExpandUsingDirectives>Ignore</ExpandUsingDirectives><SA1212PropertyAccessorsMustFollowOrder>True</SA1212PropertyAccessorsMustFollowOrder><SA1213EventAccessorsMustFollowOrder>True</SA1213EventAccessorsMustFollowOrder></StyleCop.Ordering><CSUpdateFileHeader>True</CSUpdateFileHeader><CSUseAutoProperty>True</CSUseAutoProperty></Profile>
- <?xml version="1.0" encoding="utf-16"?><Profile name="Simple Reformat"><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSReformatCode>True</CSReformatCode><StyleCop.Documentation><SA1600ElementsMustBeDocumented>False</SA1600ElementsMustBeDocumented><SA1604ElementDocumentationMustHaveSummary>False</SA1604ElementDocumentationMustHaveSummary><SA1609PropertyDocumentationMustHaveValueDocumented>False</SA1609PropertyDocumentationMustHaveValueDocumented><SA1611ElementParametersMustBeDocumented>False</SA1611ElementParametersMustBeDocumented><SA1615ElementReturnValueMustBeDocumented>False</SA1615ElementReturnValueMustBeDocumented><SA1617VoidReturnValueMustNotBeDocumented>False</SA1617VoidReturnValueMustNotBeDocumented><SA1618GenericTypeParametersMustBeDocumented>False</SA1618GenericTypeParametersMustBeDocumented><SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes>False</SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes><SA1628DocumentationTextMustBeginWithACapitalLetter>False</SA1628DocumentationTextMustBeginWithACapitalLetter><SA1629DocumentationTextMustEndWithAPeriod>False</SA1629DocumentationTextMustEndWithAPeriod><SA1633SA1641UpdateFileHeader>Ignore</SA1633SA1641UpdateFileHeader><SA1639FileHeaderMustHaveSummary>False</SA1639FileHeaderMustHaveSummary><SA1642ConstructorSummaryDocumentationMustBeginWithStandardText>False</SA1642ConstructorSummaryDocumentationMustBeginWithStandardText><SA1643DestructorSummaryDocumentationMustBeginWithStandardText>False</SA1643DestructorSummaryDocumentationMustBeginWithStandardText><SA1644DocumentationHeadersMustNotContainBlankLines>False</SA1644DocumentationHeadersMustNotContainBlankLines></StyleCop.Documentation><StyleCop.Spacing><SA1001CommasMustBeSpacedCorrectly>False</SA1001CommasMustBeSpacedCorrectly><SA1005SingleLineCommentsMustBeginWithSingleSpace>False</SA1005SingleLineCommentsMustBeginWithSingleSpace><SA1006PreprocessorKeywordsMustNotBePrecededBySpace>True</SA1006PreprocessorKeywordsMustNotBePrecededBySpace><SA1021NegativeSignsMustBeSpacedCorrectly>True</SA1021NegativeSignsMustBeSpacedCorrectly><SA1022PositiveSignsMustBeSpacedCorrectly>True</SA1022PositiveSignsMustBeSpacedCorrectly><SA1025CodeMustNotContainMultipleWhitespaceInARow>True</SA1025CodeMustNotContainMultipleWhitespaceInARow></StyleCop.Spacing><StyleCop.Readability><SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists>True</SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists><SA1106CodeMustNotContainEmptyStatements>True</SA1106CodeMustNotContainEmptyStatements><SA1108BlockStatementsMustNotContainEmbeddedComments>True</SA1108BlockStatementsMustNotContainEmbeddedComments><SA1109BlockStatementsMustNotContainEmbeddedRegions>True</SA1109BlockStatementsMustNotContainEmbeddedRegions><SA1120CommentsMustContainText>False</SA1120CommentsMustContainText><SA1121UseBuiltInTypeAlias>False</SA1121UseBuiltInTypeAlias><SA1122UseStringEmptyForEmptyStrings>False</SA1122UseStringEmptyForEmptyStrings><SA1123DoNotPlaceRegionsWithinElements>False</SA1123DoNotPlaceRegionsWithinElements><SA1124CodeMustNotContainEmptyRegions>True</SA1124CodeMustNotContainEmptyRegions></StyleCop.Readability><StyleCop.Layout><SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine>False</SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine><SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine>True</SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine><SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine>True</SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine><SA1511WhileDoFooterMustNotBePrecededByBlankLine>True</SA1511WhileDoFooterMustNotBePrecededByBlankLine><SA1512SingleLineCommentsMustNotBeFollowedByBlankLine>True</SA1512SingleLineCommentsMustNotBeFollowedByBlankLine><SA1513ClosingCurlyBracketMustBeFollowedByBlankLine>False</SA1513ClosingCurlyBracketMustBeFollowedByBlankLine><SA1514ElementDocumentationHeaderMustBePrecededByBlankLine>False</SA1514ElementDocumentationHeaderMustBePrecededByBlankLine><SA1515SingleLineCommentMustBeProceededByBlankLine>False</SA1515SingleLineCommentMustBeProceededByBlankLine></StyleCop.Layout><StyleCop.Ordering><AlphabeticalUsingDirectives>Ignore</AlphabeticalUsingDirectives><ExpandUsingDirectives>Ignore</ExpandUsingDirectives><SA1212PropertyAccessorsMustFollowOrder>True</SA1212PropertyAccessorsMustFollowOrder><SA1213EventAccessorsMustFollowOrder>True</SA1213EventAccessorsMustFollowOrder></StyleCop.Ordering><CSShortenReferences>True</CSShortenReferences><CSUseVar><BehavourStyle>CAN_CHANGE_TO_IMPLICIT</BehavourStyle><LocalVariableStyle>IMPLICIT_WHEN_INITIALIZER_HAS_TYPE</LocalVariableStyle><ForeachVariableStyle>ALWAYS_EXPLICIT</ForeachVariableStyle></CSUseVar></Profile>
+ <?xml version="1.0" encoding="utf-16"?><Profile name="Cleanup"><CSArrangeThisQualifier>True</CSArrangeThisQualifier><CSRemoveCodeRedundancies>True</CSRemoveCodeRedundancies><CSMakeFieldReadonly>True</CSMakeFieldReadonly><CSUseVar><BehavourStyle>CAN_CHANGE_TO_EXPLICIT</BehavourStyle><LocalVariableStyle>IMPLICIT_WHEN_INITIALIZER_HAS_TYPE</LocalVariableStyle><ForeachVariableStyle>ALWAYS_EXPLICIT</ForeachVariableStyle></CSUseVar><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSReformatCode>True</CSReformatCode><CSharpFormatDocComments>True</CSharpFormatDocComments><CSShortenReferences>True</CSShortenReferences><StyleCop.Documentation><SA1600ElementsMustBeDocumented>False</SA1600ElementsMustBeDocumented><SA1604ElementDocumentationMustHaveSummary>False</SA1604ElementDocumentationMustHaveSummary><SA1609PropertyDocumentationMustHaveValueDocumented>False</SA1609PropertyDocumentationMustHaveValueDocumented><SA1611ElementParametersMustBeDocumented>False</SA1611ElementParametersMustBeDocumented><SA1615ElementReturnValueMustBeDocumented>False</SA1615ElementReturnValueMustBeDocumented><SA1617VoidReturnValueMustNotBeDocumented>False</SA1617VoidReturnValueMustNotBeDocumented><SA1618GenericTypeParametersMustBeDocumented>False</SA1618GenericTypeParametersMustBeDocumented><SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes>False</SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes><SA1628DocumentationTextMustBeginWithACapitalLetter>False</SA1628DocumentationTextMustBeginWithACapitalLetter><SA1629DocumentationTextMustEndWithAPeriod>False</SA1629DocumentationTextMustEndWithAPeriod><SA1633SA1641UpdateFileHeader>Ignore</SA1633SA1641UpdateFileHeader><SA1639FileHeaderMustHaveSummary>False</SA1639FileHeaderMustHaveSummary><SA1642ConstructorSummaryDocumentationMustBeginWithStandardText>False</SA1642ConstructorSummaryDocumentationMustBeginWithStandardText><SA1643DestructorSummaryDocumentationMustBeginWithStandardText>False</SA1643DestructorSummaryDocumentationMustBeginWithStandardText><SA1644DocumentationHeadersMustNotContainBlankLines>False</SA1644DocumentationHeadersMustNotContainBlankLines></StyleCop.Documentation><StyleCop.Layout><SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine>False</SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine><SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine>True</SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine><SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine>True</SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine><SA1511WhileDoFooterMustNotBePrecededByBlankLine>True</SA1511WhileDoFooterMustNotBePrecededByBlankLine><SA1512SingleLineCommentsMustNotBeFollowedByBlankLine>True</SA1512SingleLineCommentsMustNotBeFollowedByBlankLine><SA1513ClosingCurlyBracketMustBeFollowedByBlankLine>False</SA1513ClosingCurlyBracketMustBeFollowedByBlankLine><SA1514ElementDocumentationHeaderMustBePrecededByBlankLine>False</SA1514ElementDocumentationHeaderMustBePrecededByBlankLine><SA1515SingleLineCommentMustBeProceededByBlankLine>False</SA1515SingleLineCommentMustBeProceededByBlankLine></StyleCop.Layout><StyleCop.Readability><SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists>True</SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists><SA1106CodeMustNotContainEmptyStatements>True</SA1106CodeMustNotContainEmptyStatements><SA1108BlockStatementsMustNotContainEmbeddedComments>True</SA1108BlockStatementsMustNotContainEmbeddedComments><SA1109BlockStatementsMustNotContainEmbeddedRegions>True</SA1109BlockStatementsMustNotContainEmbeddedRegions><SA1120CommentsMustContainText>False</SA1120CommentsMustContainText><SA1121UseBuiltInTypeAlias>False</SA1121UseBuiltInTypeAlias><SA1122UseStringEmptyForEmptyStrings>False</SA1122UseStringEmptyForEmptyStrings><SA1123DoNotPlaceRegionsWithinElements>False</SA1123DoNotPlaceRegionsWithinElements><SA1124CodeMustNotContainEmptyRegions>True</SA1124CodeMustNotContainEmptyRegions></StyleCop.Readability><StyleCop.Spacing><SA1001CommasMustBeSpacedCorrectly>False</SA1001CommasMustBeSpacedCorrectly><SA1005SingleLineCommentsMustBeginWithSingleSpace>False</SA1005SingleLineCommentsMustBeginWithSingleSpace><SA1006PreprocessorKeywordsMustNotBePrecededBySpace>True</SA1006PreprocessorKeywordsMustNotBePrecededBySpace><SA1021NegativeSignsMustBeSpacedCorrectly>True</SA1021NegativeSignsMustBeSpacedCorrectly><SA1022PositiveSignsMustBeSpacedCorrectly>True</SA1022PositiveSignsMustBeSpacedCorrectly><SA1025CodeMustNotContainMultipleWhitespaceInARow>True</SA1025CodeMustNotContainMultipleWhitespaceInARow></StyleCop.Spacing><StyleCop.Ordering><AlphabeticalUsingDirectives>Ignore</AlphabeticalUsingDirectives><ExpandUsingDirectives>Ignore</ExpandUsingDirectives><SA1212PropertyAccessorsMustFollowOrder>True</SA1212PropertyAccessorsMustFollowOrder><SA1213EventAccessorsMustFollowOrder>True</SA1213EventAccessorsMustFollowOrder></StyleCop.Ordering><CSUpdateFileHeader>True</CSUpdateFileHeader><CSUseAutoProperty>True</CSUseAutoProperty></Profile>
+ <?xml version="1.0" encoding="utf-16"?><Profile name="Simple Reformat"><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSReformatCode>True</CSReformatCode><StyleCop.Documentation><SA1600ElementsMustBeDocumented>False</SA1600ElementsMustBeDocumented><SA1604ElementDocumentationMustHaveSummary>False</SA1604ElementDocumentationMustHaveSummary><SA1609PropertyDocumentationMustHaveValueDocumented>False</SA1609PropertyDocumentationMustHaveValueDocumented><SA1611ElementParametersMustBeDocumented>False</SA1611ElementParametersMustBeDocumented><SA1615ElementReturnValueMustBeDocumented>False</SA1615ElementReturnValueMustBeDocumented><SA1617VoidReturnValueMustNotBeDocumented>False</SA1617VoidReturnValueMustNotBeDocumented><SA1618GenericTypeParametersMustBeDocumented>False</SA1618GenericTypeParametersMustBeDocumented><SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes>False</SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes><SA1628DocumentationTextMustBeginWithACapitalLetter>False</SA1628DocumentationTextMustBeginWithACapitalLetter><SA1629DocumentationTextMustEndWithAPeriod>False</SA1629DocumentationTextMustEndWithAPeriod><SA1633SA1641UpdateFileHeader>Ignore</SA1633SA1641UpdateFileHeader><SA1639FileHeaderMustHaveSummary>False</SA1639FileHeaderMustHaveSummary><SA1642ConstructorSummaryDocumentationMustBeginWithStandardText>False</SA1642ConstructorSummaryDocumentationMustBeginWithStandardText><SA1643DestructorSummaryDocumentationMustBeginWithStandardText>False</SA1643DestructorSummaryDocumentationMustBeginWithStandardText><SA1644DocumentationHeadersMustNotContainBlankLines>False</SA1644DocumentationHeadersMustNotContainBlankLines></StyleCop.Documentation><StyleCop.Spacing><SA1001CommasMustBeSpacedCorrectly>False</SA1001CommasMustBeSpacedCorrectly><SA1005SingleLineCommentsMustBeginWithSingleSpace>False</SA1005SingleLineCommentsMustBeginWithSingleSpace><SA1006PreprocessorKeywordsMustNotBePrecededBySpace>True</SA1006PreprocessorKeywordsMustNotBePrecededBySpace><SA1021NegativeSignsMustBeSpacedCorrectly>True</SA1021NegativeSignsMustBeSpacedCorrectly><SA1022PositiveSignsMustBeSpacedCorrectly>True</SA1022PositiveSignsMustBeSpacedCorrectly><SA1025CodeMustNotContainMultipleWhitespaceInARow>True</SA1025CodeMustNotContainMultipleWhitespaceInARow></StyleCop.Spacing><StyleCop.Readability><SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists>True</SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists><SA1106CodeMustNotContainEmptyStatements>True</SA1106CodeMustNotContainEmptyStatements><SA1108BlockStatementsMustNotContainEmbeddedComments>True</SA1108BlockStatementsMustNotContainEmbeddedComments><SA1109BlockStatementsMustNotContainEmbeddedRegions>True</SA1109BlockStatementsMustNotContainEmbeddedRegions><SA1120CommentsMustContainText>False</SA1120CommentsMustContainText><SA1121UseBuiltInTypeAlias>False</SA1121UseBuiltInTypeAlias><SA1122UseStringEmptyForEmptyStrings>False</SA1122UseStringEmptyForEmptyStrings><SA1123DoNotPlaceRegionsWithinElements>False</SA1123DoNotPlaceRegionsWithinElements><SA1124CodeMustNotContainEmptyRegions>True</SA1124CodeMustNotContainEmptyRegions></StyleCop.Readability><StyleCop.Layout><SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine>False</SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine><SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine>True</SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine><SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine>True</SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine><SA1511WhileDoFooterMustNotBePrecededByBlankLine>True</SA1511WhileDoFooterMustNotBePrecededByBlankLine><SA1512SingleLineCommentsMustNotBeFollowedByBlankLine>True</SA1512SingleLineCommentsMustNotBeFollowedByBlankLine><SA1513ClosingCurlyBracketMustBeFollowedByBlankLine>False</SA1513ClosingCurlyBracketMustBeFollowedByBlankLine><SA1514ElementDocumentationHeaderMustBePrecededByBlankLine>False</SA1514ElementDocumentationHeaderMustBePrecededByBlankLine><SA1515SingleLineCommentMustBeProceededByBlankLine>False</SA1515SingleLineCommentMustBeProceededByBlankLine></StyleCop.Layout><StyleCop.Ordering><AlphabeticalUsingDirectives>Ignore</AlphabeticalUsingDirectives><ExpandUsingDirectives>Ignore</ExpandUsingDirectives><SA1212PropertyAccessorsMustFollowOrder>True</SA1212PropertyAccessorsMustFollowOrder><SA1213EventAccessorsMustFollowOrder>True</SA1213EventAccessorsMustFollowOrder></StyleCop.Ordering><CSShortenReferences>True</CSShortenReferences><CSUseVar><BehavourStyle>CAN_CHANGE_TO_EXPLICIT</BehavourStyle><LocalVariableStyle>IMPLICIT_WHEN_INITIALIZER_HAS_TYPE</LocalVariableStyle><ForeachVariableStyle>ALWAYS_EXPLICIT</ForeachVariableStyle></CSUseVar></Profile>CleanupSimple Reformat0
diff --git a/Vocaluxe/Base/CBackgroundMusic.cs b/Vocaluxe/Base/CBackgroundMusic.cs
index a47de520..4f315e97 100644
--- a/Vocaluxe/Base/CBackgroundMusic.cs
+++ b/Vocaluxe/Base/CBackgroundMusic.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -92,11 +90,6 @@ namespace Vocaluxe.Base
get { return _CurrentPlaylistElement.SongID; }
}
- public static bool Duet
- {
- get { return _CurrentPlaylistElement.Duet; }
- }
-
public static bool SongHasVideo
{
get { return File.Exists(_CurrentPlaylistElement.VideoFilePath); }
@@ -583,17 +576,6 @@ namespace Vocaluxe.Base
}
}
- public bool Duet
- {
- get
- {
- if (_Song != null)
- return _Song.IsDuet;
-
- return false;
- }
- }
-
public CPlaylistElement(CSong song)
{
MusicFilePath = string.Empty;
diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs
index f3dbbdbf..f4074ad1 100644
--- a/Vocaluxe/Base/CConfig.cs
+++ b/Vocaluxe/Base/CConfig.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -39,6 +37,7 @@ namespace Vocaluxe.Base
// Debug
public static EDebugLevel DebugLevel = EDebugLevel.TR_CONFIG_OFF;
+ public static EOffOn SaveModifiedSongs = EOffOn.TR_CONFIG_OFF;
// Graphics
#if WIN
@@ -148,10 +147,17 @@ namespace Vocaluxe.Base
SongFolder.Add(Path.Combine(Directory.GetCurrentDirectory(), CSettings.FolderSongs));
+#if INSTALLER
+ SongFolder.Add(Path.Combine(CSettings.DataPath, CSettings.FolderSongs));
+#endif
+
+ foreach (string folder in SongFolder)
+ CSettings.CreateFolder(folder);
+
MicConfig = new SMicConfig[CSettings.MaxNumPlayer];
// Init config file
- if (!File.Exists(CSettings.FileConfig))
+ if (!File.Exists(Path.Combine(CSettings.DataPath, CSettings.FileConfig)))
SaveConfig();
_LoadConfig();
@@ -159,11 +165,12 @@ namespace Vocaluxe.Base
private static void _LoadConfig()
{
- CXMLReader xmlReader = CXMLReader.OpenFile(CSettings.FileConfig);
+ CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(CSettings.DataPath, CSettings.FileConfig));
if (xmlReader == null)
return;
xmlReader.TryGetEnumValue("//root/Debug/DebugLevel", ref DebugLevel);
+ xmlReader.TryGetEnumValue("//root/Debug/SaveModifiedSongs", ref SaveModifiedSongs);
#region Graphics
xmlReader.TryGetEnumValue("//root/Graphics/Renderer", ref Renderer);
@@ -297,7 +304,7 @@ namespace Vocaluxe.Base
XmlWriter writer = null;
try
{
- writer = XmlWriter.Create(CSettings.FileConfig, _Settings);
+ writer = XmlWriter.Create(Path.Combine(CSettings.DataPath, CSettings.FileConfig), _Settings);
writer.WriteStartDocument();
writer.WriteStartElement("root");
@@ -323,6 +330,9 @@ namespace Vocaluxe.Base
writer.WriteComment("DebugLevel: " + CHelper.ListStrings(Enum.GetNames(typeof(EDebugLevel))));
writer.WriteElementString("DebugLevel", Enum.GetName(typeof(EDebugLevel), DebugLevel));
+ writer.WriteComment("SaveModifiedSongs: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
+ writer.WriteElementString("SaveModifiedSongs", Enum.GetName(typeof(EOffOn), SaveModifiedSongs));
+
writer.WriteEndElement();
#endregion Debug
@@ -777,7 +787,8 @@ namespace Vocaluxe.Base
case "profilefolder":
CSettings.CreateFolder(value);
- CSettings.FolderProfiles = value;
+ CSettings.FoldersProfiles.Clear();
+ CSettings.FoldersProfiles.Add(value);
break;
}
}
diff --git a/Vocaluxe/Base/CController.cs b/Vocaluxe/Base/CController.cs
index e28bb2ee..ce70f459 100644
--- a/Vocaluxe/Base/CController.cs
+++ b/Vocaluxe/Base/CController.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.Generic;
@@ -77,11 +75,11 @@ namespace Vocaluxe.Base
{
controller.Update();
- SKeyEvent ke = new SKeyEvent();
+ var ke = new SKeyEvent();
while (controller.PollKeyEvent(ref ke))
_KeysPool.Add(ke);
- SMouseEvent me = new SMouseEvent();
+ var me = new SMouseEvent();
while (controller.PollMouseEvent(ref me))
_MousePool.Add(me);
}
diff --git a/Vocaluxe/Base/CCover.cs b/Vocaluxe/Base/CCover.cs
index 9c7a33ce..a156fa8b 100644
--- a/Vocaluxe/Base/CCover.cs
+++ b/Vocaluxe/Base/CCover.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -62,7 +60,7 @@ namespace Vocaluxe.Base
{
get
{
- List coverThemes = new List();
+ var coverThemes = new List();
for (int i = 0; i < _CoverThemes.Count; i++)
coverThemes.Add(_CoverThemes[i].Name);
@@ -154,7 +152,7 @@ namespace Vocaluxe.Base
if (xmlReader != null)
{
- SCoverTheme coverTheme = new SCoverTheme();
+ var coverTheme = new SCoverTheme();
xmlReader.GetValue("//root/Info/Name", out coverTheme.Name, String.Empty);
xmlReader.GetValue("//root/Info/Folder", out coverTheme.Folder, String.Empty);
@@ -179,7 +177,7 @@ namespace Vocaluxe.Base
if (String.IsNullOrEmpty(coverTheme.Name))
return;
- List ignoreList = new List();
+ var ignoreList = new List();
CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(CSettings.FolderCover, coverTheme.File));
if (xmlReader != null)
{
@@ -206,7 +204,7 @@ namespace Vocaluxe.Base
}
}
- List files = new List();
+ var files = new List();
string coverPath = Path.Combine(CSettings.FolderCover, coverTheme.Folder);
files.AddRange(CHelper.ListFiles(coverPath, "*.png", true, true));
@@ -222,19 +220,17 @@ namespace Vocaluxe.Base
}
}
- private static void _AddCover(string Name, string File)
+ private static void _AddCover(string name, string file)
{
- CTexture texture = CDraw.AddTexture(File);
+ CTexture texture = CDraw.AddTexture(file);
- if (!_CoverExists(Name))
- {
- _Cover.Add(Name, texture);
- }
+ if (!_CoverExists(name))
+ _Cover.Add(name, texture);
else
{
- CTexture tex = _Cover[Name];
+ CTexture tex = _Cover[name];
CDraw.RemoveTexture(ref tex);
- _Cover[Name] = texture;
+ _Cover[name] = texture;
}
}
}
diff --git a/Vocaluxe/Base/CCursor.cs b/Vocaluxe/Base/CCursor.cs
index 70f1c84b..1ac568cd 100644
--- a/Vocaluxe/Base/CCursor.cs
+++ b/Vocaluxe/Base/CCursor.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Base/CDataBase.cs b/Vocaluxe/Base/CDataBase.cs
index 2e9c4b65..b755a95b 100644
--- a/Vocaluxe/Base/CDataBase.cs
+++ b/Vocaluxe/Base/CDataBase.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -71,10 +69,71 @@ namespace Vocaluxe.Base
}
#region Highscores
+ public static bool GetDataBaseSongInfos(string artist, string title, out int numPlayed, out string dateAdded, out int highscoreID)
+ {
+ string sArtist;
+ string sTitle;
+ int songID;
+ using (var connection = new SQLiteConnection())
+ {
+ connection.ConnectionString = "Data Source=" + _HighscoreFilePath;
+
+ try
+ {
+ connection.Open();
+ }
+ catch (Exception) {}
+
+ using (var command = new SQLiteCommand(connection))
+ {
+ songID = _GetDataBaseSongID(artist, title, 0, command);
+ highscoreID = songID;
+ }
+ }
+ return _GetDataBaseSongInfos(songID, out sArtist, out sTitle, out numPlayed, out dateAdded, _HighscoreFilePath);
+ }
+
+ public static void IncreaseSongCounter(SPlayer player)
+ {
+ using (var connection = new SQLiteConnection())
+ {
+ connection.ConnectionString = "Data Source=" + _HighscoreFilePath;
+
+ try
+ {
+ connection.Open();
+ }
+ catch (Exception) {}
+
+ using (var command = new SQLiteCommand(connection))
+ {
+ int dataBaseSongID = _GetDataBaseSongID(player, command);
+ _IncreaseSongCounter(dataBaseSongID, command);
+ }
+ }
+ }
+
+ public static void IncreaseSongCounter(int dataBaseSongID)
+ {
+ using (var connection = new SQLiteConnection())
+ {
+ connection.ConnectionString = "Data Source=" + _HighscoreFilePath;
+
+ try
+ {
+ connection.Open();
+ }
+ catch (Exception) {}
+
+ using (var command = new SQLiteCommand(connection))
+ _IncreaseSongCounter(dataBaseSongID, command);
+ }
+ }
+
public static int AddScore(string playerName, int score, int lineNr, long date, int medley, int duet, int shortSong, int difficulty,
string artist, string title, int numPlayed, string filePath)
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + filePath;
@@ -87,7 +146,7 @@ namespace Vocaluxe.Base
return -1;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
int dataBaseSongID = _GetDataBaseSongID(artist, title, numPlayed, command);
int result = _AddScore(playerName, score, lineNr, date, medley, duet, shortSong, difficulty, dataBaseSongID, command);
@@ -98,7 +157,7 @@ namespace Vocaluxe.Base
public static int AddScore(SPlayer player)
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + _HighscoreFilePath;
@@ -111,10 +170,10 @@ namespace Vocaluxe.Base
return -1;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
- int dataBaseSongID = _GetDataBaseSongID(player, command);
- return _AddScore(CProfiles.GetPlayerName(player.ProfileID), (int)Math.Round(player.Points), player.LineNr, player.DateTicks, player.Medley ? 1 : 0,
+ int dataBaseSongID = CSongs.GetSong(player.SongID).DataBaseSongID;
+ return _AddScore(CProfiles.GetPlayerName(player.ProfileID), (int)Math.Round(player.Points), player.VoiceNr, player.DateTicks, player.Medley ? 1 : 0,
player.Duet ? 1 : 0, player.ShortSong ? 1 : 0, (int)CProfiles.GetDifficulty(player.ProfileID), dataBaseSongID, command);
}
}
@@ -186,7 +245,7 @@ namespace Vocaluxe.Base
public static void LoadScore(out List scores, SPlayer player)
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + _HighscoreFilePath;
@@ -201,7 +260,7 @@ namespace Vocaluxe.Base
return;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
int medley = 0;
if (player.Medley)
@@ -231,7 +290,7 @@ namespace Vocaluxe.Base
{
while (reader.Read())
{
- SScores score = new SScores
+ var score = new SScores
{
Name = reader.GetString(0),
Score = reader.GetInt32(1),
@@ -250,6 +309,13 @@ namespace Vocaluxe.Base
}
}
+ private static void _IncreaseSongCounter(int dataBaseSongID, SQLiteCommand command)
+ {
+ command.CommandText = "UPDATE Songs SET NumPlayed = NumPlayed + 1 WHERE [id] = @id";
+ command.Parameters.Add("@id", DbType.Int32, 0).Value = dataBaseSongID;
+ command.ExecuteNonQuery();
+ }
+
private static int _GetDataBaseSongID(SPlayer player, SQLiteCommand command)
{
CSong song = CSongs.GetSong(player.SongID);
@@ -275,14 +341,16 @@ namespace Vocaluxe.Base
reader.Dispose();
return id;
}
+
if (reader != null)
reader.Close();
- command.CommandText = "INSERT INTO Songs (Title, Artist, NumPlayed) " +
- "VALUES (@title, @artist, @numplayed)";
+ command.CommandText = "INSERT INTO Songs (Title, Artist, NumPlayed, DateAdded) " +
+ "VALUES (@title, @artist, @numplayed, @dateadded)";
command.Parameters.Add("@title", DbType.String, 0).Value = title;
command.Parameters.Add("@artist", DbType.String, 0).Value = artist;
command.Parameters.Add("@numplayed", DbType.Int32, 0).Value = defNumPlayed;
+ command.Parameters.Add("@dateadded", DbType.Int64, 0).Value = DateTime.Now.Ticks;
command.ExecuteNonQuery();
command.CommandText = "SELECT id FROM Songs WHERE [Title] = @title AND [Artist] = @artist";
@@ -302,13 +370,14 @@ namespace Vocaluxe.Base
return -1;
}
- private static bool _GetDataBaseSongInfos(int songID, out string artist, out string title, out int numPlayed, string filePath)
+ private static bool _GetDataBaseSongInfos(int songID, out string artist, out string title, out int numPlayed, out string dateAdded, string filePath)
{
artist = String.Empty;
title = String.Empty;
numPlayed = 0;
+ dateAdded = String.Empty;
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + filePath;
@@ -321,9 +390,9 @@ namespace Vocaluxe.Base
return false;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
- command.CommandText = "SELECT Artist, Title, NumPlayed FROM Songs WHERE [id] = @id";
+ command.CommandText = "SELECT Artist, Title, NumPlayed, DateAdded FROM Songs WHERE [id] = @id";
command.Parameters.Add("@id", DbType.String, 0).Value = songID;
SQLiteDataReader reader;
@@ -342,6 +411,7 @@ namespace Vocaluxe.Base
artist = reader.GetString(0);
title = reader.GetString(1);
numPlayed = reader.GetInt32(2);
+ dateAdded = new DateTime(reader.GetInt64(3)).ToString("dd/MM/yyyy");
reader.Dispose();
return true;
}
@@ -379,7 +449,7 @@ namespace Vocaluxe.Base
private static void _CreateHighscoreDB(string filePath)
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + filePath;
@@ -392,7 +462,7 @@ namespace Vocaluxe.Base
return;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "CREATE TABLE IF NOT EXISTS Version ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, Value INTEGER NOT NULL);";
command.ExecuteNonQuery();
@@ -402,7 +472,7 @@ namespace Vocaluxe.Base
command.ExecuteNonQuery();
command.CommandText = "CREATE TABLE IF NOT EXISTS Songs ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
- "Artist TEXT NOT NULL, Title TEXT NOT NULL, NumPlayed INTEGER);";
+ "Artist TEXT NOT NULL, Title TEXT NOT NULL, NumPlayed INTEGER, DateAdded BIGING);";
command.ExecuteNonQuery();
command.CommandText = "CREATE TABLE IF NOT EXISTS Scores ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
@@ -415,7 +485,7 @@ namespace Vocaluxe.Base
private static void _CreateHighscoreDBV1(string filePath)
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + filePath;
@@ -428,7 +498,7 @@ namespace Vocaluxe.Base
return;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "CREATE TABLE IF NOT EXISTS Version ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, Value INTEGER NOT NULL);";
command.ExecuteNonQuery();
@@ -455,7 +525,7 @@ namespace Vocaluxe.Base
///
private static bool _CreateOrConvert(string filePath)
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + filePath;
@@ -468,7 +538,7 @@ namespace Vocaluxe.Base
return false;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "PRAGMA user_version";
SQLiteDataReader reader = command.ExecuteReader();
@@ -504,6 +574,7 @@ namespace Vocaluxe.Base
_CreateHighscoreDBV1(filePath);
_ConvertFrom110(filePath);
_UpdateDatabase(1, connection);
+ _UpdateDatabase(2, connection);
}
else if (version == 0 && scoresTableExists)
{
@@ -511,6 +582,7 @@ namespace Vocaluxe.Base
_CreateHighscoreDBV1(filePath);
_ConvertFrom101(filePath);
_UpdateDatabase(1, connection);
+ _UpdateDatabase(2, connection);
}
else
_CreateHighscoreDB(filePath);
@@ -524,6 +596,7 @@ namespace Vocaluxe.Base
_CreateHighscoreDBV1(filePath);
_ConvertFrom110(filePath);
_UpdateDatabase(1, connection);
+ _UpdateDatabase(2, connection);
}
else if (version == 0 && scoresTableExists)
{
@@ -531,6 +604,7 @@ namespace Vocaluxe.Base
_CreateHighscoreDBV1(filePath);
_ConvertFrom101(filePath);
_UpdateDatabase(1, connection);
+ _UpdateDatabase(2, connection);
}
else
_CreateHighscoreDB(filePath);
@@ -561,7 +635,7 @@ namespace Vocaluxe.Base
/// True if succeeded
private static bool _ConvertFrom110(string filePath)
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + filePath;
@@ -574,7 +648,7 @@ namespace Vocaluxe.Base
return false;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
//The USDX database has no column for LineNr, Medley and Duet so just fill 0 in there
command.CommandText =
@@ -584,8 +658,8 @@ namespace Vocaluxe.Base
command.CommandText = "INSERT INTO Songs SELECT ID, Artist, Title, TimesPlayed from US_Songs";
command.ExecuteNonQuery();
- List scores = new List();
- List songs = new List();
+ var scores = new List();
+ var songs = new List();
command.CommandText = "SELECT id, PlayerName, Date FROM Scores";
SQLiteDataReader reader = command.ExecuteReader();
@@ -594,7 +668,7 @@ namespace Vocaluxe.Base
{
while (reader.Read())
{
- SData data = new SData {Id = reader.GetInt32(0), Str1 = reader.GetString(1)};
+ var data = new SData {Id = reader.GetInt32(0), Str1 = reader.GetString(1)};
Int64 ticks = 0;
try
@@ -618,7 +692,7 @@ namespace Vocaluxe.Base
{
while (reader.Read())
{
- SData data = new SData {Id = reader.GetInt32(0), Str1 = reader.GetString(1), Str2 = reader.GetString(2)};
+ var data = new SData {Id = reader.GetInt32(0), Str1 = reader.GetString(1), Str2 = reader.GetString(2)};
songs.Add(data);
}
}
@@ -674,7 +748,7 @@ namespace Vocaluxe.Base
/// True if succeeded
private static bool _ConvertFrom101(string filePath)
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + filePath;
@@ -687,7 +761,7 @@ namespace Vocaluxe.Base
return false;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "PRAGMA table_info(US_Scores);";
bool dateExists = false;
@@ -718,8 +792,8 @@ namespace Vocaluxe.Base
command.ExecuteNonQuery();
// convert from CP1252 to UTF8
- List scores = new List();
- List songs = new List();
+ var scores = new List();
+ var songs = new List();
Sqlite3.sqlite3 oldDB;
int res = Sqlite3.sqlite3_open(filePath, out oldDB);
@@ -728,7 +802,7 @@ namespace Vocaluxe.Base
CLog.LogError("Error opening Database: " + filePath + " (" + Sqlite3.sqlite3_errmsg(oldDB) + ")");
else
{
- Sqlite3.Vdbe stmt = new Sqlite3.Vdbe();
+ var stmt = new Sqlite3.Vdbe();
res = Sqlite3.sqlite3_prepare_v2(oldDB, "SELECT id, Artist, Title FROM Songs", -1, ref stmt, 0);
if (res != Sqlite3.SQLITE_OK)
@@ -741,7 +815,7 @@ namespace Vocaluxe.Base
while (Sqlite3.sqlite3_step(stmt) == Sqlite3.SQLITE_ROW)
{
- SData data = new SData {Id = Sqlite3.sqlite3_column_int(stmt, 0)};
+ var data = new SData {Id = Sqlite3.sqlite3_column_int(stmt, 0)};
byte[] bytes = Sqlite3.sqlite3_column_rawbytes(stmt, 1);
data.Str1 = bytes != null ? utf8.GetString(Encoding.Convert(cp1252, utf8, bytes)) : "Someone";
@@ -773,7 +847,7 @@ namespace Vocaluxe.Base
while (Sqlite3.sqlite3_step(stmt) == Sqlite3.SQLITE_ROW)
{
- SData data = new SData {Id = Sqlite3.sqlite3_column_int(stmt, 0)};
+ var data = new SData {Id = Sqlite3.sqlite3_column_int(stmt, 0)};
byte[] bytes = Sqlite3.sqlite3_column_rawbytes(stmt, 1);
data.Str1 = bytes != null ? utf8.GetString(Encoding.Convert(cp1252, utf8, bytes)) : "Someone";
@@ -831,14 +905,18 @@ namespace Vocaluxe.Base
private static bool _UpdateDatabase(int currentVersion, SQLiteConnection connection)
{
bool updated = true;
+
if (currentVersion < 2)
updated &= _ConvertV1toV2(connection);
+ if (currentVersion < 3)
+ updated &= _ConvertV2toV3(connection);
+
return updated;
}
private static bool _ConvertV1toV2(SQLiteConnection connection)
{
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "ALTER TABLE Scores ADD ShortSong INTEGER";
command.ExecuteNonQuery();
@@ -853,10 +931,61 @@ namespace Vocaluxe.Base
return true;
}
+ private static bool _ConvertV2toV3(SQLiteConnection connection)
+ {
+ var command = new SQLiteCommand(connection) {CommandText = "ALTER TABLE Songs ADD DateAdded BIGINT"};
+
+ command.ExecuteNonQuery();
+ command.CommandText = "UPDATE Songs SET [DateAdded] = @DateAdded";
+ command.Parameters.Add("@DateAdded", DbType.Int64, 0).Value = DateTime.Now.Ticks;
+ command.ExecuteNonQuery();
+ command.CommandText = "UPDATE Version SET [Value] = @version";
+ command.Parameters.Add("@version", DbType.Int32, 0).Value = 3;
+ command.ExecuteNonQuery();
+
+ //Read NumPlayed from Scores and save to Songs
+ command.CommandText = "SELECT SongID, Date FROM Scores ORDER BY Date ASC";
+
+ SQLiteDataReader reader;
+ try
+ {
+ reader = command.ExecuteReader();
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+
+ long lastDateAdded = -1;
+ int lastID = -1;
+ DateTime dt = new DateTime(1, 1, 1, 0, 0, 5);
+ long sec = dt.Ticks;
+ List ids = new List();
+ while (reader.Read())
+ {
+ int id = reader.GetInt32(0);
+ long dateAdded = reader.GetInt64(1);
+ if (id != lastID || dateAdded > lastDateAdded + sec)
+ {
+ ids.Add(id);
+ lastID = id;
+ lastDateAdded = dateAdded;
+ }
+ }
+ if (reader != null)
+ reader.Dispose();
+
+ foreach (int id in ids)
+ _IncreaseSongCounter(id, command);
+ command.Dispose();
+
+ return true;
+ }
+
private static bool _ImportData(string sourceDBPath)
{
#region open db
- using (SQLiteConnection connSource = new SQLiteConnection())
+ using (var connSource = new SQLiteConnection())
{
connSource.ConnectionString = "Data Source=" + sourceDBPath;
@@ -871,7 +1000,7 @@ namespace Vocaluxe.Base
}
#endregion open db
- using (SQLiteCommand cmdSource = new SQLiteCommand(connSource))
+ using (var cmdSource = new SQLiteCommand(connSource))
{
#region import table scores
cmdSource.CommandText = "SELECT SongID, PlayerName, Score, LineNr, Date, Medley, Duet, ShortSong, Difficulty FROM Scores";
@@ -897,9 +1026,9 @@ namespace Vocaluxe.Base
int shortsong = source.GetInt32(7);
int diff = source.GetInt32(8);
- string artist, title;
+ string artist, title, dateadded;
int numplayed;
- if (_GetDataBaseSongInfos(songid, out artist, out title, out numplayed, sourceDBPath))
+ if (_GetDataBaseSongInfos(songid, out artist, out title, out numplayed, out dateadded, sourceDBPath))
AddScore(player, score, linenr, date, medley, duet, shortsong, diff, artist, title, numplayed, _HighscoreFilePath);
}
#endregion import table scores
@@ -927,7 +1056,7 @@ namespace Vocaluxe.Base
_ConnectionCover.Open();
}
- using (SQLiteCommand command = new SQLiteCommand(_ConnectionCover))
+ using (var command = new SQLiteCommand(_ConnectionCover))
{
command.CommandText = "SELECT id, width, height FROM Cover WHERE [Path] = @path";
command.Parameters.Add("@path", DbType.String, 0).Value = coverPath;
@@ -985,7 +1114,7 @@ namespace Vocaluxe.Base
else if (origin.Height > origin.Width && origin.Height > h)
w = (int)Math.Round((float)h / origin.Height * origin.Width);
- using (Bitmap bmp = new Bitmap(w, h))
+ using (var bmp = new Bitmap(w, h))
{
using (Graphics g = Graphics.FromImage(bmp))
g.DrawImage(origin, new Rectangle(0, 0, w, h));
@@ -1054,7 +1183,7 @@ namespace Vocaluxe.Base
private static bool _InitCoverDB()
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + _CoverFilePath;
@@ -1067,7 +1196,7 @@ namespace Vocaluxe.Base
return false;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "SELECT Value FROM Version";
@@ -1107,7 +1236,7 @@ namespace Vocaluxe.Base
private static void _CreateCoverDB()
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + _CoverFilePath;
@@ -1120,7 +1249,7 @@ namespace Vocaluxe.Base
return;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "CREATE TABLE IF NOT EXISTS Version ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, Value INTEGER NOT NULL);";
command.ExecuteNonQuery();
@@ -1146,7 +1275,7 @@ namespace Vocaluxe.Base
{
bool result = false;
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + _CreditsRessourcesFilePath;
try
@@ -1157,7 +1286,7 @@ namespace Vocaluxe.Base
{
return false;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "SELECT id, width, height FROM Images WHERE [Path] = @path";
command.Parameters.Add("@path", DbType.String, 0).Value = fileName;
@@ -1279,7 +1408,7 @@ namespace Vocaluxe.Base
private static bool _InitCreditsRessourcesDB()
{
- using (SQLiteConnection connection = new SQLiteConnection())
+ using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + _CreditsRessourcesFilePath;
@@ -1292,7 +1421,7 @@ namespace Vocaluxe.Base
return false;
}
- using (SQLiteCommand command = new SQLiteCommand(connection))
+ using (var command = new SQLiteCommand(connection))
{
command.CommandText = "SELECT Value FROM Version";
@@ -1372,14 +1501,14 @@ namespace Vocaluxe.Base
private static byte[] _GetBytes(SQLiteDataReader reader)
{
const int chunkSize = 2 * 1024;
- byte[] buffer = new byte[chunkSize];
+ var buffer = new byte[chunkSize];
long fieldOffset = 0;
- using (MemoryStream stream = new MemoryStream())
+ using (var stream = new MemoryStream())
{
long bytesRead;
while ((bytesRead = reader.GetBytes(0, fieldOffset, buffer, 0, buffer.Length)) > 0)
{
- byte[] actualRead = new byte[bytesRead];
+ var actualRead = new byte[bytesRead];
Buffer.BlockCopy(buffer, 0, actualRead, 0, (int)bytesRead);
stream.Write(actualRead, 0, actualRead.Length);
fieldOffset += bytesRead;
@@ -1390,7 +1519,7 @@ namespace Vocaluxe.Base
private static long _UnixTimeToTicks(int unixTime)
{
- DateTime t70 = new DateTime(1970, 1, 1, 0, 0, 0, 0);
+ var t70 = new DateTime(1970, 1, 1, 0, 0, 0, 0);
t70 = t70.AddSeconds(unixTime);
return t70.Ticks;
}
diff --git a/Vocaluxe/Base/CDraw.cs b/Vocaluxe/Base/CDraw.cs
index 3969658a..e888cad3 100644
--- a/Vocaluxe/Base/CDraw.cs
+++ b/Vocaluxe/Base/CDraw.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -206,7 +204,7 @@ namespace Vocaluxe.Base
if (texture == null)
return;
- RectangleF bounds = new RectangleF(staticBounds.Rect.X, staticBounds.Rect.Y, staticBounds.Rect.W, staticBounds.Rect.H);
+ var bounds = new RectangleF(staticBounds.Rect.X, staticBounds.Rect.Y, staticBounds.Rect.W, staticBounds.Rect.H);
RectangleF rect;
CHelper.SetRect(bounds, out rect, texture.OrigAspect, aspect);
diff --git a/Vocaluxe/Base/CGame.cs b/Vocaluxe/Base/CGame.cs
index 40942314..6eb98838 100644
--- a/Vocaluxe/Base/CGame.cs
+++ b/Vocaluxe/Base/CGame.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -31,7 +29,10 @@ namespace Vocaluxe.Base
private static ISongQueue _SongQueue;
private static int _NumPlayer = CConfig.NumPlayer;
- private static int _OldBeatD;
+ ///
+ /// Last beat that has been evaluated
+ ///
+ private static int _LastEvalBeat;
private static readonly Random _Rand = new Random();
public static Random Rand
@@ -52,13 +53,31 @@ namespace Vocaluxe.Base
return 0f;
}
- public static int CurrentBeat { get; private set; }
+ ///
+ /// Currently played beat in song. This is floor(CurrentBeatF)
+ ///
+ public static int CurrentBeat
+ {
+ get { return (int)Math.Floor(CurrentBeatF); }
+ }
+ ///
+ /// Currently played beat in song. A value of 1.5 indicates that the song is in the middle of 1st and 2nd beat
+ ///
+ public static float CurrentBeatF { get; private set; }
- public static float Beat { get; private set; }
-
- public static float MidBeatD { get; private set; }
-
- public static int ActBeatD { get; private set; }
+ ///
+ /// Middle of the beat that got just recorded (CurrentBeat-MicDelayBeats-0.5)
+ /// A value of 2 indicates that beat 2 was recorded and is ready for evaluation.
+ /// A value of 2.5 indicates that beat 3 is half way there.
+ ///
+ public static float MidRecordedBeat { get; private set; }
+ ///
+ /// Beat that got just recorded and can be evaluated. This is floor(MidRecordedBeat)
+ ///
+ public static int RecordedBeat
+ {
+ get { return (int)Math.Floor(MidRecordedBeat); }
+ }
public static SPlayer[] Players { get; private set; }
@@ -172,9 +191,9 @@ namespace Vocaluxe.Base
Players[i].Points = 0f;
Players[i].PointsLineBonus = 0f;
Players[i].PointsGoldenNotes = 0f;
- Players[i].LineNr = 0;
+ Players[i].VoiceNr = 0;
Players[i].NoteDiff = 0;
- Players[i].SingLine = new List();
+ Players[i].SungLines = new List();
Players[i].CurrentLine = -1;
Players[i].CurrentNote = -1;
Players[i].SongID = -1;
@@ -184,10 +203,9 @@ namespace Vocaluxe.Base
Players[i].DateTicks = DateTime.Now.Ticks;
Players[i].SongFinished = false;
}
- _OldBeatD = -100;
- Beat = -100;
- CurrentBeat = -100;
- ActBeatD = -100;
+ _LastEvalBeat = -100;
+ CurrentBeatF = -100;
+ MidRecordedBeat = -100;
}
public static void UpdatePoints(float time)
@@ -198,150 +216,250 @@ namespace Vocaluxe.Base
return;
float b = GetBeatFromTime(time, song.BPM, song.Gap);
- if (b <= Beat)
+ if (b <= CurrentBeatF)
return;
- Beat = b;
- CurrentBeat = (int)Math.Floor(Beat);
+ CurrentBeatF = b;
- MidBeatD = -0.5f + GetBeatFromTime(time, song.BPM, song.Gap + CConfig.MicDelay / 1000f);
- ActBeatD = (int)Math.Floor(MidBeatD);
+ MidRecordedBeat = -0.5f + GetBeatFromTime(time, song.BPM, song.Gap + CConfig.MicDelay / 1000f);
for (int p = 0; p < _NumPlayer; p++)
CSound.AnalyzeBuffer(p);
- if (_OldBeatD >= ActBeatD)
+ if (_LastEvalBeat >= RecordedBeat)
return;
for (int p = 0; p < _NumPlayer; p++)
{
- for (int beat = _OldBeatD + 1; beat <= ActBeatD; beat++)
+ for (int beat = _LastEvalBeat + 1; beat <= RecordedBeat; beat++)
{
if ((_SongQueue.GetCurrentGameMode() == EGameMode.TR_GAMEMODE_MEDLEY && song.Medley.EndBeat == beat) ||
- (_SongQueue.GetCurrentGameMode() == EGameMode.TR_GAMEMODE_SHORTSONG && song.ShortEnd == beat))
+ (_SongQueue.GetCurrentGameMode() == EGameMode.TR_GAMEMODE_SHORTSONG && song.ShortEnd.EndBeat == beat))
Players[p].SongFinished = true;
- CLine[] lines = song.Notes.GetVoice(Players[p].LineNr).Lines;
- int line = -1;
+ CSongLine[] lines = song.Notes.GetVoice(Players[p].VoiceNr).Lines;
+ int line = song.Notes.GetVoice(Players[p].VoiceNr).FindPreviousLine(beat);
+ if (line < 0 || lines[line].EndBeat < beat)
+ continue;
- for (int j = 0; j < lines.Length; j++)
+ //Check for already sung
+ if (line < Players[p].SungLines.Count - 1)
+ continue; // Already sung whole line
+ if (line == Players[p].SungLines.Count - 1)
{
- if (beat >= lines[j].StartBeat && beat <= lines[j].EndBeat)
- {
- line = j;
- break;
- }
+ //We are in the last line
+ if (beat <= Players[p].SungLines[line].LastNoteBeat)
+ continue; //We already have something that ends with/after that beat
}
- if (line < 0)
- continue;
if (line != Players[p].CurrentLine)
Players[p].CurrentNote = -1;
Players[p].CurrentLine = line;
- while (Players[p].SingLine.Count <= line)
- Players[p].SingLine.Add(new CLine());
+ while (Players[p].SungLines.Count <= line)
+ Players[p].SungLines.Add(new CSungLine());
- CNote[] notes = lines[line].Notes;
+ CSongNote[] notes = lines[line].Notes;
int note = lines[line].FindPreviousNote(beat);
- if (note >= 0 && notes[note].EndBeat < beat)
- note = -1;
+ if (note < 0 || notes[note].EndBeat < beat)
+ continue;
- if (note >= 0)
+ Players[p].CurrentNote = note;
+
+ if (line == lines.Length - 1 && beat == lines[line].LastNoteBeat)
+ Players[p].SongFinished = true;
+
+ if (notes[note].PointsForBeat > 0 && CSound.RecordToneValid(p))
{
- Players[p].CurrentNote = note;
+ int tone = notes[note].Tone;
+ int tonePlayer = CSound.RecordGetTone(p);
- if (line == lines.Length - 1)
+ while (tonePlayer - tone > 6)
+ tonePlayer -= 12;
+
+ while (tonePlayer - tone < -6)
+ tonePlayer += 12;
+
+ Players[p].NoteDiff = Math.Abs(tone - tonePlayer);
+ bool hit = Players[p].NoteDiff <= (2 - (int)CProfiles.GetDifficulty(Players[p].ProfileID));
+
+ if (hit)
{
- if (note == lines[line].NoteCount - 1)
+ // valid
+ //CSound.RecordSetTone(p, Tone);
+ double points = (CSettings.MaxScore - CSettings.LinebonusScore) * (double)notes[note].PointsForBeat /
+ song.Notes.GetVoice(Players[p].VoiceNr).Points;
+ if (notes[note].Type == ENoteType.Golden)
+ Players[p].PointsGoldenNotes += points;
+
+ Players[p].Points += points;
+
+ // update player notes (sung notes)
+ if (Players[p].SungLines[line].NoteCount > 0)
{
- if (notes[note].EndBeat == beat)
- Players[p].SongFinished = true;
- }
- }
+ CSungNote lastNote = Players[p].SungLines[line].LastNote;
- if (notes[note].PointsForBeat > 0 && CSound.RecordToneValid(p))
- {
- int tone = notes[note].Tone;
- int tonePlayer = CSound.RecordGetTone(p);
-
- while (tonePlayer - tone > 6)
- tonePlayer -= 12;
-
- while (tonePlayer - tone < -6)
- tonePlayer += 12;
-
- Players[p].NoteDiff = Math.Abs(tone - tonePlayer);
- bool hit = Players[p].NoteDiff <= (2 - (int)CProfiles.GetDifficulty(Players[p].ProfileID));
- if (hit)
- {
- // valid
- //CSound.RecordSetTone(p, Tone);
- double points = (CSettings.MaxScore - CSettings.LinebonusScore) * (double)notes[note].PointsForBeat /
- song.Notes.GetVoice(Players[p].LineNr).Points;
- if (notes[note].NoteType == ENoteType.Golden)
- Players[p].PointsGoldenNotes += points;
-
- Players[p].Points += points;
-
- // update player notes (sung notes)
- if (Players[p].SingLine[line].NoteCount > 0)
- {
- CNote lastNote = Players[p].SingLine[line].LastNote;
- if (notes[note].StartBeat == beat || lastNote.EndBeat + 1 != beat || lastNote.Tone != tone || !lastNote.Hit)
- Players[p].SingLine[line].AddNote(new CNote(beat, 1, tone, String.Empty, true, notes[note].NoteType));
- else
- Players[p].SingLine[line].IncLastNoteLength();
- }
+ if (notes[note].StartBeat == beat || lastNote.EndBeat + 1 != beat || lastNote.Tone != tone || !lastNote.Hit)
+ Players[p].SungLines[line].AddNote(new CSungNote(beat, 1, tone, notes[note], points));
else
- Players[p].SingLine[line].AddNote(new CNote(beat, 1, tone, String.Empty, true, notes[note].NoteType));
-
- Players[p].SingLine[line].LastNote.IsPerfect(notes[note]);
- Players[p].SingLine[line].IsPerfect(lines[line]);
+ {
+ Players[p].SungLines[line].IncLastNoteLength();
+ Players[p].SungLines[line].LastNote.Points += points;
+ }
}
else
- {
- if (Players[p].SingLine[line].NoteCount > 0)
- {
- CNote lastNote = Players[p].SingLine[line].LastNote;
- if (lastNote.Tone == tonePlayer && lastNote.EndBeat + 1 == beat && !lastNote.Hit)
- Players[p].SingLine[line].IncLastNoteLength();
- else
- Players[p].SingLine[line].AddNote(new CNote(beat, 1, tonePlayer, String.Empty, false, ENoteType.Freestyle));
- }
- else
- Players[p].SingLine[line].AddNote(new CNote(beat, 1, tonePlayer, String.Empty, false, ENoteType.Freestyle));
- }
- }
+ Players[p].SungLines[line].AddNote(new CSungNote(beat, 1, tone, notes[note], points));
- // Line Bonus
- int numLinesWithPoints = song.Notes.GetNumLinesWithPoints(Players[p].LineNr);
- if (note == lines[line].NoteCount - 1 && numLinesWithPoints > 0)
+ Players[p].SungLines[line].LastNote.CheckPerfect();
+ Players[p].SungLines[line].IsPerfect(lines[line]);
+ }
+ else
{
- if (notes[note].EndBeat == beat && lines[line].Points > 0f)
+ if (Players[p].SungLines[line].NoteCount > 0)
{
- double factor = Players[p].SingLine[line].Points / (double)lines[line].Points;
- if (factor < 0.4)
- factor = 0.0;
- else if (factor > 0.9)
- factor = 1.0;
+ CSungNote lastNote = Players[p].SungLines[line].LastNote;
+ if (lastNote.Tone != tonePlayer || lastNote.EndBeat + 1 != beat || lastNote.Hit)
+ Players[p].SungLines[line].AddNote(new CSungNote(beat, 1, tonePlayer));
else
- {
- factor -= 0.4;
- factor *= 2;
- factor *= factor;
- }
-
- double points = CSettings.LinebonusScore * factor * 1f / numLinesWithPoints;
- Players[p].Points += points;
- Players[p].PointsLineBonus += points;
+ Players[p].SungLines[line].IncLastNoteLength();
}
+ else
+ Players[p].SungLines[line].AddNote(new CSungNote(beat, 1, tonePlayer));
}
}
+
+ // Line Bonus
+ int numLinesWithPoints = song.Notes.GetNumLinesWithPoints(Players[p].VoiceNr);
+ if (beat == lines[line].LastNoteBeat && lines[line].Points > 0 && numLinesWithPoints > 0)
+ {
+ double factor = Players[p].SungLines[line].Points / (double)lines[line].Points;
+ if (factor <= 0.4)
+ factor = 0.0;
+ else if (factor >= 0.9)
+ factor = 1.0;
+ else
+ {
+ factor -= 0.4;
+ factor *= 2;
+ factor *= factor;
+ }
+
+ double points = CSettings.LinebonusScore * factor / numLinesWithPoints;
+ Players[p].Points += points;
+ Players[p].PointsLineBonus += points;
+ Players[p].SungLines[line].BonusPoints += points;
+ }
}
}
- _OldBeatD = ActBeatD;
+ _LastEvalBeat = RecordedBeat;
+ }
+
+ public static void ResetToLastLine(int soundStream, int vidStream)
+ {
+ float[] time = GetLastSungLineStart();
+ ResetToTime(time[0], time[1], soundStream, vidStream);
+ }
+
+ public static void ResetToTime(float time, float nextStart, int soundStream, int vidStream)
+ {
+ if (time < 0)
+ time = 0;
+
+ CurrentBeatF = GetBeatFromTime(time, GetSong().BPM, GetSong().Gap);
+
+ for (int p = 0; p < _NumPlayer; p++)
+ {
+ Players[p].Points = 0;
+ Players[p].PointsGoldenNotes = 0;
+ Players[p].PointsLineBonus = 0;
+ int l = 0;
+ int deleteLine = 0;
+ foreach (CSungLine line in Players[p].SungLines)
+ {
+ int n = -1;
+ int deleteNote = 0;
+ Players[p].PointsLineBonus += line.BonusPoints;
+ foreach (CSungNote note in line.Notes)
+ {
+ if (note.StartBeat < nextStart)
+ {
+ if (note.Hit && note.HitNote.Type == ENoteType.Golden)
+ Players[p].PointsGoldenNotes += note.Points;
+ Players[p].Points += note.Points;
+ }
+ else if (deleteNote != -1)
+ deleteNote = n;
+ n++;
+ }
+ while (line.NoteCount > n && n >= 0)
+ {
+ if (line.Notes[n].Hit && line.Notes[n].HitNote.Type == ENoteType.Golden)
+ Players[p].PointsGoldenNotes -= line.Notes[n].Points;
+ Players[p].Points -= line.Notes[n].Points;
+ line.DeleteNote(n);
+ }
+
+ if (line.LastNoteBeat > CurrentBeat && deleteLine == 0)
+ deleteLine = l;
+ l++;
+ }
+ Players[p].SungLines.RemoveRange(deleteLine, Players[p].SungLines.Count - deleteLine);
+ }
+ //CSong song = GetSong();
+ //for (int i = 0; i < GetSong().Notes.Voices[0].Lines.Length; i++)
+ // CLog.LogError((i + 1) + ". " + song.Notes.Voices[0].Lines[i].NoteCount + " - " + Players[0].SungLines[i].NoteCount);
+
+ CSound.SetPosition(soundStream, time);
+ CVideo.Skip(vidStream, time, GetSong().VideoGap);
+ }
+
+ private static float[] GetLastSungLineStart()
+ {
+ return GetNoteTimeBeforeBeat(CurrentBeat);
+ }
+
+ private static float[] GetNoteTimeBeforeBeat(int beat)
+ {
+ CSong song = GetSong();
+ int StartBeat = (int)Math.Floor(beat - GetBeatFromTime(CSettings.PauseResetTime, song.BPM, 0f));
+ int lastStart = 0;
+ int nextStart = 0;
+ foreach (CVoice voice in song.Notes.Voices)
+ {
+ int lastEnd = 0;
+ int voiceStart = 0;
+ int nextStartNote = 0;
+ foreach (CSongLine line in voice.Lines)
+ {
+ foreach (CSongNote note in line.Notes)
+ {
+ if (note.StartBeat > StartBeat)
+ {
+ nextStartNote = note.StartBeat;
+ break;
+ }
+ else
+ {
+ voiceStart = note.StartBeat;
+ lastEnd = note.EndBeat;
+ }
+ }
+ if (nextStartNote > 0)
+ break;
+ }
+ if (nextStartNote - beat > CSettings.PauseResetTime)
+ lastStart = beat;
+ else if (nextStartNote - lastEnd > CSettings.PauseResetTime)
+ lastStart = nextStartNote - (int)Math.Floor(GetBeatFromTime(CSettings.PauseResetTime, song.BPM, 0f));
+ if (voiceStart > lastStart)
+ {
+ lastStart = voiceStart;
+ nextStart = nextStartNote;
+ }
+ }
+
+ return new float[] {GetTimeFromBeats(lastStart, GetSong().BPM), nextStart};
}
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs
index f531a3c7..5a7fdd54 100644
--- a/Vocaluxe/Base/CGraphics.cs
+++ b/Vocaluxe/Base/CGraphics.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Base/CLanguage.cs b/Vocaluxe/Base/CLanguage.cs
index ede9e021..2cf54d9d 100644
--- a/Vocaluxe/Base/CLanguage.cs
+++ b/Vocaluxe/Base/CLanguage.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -66,7 +64,7 @@ namespace Vocaluxe.Base
public static IEnumerable GetLanguageNames()
{
- string[] languages = new string[_Languages.Count];
+ var languages = new string[_Languages.Count];
for (int i = 0; i < _Languages.Count; i++)
languages[i] = _Languages[i].Name;
@@ -81,7 +79,7 @@ namespace Vocaluxe.Base
_Settings.Encoding = Encoding.UTF8;
_Settings.ConformanceLevel = ConformanceLevel.Document;
- List files = new List();
+ var files = new List();
files.AddRange(CHelper.ListFiles(CSettings.FolderLanguages, "*.xml", true, true));
foreach (string file in files)
@@ -166,7 +164,7 @@ namespace Vocaluxe.Base
public static bool LoadPartyLanguageFiles(int partyModeID, string path)
{
- List files = new List();
+ var files = new List();
files.AddRange(CHelper.ListFiles(path, "*.xml", true, true));
return files.All(file => _LoadPartyLanguageFile(partyModeID, file));
@@ -208,7 +206,7 @@ namespace Vocaluxe.Base
if (nr == -1)
return true;
- SPartyLanguage lang = new SPartyLanguage {PartyModeID = partyModeID};
+ var lang = new SPartyLanguage {PartyModeID = partyModeID};
if (!_LoadLanguageEntries(xmlReader, out lang.Texts))
return false;
@@ -221,7 +219,7 @@ namespace Vocaluxe.Base
private static void _LoadLanguageFile(string fileName)
{
- SLanguage lang = new SLanguage {LanguageFilePath = Path.Combine(CSettings.FolderLanguages, fileName)};
+ var lang = new SLanguage {LanguageFilePath = Path.Combine(CSettings.FolderLanguages, fileName)};
CXMLReader xmlReader = CXMLReader.OpenFile(lang.LanguageFilePath);
if (xmlReader == null)
diff --git a/Vocaluxe/Base/CLog.cs b/Vocaluxe/Base/CLog.cs
index df186697..6f87a74c 100644
--- a/Vocaluxe/Base/CLog.cs
+++ b/Vocaluxe/Base/CLog.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -39,7 +37,7 @@ namespace Vocaluxe.Base
private void _Open()
{
- _LogFile = new StreamWriter(Path.Combine(Environment.CurrentDirectory, _LogFileName), false, Encoding.UTF8);
+ _LogFile = new StreamWriter(Path.Combine(CSettings.DataPath, _LogFileName), false, Encoding.UTF8);
_LogFile.WriteLine(_LogName + " " + CSettings.GetFullVersionText() + " " + DateTime.Now);
_LogFile.WriteLine("----------------------------------------");
@@ -119,8 +117,7 @@ namespace Vocaluxe.Base
MessageBox.Show(errorText, CSettings.ProgramName, MessageBoxButtons.OK, MessageBoxIcon.Error);
if (e != null)
errorText += ": " + e;
- _ErrorLog.Add(_NumErrors + ") " + errorText + "\r\n");
- _ErrorLog.Add(String.Empty);
+ _ErrorLog.Add(_NumErrors + ") " + errorText);
if (exit)
Environment.Exit(Environment.ExitCode);
}
diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs
index 61a997ea..6ff4068a 100644
--- a/Vocaluxe/Base/CMain.cs
+++ b/Vocaluxe/Base/CMain.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -62,6 +60,11 @@ namespace Vocaluxe.Base
class CBconfig : IConfig
{
+ public EOffOn GetSaveModifiedSongs()
+ {
+ return CConfig.SaveModifiedSongs;
+ }
+
public void SetBackgroundMusicVolume(int newVolume)
{
CConfig.BackgroundMusicVolume = newVolume;
@@ -112,7 +115,7 @@ namespace Vocaluxe.Base
return CConfig.CoverSize;
}
- public IEnumerable GetSongFolder()
+ public IEnumerable GetSongFolders()
{
return CConfig.SongFolder;
}
@@ -219,6 +222,11 @@ namespace Vocaluxe.Base
{
return CSettings.FolderProfiles;
}
+
+ public string GetDataPath()
+ {
+ return CSettings.DataPath;
+ }
}
class CBtheme : ITheme
@@ -499,14 +507,14 @@ namespace Vocaluxe.Base
return CGame.GetPoints();
}
- public float GetMidBeatD()
+ public float GetMidRecordedBeat()
{
- return CGame.MidBeatD;
+ return CGame.MidRecordedBeat;
}
- public int GetCurrentBeatD()
+ public int GetRecordedBeat()
{
- return CGame.ActBeatD;
+ return CGame.RecordedBeat;
}
public int GetRandom(int max)
@@ -524,6 +532,11 @@ namespace Vocaluxe.Base
return CGame.GetTimeFromBeats(beat, bpm);
}
+ public float GetBeatFromTime(float time, float bpm, float gap)
+ {
+ return CGame.GetBeatFromTime(time, bpm, gap);
+ }
+
public void AddSong(int songID, EGameMode gameMode)
{
CGame.AddSong(songID, gameMode);
@@ -782,6 +795,11 @@ namespace Vocaluxe.Base
{
return CDataBase.GetCover(fileName, ref texture, coverSize);
}
+
+ public bool GetDataBaseSongInfos(string artist, string title, out int numPlayed, out string dateAdded, out int highscoreID)
+ {
+ return CDataBase.GetDataBaseSongInfos(artist, title, out numPlayed, out dateAdded, out highscoreID);
+ }
}
class CBcontrollers : IControllers
diff --git a/Vocaluxe/Base/CObservable.cs b/Vocaluxe/Base/CObservable.cs
index 239e15dc..00cd5122 100644
--- a/Vocaluxe/Base/CObservable.cs
+++ b/Vocaluxe/Base/CObservable.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Base/CParty.cs b/Vocaluxe/Base/CParty.cs
index 32b283c8..5735786f 100644
--- a/Vocaluxe/Base/CParty.cs
+++ b/Vocaluxe/Base/CParty.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -304,7 +302,7 @@ namespace Vocaluxe.Base
pm.PartyMode.Initialize();
pm.PartyMode.SetFolder(Path.Combine(Directory.GetCurrentDirectory(), Path.Combine(CSettings.FolderPartyModes, pm.Folder)));
- if (!CTheme.AddTheme(Path.Combine(pm.PartyMode.GetFolder(), "Theme.xml"),pm.PartyModeID))
+ if (!CTheme.AddTheme(Path.Combine(pm.PartyMode.GetFolder(), "Theme.xml"), pm.PartyModeID))
return pm;
int themeIndex = CTheme.GetThemeIndex(pm.PartyModeID);
diff --git a/Vocaluxe/Base/CPlaylists.cs b/Vocaluxe/Base/CPlaylists.cs
index 1dc0493b..2c9e2d6a 100644
--- a/Vocaluxe/Base/CPlaylists.cs
+++ b/Vocaluxe/Base/CPlaylists.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -52,15 +50,15 @@ namespace Vocaluxe.Base
public static void Init()
{
LoadPlaylists();
- ConvertUSDXPlaylists();
+ _ConvertUSDXPlaylists();
_SortPlaylistsByName();
}
- public static void ConvertUSDXPlaylists()
+ private static void _ConvertUSDXPlaylists()
{
- List files = new List();
- files.AddRange(CHelper.ListFiles(CSettings.FolderPlaylists, "*.upl", true, true));
+ var files = new List();
+ files.AddRange(CHelper.ListFiles(Path.Combine(CSettings.DataPath, CSettings.FolderPlaylists), "*.upl", true, true));
foreach (string file in files)
{
@@ -73,12 +71,13 @@ namespace Vocaluxe.Base
public static void LoadPlaylists()
{
_Playlists = new List();
- List files = new List();
- files.AddRange(CHelper.ListFiles(CSettings.FolderPlaylists, "*.xml", true, true));
+
+ var files = new List();
+ files.AddRange(CHelper.ListFiles(Path.Combine(CSettings.DataPath, CSettings.FolderPlaylists), "*.xml", true, true));
foreach (string file in files)
{
- CPlaylistFile playlist = new CPlaylistFile(file);
+ var playlist = new CPlaylistFile(file);
_Playlists.Add(playlist);
}
}
@@ -126,7 +125,7 @@ namespace Vocaluxe.Base
public static int NewPlaylist()
{
- CPlaylistFile pl = new CPlaylistFile {PlaylistName = "New Playlist"};
+ var pl = new CPlaylistFile {PlaylistName = "New Playlist"};
_Playlists.Add(pl);
return _Playlists.Count - 1;
}
@@ -219,7 +218,7 @@ namespace Vocaluxe.Base
private static CPlaylistFile _ConvertUSDXPlaylist(string file)
{
- CPlaylistFile pl = new CPlaylistFile();
+ var pl = new CPlaylistFile();
ReadOnlyCollection allSongs = CSongs.AllSongs;
if (!File.Exists(file))
diff --git a/Vocaluxe/Base/CProfiles.cs b/Vocaluxe/Base/CProfiles.cs
index 005eefe3..d8c61652 100644
--- a/Vocaluxe/Base/CProfiles.cs
+++ b/Vocaluxe/Base/CProfiles.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -179,7 +177,7 @@ namespace Vocaluxe.Base
if (_ProfileChangedCallbacks.Count == 0)
return;
- EProfileChangedFlags flags = EProfileChangedFlags.None;
+ var flags = EProfileChangedFlags.None;
if (_AvatarsChanged)
flags = EProfileChangedFlags.Avatar;
@@ -214,7 +212,7 @@ namespace Vocaluxe.Base
public static void LoadProfiles()
{
- SChange change = new SChange {Action = EAction.LoadProfiles};
+ var change = new SChange {Action = EAction.LoadProfiles};
lock (_QueueMutex)
{
@@ -224,7 +222,7 @@ namespace Vocaluxe.Base
public static void LoadAvatars()
{
- SChange change = new SChange {Action = EAction.LoadAvatars};
+ var change = new SChange {Action = EAction.LoadAvatars};
lock (_QueueMutex)
{
@@ -237,7 +235,7 @@ namespace Vocaluxe.Base
if (newProfile == null)
return;
- SChange change = new SChange {Action = EAction.AddProfile, Profile = newProfile};
+ var change = new SChange {Action = EAction.AddProfile, Profile = newProfile};
lock (_QueueMutex)
{
@@ -250,7 +248,7 @@ namespace Vocaluxe.Base
if (editProfile == null)
return;
- SChange change = new SChange {Action = EAction.EditProfile, Profile = editProfile};
+ var change = new SChange {Action = EAction.EditProfile, Profile = editProfile};
lock (_QueueMutex)
{
@@ -263,7 +261,7 @@ namespace Vocaluxe.Base
if (!IsProfileIDValid(profileID))
return;
- SChange change = new SChange {Action = EAction.DeleteProfile, ProfileID = profileID};
+ var change = new SChange {Action = EAction.DeleteProfile, ProfileID = profileID};
lock (_QueueMutex)
{
@@ -276,7 +274,7 @@ namespace Vocaluxe.Base
if (newAvatar == null)
return;
- SChange change = new SChange {Action = EAction.AddAvatar, Avatar = newAvatar};
+ var change = new SChange {Action = EAction.AddAvatar, Avatar = newAvatar};
lock (_QueueMutex)
{
@@ -289,7 +287,7 @@ namespace Vocaluxe.Base
if (editAvatar == null)
return;
- SChange change = new SChange {Action = EAction.EditAvatar, Avatar = editAvatar};
+ var change = new SChange {Action = EAction.EditAvatar, Avatar = editAvatar};
lock (_QueueMutex)
{
@@ -302,7 +300,7 @@ namespace Vocaluxe.Base
if (_Profiles.Count == 0)
return null;
- List list = new List(_Profiles.Values);
+ var list = new List(_Profiles.Values);
list.Sort(_CompareByPlayerName);
return list.ToArray();
}
@@ -312,7 +310,7 @@ namespace Vocaluxe.Base
if (_Avatars.Count == 0)
return null;
- CAvatar[] result = new CAvatar[_Avatars.Count];
+ var result = new CAvatar[_Avatars.Count];
_Avatars.Values.CopyTo(result, 0);
return result;
@@ -320,9 +318,9 @@ namespace Vocaluxe.Base
public static int NewProfile(string fileName = "")
{
- CProfile profile = new CProfile
+ var profile = new CProfile
{
- FileName = fileName != "" ? Path.Combine(CSettings.FolderProfiles, fileName) : String.Empty
+ FileName = fileName != "" ? Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, fileName) : String.Empty
};
if (File.Exists(profile.FileName))
@@ -336,7 +334,7 @@ namespace Vocaluxe.Base
public static int NewAvatar(string fileName)
{
- CAvatar avatar = new CAvatar(-1);
+ var avatar = new CAvatar(-1);
if (!avatar.LoadFromFile(fileName))
return -1;
@@ -511,10 +509,10 @@ namespace Vocaluxe.Base
{
_LoadAvatars();
- List knownFiles = new List();
+ var knownFiles = new List();
if (_Profiles.Count > 0)
{
- int[] ids = new int[_Profiles.Keys.Count];
+ var ids = new int[_Profiles.Keys.Count];
_Profiles.Keys.CopyTo(ids, 0);
foreach (int id in ids)
{
@@ -528,17 +526,20 @@ namespace Vocaluxe.Base
}
}
- List files = new List();
- files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.xml", true, true));
+
+ var files = new List();
+ foreach (string path in CSettings.FoldersProfiles)
+ files.AddRange(CHelper.ListFiles(path, "*.xml", true, true));
foreach (string file in files)
{
if (knownFiles.Contains(Path.GetFileName(file)))
continue;
- CProfile profile = new CProfile
+ var profile = new CProfile
{
- FileName = Path.Combine(CSettings.FolderProfiles, file)
+ FileName = Path.GetFileName(file),
+ FilePath = Path.GetDirectoryName(file)
};
if (profile.LoadProfile())
@@ -553,10 +554,10 @@ namespace Vocaluxe.Base
private static void _LoadAvatars()
{
- List knownFiles = new List();
+ var knownFiles = new List();
if (_Avatars.Count > 0)
{
- int[] ids = new int[_Avatars.Keys.Count];
+ var ids = new int[_Avatars.Keys.Count];
_Avatars.Keys.CopyTo(ids, 0);
foreach (int id in ids)
{
@@ -567,18 +568,21 @@ namespace Vocaluxe.Base
}
}
- List files = new List();
- files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.png", true, true));
- files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.jpg", true, true));
- files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.jpeg", true, true));
- files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.bmp", true, true));
+ var files = new List();
+ foreach (string path in CSettings.FoldersProfiles)
+ {
+ files.AddRange(CHelper.ListFiles(path, "*.png", true, true));
+ files.AddRange(CHelper.ListFiles(path, "*.jpg", true, true));
+ files.AddRange(CHelper.ListFiles(path, "*.jpeg", true, true));
+ files.AddRange(CHelper.ListFiles(path, "*.bmp", true, true));
+ }
foreach (string file in files)
{
if (knownFiles.Contains(Path.GetFileName(file)))
continue;
- CAvatar avatar = new CAvatar(-1);
+ var avatar = new CAvatar(-1);
if (avatar.LoadFromFile(file))
{
avatar.ID = _AvatarIDs.Dequeue();
@@ -610,7 +614,7 @@ namespace Vocaluxe.Base
CConfig.SaveConfig();
}
}
- File.Delete(_Profiles[profileID].FileName);
+ File.Delete(Path.Combine(_Profiles[profileID].FilePath, _Profiles[profileID].FileName));
_RemoveProfile(profileID);
//Check if profile is selected in game
diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs
index eeaffaef..9fe7b69f 100644
--- a/Vocaluxe/Base/CSettings.cs
+++ b/Vocaluxe/Base/CSettings.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -55,7 +53,7 @@ namespace Vocaluxe.Base
public const ERevision VersionRevision = ERevision.Beta;
- public const int DatabaseHighscoreVersion = 2;
+ public const int DatabaseHighscoreVersion = 3;
public const int DatabaseCoverVersion = 1;
public const int DatabaseCreditsRessourcesVersion = 1;
@@ -68,6 +66,12 @@ namespace Vocaluxe.Base
public static bool IsFullScreen;
public const int VertexBufferElements = 10000;
+#if INSTALLER
+ public static string DataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Vocaluxe");
+#else
+ public static string DataPath = Environment.CurrentDirectory;
+#endif
+
public const string Icon = "Vocaluxe.ico";
public const string Logo = "Logo.png";
public const string FallbackLanguage = "English";
@@ -90,7 +94,14 @@ namespace Vocaluxe.Base
public const string FolderThemes = "Themes";
public const string FolderThemeFonts = "Fonts";
public const string FolderScreens = "Screens";
- public static string FolderProfiles = "Profiles";
+ public const string FolderProfiles = "Profiles";
+ public static List FoldersProfiles = new List
+ {
+#if INSTALLER
+ Path.Combine(Environment.CurrentDirectory, FolderProfiles),
+#endif
+ Path.Combine(DataPath, FolderProfiles)
+ };
public const string FolderSongs = "Songs";
public const string FolderSounds = "Sounds";
public const string FolderLanguages = "Languages";
@@ -129,6 +140,7 @@ namespace Vocaluxe.Base
public const bool TabNavigation = false;
public const float BackgroundMusicFadeTime = 0.5f;
+ public const float PauseResetTime = 1f;
public static readonly List MusicFileTypes = new List
{
@@ -209,7 +221,16 @@ namespace Vocaluxe.Base
public static void CreateFolders()
{
- List folders = new List {FolderCover, FolderFonts, FolderProfiles, FolderSongs, FolderScreenshots, FolderBackgroundMusic, FolderSounds, FolderPlaylists};
+ var folders = new List
+ {
+ FolderCover,
+ FolderFonts,
+ Path.Combine(DataPath, FolderScreenshots),
+ FolderBackgroundMusic,
+ FolderSounds,
+ Path.Combine(DataPath, FolderPlaylists)
+ };
+ folders.AddRange(FoldersProfiles);
foreach (string folder in folders)
{
diff --git a/Vocaluxe/Base/CSongCategorizer.cs b/Vocaluxe/Base/CSongCategorizer.cs
index 70733d88..74784cc2 100644
--- a/Vocaluxe/Base/CSongCategorizer.cs
+++ b/Vocaluxe/Base/CSongCategorizer.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Base/CSongFilter.cs b/Vocaluxe/Base/CSongFilter.cs
index 43777269..4c4f014e 100644
--- a/Vocaluxe/Base/CSongFilter.cs
+++ b/Vocaluxe/Base/CSongFilter.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Base/CSongSorter.cs b/Vocaluxe/Base/CSongSorter.cs
index 1c427fcf..eefb796f 100644
--- a/Vocaluxe/Base/CSongSorter.cs
+++ b/Vocaluxe/Base/CSongSorter.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -114,7 +112,7 @@ namespace Vocaluxe.Base
private List _CreateSortList(string fieldName)
{
- List sortList = new List();
+ var sortList = new List();
if (fieldName == "")
CSongs.Filter.FilteredSongs.ForEach(song => sortList.Add(new CSongPointer(song.ID, "")));
else
@@ -135,7 +133,7 @@ namespace Vocaluxe.Base
sortList.Add(new CSongPointer(song.ID, (String)value));
else
{
- List values = (List)value;
+ var values = (List)value;
if (values.Count == 0)
sortList.Add(new CSongPointer(song.ID, ""));
else
@@ -159,10 +157,10 @@ namespace Vocaluxe.Base
switch (_SongSorting)
{
case ESongSorting.TR_CONFIG_EDITION:
- fieldName = "Edition";
+ fieldName = "Editions";
break;
case ESongSorting.TR_CONFIG_GENRE:
- fieldName = "Genre";
+ fieldName = "Genres";
break;
case ESongSorting.TR_CONFIG_FOLDER:
fieldName = "FolderName";
@@ -179,7 +177,10 @@ namespace Vocaluxe.Base
fieldName = "Year";
break;
case ESongSorting.TR_CONFIG_LANGUAGE:
- fieldName = "Language";
+ fieldName = "Languages";
+ break;
+ case ESongSorting.TR_CONFIG_DATEADDED:
+ fieldName = "DateAdded";
break;
default:
fieldName = "";
diff --git a/Vocaluxe/Base/CSongs.cs b/Vocaluxe/Base/CSongs.cs
index 05f7ac31..c45fc8a7 100644
--- a/Vocaluxe/Base/CSongs.cs
+++ b/Vocaluxe/Base/CSongs.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -251,7 +249,7 @@ namespace Vocaluxe.Base
{
get
{
- List songs = new List();
+ var songs = new List();
if (_IsCatIndexValid(_CatIndex))
{
// ReSharper disable LoopCanBeConvertedToQuery
@@ -298,7 +296,7 @@ namespace Vocaluxe.Base
_Songs.Clear();
CLog.StartBenchmark(2, "List Songs");
- List files = new List();
+ var files = new List();
foreach (string p in CConfig.SongFolder)
{
string path = p;
@@ -314,7 +312,7 @@ namespace Vocaluxe.Base
if (song == null)
continue;
song.ID = _Songs.Count;
- if (song.ReadNotes())
+ if (song.LoadNotes())
_Songs.Add(song);
}
CLog.StopBenchmark(2, "Read TXTs");
diff --git a/Vocaluxe/Base/CSound.cs b/Vocaluxe/Base/CSound.cs
index a4dc3e5b..88caed71 100644
--- a/Vocaluxe/Base/CSound.cs
+++ b/Vocaluxe/Base/CSound.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -450,11 +448,11 @@ namespace Vocaluxe.Base
int len = _AnalysisBuffer.Length * 2;
if (_Stream.Length >= len)
{
- byte[] buf = new byte[len];
+ var buf = new byte[len];
_Stream.Position -= len;
_Stream.Read(buf, 0, len);
- byte[] b = new byte[2];
+ var b = new byte[2];
for (int i = 0; i < _AnalysisBuffer.Length; i++)
{
b[0] = buf[i * 2];
@@ -496,7 +494,7 @@ namespace Vocaluxe.Base
double maxWeight = -1.0;
double minWeight = 1.0;
int maxTone = -1;
- float[] weigth = new float[_NumHalfTones];
+ var weigth = new float[_NumHalfTones];
// analyze halftones
// Note: at the lowest tone (~65Hz) and a buffer-size of 4096
@@ -535,7 +533,7 @@ namespace Vocaluxe.Base
private double _AnalyzeAutocorrelationFreq(double freq)
{
int sampleIndex = 0; // index of sample to analyze
- int samplesPerPeriod = (int)Math.Round(44100.0 / freq); // samples in one period
+ var samplesPerPeriod = (int)Math.Round(44100.0 / freq); // samples in one period
int correlatingSampleIndex = sampleIndex + samplesPerPeriod; // index of sample one period ahead
double accumDist = 0.0; // accumulated distances
diff --git a/Vocaluxe/Base/CTheme.cs b/Vocaluxe/Base/CTheme.cs
index 7f08c8e9..ce48eda2 100644
--- a/Vocaluxe/Base/CTheme.cs
+++ b/Vocaluxe/Base/CTheme.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -115,7 +113,7 @@ namespace Vocaluxe.Base
{
var names = new List();
// ReSharper disable LoopCanBeConvertedToQuery
- foreach (var th in _Themes)
+ foreach (STheme th in _Themes)
// ReSharper restore LoopCanBeConvertedToQuery
{
if (th.PartyModeID == -1)
@@ -132,7 +130,7 @@ namespace Vocaluxe.Base
{
var names = new List();
// ReSharper disable LoopCanBeConvertedToQuery
- foreach (var sk in _Skins)
+ foreach (SSkin sk in _Skins)
// ReSharper restore LoopCanBeConvertedToQuery
{
if (sk.PartyModeID == -1)
@@ -175,7 +173,7 @@ namespace Vocaluxe.Base
return false;
// load skins/textures
- foreach (var valuePair in _Skins[skinIndex].SkinList)
+ foreach (KeyValuePair valuePair in _Skins[skinIndex].SkinList)
{
CSkinElement sk = valuePair.Value;
try
@@ -192,7 +190,7 @@ namespace Vocaluxe.Base
// load videos
- foreach (var valuePair in _Skins[skinIndex].VideoList)
+ foreach (KeyValuePair valuePair in _Skins[skinIndex].VideoList)
{
try
{
@@ -214,10 +212,10 @@ namespace Vocaluxe.Base
{
for (int i = 0; i < _Skins.Count; i++)
{
- foreach (var sk in _Skins[i].SkinList.Values)
+ foreach (CSkinElement sk in _Skins[i].SkinList.Values)
CDraw.RemoveTexture(ref sk.Texture);
- foreach (var vsk in _Skins[i].VideoList.Values)
+ foreach (CVideoSkinElement vsk in _Skins[i].VideoList.Values)
{
CVideo.Close(vsk.VideoIndex);
CDraw.RemoveTexture(ref vsk.Texture);
@@ -358,7 +356,7 @@ namespace Vocaluxe.Base
#region Skins
writer.WriteStartElement("Skins");
- foreach (var element in _Skins[skinIndex].SkinList)
+ foreach (KeyValuePair element in _Skins[skinIndex].SkinList)
writer.WriteElementString(element.Key, element.Value.Value);
writer.WriteEndElement();
#endregion Skins
@@ -366,7 +364,7 @@ namespace Vocaluxe.Base
#region Videos
writer.WriteStartElement("Videos");
- foreach (var element in _Skins[skinIndex].VideoList)
+ foreach (KeyValuePair element in _Skins[skinIndex].VideoList)
writer.WriteElementString(element.Key, element.Value.Value);
writer.WriteEndElement();
#endregion Videos
@@ -730,7 +728,7 @@ namespace Vocaluxe.Base
}
writer.WriteStartElement("ColorSchemes");
- foreach (var scheme in _Skins[skinIndex].ThemeColors.ColorSchemes)
+ foreach (SColorScheme scheme in _Skins[skinIndex].ThemeColors.ColorSchemes)
{
writer.WriteStartElement(scheme.Name);
@@ -780,7 +778,7 @@ namespace Vocaluxe.Base
public static bool GetColor(string colorName, int skinIndex, out SColorF color)
{
- foreach (var scheme in _Skins[skinIndex].ThemeColors.ColorSchemes)
+ foreach (SColorScheme scheme in _Skins[skinIndex].ThemeColors.ColorSchemes)
{
if (scheme.Name == colorName)
{
diff --git a/Vocaluxe/Base/CUtility.cs b/Vocaluxe/Base/CUtility.cs
index 27ad1db3..ee766dc5 100644
--- a/Vocaluxe/Base/CUtility.cs
+++ b/Vocaluxe/Base/CUtility.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -31,12 +29,16 @@ namespace Vocaluxe.Base
private static float _Fps;
private static readonly double _NanosecPerTick = (1000.0 * 1000.0 * 1000.0) / Stopwatch.Frequency;
+ // ReSharper disable MemberCanBePrivate.Global
public static void Reset()
+ // ReSharper restore MemberCanBePrivate.Global
{
_Stopwatch.Reset();
}
+ // ReSharper disable MemberCanBePrivate.Global
public static void Start()
+ // ReSharper restore MemberCanBePrivate.Global
{
_Stopwatch.Start();
}
@@ -117,7 +119,7 @@ namespace Vocaluxe.Base
if (!_Timer.IsRunning || (_Timer.ElapsedMilliseconds > 75) || !keyRepeat)
{
- SKeyEvent pool = new SKeyEvent(ESender.Keyboard, alt, shift, ctrl, pressed && (unicode != Char.MinValue), unicode, key);
+ var pool = new SKeyEvent(ESender.Keyboard, alt, shift, ctrl, pressed && (unicode != Char.MinValue), unicode, key);
lock (_CopyLock)
{
@@ -226,7 +228,7 @@ namespace Vocaluxe.Base
x = (int)(x * (float)CSettings.RenderW / CDraw.GetScreenWidth());
y = (int)(y * (float)CSettings.RenderH / CDraw.GetScreenHeight());
- SMouseEvent pool = new SMouseEvent(ESender.Mouse, _Mod, x, y, lb, ld, rb, -wheel / 120, lbh, rbh, mb, mbh);
+ var pool = new SMouseEvent(ESender.Mouse, _Mod, x, y, lb, ld, rb, -wheel / 120, lbh, rbh, mb, mbh);
lock (_CopyLock)
{
diff --git a/Vocaluxe/Base/CVideo.cs b/Vocaluxe/Base/CVideo.cs
index 031bc6b6..5358b7e6 100644
--- a/Vocaluxe/Base/CVideo.cs
+++ b/Vocaluxe/Base/CVideo.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Diagnostics;
@@ -168,7 +166,7 @@ namespace Vocaluxe.Base
}
if (_VideoTexture == null)
return;
- RectangleF bounds = new RectangleF(0f, 0f, CSettings.RenderW, CSettings.RenderH);
+ var bounds = new RectangleF(0f, 0f, CSettings.RenderW, CSettings.RenderH);
RectangleF rect;
CHelper.SetRect(bounds, out rect, _VideoTexture.OrigAspect, EAspect.Crop);
diff --git a/Vocaluxe/Base/CWebcam.cs b/Vocaluxe/Base/CWebcam.cs
index a42b6459..dac871aa 100644
--- a/Vocaluxe/Base/CWebcam.cs
+++ b/Vocaluxe/Base/CWebcam.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Drawing;
diff --git a/Vocaluxe/Base/Fonts/CFont.cs b/Vocaluxe/Base/Fonts/CFont.cs
index e01c3b2b..e1408b72 100644
--- a/Vocaluxe/Base/Fonts/CFont.cs
+++ b/Vocaluxe/Base/Fonts/CFont.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Base/Fonts/CFonts.cs b/Vocaluxe/Base/Fonts/CFonts.cs
index 1de2f929..8b561072 100644
--- a/Vocaluxe/Base/Fonts/CFonts.cs
+++ b/Vocaluxe/Base/Fonts/CFonts.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.Generic;
@@ -258,8 +256,8 @@ namespace Vocaluxe.Base.Fonts
Height = height;
SetFont(text.Font);
Style = text.Style;
- RectangleF result = new RectangleF(text.X, text.Y, GetTextWidth(CLanguage.Translate(text.Text, text.TranslationID)),
- GetTextHeight(CLanguage.Translate(text.Text, text.TranslationID)));
+ var result = new RectangleF(text.X, text.Y, GetTextWidth(CLanguage.Translate(text.Text, text.TranslationID)),
+ GetTextHeight(CLanguage.Translate(text.Text, text.TranslationID)));
//restore old values
Height = oldHeight;
_CurrentFont = oldFont;
@@ -286,7 +284,7 @@ namespace Vocaluxe.Base.Fonts
int i = 1;
while (xmlReader.GetValue("//root/Fonts/Font" + i + "/Folder", out value, value))
{
- SFont sf = new SFont {Folder = value, IsThemeFont = themeName != "", ThemeName = themeName, PartyModeID = partyModeId};
+ var sf = new SFont {Folder = value, IsThemeFont = themeName != "", ThemeName = themeName, PartyModeID = partyModeId};
bool ok = true;
@@ -297,7 +295,7 @@ namespace Vocaluxe.Base.Fonts
ok &= xmlReader.GetValue("//root/Fonts/Font" + i + "/FileNormal", out value, value);
sf.FileNormal = value;
value = Path.Combine(fontFolder, Path.Combine(sf.Folder, value));
- CFont f = new CFont(value);
+ var f = new CFont(value);
sf.Normal = f;
ok &= xmlReader.GetValue("//root/Fonts/Font" + i + "/FileItalic", out value, value);
diff --git a/Vocaluxe/Base/Fonts/CGlyph.cs b/Vocaluxe/Base/Fonts/CGlyph.cs
index ba136617..cab5d9b6 100644
--- a/Vocaluxe/Base/Fonts/CGlyph.cs
+++ b/Vocaluxe/Base/Fonts/CGlyph.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -80,7 +78,7 @@ namespace Vocaluxe.Base.Fonts
bmpSize = new Size(1, 1);
}
}
- using (Bitmap bmp = new Bitmap(bmpSize.Width, bmpSize.Height, PixelFormat.Format32bppArgb))
+ using (var bmp = new Bitmap(bmpSize.Width, bmpSize.Height, PixelFormat.Format32bppArgb))
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.Transparent);
@@ -96,15 +94,15 @@ namespace Vocaluxe.Base.Fonts
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
- PointF point = new PointF(outlineSize / 2, outlineSize / 4);
+ var point = new PointF(outlineSize / 2, outlineSize / 4);
- using (GraphicsPath path = new GraphicsPath())
+ using (var path = new GraphicsPath())
{
//Have to use size in em not pixels!
float emSize = fo.Size * fo.FontFamily.GetCellAscent(fo.Style) / fo.FontFamily.GetEmHeight(fo.Style);
path.AddString(chrString, fo.FontFamily, (int)fo.Style, emSize, point, new StringFormat());
- using (Pen pen = new Pen(CFonts.OutlineColor.AsColor(), outlineSize))
+ using (var pen = new Pen(CFonts.OutlineColor.AsColor(), outlineSize))
{
pen.LineJoin = LineJoin.Round;
g.DrawPath(pen, path);
@@ -123,6 +121,7 @@ namespace Vocaluxe.Base.Fonts
_DrawBounding.Height = _Texture.Height;*/
#pragma warning disable 162
// ReSharper disable HeuristicUnreachableCode
+ // ReSharper disable ConditionIsAlwaysTrueOrFalse
if (false && Char.IsLetterOrDigit(chr))
{
if (outline > 0)
@@ -130,6 +129,7 @@ namespace Vocaluxe.Base.Fonts
else
bmpCropped.Save("font_" + chr + CFonts.Style + "2.png", ImageFormat.Png);
}
+ // ReSharper restore ConditionIsAlwaysTrueOrFalse
// ReSharper restore HeuristicUnreachableCode
#pragma warning restore 162
}
@@ -164,7 +164,7 @@ namespace Vocaluxe.Base.Fonts
int minX = 0, maxX = bmp.Width - 1, minY = 0;
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
int values = bmpData.Width * bmp.Height;
- Int32[] rgbValues = new Int32[values];
+ var rgbValues = new Int32[values];
Marshal.Copy(bmpData.Scan0, rgbValues, 0, values);
int index = 0;
bool found = false;
diff --git a/Vocaluxe/Base/Server/CClientHandler.cs b/Vocaluxe/Base/Server/CClientHandler.cs
index a63939f9..7f1bf734 100644
--- a/Vocaluxe/Base/Server/CClientHandler.cs
+++ b/Vocaluxe/Base/Server/CClientHandler.cs
@@ -1,32 +1,30 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
namespace Vocaluxe.Base.Server
{
class CClientHandler
{
- public int ConnectionID;
+ private int _ConnectionID;
public bool LoggedIn;
public CClientHandler(int connectionID)
{
- ConnectionID = connectionID;
+ _ConnectionID = connectionID;
LoggedIn = false;
}
}
diff --git a/Vocaluxe/Base/Server/CCommands.cs b/Vocaluxe/Base/Server/CCommands.cs
index ecfa087e..544f443e 100644
--- a/Vocaluxe/Base/Server/CCommands.cs
+++ b/Vocaluxe/Base/Server/CCommands.cs
@@ -1,22 +1,37 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
-
using Newtonsoft.Json;
namespace Vocaluxe.Base.Server
{
public static class CCommands
{
- private static UTF8Encoding encoder = new UTF8Encoding();
- public static SHA256Managed SHA256 = new SHA256Managed();
+ private static readonly UTF8Encoding _Encoder = new UTF8Encoding();
+ private static readonly SHA256Managed _Sha256 = new SHA256Managed();
public const string BroadcastKeyword = "I am a Vocaluxe Server";
#region Commands
+ // ReSharper disable UnusedMember.Global
public const int ResponseOK = 1;
public const int ResponseNOK = 2;
@@ -25,7 +40,6 @@ namespace Vocaluxe.Base.Server
public const int ResponseLoginFailed = 22;
public const int ResponseLoginOK = 23;
-
public const int CommandSendKeyStroke = 100;
public const int CommandSendKeyUp = 110;
public const int CommandSendKeyDown = 111;
@@ -45,105 +59,92 @@ namespace Vocaluxe.Base.Server
public const int CommandSendAvatarPictureJpg = 501;
public const int CommandSendProfile = 510;
-
+ // ReSharper restore UnusedMember.Global
#endregion Commands
#region General
- public static byte[] CreateCommandWithoutParams(int Command)
+ public static byte[] CreateCommandWithoutParams(int command)
{
- return BitConverter.GetBytes(Command);
+ return BitConverter.GetBytes(command);
}
#endregion General
#region Login
- public static byte[] CreateCommandLogin(string Password)
+ public static byte[] CreateCommandLogin(string password)
{
- SLoginData data = new SLoginData();
- data.SHA256 = SHA256.ComputeHash(Encoding.UTF8.GetBytes(Password));
+ var data = new SLoginData {Sha256 = _Sha256.ComputeHash(Encoding.UTF8.GetBytes(password))};
- return Serialize(CommandLogin, data);
+ return _Serialize(CommandLogin, data);
}
- public static bool DecodeCommandLogin(byte[] Message, out SLoginData LoginData)
+ public static bool DecodeCommandLogin(byte[] message, out SLoginData loginData)
{
- return TryDeserialize(Message, out LoginData);
+ return _TryDeserialize(message, out loginData);
}
#endregion Login
#region Keyboard
-
#endregion Keyboard
#region Profiles
- public static byte[] CreateCommandSendAvatarPicture(int Width, int Height, byte[] data)
+ public static byte[] CreateCommandSendAvatarPicture(int width, int height, byte[] data)
{
- SAvatarPicture ap = new SAvatarPicture();
- ap.Height = Height;
- ap.Width = Width;
- ap.data = new byte[data.Length];
- Array.Copy(data, ap.data, data.Length);
+ var ap = new SAvatarPicture {Height = height, Width = width, Data = new byte[data.Length]};
+ Array.Copy(data, ap.Data, data.Length);
- return Serialize(CommandSendAvatarPicture, ap);
+ return _Serialize(CommandSendAvatarPicture, ap);
}
- public static bool DecodeCommandSendAvatarPicture(byte[] Message, out SAvatarPicture AvatarPicture)
+ public static bool DecodeCommandSendAvatarPicture(byte[] message, out SAvatarPicture avatarPicture)
{
- return TryDeserialize(Message, out AvatarPicture);
+ return _TryDeserialize(message, out avatarPicture);
}
- public static byte[] CreateCommandSendAvatarPictureJpg(byte[] AvatarJpgData)
+ public static byte[] CreateCommandSendAvatarPictureJpg(byte[] avatarJpgData)
{
- SAvatarPicture ap = new SAvatarPicture();
- ap.Height = 0;
- ap.Width = 0;
- ap.data = new byte[AvatarJpgData.Length];
- Array.Copy(AvatarJpgData, ap.data, AvatarJpgData.Length);
+ var ap = new SAvatarPicture {Height = 0, Width = 0, Data = new byte[avatarJpgData.Length]};
+ Array.Copy(avatarJpgData, ap.Data, avatarJpgData.Length);
- return Serialize(CommandSendAvatarPictureJpg, ap);
+ return _Serialize(CommandSendAvatarPictureJpg, ap);
}
- public static byte[] CreateCommandSendProfile(byte[] AvatarJpgData, string PlayerName, int Difficulty)
+ public static byte[] CreateCommandSendProfile(byte[] avatarJpgData, string playerName, int difficulty)
{
- SAvatarPicture ap = new SAvatarPicture();
- ap.Height = 0;
- ap.Width = 0;
- ap.data = new byte[AvatarJpgData.Length];
- Array.Copy(AvatarJpgData, ap.data, AvatarJpgData.Length);
+ var ap = new SAvatarPicture {Height = 0, Width = 0, Data = new byte[avatarJpgData.Length]};
+ Array.Copy(avatarJpgData, ap.Data, avatarJpgData.Length);
- SProfile profile = new SProfile();
- profile.Avatar = ap;
- profile.PlayerName = PlayerName;
- profile.Difficulty = Difficulty;
+ var profile = new SProfile {Avatar = ap, PlayerName = playerName, Difficulty = difficulty};
- return Serialize(CommandSendProfile, profile);
+ return _Serialize(CommandSendProfile, profile);
}
- public static bool DecodeCommandSendProfile(byte[] Message, out SProfile Profile)
+ public static bool DecodeCommandSendProfile(byte[] message, out SProfile profile)
{
- return TryDeserialize(Message, out Profile);
+ return _TryDeserialize(message, out profile);
}
-
#endregion Profiles
#region Serializing
- private static byte[] Serialize(int Command, T obj)
+ private static byte[] _Serialize(T obj)
{
- byte[] command = BitConverter.GetBytes(Command);
+ return _Serialize(0, obj);
+ }
- MemoryStream stream = new MemoryStream();
- stream.Write(command, 0, command.Length);
+ private static byte[] _Serialize(int command, T obj)
+ {
+ byte[] cmd = BitConverter.GetBytes(command);
+
+ var stream = new MemoryStream();
+ stream.Write(cmd, 0, cmd.Length);
byte[] data;
- using (MemoryStream ms = new MemoryStream())
- {
- string json = JsonConvert.SerializeObject(obj);
- data = encoder.GetBytes(json);
- }
+ string json = JsonConvert.SerializeObject(obj);
+ data = _Encoder.GetBytes(json);
stream.Write(data, 0, data.Length);
return stream.ToArray();
}
- private static bool TryDeserialize(byte[] message, out T obj)
+ private static bool _TryDeserialize(byte[] message, out T obj)
{
obj = default(T);
@@ -153,21 +154,18 @@ namespace Vocaluxe.Base.Server
if (message.Length < 5)
return false;
- byte[] data = new byte[message.Length - 4];
+ var data = new byte[message.Length - 4];
Array.Copy(message, 4, data, 0, data.Length);
- using (MemoryStream ms = new MemoryStream(data))
+ try
{
- try
- {
- obj = JsonConvert.DeserializeObject(encoder.GetString(data));
- return true;
- }
- catch
- {
- return false;
- }
+ obj = JsonConvert.DeserializeObject(_Encoder.GetString(data));
+ return true;
+ }
+ catch
+ {
+ return false;
}
}
#endregion Serializing
}
-}
+}
\ No newline at end of file
diff --git a/Vocaluxe/Base/Server/CVocaluxeServer.cs b/Vocaluxe/Base/Server/CVocaluxeServer.cs
index fb8e1f83..b6c35a2c 100644
--- a/Vocaluxe/Base/Server/CVocaluxeServer.cs
+++ b/Vocaluxe/Base/Server/CVocaluxeServer.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -22,9 +20,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
-using System.Linq;
using System.IO;
-using System.Text;
using System.Windows.Forms;
using ClientServerLib;
using Vocaluxe.Lib.Input;
@@ -44,10 +40,8 @@ namespace Vocaluxe.Base.Server
public static void Init()
{
_Clients = new Dictionary();
- if (CConfig.ServerEncryption == EOffOn.TR_CONFIG_ON)
- _Server = new CServer(RequestHandler, CConfig.ServerPort, CConfig.ServerPassword);
- else
- _Server = new CServer(RequestHandler, CConfig.ServerPort, String.Empty);
+ String pw = (CConfig.ServerEncryption == EOffOn.TR_CONFIG_ON) ? CConfig.ServerPassword : String.Empty;
+ _Server = new CServer(RequestHandler, CConfig.ServerPort, pw);
_Discover = new CDiscover(CConfig.ServerPort, CCommands.BroadcastKeyword);
Controller.Init();
@@ -84,13 +78,16 @@ namespace Vocaluxe.Base.Server
{
if (!_Clients.ContainsKey(connectionID))
{
- CClientHandler client = new CClientHandler(connectionID);
+ var client = new CClientHandler(connectionID);
_Clients.Add(connectionID, client);
}
loggedIn = _Clients[connectionID].LoggedIn;
}
+ if (!loggedIn)
+ return CCommands.CreateCommandWithoutParams(CCommands.ResponseNOK);
+
int command = BitConverter.ToInt32(message, 0);
switch (command)
@@ -120,17 +117,17 @@ namespace Vocaluxe.Base.Server
SAvatarPicture avatarPicture;
if (CCommands.DecodeCommandSendAvatarPicture(message, out avatarPicture))
{
- using (Bitmap bmp = new Bitmap(avatarPicture.Width, avatarPicture.Height))
+ using (var bmp = new Bitmap(avatarPicture.Width, avatarPicture.Height))
{
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
- Marshal.Copy(avatarPicture.data, 0, bmpData.Scan0, avatarPicture.data.Length);
+ Marshal.Copy(avatarPicture.Data, 0, bmpData.Scan0, avatarPicture.Data.Length);
bmp.UnlockBits(bmpData);
const string filename = "snapshot";
int i = 0;
- while (File.Exists(Path.Combine(CSettings.FolderProfiles, filename + i + ".png")))
+ while (File.Exists(Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, filename + i + ".png")))
i++;
- bmp.Save(Path.Combine(CSettings.FolderProfiles, filename + i + ".png"), ImageFormat.Png);
+ bmp.Save(Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, filename + i + ".png"), ImageFormat.Png);
}
answer = CCommands.CreateCommandWithoutParams(CCommands.ResponseOK);
@@ -142,7 +139,7 @@ namespace Vocaluxe.Base.Server
SAvatarPicture avatarPictureJpg;
if (CCommands.DecodeCommandSendAvatarPicture(message, out avatarPictureJpg))
{
- if (_AddAvatar(avatarPictureJpg.data) != String.Empty)
+ if (_AddAvatar(avatarPictureJpg.Data) != String.Empty)
answer = CCommands.CreateCommandWithoutParams(CCommands.ResponseOK);
}
break;
@@ -153,10 +150,10 @@ namespace Vocaluxe.Base.Server
{
try
{
- string avatarFilename = _AddAvatar(profile.Avatar.data);
+ string avatarFilename = _AddAvatar(profile.Avatar.Data);
if (avatarFilename != String.Empty)
{
- CProfile p = new CProfile
+ var p = new CProfile
{
Active = EOffOn.TR_CONFIG_ON,
AvatarFileName = avatarFilename,
@@ -182,7 +179,7 @@ namespace Vocaluxe.Base.Server
string result = String.Empty;
try
{
- string filename = Path.Combine(CSettings.FolderProfiles, "snapshot");
+ string filename = Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, "snapshot");
int i = 0;
while (File.Exists(filename + i + ".jpg"))
i++;
@@ -193,7 +190,7 @@ namespace Vocaluxe.Base.Server
fs.Flush();
fs.Close();
- CAvatar avatar = new CAvatar(-1);
+ var avatar = new CAvatar(-1);
if (avatar.LoadFromFile(filename))
{
CProfiles.AddAvatar(avatar);
diff --git a/Vocaluxe/Base/Server/VocaluxeStructs.cs b/Vocaluxe/Base/Server/VocaluxeStructs.cs
index 99b917d2..21aa8f48 100644
--- a/Vocaluxe/Base/Server/VocaluxeStructs.cs
+++ b/Vocaluxe/Base/Server/VocaluxeStructs.cs
@@ -1,17 +1,32 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
namespace Vocaluxe.Base.Server
{
public struct SLoginData
{
- public byte[] SHA256;
+ public byte[] Sha256;
}
public struct SAvatarPicture
{
public int Width;
public int Height;
- public byte[] data;
+ public byte[] Data;
}
public struct SProfile
diff --git a/Vocaluxe/CProgrammHelper.cs b/Vocaluxe/CProgrammHelper.cs
new file mode 100644
index 00000000..de0a61a9
--- /dev/null
+++ b/Vocaluxe/CProgrammHelper.cs
@@ -0,0 +1,99 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.Security;
+using System.Text;
+using Microsoft.Win32;
+using Vocaluxe.Base;
+
+namespace Vocaluxe
+{
+ ///
+ /// Some helper functions for the programm
+ ///
+ static class CProgrammHelper
+ {
+ private static bool _CheckUninstallKey(string name, string key)
+ {
+ using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(key))
+ {
+ if (rk == null)
+ throw new SecurityException();
+ foreach (string skName in rk.GetSubKeyNames())
+ {
+ using (RegistryKey sk = rk.OpenSubKey(skName))
+ {
+ if (sk == null || sk.GetValue("DisplayName") == null)
+ continue;
+ string displayName = sk.GetValue("DisplayName").ToString().ToLower();
+ if (displayName.Equals(name) || displayName.StartsWith(name) || name.StartsWith(displayName))
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ ///
+ /// Checks if a given program is installed by checking the Uninstall registry key.
+ ///
+ /// Name of the programm. Got to equal the displayname in the key or one needs to be the start of the other one. NOT case sensitive.
+ ///
+ private static bool _IsProgramInstalled(string name)
+ {
+ const string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
+ const string uninstallKeyx64 = @"SOFTWARE\WoW6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
+ name = name.ToLower();
+ return _CheckUninstallKey(name, uninstallKey) || _CheckUninstallKey(name, uninstallKeyx64);
+ }
+
+ private static bool _SystemDllExists(string dllName)
+ {
+ const string sysDir = "%windir%\\system32\\";
+ return File.Exists(Environment.ExpandEnvironmentVariables(sysDir + dllName + ".dll"));
+ }
+
+ private static bool _IsVC2012Installed()
+ {
+ return _SystemDllExists("msvcr110") && _SystemDllExists("msvcp110");
+ }
+
+ private static bool _IsVC2008Installed()
+ {
+ return _IsProgramInstalled("Microsoft Visual C++ 2008 Redistributable");
+ }
+
+ private static bool _IsVC2010Installed()
+ {
+ //Note: Maybe check for x64 or x86
+ return _IsProgramInstalled("Microsoft Visual C++ 2010");
+ }
+
+ public static bool CheckRequirements()
+ {
+ if (!_IsVC2012Installed())
+ {
+ CLog.LogError(
+ "VC++ 2012 Redistributables are missing. Please install them first.\r\nDownload: http://www.microsoft.com/de-de/download/details.aspx?id=30679",
+ true, true);
+ return false;
+ }
+ bool vc2008Installed = _IsVC2008Installed();
+ if (!vc2008Installed)
+ {
+ CLog.LogError(
+ "VC++ 2008 Redistributables are missing. Portaudio might not be working.\r\nDownload: http://www.microsoft.com/de-de/download/details.aspx?id=29");
+ }
+ if (!vc2008Installed && !_IsVC2010Installed())
+ {
+ CLog.LogError(
+ "VC++ 2010 and 2008 Redistributables are missing. Please install them first. VC++ 2008 is preferred as Portaudio doesn't work with VC++ 2010.\r\nDownload(2008): http://www.microsoft.com/de-de/download/details.aspx?id=29 \r\nDownload(2010): http://www.microsoft.com/de-de/download/details.aspx?id=5555",
+ true, true);
+ return false;
+ }
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Vocaluxe/CSplashScreen.cs b/Vocaluxe/CSplashScreen.cs
index 938588e4..cf31ae7b 100644
--- a/Vocaluxe/CSplashScreen.cs
+++ b/Vocaluxe/CSplashScreen.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/GameModes/CGameMode.cs b/Vocaluxe/GameModes/CGameMode.cs
index d945ca73..73f61fdf 100644
--- a/Vocaluxe/GameModes/CGameMode.cs
+++ b/Vocaluxe/GameModes/CGameMode.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using Vocaluxe.Base;
diff --git a/Vocaluxe/GameModes/CGameModes.cs b/Vocaluxe/GameModes/CGameModes.cs
index 5090ff44..a7e7d4b2 100644
--- a/Vocaluxe/GameModes/CGameModes.cs
+++ b/Vocaluxe/GameModes/CGameModes.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.Generic;
@@ -54,7 +52,7 @@ namespace Vocaluxe.GameModes
{
protected override CSong _PrepareSong(CSong song)
{
- return song;
+ return (song.IsGameModeAvailable(EGameMode.TR_GAMEMODE_NORMAL)) ? song : null;
}
}
@@ -62,7 +60,7 @@ namespace Vocaluxe.GameModes
{
protected override CSong _PrepareSong(CSong song)
{
- return (song.IsDuet) ? song : null;
+ return (song.IsGameModeAvailable(EGameMode.TR_GAMEMODE_DUET)) ? song : null;
}
}
@@ -70,9 +68,11 @@ namespace Vocaluxe.GameModes
{
protected override CSong _PrepareSong(CSong song)
{
- CSong newSong = new CSong(song) {Finish = CGame.GetTimeFromBeats(song.ShortEnd, song.BPM) + CSettings.DefaultMedleyFadeOutTime + song.Gap};
+ if (!song.IsGameModeAvailable(EGameMode.TR_GAMEMODE_SHORTSONG))
+ return null;
+ var newSong = new CSong(song) {Finish = CGame.GetTimeFromBeats(song.ShortEnd.EndBeat, song.BPM) + CSettings.DefaultMedleyFadeOutTime + song.Gap};
// set lines to short mode
- newSong.Notes.SetMedley(song.Notes.GetVoice(0).Lines[0].FirstNoteBeat, song.ShortEnd);
+ newSong.Notes.SetMedley(0, song.ShortEnd.EndBeat);
return newSong;
}
@@ -82,7 +82,9 @@ namespace Vocaluxe.GameModes
{
protected override CSong _PrepareSong(CSong song)
{
- CSong newSong = new CSong(song) {Start = CGame.GetTimeFromBeats(song.Medley.StartBeat, song.BPM) - song.Medley.FadeInTime + song.Gap};
+ if (!song.IsGameModeAvailable(EGameMode.TR_GAMEMODE_MEDLEY))
+ return null;
+ var newSong = new CSong(song) {Start = CGame.GetTimeFromBeats(song.Medley.StartBeat, song.BPM) - song.Medley.FadeInTime + song.Gap};
if (newSong.Start < 0f)
newSong.Start = 0f;
diff --git a/Vocaluxe/GameModes/IGameMode.cs b/Vocaluxe/GameModes/IGameMode.cs
index 91504898..a6ed88f6 100644
--- a/Vocaluxe/GameModes/IGameMode.cs
+++ b/Vocaluxe/GameModes/IGameMode.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using VocaluxeLib.Songs;
diff --git a/Vocaluxe/GlobalSuppressions.cs b/Vocaluxe/GlobalSuppressions.cs
index ed290a90..da284174 100644
--- a/Vocaluxe/GlobalSuppressions.cs
+++ b/Vocaluxe/GlobalSuppressions.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Diagnostics.CodeAnalysis;
diff --git a/Vocaluxe/Lib/Draw/CDirect3D.cs b/Vocaluxe/Lib/Draw/CDirect3D.cs
index 0e104ee1..d69d842e 100644
--- a/Vocaluxe/Lib/Draw/CDirect3D.cs
+++ b/Vocaluxe/Lib/Draw/CDirect3D.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Drawing.Drawing2D;
@@ -448,7 +446,7 @@ namespace Vocaluxe.Lib.Draw
if (_Device.SetTextureStageState(0, TextureStage.AlphaOperation, TextureOperation.Modulate).IsFailure)
CLog.LogError("Failed to set alpha operation");
- Int16[] indices = new Int16[6];
+ var indices = new Int16[6];
indices[0] = 0;
indices[1] = 1;
indices[2] = 2;
@@ -465,7 +463,7 @@ namespace Vocaluxe.Lib.Draw
//This creates a new white texture and adds it to the texture pool
//This texture is used for the DrawRect method
- using (Bitmap blankMap = new Bitmap(1, 1))
+ using (var blankMap = new Bitmap(1, 1))
{
Graphics g = Graphics.FromImage(blankMap);
g.Clear(Color.White);
@@ -674,7 +672,7 @@ namespace Vocaluxe.Lib.Draw
CTexture texture = _GetNewTexture(_W, _H);
Surface backbufferSurface = _Device.GetBackBuffer(0, 0);
- Texture tex = new Texture(_Device, texture.W2, texture.H2, 0, Usage.AutoGenerateMipMap, Format.A8R8G8B8, Pool.Managed);
+ var tex = new Texture(_Device, texture.W2, texture.H2, 0, Usage.AutoGenerateMipMap, Format.A8R8G8B8, Pool.Managed);
Surface textureSurface = tex.GetSurfaceLevel(0);
Surface.FromSurface(textureSurface, backbufferSurface, Filter.Default, 0, new Rectangle(0, 0, _W, _H), new Rectangle(0, 0, _W, _H));
backbufferSurface.Dispose();
@@ -713,7 +711,7 @@ namespace Vocaluxe.Lib.Draw
public void MakeScreenShot()
{
const string file = "Screenshot_";
- string path = Path.Combine(Environment.CurrentDirectory, CSettings.FolderScreenshots);
+ string path = Path.Combine(CSettings.DataPath, CSettings.FolderScreenshots);
int i = 0;
while (File.Exists(Path.Combine(path, file + i.ToString("00000") + ".bmp")))
@@ -722,7 +720,7 @@ namespace Vocaluxe.Lib.Draw
//create a surface of the frame
using (Surface surface = _Device.GetBackBuffer(0, 0))
{
- Bitmap screen = new Bitmap(Surface.ToStream(surface, ImageFileFormat.Bmp));
+ var screen = new Bitmap(Surface.ToStream(surface, ImageFileFormat.Bmp));
screen.Save(Path.Combine(path, file + i.ToString("00000") + ".bmp"), ImageFormat.Bmp);
screen.Dispose();
}
@@ -742,8 +740,8 @@ namespace Vocaluxe.Lib.Draw
/// The end y-value
public void DrawLine(int a, int r, int g, int b, int w, int x1, int y1, int x2, int y2)
{
- Vector2[] lineVector = new Vector2[] {new Vector2(x1, y1), new Vector2(x2, y2)};
- using (Line line = new Line(_Device))
+ var lineVector = new Vector2[] {new Vector2(x1, y1), new Vector2(x2, y2)};
+ using (var line = new Line(_Device))
{
line.Antialias = true;
line.Begin();
@@ -850,7 +848,7 @@ namespace Vocaluxe.Lib.Draw
w = _CheckForNextPowerOf2(w);
h = _CheckForNextPowerOf2(h);
- CTexture texture = new CTexture(bmp.Width, bmp.Height, w, h, true);
+ var texture = new CTexture(bmp.Width, bmp.Height, w, h, true);
Bitmap bmp2 = null;
byte[] data;
@@ -907,7 +905,7 @@ namespace Vocaluxe.Lib.Draw
{
//Create a new texture in the managed pool, which does not need to be recreated on a lost device
//because a copy of the texture is hold in the Ram
- Texture t = new Texture(_Device, textureW, textureH, 0, Usage.AutoGenerateMipMap, Format.A8R8G8B8, Pool.Managed);
+ var t = new Texture(_Device, textureW, textureH, 0, Usage.AutoGenerateMipMap, Format.A8R8G8B8, Pool.Managed);
_WriteDataToTexture(t, w, data);
return t;
}
@@ -939,7 +937,7 @@ namespace Vocaluxe.Lib.Draw
{
texture.ID = _IDs.Dequeue();
_D3DTextures.Add(texture.ID, null);
- STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
+ var queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
_TexturesToLoad.Enqueue(queue);
}
return texture;
@@ -1122,7 +1120,7 @@ namespace Vocaluxe.Lib.Draw
if (!mirrored)
{
- STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
+ var vert = new STexturedColoredVertex[4];
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, y1), c.ToArgb());
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y2), c.ToArgb());
@@ -1131,7 +1129,7 @@ namespace Vocaluxe.Lib.Draw
}
else
{
- STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
+ var vert = new STexturedColoredVertex[4];
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, -y1), c.ToArgb());
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, -y2), c.ToArgb());
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, -y2), c.ToArgb());
@@ -1175,7 +1173,7 @@ namespace Vocaluxe.Lib.Draw
Color c = color.AsColor();
- STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
+ var vert = new STexturedColoredVertex[4];
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, y1), c.ToArgb());
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y2), c.ToArgb());
@@ -1258,7 +1256,7 @@ namespace Vocaluxe.Lib.Draw
color.A = 0;
Color transparent = color.AsColor();
- STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
+ var vert = new STexturedColoredVertex[4];
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y1), transparent.ToArgb());
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y1), transparent.ToArgb());
diff --git a/Vocaluxe/Lib/Draw/CDrawWinForm.cs b/Vocaluxe/Lib/Draw/CDrawWinForm.cs
index 0c0c9ac1..e6bfb1ed 100644
--- a/Vocaluxe/Lib/Draw/CDrawWinForm.cs
+++ b/Vocaluxe/Lib/Draw/CDrawWinForm.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -289,7 +287,7 @@ namespace Vocaluxe.Lib.Draw
public CTexture CopyScreen()
{
- Bitmap bmp = new Bitmap(_Backbuffer);
+ var bmp = new Bitmap(_Backbuffer);
_Bitmaps.Add(bmp);
CTexture texture = _GetNewTexture(bmp.Width, bmp.Height);
@@ -313,7 +311,7 @@ namespace Vocaluxe.Lib.Draw
public void MakeScreenShot()
{
const string file = "Screenshot_";
- string path = Path.Combine(Environment.CurrentDirectory, CSettings.FolderScreenshots);
+ string path = Path.Combine(CSettings.DataPath, CSettings.FolderScreenshots);
int i = 0;
while (File.Exists(Path.Combine(path, file + i.ToString("00000") + ".png")))
@@ -333,7 +331,7 @@ namespace Vocaluxe.Lib.Draw
public CTexture AddTexture(Bitmap bmp)
{
- Bitmap bmp2 = new Bitmap(bmp);
+ var bmp2 = new Bitmap(bmp);
_Bitmaps.Add(bmp2);
CTexture texture = _GetNewTexture(bmp.Width, bmp.Height);
@@ -357,7 +355,7 @@ namespace Vocaluxe.Lib.Draw
if (tex.TexturePath == texturePath)
return tex;
}
- using (Bitmap bmp = new Bitmap(texturePath))
+ using (var bmp = new Bitmap(texturePath))
{
CTexture texture = AddTexture(bmp);
texture.TexturePath = texturePath;
@@ -389,7 +387,7 @@ namespace Vocaluxe.Lib.Draw
public CTexture AddTexture(int w, int h, byte[] data)
{
- using (Bitmap bmp = new Bitmap(w, h))
+ using (var bmp = new Bitmap(w, h))
{
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
Marshal.Copy(data, 0, bmpData.Scan0, data.Length);
@@ -459,13 +457,13 @@ namespace Vocaluxe.Lib.Draw
private static Bitmap _ColorizeBitmap(Bitmap original, SColorF color)
{
- Bitmap newBitmap = new Bitmap(original.Width, original.Height);
+ var newBitmap = new Bitmap(original.Width, original.Height);
using (Graphics g = Graphics.FromImage(newBitmap))
{
- ColorMatrix cm = new ColorMatrix {Matrix33 = color.A, Matrix00 = color.R, Matrix11 = color.G, Matrix22 = color.B, Matrix44 = 1};
+ var cm = new ColorMatrix {Matrix33 = color.A, Matrix00 = color.R, Matrix11 = color.G, Matrix22 = color.B, Matrix44 = 1};
- using (ImageAttributes ia = new ImageAttributes())
+ using (var ia = new ImageAttributes())
{
ia.SetColorMatrix(cm);
diff --git a/Vocaluxe/Lib/Draw/COpenGL.cs b/Vocaluxe/Lib/Draw/COpenGL.cs
index e2cc99d8..cb00e26f 100644
--- a/Vocaluxe/Lib/Draw/COpenGL.cs
+++ b/Vocaluxe/Lib/Draw/COpenGL.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Drawing.Drawing2D;
@@ -124,7 +122,7 @@ namespace Vocaluxe.Lib.Draw
bool ok = false;
try
{
- GraphicsMode gm = new GraphicsMode(32, 24, 0, (int)CConfig.AAMode);
+ var gm = new GraphicsMode(32, 24, 0, (int)CConfig.AAMode);
_Control = new GLControl(gm, 2, 1, GraphicsContextFlags.Default);
if (_Control.GraphicsMode != null)
ok = true;
@@ -473,7 +471,7 @@ namespace Vocaluxe.Lib.Draw
Close();
}
catch {}
- CTexture[] textures = new CTexture[_Textures.Count];
+ var textures = new CTexture[_Textures.Count];
_Textures.Values.CopyTo(textures, 0);
for (int i = 0; i < _Textures.Count; i++)
RemoveTexture(ref textures[i]);
@@ -543,7 +541,7 @@ namespace Vocaluxe.Lib.Draw
public void MakeScreenShot()
{
const string file = "Screenshot_";
- string path = Path.Combine(Environment.CurrentDirectory, CSettings.FolderScreenshots);
+ string path = Path.Combine(CSettings.DataPath, CSettings.FolderScreenshots);
int i = 0;
while (File.Exists(Path.Combine(path, file + i.ToString("00000") + ".bmp")))
@@ -552,7 +550,7 @@ namespace Vocaluxe.Lib.Draw
int width = GetScreenWidth();
int height = GetScreenHeight();
- using (Bitmap screen = new Bitmap(width, height))
+ using (var screen = new Bitmap(width, height))
{
BitmapData bmpData = screen.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
@@ -707,7 +705,7 @@ namespace Vocaluxe.Lib.Draw
w = MathHelper.NextPowerOfTwo(w);
h = MathHelper.NextPowerOfTwo(h);
- CTexture texture = new CTexture(bmp.Width, bmp.Height, w, h, true) {Name = GL.GenTexture()};
+ var texture = new CTexture(bmp.Width, bmp.Height, w, h, true) {Name = GL.GenTexture()};
GL.BindTexture(TextureTarget.Texture2D, texture.Name);
Bitmap bmp2 = null;
@@ -813,7 +811,7 @@ namespace Vocaluxe.Lib.Draw
lock (_MutexTexture)
{
texture.ID = _IDs.Dequeue();
- STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
+ var queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
_TexturesToLoad.Enqueue(queue);
_Textures[texture.ID] = texture;
}
diff --git a/Vocaluxe/Lib/Draw/IDraw.cs b/Vocaluxe/Lib/Draw/IDraw.cs
index 1eab8eb2..f5e3fad3 100644
--- a/Vocaluxe/Lib/Draw/IDraw.cs
+++ b/Vocaluxe/Lib/Draw/IDraw.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Drawing;
diff --git a/Vocaluxe/Lib/Input/CControllerFramework.cs b/Vocaluxe/Lib/Input/CControllerFramework.cs
index c978a247..265c0858 100644
--- a/Vocaluxe/Lib/Input/CControllerFramework.cs
+++ b/Vocaluxe/Lib/Input/CControllerFramework.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Lib/Input/CHIDAPI.cs b/Vocaluxe/Lib/Input/CHIDAPI.cs
index d90e50d7..3252373c 100644
--- a/Vocaluxe/Lib/Input/CHIDAPI.cs
+++ b/Vocaluxe/Lib/Input/CHIDAPI.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -23,20 +21,20 @@ using Vocaluxe.Base;
namespace Vocaluxe.Lib.Input
{
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+ [StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct SHIDDeviceInfo
{
// ReSharper disable MemberCanBePrivate.Global
[MarshalAs(UnmanagedType.LPTStr)] public readonly String Path;
public readonly ushort VendorString;
public readonly ushort ProductID;
- public readonly String SerialNumber;
+ [MarshalAs(UnmanagedType.LPWStr)] public readonly String SerialNumber;
public readonly ushort ReleaseNumber;
- public readonly String ManufacturerString;
- public readonly String ProductString;
+ [MarshalAs(UnmanagedType.LPWStr)] public readonly String ManufacturerString;
+ [MarshalAs(UnmanagedType.LPWStr)] public readonly String ProductString;
public readonly ushort UsagePage;
public readonly ushort Usage;
- public readonly int InterfaceNumber;
+ [MarshalAs(UnmanagedType.LPWStr)] public readonly int InterfaceNumber;
internal IntPtr Next;
// ReSharper restore MemberCanBePrivate.Global
}
@@ -160,11 +158,9 @@ namespace Vocaluxe.Lib.Input
[DllImport(_HIDApiDll, ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, EntryPoint = "hid_read_timeout", CharSet = CharSet.Unicode)]
private static extern int hid_read_timeout(IntPtr device, IntPtr data, int length, int milliseconds);
- public static int ReadTimeout(IntPtr device, out byte[] data, int length, int milliseconds)
+ public static int ReadTimeout(IntPtr device, ref byte[] data, int length, int milliseconds)
{
- data = new byte[length];
IntPtr dataPtr = Marshal.AllocHGlobal(length);
-
int result;
try
{
@@ -182,6 +178,7 @@ namespace Vocaluxe.Lib.Input
data = null;
Marshal.FreeHGlobal(dataPtr);
+
return result;
}
diff --git a/Vocaluxe/Lib/Input/IController.cs b/Vocaluxe/Lib/Input/IController.cs
index 2a361f40..7ad6c39b 100644
--- a/Vocaluxe/Lib/Input/IController.cs
+++ b/Vocaluxe/Lib/Input/IController.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Lib/Input/WiiMote/CWiiMote.cs b/Vocaluxe/Lib/Input/WiiMote/CWiiMote.cs
index 6fffb49c..d10c38e7 100644
--- a/Vocaluxe/Lib/Input/WiiMote/CWiiMote.cs
+++ b/Vocaluxe/Lib/Input/WiiMote/CWiiMote.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -71,6 +69,7 @@ namespace Vocaluxe.Lib.Input.WiiMote
public void Close()
{
_Active = false;
+ _WiiMote.Disconnect();
}
public void Connect()
@@ -204,7 +203,7 @@ namespace Vocaluxe.Lib.Input.WiiMote
bool lb = false;
bool rb = gesture == EGesture.Back;
- Keys key = Keys.None;
+ var key = Keys.None;
if (ws.ButtonState.A && !_ButtonStates[0])
lb = true;
@@ -246,7 +245,7 @@ namespace Vocaluxe.Lib.Input.WiiMote
if (key != Keys.None)
{
- SKeyEvent pool = new SKeyEvent(ESender.WiiMote, false, false, false, false, char.MinValue, key);
+ var pool = new SKeyEvent(ESender.WiiMote, false, false, false, false, char.MinValue, key);
lock (_KeyCopyLock)
{
@@ -260,8 +259,8 @@ namespace Vocaluxe.Lib.Input.WiiMote
float rx = ((p.X / 1024f) - reducing) * factor;
float ry = ((p.Y / 768f) - reducing) * factor;
- int x = (int)(rx * CSettings.RenderW);
- int y = (int)(ry * CSettings.RenderH);
+ var x = (int)(rx * CSettings.RenderW);
+ var y = (int)(ry * CSettings.RenderH);
bool lbh = !lb && ws.ButtonState.A;
@@ -272,7 +271,7 @@ namespace Vocaluxe.Lib.Input.WiiMote
if (gesture == EGesture.ScrollDown)
wheel = 1;
- SMouseEvent mpool = new SMouseEvent();
+ var mpool = new SMouseEvent();
bool trigger = false;
if (!lb && !rb && (p.X != _OldPosition.X || p.Y != _OldPosition.Y))
diff --git a/Vocaluxe/Lib/Input/WiiMote/WiiMoteLib.cs b/Vocaluxe/Lib/Input/WiiMote/WiiMoteLib.cs
index b4e234c9..7b1449d5 100644
--- a/Vocaluxe/Lib/Input/WiiMote/WiiMoteLib.cs
+++ b/Vocaluxe/Lib/Input/WiiMote/WiiMoteLib.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -182,7 +180,7 @@ namespace Vocaluxe.Lib.Input.WiiMote
private readonly Thread _Reader;
private bool _Active;
- private bool _Error;
+ private readonly bool _Error;
public bool Connected { get; private set; }
@@ -198,6 +196,16 @@ namespace Vocaluxe.Lib.Input.WiiMote
_Error = false;
_Reader = new Thread(_ReaderLoop);
_Reader.Start();
+
+ if (!CHIDApi.Init())
+ {
+ CLog.LogError("WiiMoteLib: Can't initialize HID API");
+ const string msg = "Please install the Visual C++ Redistributable Packages 2008!";
+ CLog.LogError(msg);
+
+ _Active = false;
+ _Error = true;
+ }
}
~CWiiMoteLib()
@@ -224,25 +232,31 @@ namespace Vocaluxe.Lib.Input.WiiMote
if (_Error)
return false;
- CHIDApi.Exit();
-
- if (!CHIDApi.Init())
- {
- CLog.LogError("WiiMoteLib: Can't initialize HID API");
- const string msg = "Please install the Visual C++ Redistributable Packages 2008!";
- CLog.LogError(msg);
-
- _Active = false;
- _Error = true;
- return false;
- }
-
//Try WiiMotion
- Connected = _TryConnect(_PID);
+ Connected = CHIDApi.Open(_VID, _PID, out _Handle);
+ if (Connected)
+ {
+ Connected = _ReadCalibration();
+ if (!Connected)
+ CHIDApi.Close(_Handle);
+ }
+ else
+ CHIDApi.Close(_Handle);
+
+ if (Connected)
+ return true;
//Try WiiMotion Plus
- if (!Connected)
- Connected = _TryConnect(_PIDPlus);
+ Connected = CHIDApi.Open(_VID, _PIDPlus, out _Handle);
+ if (Connected)
+ {
+ Connected = _ReadCalibration();
+ if (!Connected)
+ CHIDApi.Close(_Handle);
+ }
+ else
+ CHIDApi.Close(_Handle);
+
return Connected;
}
@@ -320,11 +334,11 @@ namespace Vocaluxe.Lib.Input.WiiMote
if (_Handle != IntPtr.Zero && Connected)
{
- byte[] buff = new byte[_ReportLength];
+ var buff = new byte[_ReportLength];
try
{
- CHIDApi.ReadTimeout(_Handle, out buff, _ReportLength, 100);
+ CHIDApi.ReadTimeout(_Handle, ref buff, _ReportLength, 200);
}
catch (Exception e)
{
@@ -348,7 +362,7 @@ namespace Vocaluxe.Lib.Input.WiiMote
return false;
}
- EInputReport type = (EInputReport)buff[0];
+ var type = (EInputReport)buff[0];
switch (type)
{
diff --git a/Vocaluxe/Lib/Playlist/CPlaylistFile.cs b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs
index ddf4849e..6c7f5228 100644
--- a/Vocaluxe/Lib/Playlist/CPlaylistFile.cs
+++ b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -75,14 +73,14 @@ namespace Vocaluxe.Lib.Playlist
filename = "1";
int i = 0;
- while (File.Exists(Path.Combine(CSettings.FolderPlaylists, filename + ".xml")))
+ while (File.Exists(Path.Combine(CSettings.DataPath, CSettings.FolderPlaylists, filename + ".xml")))
{
i++;
- if (!File.Exists(Path.Combine(CSettings.FolderPlaylists, filename + i + ".xml")))
+ if (!File.Exists(Path.Combine(CSettings.DataPath, CSettings.FolderPlaylists, filename + i + ".xml")))
filename += i;
}
- PlaylistFile = Path.Combine(CSettings.FolderPlaylists, filename + ".xml");
+ PlaylistFile = Path.Combine(CSettings.DataPath, CSettings.FolderPlaylists, filename + ".xml");
}
XmlWriter writer;
@@ -147,7 +145,7 @@ namespace Vocaluxe.Lib.Playlist
Songs = new List();
List songs = xmlReader.GetValues("Songs");
- EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
+ var gm = EGameMode.TR_GAMEMODE_NORMAL;
foreach (string song in songs)
{
@@ -157,7 +155,7 @@ namespace Vocaluxe.Lib.Playlist
xmlReader.GetValue("//root/Songs/" + song + "/Title", out title, String.Empty);
xmlReader.TryGetEnumValue("//root/Songs/" + song + "/GameMode", ref gm);
- CPlaylistSong playlistSong = new CPlaylistSong {SongID = -1};
+ var playlistSong = new CPlaylistSong {SongID = -1};
foreach (CSong curSong in CSongs.AllSongs)
{
@@ -182,14 +180,18 @@ namespace Vocaluxe.Lib.Playlist
public void AddSong(int songID)
{
- CPlaylistSong song = new CPlaylistSong {SongID = songID, GameMode = CSongs.GetSong(songID).IsDuet ? EGameMode.TR_GAMEMODE_DUET : EGameMode.TR_GAMEMODE_NORMAL};
+ var song = new CPlaylistSong
+ {
+ SongID = songID,
+ GameMode = CSongs.GetSong(songID).IsGameModeAvailable(EGameMode.TR_GAMEMODE_DUET) ? EGameMode.TR_GAMEMODE_DUET : EGameMode.TR_GAMEMODE_NORMAL
+ };
Songs.Add(song);
}
public void AddSong(int songID, EGameMode gm)
{
- CPlaylistSong song = new CPlaylistSong {SongID = songID, GameMode = gm};
+ var song = new CPlaylistSong {SongID = songID, GameMode = gm};
Songs.Add(song);
}
@@ -216,7 +218,7 @@ namespace Vocaluxe.Lib.Playlist
if (sourceNr < 0 || destNr < 0 || sourceNr == destNr || sourceNr > Songs.Count - 1 || destNr > Songs.Count - 1)
return;
- CPlaylistSong ps = new CPlaylistSong(Songs[sourceNr]);
+ var ps = new CPlaylistSong(Songs[sourceNr]);
Songs.RemoveAt(sourceNr);
Songs.Insert(destNr, ps);
}
@@ -226,7 +228,7 @@ namespace Vocaluxe.Lib.Playlist
if (destNr < 0 || destNr > Songs.Count - 1)
return;
- CPlaylistSong ps = new CPlaylistSong(songID, gm);
+ var ps = new CPlaylistSong(songID, gm);
Songs.Insert(destNr, ps);
}
}
diff --git a/Vocaluxe/Lib/Sound/CDirectSoundRecord.cs b/Vocaluxe/Lib/Sound/CDirectSoundRecord.cs
index fad206a4..15fcc291 100644
--- a/Vocaluxe/Lib/Sound/CDirectSoundRecord.cs
+++ b/Vocaluxe/Lib/Sound/CDirectSoundRecord.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.ObjectModel;
@@ -53,9 +51,9 @@ namespace Vocaluxe.Lib.Sound
int id = 0;
foreach (DeviceInformation dev in devices)
{
- using (DirectSoundCapture ds = new DirectSoundCapture(dev.DriverGuid))
+ using (var ds = new DirectSoundCapture(dev.DriverGuid))
{
- CRecordDevice device = new CRecordDevice {Driver = dev.DriverGuid.ToString(), ID = id, Name = dev.Description, Channels = ds.Capabilities.Channels};
+ var device = new CRecordDevice {Driver = dev.DriverGuid.ToString(), ID = id, Name = dev.Description, Channels = ds.Capabilities.Channels};
if (device.Channels > 2)
device.Channels = 2; //more are not supported in vocaluxe
@@ -89,9 +87,9 @@ namespace Vocaluxe.Lib.Sound
foreach (CBuffer buffer in _Buffer)
buffer.Reset();
- bool[] active = new bool[_Devices.Count];
- Guid[] guid = new Guid[_Devices.Count];
- short[] channels = new short[_Devices.Count];
+ var active = new bool[_Devices.Count];
+ var guid = new Guid[_Devices.Count];
+ var channels = new short[_Devices.Count];
for (int dev = 0; dev < _Devices.Count; dev++)
{
active[dev] = false;
@@ -105,7 +103,7 @@ namespace Vocaluxe.Lib.Sound
{
if (active[i])
{
- CSoundCardSource source = new CSoundCardSource(guid[i], channels[i]) {SampleRateKhz = 44.1};
+ var source = new CSoundCardSource(guid[i], channels[i]) {SampleRateKhz = 44.1};
source.SampleDataReady += _OnDataReady;
source.Start();
@@ -209,8 +207,8 @@ namespace Vocaluxe.Lib.Sound
{
if (_Initialized)
{
- byte[] leftBuffer = new byte[e.Data.Length / 2];
- byte[] rightBuffer = new byte[e.Data.Length / 2];
+ var leftBuffer = new byte[e.Data.Length / 2];
+ var rightBuffer = new byte[e.Data.Length / 2];
//[]: Sample, L: Left channel R: Right channel
//[LR][LR][LR][LR][LR][LR]
@@ -318,7 +316,7 @@ namespace Vocaluxe.Lib.Sound
for (int i = 0; i < _BufferPortionCount; i++)
{
- NotificationPosition notification = new NotificationPosition {Offset = _BufferPortionCount - 1 + (_BufferPortionSize * i), Event = new AutoResetEvent(false)};
+ var notification = new NotificationPosition {Offset = _BufferPortionCount - 1 + (_BufferPortionSize * i), Event = new AutoResetEvent(false)};
_Notifications.Add(notification);
}
@@ -371,7 +369,7 @@ namespace Vocaluxe.Lib.Sound
int bufferPortionSamples = _BufferPortionSize / sizeof(byte);
// Buffer type must match this.waveFormat.FormatTag and this.waveFormat.BitsPerSample
- byte[] bufferPortion = new byte[bufferPortionSamples];
+ var bufferPortion = new byte[bufferPortionSamples];
_CaptureBuffer.Start(true);
diff --git a/Vocaluxe/Lib/Sound/CGstreamerAudio.cs b/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
index 998bdbde..77629f1b 100644
--- a/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
+++ b/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -65,14 +63,14 @@ namespace Vocaluxe.Lib.Sound
public int Load(string media)
{
- Uri u = new Uri(media);
+ var u = new Uri(media);
int i = CGstreamerAudioWrapper.Load(u.AbsoluteUri);
return i;
}
public int Load(string media, bool prescan)
{
- Uri u = new Uri(media);
+ var u = new Uri(media);
int i = CGstreamerAudioWrapper.Load(u.AbsoluteUri, prescan);
return i;
}
diff --git a/Vocaluxe/Lib/Sound/COpenALPlay.cs b/Vocaluxe/Lib/Sound/COpenALPlay.cs
index 36017220..29ea7c75 100644
--- a/Vocaluxe/Lib/Sound/COpenALPlay.cs
+++ b/Vocaluxe/Lib/Sound/COpenALPlay.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Linq;
@@ -106,8 +104,8 @@ namespace Vocaluxe.Lib.Sound
public int Load(string media, bool prescan)
{
- SAudioStreams stream = new SAudioStreams(0);
- COpenAlStream decoder = new COpenAlStream();
+ var stream = new SAudioStreams(0);
+ var decoder = new COpenAlStream();
if (decoder.Open(media) > -1)
{
@@ -595,7 +593,7 @@ namespace Vocaluxe.Lib.Sound
_CurrentTime = 0f;
_Timer.Reset();
- SAudioStreams stream = new SAudioStreams(0) {Handle = _Buffers[0]};
+ var stream = new SAudioStreams(0) {Handle = _Buffers[0]};
if (stream.Handle != 0)
{
@@ -782,7 +780,7 @@ namespace Vocaluxe.Lib.Sound
return;
}
- byte[] buf = new byte[_BufferSize];
+ var buf = new byte[_BufferSize];
lock (_MutexData)
{
@@ -793,7 +791,7 @@ namespace Vocaluxe.Lib.Sound
_Data.Read(buf);
- byte[] b = new byte[2];
+ var b = new byte[2];
for (int i = 0; i < buf.Length; i += _ByteCount)
{
b[0] = buf[i];
diff --git a/Vocaluxe/Lib/Sound/CPortAudioPlay.cs b/Vocaluxe/Lib/Sound/CPortAudioPlay.cs
index 9c195495..94158c71 100644
--- a/Vocaluxe/Lib/Sound/CPortAudioPlay.cs
+++ b/Vocaluxe/Lib/Sound/CPortAudioPlay.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -91,8 +89,8 @@ namespace Vocaluxe.Lib.Sound
public int Load(string media, bool prescan)
{
- SAudioStreams stream = new SAudioStreams(0);
- CPortAudioStream decoder = new CPortAudioStream();
+ var stream = new SAudioStreams(0);
+ var decoder = new CPortAudioStream();
if (decoder.Open(media) > -1)
{
@@ -599,11 +597,11 @@ namespace Vocaluxe.Lib.Sound
_CurrentTime = 0f;
_SyncTimer.Time = _CurrentTime;
- SAudioStreams stream = new SAudioStreams(0);
+ var stream = new SAudioStreams(0);
- IntPtr data = new IntPtr(0);
+ var data = new IntPtr(0);
- CPortAudio.SPaStreamParameters outputParams = new CPortAudio.SPaStreamParameters
+ var outputParams = new CPortAudio.SPaStreamParameters
{
ChannelCount = format.ChannelCount,
Device = _ApiInfo.DefaultOutputDevice,
@@ -611,7 +609,7 @@ namespace Vocaluxe.Lib.Sound
SuggestedLatency = _OutputDeviceInfo.DefaultLowOutputLatency
};
- uint bufsize = (uint)CConfig.AudioBufferSize;
+ var bufsize = (uint)CConfig.AudioBufferSize;
lock (_Mutex)
{
_ErrorCheck("OpenDefaultStream (playback)", CPortAudio.Pa_OpenStream(
@@ -797,7 +795,7 @@ namespace Vocaluxe.Lib.Sound
CPortAudio.EPaStreamCallbackFlags statusFlags,
IntPtr userData)
{
- byte[] buf = new byte[frameCount * _ByteCount];
+ var buf = new byte[frameCount * _ByteCount];
if (_Paused)
{
@@ -818,7 +816,7 @@ namespace Vocaluxe.Lib.Sound
{
_Data.Read(buf);
- byte[] b = new byte[2];
+ var b = new byte[2];
for (int i = 0; i < buf.Length; i += _ByteCount)
{
b[0] = buf[i];
diff --git a/Vocaluxe/Lib/Sound/CPortAudioRecord.cs b/Vocaluxe/Lib/Sound/CPortAudioRecord.cs
index 0f51fa31..982d63bb 100644
--- a/Vocaluxe/Lib/Sound/CPortAudioRecord.cs
+++ b/Vocaluxe/Lib/Sound/CPortAudioRecord.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.ObjectModel;
@@ -73,7 +71,7 @@ namespace Vocaluxe.Lib.Sound
CPortAudio.SPaDeviceInfo info = CPortAudio.PaGetDeviceInfo(i);
if (info.HostApi == hostAPI && info.MaxInputChannels > 0)
{
- CRecordDevice dev = new CRecordDevice {ID = i, Name = info.Name, Driver = info.Name + i, Channels = info.MaxInputChannels};
+ var dev = new CRecordDevice {ID = i, Name = info.Name, Driver = info.Name + i, Channels = info.MaxInputChannels};
if (dev.Channels > 2)
dev.Channels = 2; //more are not supported in vocaluxe
@@ -123,7 +121,7 @@ namespace Vocaluxe.Lib.Sound
for (int i = 0; i < _RecHandle.Length; i++)
_RecHandle[i] = IntPtr.Zero;
- bool[] active = new bool[_Devices.Count];
+ var active = new bool[_Devices.Count];
for (int dev = 0; dev < _Devices.Count; dev++)
{
active[dev] = false;
@@ -135,7 +133,7 @@ namespace Vocaluxe.Lib.Sound
{
if (active[i])
{
- CPortAudio.SPaStreamParameters inputParams = new CPortAudio.SPaStreamParameters
+ var inputParams = new CPortAudio.SPaStreamParameters
{
ChannelCount = _Devices[i].Channels,
Device = _Devices[i].ID,
@@ -283,9 +281,9 @@ namespace Vocaluxe.Lib.Sound
frameCount *= 4;
if (frameCount > 0 && input != IntPtr.Zero)
{
- byte[] recbuffer = new byte[frameCount];
- byte[] leftBuffer = new byte[frameCount / 2];
- byte[] rightBuffer = new byte[frameCount / 2];
+ var recbuffer = new byte[frameCount];
+ var leftBuffer = new byte[frameCount / 2];
+ var rightBuffer = new byte[frameCount / 2];
// copy from managed to unmanaged memory
Marshal.Copy(input, recbuffer, 0, (int)frameCount);
diff --git a/Vocaluxe/Lib/Sound/Decoder/CAudioDecoderFFmpeg.cs b/Vocaluxe/Lib/Sound/Decoder/CAudioDecoderFFmpeg.cs
index 15e06b56..d1503dfc 100644
--- a/Vocaluxe/Lib/Sound/Decoder/CAudioDecoderFFmpeg.cs
+++ b/Vocaluxe/Lib/Sound/Decoder/CAudioDecoderFFmpeg.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -124,7 +122,7 @@ namespace Vocaluxe.Lib.Sound.Decoder
public float GetLength()
{
- return _FileOpened ? _Instance.Info.Duration / 1000f:0;
+ return _FileOpened ? _Instance.Info.Duration / 1000f : 0;
}
public void SetPosition(float time)
@@ -134,7 +132,7 @@ namespace Vocaluxe.Lib.Sound.Decoder
try
{
- CAcinerella.AcSeek(_Audiodecoder, (time>_CurrentTime)?0:-1, (Int64)(time * 1000f));
+ CAcinerella.AcSeek(_Audiodecoder, (time > _CurrentTime) ? 0 : -1, (Int64)(time * 1000f));
}
catch (Exception)
{
@@ -161,7 +159,7 @@ namespace Vocaluxe.Lib.Sound.Decoder
if (frameFinished)
{
- SACDecoder decoder = (SACDecoder)Marshal.PtrToStructure(_Audiodecoder, typeof(SACDecoder));
+ var decoder = (SACDecoder)Marshal.PtrToStructure(_Audiodecoder, typeof(SACDecoder));
timeStamp = (float)decoder.Timecode;
_CurrentTime = timeStamp;
diff --git a/Vocaluxe/Lib/Sound/Decoder/IAudioDecoder.cs b/Vocaluxe/Lib/Sound/Decoder/IAudioDecoder.cs
index 5ebcda20..7308ba09 100644
--- a/Vocaluxe/Lib/Sound/Decoder/IAudioDecoder.cs
+++ b/Vocaluxe/Lib/Sound/Decoder/IAudioDecoder.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
namespace Vocaluxe.Lib.Sound.Decoder
diff --git a/Vocaluxe/Lib/Sound/Gstreamer/CGstreamerAudioWrapper.cs b/Vocaluxe/Lib/Sound/Gstreamer/CGstreamerAudioWrapper.cs
index 737c0010..e4db4114 100644
--- a/Vocaluxe/Lib/Sound/Gstreamer/CGstreamerAudioWrapper.cs
+++ b/Vocaluxe/Lib/Sound/Gstreamer/CGstreamerAudioWrapper.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Runtime.InteropServices;
diff --git a/Vocaluxe/Lib/Sound/IPlayback.cs b/Vocaluxe/Lib/Sound/IPlayback.cs
index e021692f..369af995 100644
--- a/Vocaluxe/Lib/Sound/IPlayback.cs
+++ b/Vocaluxe/Lib/Sound/IPlayback.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
namespace Vocaluxe.Lib.Sound
diff --git a/Vocaluxe/Lib/Sound/IRecord.cs b/Vocaluxe/Lib/Sound/IRecord.cs
index e7de0ce8..f4568a93 100644
--- a/Vocaluxe/Lib/Sound/IRecord.cs
+++ b/Vocaluxe/Lib/Sound/IRecord.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Lib/Sound/Portaudio/PortAudio.cs b/Vocaluxe/Lib/Sound/Portaudio/PortAudio.cs
index 8b357690..d8c6c9f5 100644
--- a/Vocaluxe/Lib/Sound/Portaudio/PortAudio.cs
+++ b/Vocaluxe/Lib/Sound/Portaudio/PortAudio.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Lib/Video/Acinerella/CAcinerella.cs b/Vocaluxe/Lib/Video/Acinerella/CAcinerella.cs
index bfc814c9..29ae5278 100644
--- a/Vocaluxe/Lib/Video/Acinerella/CAcinerella.cs
+++ b/Vocaluxe/Lib/Video/Acinerella/CAcinerella.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -363,7 +361,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
{
lock (_Lock)
{
- return _ac_decode_package(pAcPackage, pAcDecoder)!=0;
+ return _ac_decode_package(pAcPackage, pAcDecoder) != 0;
}
}
@@ -374,7 +372,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
{
lock (_Lock)
{
- return _ac_get_audio_frame(pAcInstance, pAcDecoder)!=0;
+ return _ac_get_audio_frame(pAcInstance, pAcDecoder) != 0;
}
}
@@ -385,7 +383,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
{
lock (_Lock)
{
- return _ac_get_frame(pAcInstance, pAcDecoder)!=0;
+ return _ac_get_frame(pAcInstance, pAcDecoder) != 0;
}
}
@@ -396,7 +394,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
{
lock (_Lock)
{
- return _ac_skip_frames(pAcInstance, pAcDecoder, num)!=0;
+ return _ac_skip_frames(pAcInstance, pAcDecoder, num) != 0;
}
}
@@ -412,7 +410,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
{
lock (_Lock)
{
- return _ac_seek(pAcDecoder, dir, targetPos)!=0;
+ return _ac_seek(pAcDecoder, dir, targetPos) != 0;
}
}
diff --git a/Vocaluxe/Lib/Video/Acinerella/CDecoder.cs b/Vocaluxe/Lib/Video/Acinerella/CDecoder.cs
index 5ba37c91..a22aa3bf 100644
--- a/Vocaluxe/Lib/Video/Acinerella/CDecoder.cs
+++ b/Vocaluxe/Lib/Video/Acinerella/CDecoder.cs
@@ -1,3 +1,20 @@
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
using System;
using System.Diagnostics;
using System.IO;
@@ -130,7 +147,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
else
{
videoTime = 0;
- return false;
+ return true;
}
_UploadNewFrame(ref frame);
videoTime = _LastShownTime;
diff --git a/Vocaluxe/Lib/Video/Acinerella/CFramebuffer.cs b/Vocaluxe/Lib/Video/Acinerella/CFramebuffer.cs
index 8aaa6287..b0c2704f 100644
--- a/Vocaluxe/Lib/Video/Acinerella/CFramebuffer.cs
+++ b/Vocaluxe/Lib/Video/Acinerella/CFramebuffer.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Runtime.InteropServices;
namespace Vocaluxe.Lib.Video.Acinerella
diff --git a/Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs b/Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs
index 85d9b25c..27f2baeb 100644
--- a/Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs
+++ b/Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.Generic;
@@ -36,7 +34,7 @@ namespace Vocaluxe.Lib.Video
public void CloseAll()
{
- foreach (var decoder in _Decoder.Values)
+ foreach (CDecoder decoder in _Decoder.Values)
decoder.Close();
_Decoder.Clear();
}
diff --git a/Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs b/Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs
index f37b0dc8..31740333 100644
--- a/Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs
+++ b/Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -55,7 +53,7 @@ namespace Vocaluxe.Lib.Video
int i = -1;
try
{
- Uri u = new Uri(videoFileName);
+ var u = new Uri(videoFileName);
i = CGstreamerVideoWrapper.LoadVideo(u.AbsoluteUri);
return i;
}
diff --git a/Vocaluxe/Lib/Video/Gstreamer/CGstreamerVideoWrapper.cs b/Vocaluxe/Lib/Video/Gstreamer/CGstreamerVideoWrapper.cs
index 88c634d3..5c17198a 100644
--- a/Vocaluxe/Lib/Video/Gstreamer/CGstreamerVideoWrapper.cs
+++ b/Vocaluxe/Lib/Video/Gstreamer/CGstreamerVideoWrapper.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Lib/Video/IVideoDecoder.cs b/Vocaluxe/Lib/Video/IVideoDecoder.cs
index 6c48a24e..3731081b 100644
--- a/Vocaluxe/Lib/Video/IVideoDecoder.cs
+++ b/Vocaluxe/Lib/Video/IVideoDecoder.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using VocaluxeLib.Draw;
diff --git a/Vocaluxe/Lib/Webcam/CAForgeNet.cs b/Vocaluxe/Lib/Webcam/CAForgeNet.cs
index 2fb2ff6e..b07c9f46 100644
--- a/Vocaluxe/Lib/Webcam/CAForgeNet.cs
+++ b/Vocaluxe/Lib/Webcam/CAForgeNet.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using AForge.Video;
@@ -65,7 +63,7 @@ namespace Vocaluxe.Lib.Webcam
{
lock (_MutexData)
{
- Bitmap bmp = new Bitmap(_Width, _Height);
+ var bmp = new Bitmap(_Width, _Height);
BitmapData bitmapdata = bmp.LockBits(new Rectangle(0, 0, _Width, _Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
Marshal.Copy(_Data, 0, bitmapdata.Scan0, _Data.Length);
bmp.UnlockBits(bitmapdata);
@@ -80,17 +78,17 @@ namespace Vocaluxe.Lib.Webcam
_WebcamDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach (FilterInfo info in _WebcamDevices)
{
- SWebcamDevice device = new SWebcamDevice
+ var device = new SWebcamDevice
{
Name = info.Name,
MonikerString = info.MonikerString,
Capabilities = new List()
};
- VideoCaptureDevice tmpdev = new VideoCaptureDevice(info.MonikerString);
+ var tmpdev = new VideoCaptureDevice(info.MonikerString);
foreach (VideoCapabilities capabilities in tmpdev.VideoCapabilities)
{
- SCapabilities item = new SCapabilities
+ var item = new SCapabilities
{
Framerate = capabilities.FrameRate,
Height = capabilities.FrameSize.Height,
diff --git a/Vocaluxe/Lib/Webcam/IWebcam.cs b/Vocaluxe/Lib/Webcam/IWebcam.cs
index 6ac143ee..aa108411 100644
--- a/Vocaluxe/Lib/Webcam/IWebcam.cs
+++ b/Vocaluxe/Lib/Webcam/IWebcam.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.Generic;
diff --git a/Vocaluxe/Program.cs b/Vocaluxe/Program.cs
index 63758783..affc6cc3 100644
--- a/Vocaluxe/Program.cs
+++ b/Vocaluxe/Program.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -30,7 +28,6 @@ using Vocaluxe.Base.Server;
namespace Vocaluxe
{
- // just a small comment for the new develop branch
static class CMainProgram
{
private static CSplashScreen _SplashScreen;
@@ -77,6 +74,9 @@ namespace Vocaluxe
// Init Log
CLog.Init();
+ if (!CProgrammHelper.CheckRequirements())
+ return;
+
CMain.Init();
CSettings.CreateFolders();
Application.DoEvents();
@@ -253,7 +253,7 @@ namespace Vocaluxe
[HandleProcessCorruptedStateExceptions]
private static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args)
{
- Exception e = (Exception)args.ExceptionObject;
+ var e = (Exception)args.ExceptionObject;
string stackTrace = "";
try
{
diff --git a/Vocaluxe/Properties/AssemblyInfo.cs b/Vocaluxe/Properties/AssemblyInfo.cs
index 533d944d..96cfb9a6 100644
--- a/Vocaluxe/Properties/AssemblyInfo.cs
+++ b/Vocaluxe/Properties/AssemblyInfo.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Reflection;
@@ -51,5 +49,5 @@ using System.Runtime.InteropServices;
// Revision
//
-[assembly: AssemblyVersion("0.3.0.80")]
-[assembly: AssemblyFileVersion("0.3.0.80")]
\ No newline at end of file
+[assembly: AssemblyVersion("0.3.0.81")]
+[assembly: AssemblyFileVersion("0.3.0.81")]
\ No newline at end of file
diff --git a/Vocaluxe/Screens/CPopupScreenPlayerControl.cs b/Vocaluxe/Screens/CPopupScreenPlayerControl.cs
index 1856b90d..9ffe1779 100644
--- a/Vocaluxe/Screens/CPopupScreenPlayerControl.cs
+++ b/Vocaluxe/Screens/CPopupScreenPlayerControl.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -201,8 +199,8 @@ namespace Vocaluxe.Screens
CGame.Reset();
CGame.ClearSongs();
- EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
- if (CSongs.AllSongs[songNr].IsDuet)
+ var gm = EGameMode.TR_GAMEMODE_NORMAL;
+ if (CSongs.AllSongs[songNr].IsGameModeAvailable(EGameMode.TR_GAMEMODE_DUET))
gm = EGameMode.TR_GAMEMODE_DUET;
CGame.AddSong(songNr, gm);
diff --git a/Vocaluxe/Screens/CPopupScreenVolumeControl.cs b/Vocaluxe/Screens/CPopupScreenVolumeControl.cs
index 8b75e482..f95f651a 100644
--- a/Vocaluxe/Screens/CPopupScreenVolumeControl.cs
+++ b/Vocaluxe/Screens/CPopupScreenVolumeControl.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using Vocaluxe.Base;
diff --git a/Vocaluxe/Screens/CScreenCredits.cs b/Vocaluxe/Screens/CScreenCredits.cs
index c73a5df1..06d36d1f 100644
--- a/Vocaluxe/Screens/CScreenCredits.cs
+++ b/Vocaluxe/Screens/CScreenCredits.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -293,12 +291,12 @@ namespace Vocaluxe.Screens
CStatic image = GetNewStatic(texture, new SColorF(1, 1, 1, 1), new SRectF(-1, -1, 400, 120, -4));
- SRectF particleRect = new SRectF(-1, -1, partRectSize, partRectSize, -6);
- SRectF imgDotRect = new SRectF(particleRect) {Z = -5};
+ var particleRect = new SRectF(-1, -1, partRectSize, partRectSize, -6);
+ var imgDotRect = new SRectF(particleRect) {Z = -5};
CStatic imgDot = GetNewStatic(texDot, new SColorF(1, 1, 1, 1), imgDotRect);
CParticleEffect particle = _GetStarParticles(partCount, isRight, particleRect, bigParticles);
- CCreditName credit = new CCreditName(image, imgDot, particle, particleOffsetX, particleOffsetY);
+ var credit = new CCreditName(image, imgDot, particle, particleOffsetX, particleOffsetY);
if (isRight)
{
@@ -323,8 +321,8 @@ namespace Vocaluxe.Screens
new SRectF((float)(CSettings.RenderW - _TexLogo.OrigSize.Width) / 2, -270, _TexLogo.OrigSize.Width, _TexLogo.OrigSize.Height, -2));
//Little stars for logo
- int numstars = (int)(_Logo.Rect.W * 0.25f / 2f);
- SRectF partRect = new SRectF(_Logo.Rect.X, _Logo.Rect.Y, _Logo.Rect.W, _Logo.Rect.H, -1);
+ var numstars = (int)(_Logo.Rect.W * 0.25f / 2f);
+ var partRect = new SRectF(_Logo.Rect.X, _Logo.Rect.Y, _Logo.Rect.W, _Logo.Rect.H, -1);
_StarsRed = _GetStarParticles(numstars, true, partRect, true);
_StarsBlue = _GetStarParticles(numstars, false, partRect, true);
diff --git a/Vocaluxe/Screens/CScreenHighscore.cs b/Vocaluxe/Screens/CScreenHighscore.cs
index 56e70ecf..933c2706 100644
--- a/Vocaluxe/Screens/CScreenHighscore.cs
+++ b/Vocaluxe/Screens/CScreenHighscore.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -56,7 +54,7 @@ namespace Vocaluxe.Screens
{
base.Init();
- List texts = new List {_TextSongName, _TextSongMode};
+ var texts = new List {_TextSongName, _TextSongMode};
_TextNumber = new string[_NumEntrys];
for (int i = 0; i < _NumEntrys; i++)
diff --git a/Vocaluxe/Screens/CScreenLoad.cs b/Vocaluxe/Screens/CScreenLoad.cs
index 8185520d..e5ccaae2 100644
--- a/Vocaluxe/Screens/CScreenLoad.cs
+++ b/Vocaluxe/Screens/CScreenLoad.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Diagnostics;
diff --git a/Vocaluxe/Screens/CScreenMain.cs b/Vocaluxe/Screens/CScreenMain.cs
index 3baff4be..6cd878bc 100644
--- a/Vocaluxe/Screens/CScreenMain.cs
+++ b/Vocaluxe/Screens/CScreenMain.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Windows.Forms;
diff --git a/Vocaluxe/Screens/CScreenNames.cs b/Vocaluxe/Screens/CScreenNames.cs
index eed8851b..62a99c37 100644
--- a/Vocaluxe/Screens/CScreenNames.cs
+++ b/Vocaluxe/Screens/CScreenNames.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -24,7 +22,7 @@ using Vocaluxe.Base;
using VocaluxeLib;
using VocaluxeLib.Draw;
using VocaluxeLib.Menu;
-using VocaluxeLib.Profile;
+using VocaluxeLib.Songs;
namespace Vocaluxe.Screens
{
@@ -71,14 +69,14 @@ namespace Vocaluxe.Screens
{
base.Init();
- List statics = new List();
+ var statics = new List();
statics.AddRange(_StaticPlayerAvatar);
statics.AddRange(_StaticPlayer);
statics.Add(_StaticWarningMics);
statics.Add(_StaticWarningProfiles);
_ThemeStatics = statics.ToArray();
- List texts = new List {_SelectSlidePlayerNumber};
+ var texts = new List {_SelectSlidePlayerNumber};
texts.AddRange(_SelectSlideDuetPlayer);
_ThemeSelectSlides = texts.ToArray();
@@ -411,13 +409,9 @@ namespace Vocaluxe.Screens
if (CHelper.IsInBounds(_Statics[_StaticPlayer[i]].Rect, mouseEvent))
{
if (_SelectingSwitchNr > -1 && CGame.Players[i].ProfileID > -1)
- {
_UpdateSelectedProfile(_SelectingSwitchNr, CGame.Players[i].ProfileID);
- }
else if (_SelectingSwitchNr > -1)
- {
_ResetPlayerSelection(_SelectingSwitchNr);
- }
if (!CProfiles.IsProfileIDValid(_SelectedProfileID))
return true;
@@ -427,9 +421,7 @@ namespace Vocaluxe.Screens
}
//Selected player is dropped out of area
if (_SelectingSwitchNr > -1)
- {
_ResetPlayerSelection(_SelectingSwitchNr);
- }
}
_SelectingSwitchNr = -1;
_SelectedProfileID = -1;
@@ -449,7 +441,7 @@ namespace Vocaluxe.Screens
return true;
_UpdateSelectedProfile(_SelectingFastPlayerNr - 1, _SelectedProfileID);
-
+
_SelectingFastPlayerNr++;
if (_SelectingFastPlayerNr <= CGame.NumPlayer)
_NameSelections[_NameSelection].FastSelection(true, _SelectingFastPlayerNr);
@@ -606,6 +598,8 @@ namespace Vocaluxe.Screens
_CheckMics();
_CheckPlayers();
+ CSong firstSong = CGame.GetSong(0);
+
for (int i = 0; i < CSettings.MaxNumPlayer; i++)
{
_Statics[_StaticPlayerAvatar[i]].Texture = CProfiles.IsProfileIDValid(CGame.Players[i].ProfileID) ?
@@ -616,8 +610,9 @@ namespace Vocaluxe.Screens
{
_SelectSlides[_SelectSlideDuetPlayer[i]].Clear();
_SelectSlides[_SelectSlideDuetPlayer[i]].Visible = i + 1 <= CGame.NumPlayer;
- _SelectSlides[_SelectSlideDuetPlayer[i]].AddValue(CGame.GetSong(1).DuetPart1);
- _SelectSlides[_SelectSlideDuetPlayer[i]].AddValue(CGame.GetSong(1).DuetPart2);
+
+ for (int j = 0; j < firstSong.Notes.VoiceCount; j++)
+ _SelectSlides[_SelectSlideDuetPlayer[i]].AddValue(firstSong.Notes.VoiceNames[j]);
_SelectSlides[_SelectSlideDuetPlayer[i]].Selection = i % 2;
}
else
@@ -633,7 +628,7 @@ namespace Vocaluxe.Screens
for (int i = 0; i < CGame.NumPlayer; i++)
{
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
- CGame.Players[i].LineNr = _SelectSlides[_SelectSlideDuetPlayer[i]].Selection;
+ CGame.Players[i].VoiceNr = _SelectSlides[_SelectSlideDuetPlayer[i]].Selection;
}
CGraphics.FadeTo(EScreens.ScreenSing);
@@ -726,7 +721,7 @@ namespace Vocaluxe.Screens
private void _CheckMics()
{
- List playerWithoutMicro = new List();
+ var playerWithoutMicro = new List();
for (int player = 0; player < CConfig.NumPlayer; player++)
{
if (!CConfig.IsMicConfig(player + 1))
@@ -764,7 +759,7 @@ namespace Vocaluxe.Screens
private void _CheckPlayers()
{
- List playerWithoutProfile = new List();
+ var playerWithoutProfile = new List();
for (int player = 0; player < CConfig.NumPlayer; player++)
{
if (CGame.Players[player].ProfileID < 0)
diff --git a/Vocaluxe/Screens/CScreenOptions.cs b/Vocaluxe/Screens/CScreenOptions.cs
index b8281ca3..627b6027 100644
--- a/Vocaluxe/Screens/CScreenOptions.cs
+++ b/Vocaluxe/Screens/CScreenOptions.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Windows.Forms;
diff --git a/Vocaluxe/Screens/CScreenOptionsGame.cs b/Vocaluxe/Screens/CScreenOptionsGame.cs
index 8ba0f0ab..16d2f30e 100644
--- a/Vocaluxe/Screens/CScreenOptionsGame.cs
+++ b/Vocaluxe/Screens/CScreenOptionsGame.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Windows.Forms;
diff --git a/Vocaluxe/Screens/CScreenOptionsLyrics.cs b/Vocaluxe/Screens/CScreenOptionsLyrics.cs
index 1287a9f6..e2093af4 100644
--- a/Vocaluxe/Screens/CScreenOptionsLyrics.cs
+++ b/Vocaluxe/Screens/CScreenOptionsLyrics.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Windows.Forms;
diff --git a/Vocaluxe/Screens/CScreenOptionsRecord.cs b/Vocaluxe/Screens/CScreenOptionsRecord.cs
index 36a7f66d..3d8bdbf8 100644
--- a/Vocaluxe/Screens/CScreenOptionsRecord.cs
+++ b/Vocaluxe/Screens/CScreenOptionsRecord.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.Generic;
@@ -75,7 +73,7 @@ namespace Vocaluxe.Screens
{
base.Init();
- List values = new List {_StaticWarning};
+ var values = new List {_StaticWarning};
values.AddRange(_StaticEnergyChannel);
_ThemeStatics = values.ToArray();
@@ -369,11 +367,11 @@ namespace Vocaluxe.Screens
{
if (_ChannelEnergy[i] > 0f)
{
- SRectF rect = new SRectF(_Statics[_StaticEnergyChannel[i]].Rect.X,
- _Statics[_StaticEnergyChannel[i]].Rect.Y,
- _Statics[_StaticEnergyChannel[i]].Rect.W * _ChannelEnergy[i],
- _Statics[_StaticEnergyChannel[i]].Rect.H,
- _Statics[_StaticEnergyChannel[i]].Rect.Z);
+ var rect = new SRectF(_Statics[_StaticEnergyChannel[i]].Rect.X,
+ _Statics[_StaticEnergyChannel[i]].Rect.Y,
+ _Statics[_StaticEnergyChannel[i]].Rect.W * _ChannelEnergy[i],
+ _Statics[_StaticEnergyChannel[i]].Rect.H,
+ _Statics[_StaticEnergyChannel[i]].Rect.Z);
CDraw.DrawTexture(_Statics[_StaticEnergyChannel[i]].Texture, _Statics[_StaticEnergyChannel[i]].Rect,
new SColorF(1f, 1f, 1f, 1f), rect);
@@ -465,7 +463,7 @@ namespace Vocaluxe.Screens
private bool _CheckMicConfig()
{
- bool[] isSet = new bool[CSettings.MaxNumPlayer];
+ var isSet = new bool[CSettings.MaxNumPlayer];
for (int i = 0; i < CSettings.MaxNumPlayer; i++)
isSet[i] = false;
diff --git a/Vocaluxe/Screens/CScreenOptionsSound.cs b/Vocaluxe/Screens/CScreenOptionsSound.cs
index ef809fbb..847586f8 100644
--- a/Vocaluxe/Screens/CScreenOptionsSound.cs
+++ b/Vocaluxe/Screens/CScreenOptionsSound.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Windows.Forms;
@@ -154,8 +152,8 @@ namespace Vocaluxe.Screens
CConfig.PreviewMusicVolume = _SelectSlides[_SelectSlidePreviewMusicVolume].Selection * 5;
CConfig.SaveConfig();
- EOffOn newOffOn = (EOffOn)_SelectSlides[_SelectSlideBackgroundMusic].Selection;
- EBackgroundMusicSource newSource = (EBackgroundMusicSource)_SelectSlides[_SelectSlideBackgroundMusicSource].Selection;
+ var newOffOn = (EOffOn)_SelectSlides[_SelectSlideBackgroundMusic].Selection;
+ var newSource = (EBackgroundMusicSource)_SelectSlides[_SelectSlideBackgroundMusicSource].Selection;
float newVolume = _SelectSlides[_SelectSlideBackgroundMusicVolume].Selection * 5;
CBackgroundMusic.CheckAndApplyConfig(newOffOn, newSource, newVolume);
diff --git a/Vocaluxe/Screens/CScreenOptionsTheme.cs b/Vocaluxe/Screens/CScreenOptionsTheme.cs
index be74c138..5bcbe620 100644
--- a/Vocaluxe/Screens/CScreenOptionsTheme.cs
+++ b/Vocaluxe/Screens/CScreenOptionsTheme.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Windows.Forms;
diff --git a/Vocaluxe/Screens/CScreenOptionsVideo.cs b/Vocaluxe/Screens/CScreenOptionsVideo.cs
index 71c11d97..7a7b57c2 100644
--- a/Vocaluxe/Screens/CScreenOptionsVideo.cs
+++ b/Vocaluxe/Screens/CScreenOptionsVideo.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Screens/CScreenParty.cs b/Vocaluxe/Screens/CScreenParty.cs
index 8288c573..ab6d5131 100644
--- a/Vocaluxe/Screens/CScreenParty.cs
+++ b/Vocaluxe/Screens/CScreenParty.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.Generic;
diff --git a/Vocaluxe/Screens/CScreenProfiles.cs b/Vocaluxe/Screens/CScreenProfiles.cs
index 08e37d59..24aef79b 100644
--- a/Vocaluxe/Screens/CScreenProfiles.cs
+++ b/Vocaluxe/Screens/CScreenProfiles.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -332,7 +330,7 @@ namespace Vocaluxe.Screens
private void _OnSaveSnapshot()
{
- string filename = Path.Combine(CSettings.FolderProfiles, "snapshot");
+ string filename = Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, "snapshot");
int i = 0;
while (File.Exists(filename + i + ".png"))
i++;
@@ -446,13 +444,16 @@ namespace Vocaluxe.Screens
int selectedAvatarID = _SelectSlides[_SelectSlideAvatars].ValueIndex;
_SelectSlides[_SelectSlideAvatars].Clear();
IEnumerable avatars = CProfiles.GetAvatars();
- foreach (CAvatar avatar in avatars)
+ if (avatars != null)
{
- _SelectSlides[_SelectSlideAvatars].AddValue(
- Path.GetFileName(avatar.FileName),
- null,
- avatar.ID,
- -1);
+ foreach (CAvatar avatar in avatars)
+ {
+ _SelectSlides[_SelectSlideAvatars].AddValue(
+ Path.GetFileName(avatar.FileName),
+ null,
+ avatar.ID,
+ -1);
+ }
}
if (keep)
diff --git a/Vocaluxe/Screens/CScreenScore.cs b/Vocaluxe/Screens/CScreenScore.cs
index 94838312..b1e06b1e 100644
--- a/Vocaluxe/Screens/CScreenScore.cs
+++ b/Vocaluxe/Screens/CScreenScore.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -60,13 +58,13 @@ namespace Vocaluxe.Screens
{
base.Init();
- List texts = new List {_TextSong};
+ var texts = new List {_TextSong};
_BuildTextStrings(ref texts);
_ThemeTexts = texts.ToArray();
- List statics = new List();
+ var statics = new List();
_BuildStaticStrings(ref statics);
_ThemeStatics = statics.ToArray();
@@ -123,13 +121,15 @@ namespace Vocaluxe.Screens
_Round = CGame.NumRounds > 1 ? 0 : 1;
_Points = CGame.GetPoints();
+ _SavePlayedSongs();
+
_SetVisibility();
_UpdateRatings();
}
public override bool UpdateGame()
{
- SPlayer[] players = new SPlayer[CGame.NumPlayer];
+ var players = new SPlayer[CGame.NumPlayer];
if (_Round != 0)
players = _Points.GetPlayer(_Round - 1, CGame.NumPlayer);
else
@@ -154,16 +154,16 @@ namespace Vocaluxe.Screens
if (_StaticPointsBarDrawnPoints[p] > players[p].Points)
_StaticPointsBarDrawnPoints[p] = players[p].Points;
- string direction = (string)_ScreenSettings[_ScreenSettingAnimationDirection].GetValue();
+ var direction = (string)_ScreenSettings[_ScreenSettingAnimationDirection].GetValue();
if (direction.ToLower() == "vertical")
{
_Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.W = ((float)_StaticPointsBarDrawnPoints[p]) *
- (_Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.W / 10000);
+ (_Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.W / CSettings.MaxScore);
}
else
{
_Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.H = ((float)_StaticPointsBarDrawnPoints[p]) *
- (_Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.H / 10000);
+ (_Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.H / CSettings.MaxScore);
_Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.Y = _Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.H +
_Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.Y -
_Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.H;
@@ -262,7 +262,7 @@ namespace Vocaluxe.Screens
private void _UpdateRatings()
{
CSong song = null;
- SPlayer[] players = new SPlayer[CGame.NumPlayer];
+ var players = new SPlayer[CGame.NumPlayer];
if (_Round != 0)
{
song = CGame.GetSong(_Round);
@@ -291,15 +291,14 @@ namespace Vocaluxe.Screens
players[p].Points = (int)Math.Round(players[p].Points / CGame.NumRounds);
}
+ var pointAnimDirection = (string)_ScreenSettings[_ScreenSettingAnimationDirection].GetValue();
for (int p = 0; p < players.Length; p++)
{
string name = CProfiles.GetPlayerName(players[p].ProfileID, p);
if (song != null && song.IsDuet)
{
- if (players[p].LineNr == 0 && song.DuetPart1 != "Part 1")
- name += " (" + song.DuetPart1 + ")";
- else if (players[p].LineNr == 1 && song.DuetPart2 != "Part 2")
- name += " (" + song.DuetPart2 + ")";
+ if (song.Notes.VoiceNames.IsSet(players[p].VoiceNr))
+ name += " (" + song.Notes.VoiceNames[players[p].VoiceNr] + ")";
}
_Texts[_TextNames[p, CGame.NumPlayer - 1]].Text = name;
@@ -323,8 +322,7 @@ namespace Vocaluxe.Screens
_Texts[_TextRatings[p, CGame.NumPlayer - 1]].Text = CLanguage.Translate(_GetRating((int)Math.Round(players[p].Points)));
_StaticPointsBarDrawnPoints[p] = 0.0;
- string direction = (string)_ScreenSettings[_ScreenSettingAnimationDirection].GetValue();
- if (direction.ToLower() == "vertical")
+ if (pointAnimDirection.ToLower() == "vertical")
_Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.W = 0;
else
{
@@ -341,10 +339,19 @@ namespace Vocaluxe.Screens
{
for (int p = 0; p < CGame.NumPlayer; p++)
{
- _Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.H = ((float)players[p].Points) * (_Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.H / 10000);
- _Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.Y = _Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.H +
- _Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.Y -
- _Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.H;
+ if (pointAnimDirection.ToLower() == "vertical")
+ {
+ _Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.W = ((float)players[p].Points) *
+ (_Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.W / CSettings.MaxScore);
+ }
+ else
+ {
+ _Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.H = ((float)players[p].Points) *
+ (_Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.H / CSettings.MaxScore);
+ _Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.Y = _Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.H +
+ _Statics[_StaticPointsBarBG[p, CGame.NumPlayer - 1]].Rect.Y -
+ _Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.H;
+ }
_StaticPointsBarDrawnPoints[p] = players[p].Points;
}
}
@@ -389,6 +396,25 @@ namespace Vocaluxe.Screens
}
}
+ private void _SavePlayedSongs()
+ {
+ for (int round = 0; round < _Points.NumRounds; round++)
+ {
+ SPlayer[] players = _Points.GetPlayer(round, CGame.NumPlayer);
+
+ for (int p = 0; p < players.Length; p++)
+ {
+ if (players[p].Points > CSettings.MinScoreForDB && players[p].SongFinished)
+ {
+ CSong song = CSongs.GetSong(players[p].SongID);
+ CDataBase.IncreaseSongCounter(song.DataBaseSongID);
+ song.NumPlayed++;
+ break;
+ }
+ }
+ }
+ }
+
private void _LeaveScreen()
{
CParty.LeavingScore();
diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs
index 9e9d4ebd..e792ba4e 100644
--- a/Vocaluxe/Screens/CScreenSing.cs
+++ b/Vocaluxe/Screens/CScreenSing.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -125,11 +123,11 @@ namespace Vocaluxe.Screens
{
base.Init();
- List texts = new List {_TextSongName, _TextTime, _TextPause, _TextDuetName1, _TextDuetName2, _TextMedleyCountdown};
+ var texts = new List {_TextSongName, _TextTime, _TextPause, _TextDuetName1, _TextDuetName2, _TextMedleyCountdown};
_BuildTextStrings(texts);
_ThemeTexts = texts.ToArray();
- List statics = new List
+ var statics = new List
{
_StaticSongText,
_StaticLyrics,
@@ -148,7 +146,7 @@ namespace Vocaluxe.Screens
_BuildStaticStrings(ref statics);
_ThemeStatics = statics.ToArray();
- List buttons = new List {_ButtonCancel, _ButtonContinue, _ButtonSkip};
+ var buttons = new List {_ButtonCancel, _ButtonContinue, _ButtonSkip};
_ThemeButtons = buttons.ToArray();
_ThemeLyrics = new string[] {_LyricMain, _LyricSub, _LyricMainDuet, _LyricSubDuet, _LyricMainTop, _LyricSubTop};
@@ -202,7 +200,7 @@ namespace Vocaluxe.Screens
break;
case Keys.T:
- int mode = (int)CConfig.TimerMode;
+ var mode = (int)CConfig.TimerMode;
mode++;
if (mode > Enum.GetNames(typeof(ETimerMode)).Length - 1)
@@ -329,7 +327,7 @@ namespace Vocaluxe.Screens
_LoadNextSong();
_UpdateSongText();
- _UpdateDuetText();
+ _UpdateDuetNames();
if (_FadeOut)
return true;
@@ -355,18 +353,18 @@ namespace Vocaluxe.Screens
for (int p = 0; p < CGame.NumPlayer; p++)
{
- _SingNotes[_SingBars].SetAlpha(_NoteLines[p], alpha[CGame.Players[p].LineNr * 2]);
+ _SingNotes[_SingBars].SetAlpha(_NoteLines[p], alpha[CGame.Players[p].VoiceNr * 2]);
if (CConfig.FadePlayerInfo == EFadePlayerInfo.TR_CONFIG_FADEPLAYERINFO_INFO || CConfig.FadePlayerInfo == EFadePlayerInfo.TR_CONFIG_FADEPLAYERINFO_ALL)
{
- _Statics[_StaticAvatars[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].LineNr * 2];
- _Texts[_TextNames[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].LineNr * 2];
+ _Statics[_StaticAvatars[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
+ _Texts[_TextNames[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
}
if (CConfig.FadePlayerInfo == EFadePlayerInfo.TR_CONFIG_FADEPLAYERINFO_ALL)
{
- _Statics[_StaticScores[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].LineNr * 2];
- _Statics[_StaticAvatars[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].LineNr * 2];
- _Texts[_TextNames[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].LineNr * 2];
- _Texts[_TextScores[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].LineNr * 2];
+ _Statics[_StaticScores[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
+ _Statics[_StaticAvatars[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
+ _Texts[_TextNames[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
+ _Texts[_TextScores[p, CGame.NumPlayer - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
}
}
@@ -389,12 +387,8 @@ namespace Vocaluxe.Screens
for (int p = 0; p < CGame.NumPlayer; p++)
{
- // ReSharper disable ConvertIfStatementToConditionalTernaryExpression
- if (CGame.Players[p].Points < 10000)
- // ReSharper restore ConvertIfStatementToConditionalTernaryExpression
- _Texts[_TextScores[p, CGame.NumPlayer - 1]].Text = CGame.Players[p].Points.ToString("0000");
- else
- _Texts[_TextScores[p, CGame.NumPlayer - 1]].Text = CGame.Players[p].Points.ToString("00000");
+ string fmtString = (CGame.Players[p].Points < 10000) ? "0000" : "00000";
+ _Texts[_TextScores[p, CGame.NumPlayer - 1]].Text = CGame.Players[p].Points.ToString(fmtString);
}
if (_CurrentVideo != -1 && !_FadeOut && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON)
@@ -459,7 +453,7 @@ namespace Vocaluxe.Screens
if (_Active)
{
CTexture background;
- EAspect aspect = EAspect.Crop;
+ var aspect = EAspect.Crop;
if (_CurrentVideo != -1 && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON && !_Webcam)
{
background = _CurrentVideoTexture;
@@ -474,7 +468,7 @@ namespace Vocaluxe.Screens
background = _Background;
if (background != null)
{
- RectangleF bounds = new RectangleF(0, 0, CSettings.RenderW, CSettings.RenderH);
+ var bounds = new RectangleF(0, 0, CSettings.RenderW, CSettings.RenderH);
RectangleF rect;
CHelper.SetRect(bounds, out rect, background.OrigAspect, aspect);
CDraw.DrawTexture(background, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, 0f),
@@ -502,17 +496,17 @@ namespace Vocaluxe.Screens
}
_Lyrics[_LyricSub].Draw(-100);
- _Lyrics[_LyricMain].Draw(CGame.Beat);
+ _Lyrics[_LyricMain].Draw(CGame.CurrentBeatF);
_Lyrics[_LyricSubDuet].Draw(-100);
- _Lyrics[_LyricMainDuet].Draw(CGame.Beat);
+ _Lyrics[_LyricMainDuet].Draw(CGame.CurrentBeatF);
_Lyrics[_LyricSubTop].Draw(-100);
- _Lyrics[_LyricMainTop].Draw(CGame.Beat);
+ _Lyrics[_LyricMainTop].Draw(CGame.CurrentBeatF);
for (int i = 0; i < CGame.NumPlayer; i++)
- _SingNotes[_SingBars].Draw(_NoteLines[i], CGame.Players[i].SingLine, i);
+ _SingNotes[_SingBars].Draw(_NoteLines[i], CGame.Players[i].SungLines, i);
_DrawLyricHelper();
@@ -546,12 +540,14 @@ namespace Vocaluxe.Screens
public override void ApplyVolume()
{
- CSound.SetStreamVolumeMax(_CurrentStream, CConfig.GameMusicVolume);
+ if (_CurrentStream > -1)
+ CSound.SetStreamVolumeMax(_CurrentStream, CConfig.GameMusicVolume);
}
private void _CloseSong()
{
- CSound.FadeAndStop(_CurrentStream, 0f, 0.5f);
+ if (_CurrentStream > -1)
+ CSound.FadeAndStop(_CurrentStream, 0f, 0.5f);
CSound.RecordStop();
if (_CurrentVideo != -1)
{
@@ -607,12 +603,12 @@ namespace Vocaluxe.Screens
_FinishTime = song.Finish;
_TimeToFirstNote = 0f;
_TimeToFirstNoteDuet = 0f;
- int[] duetPlayer = new int[CGame.NumPlayer];
+ var voiceAssignments = new int[CGame.NumPlayer];
if (song.IsDuet)
{
//Save duet-assignment before resetting
- for (int i = 0; i < duetPlayer.Length; i++)
- duetPlayer[i] = CGame.Players[i].LineNr;
+ for (int i = 0; i < voiceAssignments.Length; i++)
+ voiceAssignments[i] = CGame.Players[i].VoiceNr;
}
CGame.ResetPlayer();
@@ -634,19 +630,20 @@ namespace Vocaluxe.Screens
if (song.IsDuet)
{
- _Texts[_TextDuetName1].Text = song.DuetPart1;
- _Texts[_TextDuetName2].Text = song.DuetPart2;
+ //TODO: Show more than 2 voicenames
+ _Texts[_TextDuetName1].Text = song.Notes.VoiceNames[0];
+ _Texts[_TextDuetName2].Text = song.Notes.VoiceNames[1];
//More than one song: Player is not assigned to line by user
//Otherwise, this is done by CScreenNames
if (CGame.GetNumSongs() > 1)
{
for (int i = 0; i < CGame.NumPlayer; i++)
- CGame.Players[i].LineNr = (i + 1) % 2;
+ CGame.Players[i].VoiceNr = (i + 1) % 2;
}
else
{
for (int i = 0; i < CGame.NumPlayer; i++)
- CGame.Players[i].LineNr = duetPlayer[i];
+ CGame.Players[i].VoiceNr = voiceAssignments[i];
}
}
@@ -672,14 +669,11 @@ namespace Vocaluxe.Screens
NoteLines[3] = SingNotes[SingBars].AddPlayer(new SRectF(640f, 350f, 590f, 200f, -0.5f), CTheme.ThemeColors.Player[3]);
break;
*/
- _TimerSongText.Stop();
_TimerSongText.Reset();
- _TimerDuetText1.Stop();
_TimerDuetText1.Reset();
- _TimerDuetText2.Stop();
_TimerDuetText2.Reset();
- if (song.Notes.Voices.Length != 2)
+ if (!song.IsDuet)
_TimerSongText.Start();
_StartSong();
@@ -745,7 +739,7 @@ namespace Vocaluxe.Screens
CWebcam.Close();
}
- private int _FindCurrentLine(CVoice voice, CLine[] lines, CSong song)
+ private int _FindCurrentLine(CVoice voice, CSongLine[] lines, CSong song)
{
float currentTime = _CurrentTime - song.Gap;
//We are only interested in the last matching line, so either do not check further after line[j].StartBeat > _CurrentBeat or go backwards!
@@ -781,13 +775,13 @@ namespace Vocaluxe.Screens
_CurrentBeat = CGame.CurrentBeat;
- for (int i = 0; i < song.Notes.LinesCount; i++)
+ for (int i = 0; i < song.Notes.VoiceCount; i++)
{
if (i > 1)
break; // for later
CVoice voice = song.Notes.GetVoice(i);
- CLine[] lines = voice.Lines;
+ CSongLine[] lines = voice.Lines;
// find current line
int nr = _FindCurrentLine(voice, lines, song);
@@ -796,7 +790,7 @@ namespace Vocaluxe.Screens
{
for (int j = 0; j < CGame.NumPlayer; j++)
{
- if (CGame.Players[j].LineNr == i)
+ if (CGame.Players[j].VoiceNr == i)
_SingNotes[_SingBars].SetLines(_NoteLines[j], lines, nr);
}
@@ -866,6 +860,7 @@ namespace Vocaluxe.Screens
}
else
{
+ CGame.ResetToLastLine(_CurrentStream, _CurrentVideo);
_Buttons[_ButtonCancel].Visible = false;
_Buttons[_ButtonContinue].Visible = false;
_Buttons[_ButtonSkip].Visible = false;
@@ -980,7 +975,7 @@ namespace Vocaluxe.Screens
if (_CurrentTime < timeToFirstMedleyNote)
{
float timeDiff = timeToFirstMedleyNote - _CurrentTime + 1;
- float fullSeconds = (float)Math.Truncate(timeDiff);
+ var fullSeconds = (float)Math.Truncate(timeDiff);
float partSeconds = timeDiff - fullSeconds;
_Texts[_TextMedleyCountdown].Visible = true;
_Texts[_TextMedleyCountdown].Text = fullSeconds.ToString();
@@ -1025,7 +1020,7 @@ namespace Vocaluxe.Screens
if (_Statics[_StaticLyrics].Visible)
{
SRectF rect = _Statics[_StaticLyricHelper].Rect;
- SColorF color = new SColorF(
+ var color = new SColorF(
_Statics[_StaticLyricHelper].Color.R,
_Statics[_StaticLyricHelper].Color.G,
_Statics[_StaticLyricHelper].Color.B,
@@ -1039,7 +1034,7 @@ namespace Vocaluxe.Screens
if (_Statics[_StaticLyricsTop].Visible)
{
SRectF rect = _Statics[_StaticLyricHelperTop].Rect;
- SColorF color = new SColorF(
+ var color = new SColorF(
_Statics[_StaticLyricHelperTop].Color.R,
_Statics[_StaticLyricHelperTop].Color.G,
_Statics[_StaticLyricHelperTop].Color.B,
@@ -1066,7 +1061,7 @@ namespace Vocaluxe.Screens
SRectF rect = _Statics[_StaticLyricHelperDuet].Rect;
- SColorF color = new SColorF(
+ var color = new SColorF(
_Statics[_StaticLyricHelperDuet].Color.R,
_Statics[_StaticLyricHelperDuet].Color.G,
_Statics[_StaticLyricHelperDuet].Color.B,
@@ -1089,13 +1084,13 @@ namespace Vocaluxe.Screens
if (song == null || !song.NotesLoaded)
return null;
- float[] alpha = new float[song.Notes.Voices.Length * 2];
+ var alpha = new float[song.Notes.VoiceCount * 2];
float currentTime = _CurrentTime - song.Gap;
- for (int i = 0; i < song.Notes.LinesCount; i++)
+ for (int i = 0; i < song.Notes.VoiceCount; i++)
{
CVoice voice = song.Notes.GetVoice(i);
- CLine[] lines = voice.Lines;
+ CSongLine[] lines = voice.Lines;
// find current line for lyric sub fading
int currentLineSub = _FindCurrentLine(voice, lines, song);
@@ -1196,8 +1191,8 @@ namespace Vocaluxe.Screens
}
else
{
- _Statics[_StaticSongText].Color.A = (3f - (t - 7f)) / 3f;
- _Texts[_TextSongName].Color.A = (3f - (t - 7f)) / 3f;
+ _Statics[_StaticSongText].Color.A = 10f - t / 3f;
+ _Texts[_TextSongName].Color.A = 10f - t / 3f;
}
}
else
@@ -1214,61 +1209,65 @@ namespace Vocaluxe.Screens
}
}
- private void _UpdateDuetText()
+ private void _UpdateDuetNames(CText textName, Stopwatch timer)
{
- if (CGame.GetSong() != null)
+ if (timer.IsRunning)
{
- //Timer for first duet-part
- if (_TimerDuetText1.IsRunning)
+ float t = timer.ElapsedMilliseconds / 1000f;
+ if (t < 10f)
{
- float t = _TimerDuetText1.ElapsedMilliseconds / 1000f;
- if (t < 10f)
- {
- _Texts[_TextDuetName1].Visible = true;
+ textName.Visible = true;
- if (t < 3f)
- _Texts[_TextDuetName1].Color.A = (3f - (3f - t)) / 3f;
- else if (t < 7f)
- _Texts[_TextDuetName1].Color.A = 1f;
- else
- _Texts[_TextDuetName1].Color.A = (3f - (t - 7f)) / 3f;
- }
+ if (t < 3f)
+ textName.Color.A = t / 3f;
+ else if (t < 7f)
+ textName.Color.A = 1f;
else
- {
- _Texts[_TextDuetName1].Visible = false;
- _TimerDuetText1.Stop();
- }
+ textName.Color.A = (10f - t) / 3f;
}
- else if (!_TimerDuetText1.IsRunning && _TimerDuetText1.ElapsedMilliseconds == 0 && _Lyrics[_LyricMainDuet].Alpha > 0 && CGame.GetSong().IsDuet)
- _TimerDuetText1.Start();
else
- _Texts[_TextDuetName1].Visible = false;
- //Timer for second duet-part
- if (_TimerDuetText2.IsRunning)
{
- float t = _TimerDuetText2.ElapsedMilliseconds / 1000f;
- if (t < 10f)
- {
- _Texts[_TextDuetName2].Visible = true;
-
- if (t < 3f)
- _Texts[_TextDuetName2].Color.A = (3f - (3f - t)) / 3f;
- else if (t < 7f)
- _Texts[_TextDuetName2].Color.A = 1f;
- else
- _Texts[_TextDuetName2].Color.A = (3f - (t - 7f)) / 3f;
- }
- else
- {
- _Texts[_TextDuetName2].Visible = false;
- _TimerDuetText2.Stop();
- }
+ textName.Visible = false;
+ timer.Stop();
}
- else if (!_TimerDuetText2.IsRunning && _TimerDuetText2.ElapsedMilliseconds == 0 && _Lyrics[_LyricMain].Alpha > 0 && CGame.GetSong().IsDuet)
- _TimerDuetText2.Start();
- else
- _Texts[_TextDuetName2].Visible = false;
}
+ else if (!timer.IsRunning && timer.ElapsedMilliseconds == 0 && _Lyrics[_LyricMainDuet].Alpha > 0 && CGame.GetSong().IsDuet)
+ timer.Start();
+ else
+ textName.Visible = false;
+ }
+
+ private void _UpdateDuetNames()
+ {
+ if (CGame.GetSong() == null)
+ return;
+ //Timer for first duet-part
+ _UpdateDuetNames(_Texts[_TextDuetName1], _TimerDuetText1);
+ //Timer for second duet-part
+ if (_TimerDuetText2.IsRunning)
+ {
+ float t = _TimerDuetText2.ElapsedMilliseconds / 1000f;
+ if (t < 10f)
+ {
+ _Texts[_TextDuetName2].Visible = true;
+
+ if (t < 3f)
+ _Texts[_TextDuetName2].Color.A = (3f - (3f - t)) / 3f;
+ else if (t < 7f)
+ _Texts[_TextDuetName2].Color.A = 1f;
+ else
+ _Texts[_TextDuetName2].Color.A = (3f - (t - 7f)) / 3f;
+ }
+ else
+ {
+ _Texts[_TextDuetName2].Visible = false;
+ _TimerDuetText2.Stop();
+ }
+ }
+ else if (!_TimerDuetText2.IsRunning && _TimerDuetText2.ElapsedMilliseconds == 0 && _Lyrics[_LyricMain].Alpha > 0 && CGame.GetSong().IsDuet)
+ _TimerDuetText2.Start();
+ else
+ _Texts[_TextDuetName2].Visible = false;
}
private void _UpdateTimeLine()
@@ -1292,8 +1291,8 @@ namespace Vocaluxe.Screens
switch (CConfig.TimerMode)
{
case ETimerMode.TR_CONFIG_TIMERMODE_CURRENT:
- int min = (int)Math.Floor(currentTime / 60f);
- int sec = (int)(currentTime - min * 60f);
+ var min = (int)Math.Floor(currentTime / 60f);
+ var sec = (int)(currentTime - min * 60f);
_Texts[_TextTime].Text = min.ToString("00") + ":" + sec.ToString("00");
break;
@@ -1368,9 +1367,9 @@ namespace Vocaluxe.Screens
foreach (CVoice voice in song.Notes.Voices)
{
- foreach (CLine line in voice.Lines.Where(line => line.VisibleInTimeLine))
+ foreach (CSongLine line in voice.Lines.Where(line => line.VisibleInTimeLine))
{
- STimeRect trect = new STimeRect {StartBeat = line.FirstNoteBeat, EndBeat = line.EndBeat};
+ var trect = new STimeRect {StartBeat = line.FirstNoteBeat, EndBeat = line.EndBeat};
trect.Rect = GetNewStatic(null,
new SColorF(1f, 1f, 1f, 1f),
new SRectF(
diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs
index 1a614ba0..5c27e577 100644
--- a/Vocaluxe/Screens/CScreenSong.cs
+++ b/Vocaluxe/Screens/CScreenSong.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -105,7 +103,7 @@ namespace Vocaluxe.Screens
_ButtonsJoker.Clear();
for (int i = 0; i < CSettings.MaxNumPlayer; i++)
_ButtonsJoker.Add("ButtonJoker" + (i + 1));
- List blist = new List();
+ var blist = new List();
blist.AddRange(_ButtonsJoker);
blist.Add(_ButtonOptionsClose);
blist.Add(_ButtonOptionsPlaylist);
@@ -123,7 +121,7 @@ namespace Vocaluxe.Screens
_TextsPlayer.Clear();
for (int i = 0; i < CSettings.MaxNumPlayer; i++)
_TextsPlayer.Add("TextPlayer" + (i + 1));
- List tlist = new List();
+ var tlist = new List();
tlist.AddRange(_TextsPlayer);
tlist.Add(_TextCategory);
tlist.Add(_TextSelection);
@@ -172,7 +170,7 @@ namespace Vocaluxe.Screens
{
if (_SearchActive)
_ApplyNewSearchFilter(_SearchText + keyEvent.Unicode);
- else if(!_Sso.Selection.PartyMode)
+ else if (!_Sso.Selection.PartyMode)
{
_JumpTo(keyEvent.Unicode);
return true;
@@ -821,9 +819,8 @@ namespace Vocaluxe.Screens
CGame.Reset();
CGame.ClearSongs();
- CGame.AddVisibleSong(songNr, gm);
-
- CGraphics.FadeTo(EScreens.ScreenNames);
+ if (CGame.AddVisibleSong(songNr, gm))
+ CGraphics.FadeTo(EScreens.ScreenNames);
}
}
@@ -836,9 +833,8 @@ namespace Vocaluxe.Screens
CGame.Reset();
CGame.ClearSongs();
- CGame.AddVisibleSong(songNr, gm);
-
- CGraphics.FadeTo(EScreens.ScreenNames);
+ if (CGame.AddVisibleSong(songNr, gm))
+ CGraphics.FadeTo(EScreens.ScreenNames);
}
}
@@ -846,14 +842,13 @@ namespace Vocaluxe.Screens
{
if ((CSongs.Category >= 0) && (songNr >= 0))
{
- if (CSongs.VisibleSongs[songNr].Medley.Source == EMedleySource.None)
+ if (!CSongs.VisibleSongs[songNr].IsGameModeAvailable(EGameMode.TR_GAMEMODE_MEDLEY))
return;
CGame.Reset();
CGame.ClearSongs();
- CGame.AddVisibleSong(songNr, EGameMode.TR_GAMEMODE_MEDLEY);
-
- CGraphics.FadeTo(EScreens.ScreenNames);
+ if (CGame.AddVisibleSong(songNr, EGameMode.TR_GAMEMODE_MEDLEY))
+ CGraphics.FadeTo(EScreens.ScreenNames);
}
}
@@ -862,7 +857,7 @@ namespace Vocaluxe.Screens
CGame.Reset();
CGame.ClearSongs();
- List ids = new List();
+ var ids = new List();
for (int i = 0; i < CSongs.AllSongs.Count; i++)
ids.Add(i);
@@ -870,7 +865,7 @@ namespace Vocaluxe.Screens
{
int songNr = ids[CGame.Rand.Next(ids.Count)];
- EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
+ var gm = EGameMode.TR_GAMEMODE_NORMAL;
if (CSongs.AllSongs[songNr].IsDuet)
gm = EGameMode.TR_GAMEMODE_DUET;
@@ -894,7 +889,7 @@ namespace Vocaluxe.Screens
{
int songNr = ids[CGame.Rand.Next(ids.Count)];
- EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
+ var gm = EGameMode.TR_GAMEMODE_NORMAL;
if (CSongs.AllSongs[songNr].IsDuet)
gm = EGameMode.TR_GAMEMODE_DUET;
@@ -1009,10 +1004,10 @@ namespace Vocaluxe.Screens
int curSelected = _SongMenus[_SongMenu].GetActualSelection();
bool firstLevel = CConfig.Tabs == EOffOn.TR_CONFIG_OFF && CSongs.IsInCategory;
bool secondSort = CConfig.Tabs == EOffOn.TR_CONFIG_ON &&
- (CConfig.SongSorting == ESongSorting.TR_CONFIG_ARTIST ||
- CConfig.SongSorting == ESongSorting.TR_CONFIG_ARTIST_LETTER ||
- CConfig.SongSorting == ESongSorting.TR_CONFIG_FOLDER ||
- CConfig.SongSorting == ESongSorting.TR_CONFIG_TITLE_LETTER);
+ (CConfig.SongSorting == ESongSorting.TR_CONFIG_ARTIST ||
+ CConfig.SongSorting == ESongSorting.TR_CONFIG_ARTIST_LETTER ||
+ CConfig.SongSorting == ESongSorting.TR_CONFIG_FOLDER ||
+ CConfig.SongSorting == ESongSorting.TR_CONFIG_TITLE_LETTER);
if (firstLevel && !secondSort)
{
//TODO: What's to do with multiple tags?
@@ -1029,7 +1024,7 @@ namespace Vocaluxe.Screens
visibleID = _FindIndex(songs, start, element => element.Artist.StartsWith(letter.ToString(), StringComparison.OrdinalIgnoreCase));
break;
- //TODO: Does this make sense? Maybe we should deactivate this for years? You could only jump between 1 and 2
+ //TODO: Does this make sense? Maybe we should deactivate this for years? You could only jump between 1 and 2
case ESongSorting.TR_CONFIG_YEAR:
case ESongSorting.TR_CONFIG_DECADE:
if (curSelected >= 0 && curSelected < ct - 1 && songs[curSelected].Year.StartsWith(letter.ToString(), StringComparison.OrdinalIgnoreCase))
@@ -1076,7 +1071,7 @@ namespace Vocaluxe.Screens
if (visibleID > -1)
_SongMenus[_SongMenu].SetSelectedSong(visibleID);
}
- else if(!CSongs.IsInCategory)
+ else if (!CSongs.IsInCategory)
{
ReadOnlyCollection categories = CSongs.Categories;
int ct = categories.Count;
@@ -1144,50 +1139,50 @@ namespace Vocaluxe.Screens
_Statics[_StaticOptionsBG].Visible = false;
_Buttons[_ButtonOpenOptions].Visible = true;
- _SongOptionsActive = view != ESongOptionsView.None;
-
- if (_SongOptionsActive)
+ if (CSongs.VisibleSongs.Count > 0)
{
- //Has to be done here otherwhise changed playlist names will not appear until OnShow is called!
- _UpdatePlaylistNames();
+ _SongOptionsActive = view != ESongOptionsView.None;
- _Texts[_TextOptionsTitle].Visible = true;
- _Buttons[_ButtonOptionsClose].Visible = true;
- _Statics[_StaticOptionsBG].Visible = true;
- _Buttons[_ButtonOpenOptions].Visible = false;
- if (view == ESongOptionsView.Song)
- _ShowSongOptionsSong();
- else if (view == ESongOptionsView.General)
- _ShowSongOptionsGeneral();
- else if (view == ESongOptionsView.Medley)
- _ShowSongOptionsMedley();
+ if (_SongOptionsActive)
+ {
+ //Has to be done here otherwhise changed playlist names will not appear until OnShow is called!
+ _UpdatePlaylistNames();
+
+ _Texts[_TextOptionsTitle].Visible = true;
+ _Buttons[_ButtonOptionsClose].Visible = true;
+ _Statics[_StaticOptionsBG].Visible = true;
+ _Buttons[_ButtonOpenOptions].Visible = false;
+ if (view == ESongOptionsView.Song)
+ _ShowSongOptionsSong();
+ else if (view == ESongOptionsView.General)
+ _ShowSongOptionsGeneral();
+ else if (view == ESongOptionsView.Medley)
+ _ShowSongOptionsMedley();
+ }
+ }
+ }
+
+ private void _CheckAndAddGameMode(EGameMode gameMode)
+ {
+ if (CSongs.VisibleSongs[_SongMenus[_SongMenu].GetSelectedSong()].IsGameModeAvailable(gameMode))
+ {
+ _SelectSlides[_SelectSlideOptionsMode].AddValue(Enum.GetName(typeof(EGameMode), gameMode));
+ _AvailableGameModes.Add(gameMode);
}
}
private void _ShowSongOptionsSong()
{
- EGameMode lastMode = EGameMode.TR_GAMEMODE_NORMAL;
+ var lastMode = EGameMode.TR_GAMEMODE_NORMAL;
if (_AvailableGameModes.Count > 0)
lastMode = _AvailableGameModes[_SelectSlides[_SelectSlideOptionsMode].Selection];
_AvailableGameModes.Clear();
_SelectSlides[_SelectSlideOptionsMode].Clear();
- if (CSongs.VisibleSongs[_SongMenus[_SongMenu].GetSelectedSong()].IsDuet)
- {
- _SelectSlides[_SelectSlideOptionsMode].AddValue(Enum.GetName(typeof(EGameMode), EGameMode.TR_GAMEMODE_DUET));
- _AvailableGameModes.Add(EGameMode.TR_GAMEMODE_DUET);
- }
- else
- {
- _SelectSlides[_SelectSlideOptionsMode].AddValue(Enum.GetName(typeof(EGameMode), EGameMode.TR_GAMEMODE_NORMAL));
- _AvailableGameModes.Add(EGameMode.TR_GAMEMODE_NORMAL);
- _SelectSlides[_SelectSlideOptionsMode].AddValue(Enum.GetName(typeof(EGameMode), EGameMode.TR_GAMEMODE_SHORTSONG));
- _AvailableGameModes.Add(EGameMode.TR_GAMEMODE_SHORTSONG);
- }
- if (CSongs.VisibleSongs[_SongMenus[_SongMenu].GetSelectedSong()].Medley.Source != EMedleySource.None)
- {
- _SelectSlides[_SelectSlideOptionsMode].AddValue(Enum.GetName(typeof(EGameMode), EGameMode.TR_GAMEMODE_MEDLEY));
- _AvailableGameModes.Add(EGameMode.TR_GAMEMODE_MEDLEY);
- }
+ _CheckAndAddGameMode(EGameMode.TR_GAMEMODE_NORMAL);
+ _CheckAndAddGameMode(EGameMode.TR_GAMEMODE_DUET);
+ _CheckAndAddGameMode(EGameMode.TR_GAMEMODE_SHORTSONG);
+ _CheckAndAddGameMode(EGameMode.TR_GAMEMODE_MEDLEY);
+
//Set SelectSlide-Selection to last selected game-mode if possible
for (int i = 0; i < _AvailableGameModes.Count; i++)
{
diff --git a/Vocaluxe/Screens/CScreenTest.cs b/Vocaluxe/Screens/CScreenTest.cs
index 52a6ed1f..1d571be9 100644
--- a/Vocaluxe/Screens/CScreenTest.cs
+++ b/Vocaluxe/Screens/CScreenTest.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -41,8 +39,8 @@ namespace Vocaluxe.Screens
{
base.Init();
const string test = "Ö ÄÜabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPGRSTUVWGXZ1234567890";
- SColorF color = new SColorF(1, 0, 0, 1);
- CText text = new CText(10, 50, 1, 32, 0, EAlignment.Left, EStyle.Normal, "Normal", color, "jÄNormal Text" + test, -1, 26, 1);
+ var color = new SColorF(1, 0, 0, 1);
+ var text = new CText(10, 50, 1, 32, 0, EAlignment.Left, EStyle.Normal, "Normal", color, "jÄNormal Text" + test, -1, 26, 1);
_AddText(text);
text = new CText(10, 90, 1, 32, 0, EAlignment.Left, EStyle.Bold, "Normal", color, "jÄBold Text" + test, -1, 26, 1);
_AddText(text);
diff --git a/Vocaluxe/SongQueue/CSongQueue.cs b/Vocaluxe/SongQueue/CSongQueue.cs
index 62dbcdb5..e2a461cf 100644
--- a/Vocaluxe/SongQueue/CSongQueue.cs
+++ b/Vocaluxe/SongQueue/CSongQueue.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Collections.Generic;
@@ -71,7 +69,7 @@ namespace Vocaluxe.SongQueue
private bool _AddSong(int songID, EGameMode gameMode)
{
- if (gameMode == EGameMode.TR_GAMEMODE_DUET && !CSongs.GetSong(songID).IsDuet)
+ if (!CSongs.GetSong(songID).IsGameModeAvailable(gameMode))
return false;
_SongQueue.Add(new SSongQueueEntry(songID, gameMode));
diff --git a/Vocaluxe/SongQueue/ISongQueue.cs b/Vocaluxe/SongQueue/ISongQueue.cs
index 69f294a0..c3e32f45 100644
--- a/Vocaluxe/SongQueue/ISongQueue.cs
+++ b/Vocaluxe/SongQueue/ISongQueue.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using VocaluxeLib;
diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj
index 2360607d..17132251 100644
--- a/Vocaluxe/Vocaluxe.csproj
+++ b/Vocaluxe/Vocaluxe.csproj
@@ -120,7 +120,29 @@
LINUX;ARCH_X64Off
-
+
+ x86
+ none
+ true
+ ..\Output\
+ prompt
+ 4
+ false
+ WIN;ARCH_X86;INSTALLER
+ Off
+
+
+ x64
+ none
+ true
+ ..\Output\
+ prompt
+ 4
+ false
+ WIN;ARCH_X64;INSTALLER
+ Off
+
+ False..\Output\x86\SlimDX.dll
@@ -131,7 +153,7 @@
False
-
+ ..\Output\x64\SlimDX.dllFalse
@@ -210,6 +232,7 @@
+ Form
diff --git a/VocaluxeLib/CBasic.cs b/VocaluxeLib/CBasic.cs
index 432a4f28..7a588ee1 100644
--- a/VocaluxeLib/CBasic.cs
+++ b/VocaluxeLib/CBasic.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
namespace VocaluxeLib
diff --git a/VocaluxeLib/CHelper.cs b/VocaluxeLib/CHelper.cs
index af49179f..bd06cecb 100644
--- a/VocaluxeLib/CHelper.cs
+++ b/VocaluxeLib/CHelper.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -55,7 +53,6 @@ namespace VocaluxeLib
public static string ListStrings(string[] str)
{
string result = string.Empty;
-
for (int i = 0; i < str.Length; i++)
{
result += str[i];
@@ -69,7 +66,7 @@ namespace VocaluxeLib
public static int TryReadInt(StreamReader sr)
{
string value = String.Empty;
-
+
try
{
int tmp = sr.Peek();
@@ -79,7 +76,7 @@ namespace VocaluxeLib
if (sr.EndOfStream)
break;
- char chr = (char)sr.Read();
+ var chr = (char)sr.Read();
value += chr.ToString();
tmp = sr.Peek();
}
@@ -141,8 +138,8 @@ namespace VocaluxeLib
public static List ListFiles(string path, string cast, bool recursive = false, bool fullpath = false)
{
- List files = new List();
- DirectoryInfo dir = new DirectoryInfo(path);
+ var files = new List();
+ var dir = new DirectoryInfo(path);
try
{
@@ -162,13 +159,7 @@ namespace VocaluxeLib
return files;
}
- public static bool TryParse(string value, out T result)
- where T : struct
- {
- return TryParse(value, out result, false);
- }
-
- public static bool TryParse(string value, out T result, bool ignoreCase)
+ public static bool TryParse(string value, out T result, bool ignoreCase=false)
where T : struct
{
result = default(T);
@@ -201,7 +192,7 @@ namespace VocaluxeLib
static class CEncoding
{
- public static Encoding GetEncoding(string encodingName)
+ public static Encoding GetEncoding(this string encodingName)
{
switch (encodingName)
{
@@ -216,11 +207,11 @@ namespace VocaluxeLib
case "UTF8":
return Encoding.UTF8;
default:
- return Encoding.UTF8;
+ return Encoding.Default;
}
}
- public static string GetEncodingName(Encoding enc)
+ public static string GetEncodingName(this Encoding enc)
{
string result = "UTF8";
diff --git a/VocaluxeLib/CXMLReader.cs b/VocaluxeLib/CXMLReader.cs
index 5b295bcb..6d4a14af 100644
--- a/VocaluxeLib/CXMLReader.cs
+++ b/VocaluxeLib/CXMLReader.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -37,7 +35,7 @@ namespace VocaluxeLib
private CXMLReader(string uri)
{
_FileName = uri;
- XPathDocument xmlDoc = new XPathDocument(uri);
+ var xmlDoc = new XPathDocument(uri);
_Navigator = xmlDoc.CreateNavigator();
}
@@ -123,7 +121,7 @@ namespace VocaluxeLib
public List GetValues(string cast)
{
- List values = new List();
+ var values = new List();
_Navigator.MoveToRoot();
_Navigator.MoveToFirstChild();
@@ -143,7 +141,7 @@ namespace VocaluxeLib
public IEnumerable GetAttributes(string cast, string attribute)
{
- List values = new List();
+ var values = new List();
_Navigator.MoveToRoot();
_Navigator.MoveToFirstChild();
diff --git a/VocaluxeLib/Draw/CTexture.cs b/VocaluxeLib/Draw/CTexture.cs
index bcfec7df..76a03818 100644
--- a/VocaluxeLib/Draw/CTexture.cs
+++ b/VocaluxeLib/Draw/CTexture.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Drawing;
diff --git a/VocaluxeLib/Enums.cs b/VocaluxeLib/Enums.cs
index 7cf92845..97e008a8 100644
--- a/VocaluxeLib/Enums.cs
+++ b/VocaluxeLib/Enums.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -199,7 +197,8 @@ namespace VocaluxeLib
TR_CONFIG_GENRE,
TR_CONFIG_LANGUAGE,
TR_CONFIG_YEAR,
- TR_CONFIG_DECADE
+ TR_CONFIG_DECADE,
+ TR_CONFIG_DATEADDED
// ReSharper restore InconsistentNaming
}
diff --git a/VocaluxeLib/Extensions.cs b/VocaluxeLib/Extensions.cs
new file mode 100644
index 00000000..d6c78529
--- /dev/null
+++ b/VocaluxeLib/Extensions.cs
@@ -0,0 +1,112 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+
+namespace VocaluxeLib
+{
+ public static class Extensions
+ {
+ ///
+ /// Resizes the given list to the given size. Removes elements or adds default values
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void Resize(this List list, int size, T defaultValue = default(T))
+ {
+ int curSize = list.Count;
+ if (size < curSize)
+ list.RemoveRange(size, curSize - size);
+ else if (size > curSize)
+ list.AddRange(Enumerable.Repeat(defaultValue, size - curSize));
+ }
+
+ ///
+ /// Makes the list at least the given size adding the given default values.
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void EnsureSize(this List list, int size, T defaultValue)
+ {
+ int curSize = list.Count;
+ if (size > curSize)
+ list.AddRange(Enumerable.Repeat(defaultValue, size - curSize));
+ }
+
+ ///
+ /// Makes the list at least the given size adding a new instance of T
+ ///
+ ///
+ ///
+ ///
+ public static void EnsureSize(this List list, int size) where T : new()
+ {
+ if (size > list.Count)
+ list.Add(new T());
+ }
+
+ ///
+ /// Gets all set bits starting from lowest (Bit 0)
+ ///
+ ///
+ ///
+ public static IEnumerable GetSetBits(this int value)
+ {
+ var result = new List();
+ int curBit = 0;
+ //Evaluate as bitset
+ while (value > 0)
+ {
+ if ((value & 1) != 0)
+ result.Add(curBit);
+ value >>= 1;
+ curBit++;
+ }
+ return result;
+ }
+
+ public static bool ContainsIgnoreCase(this string value, string other)
+ {
+ return value.IndexOf(other, StringComparison.CurrentCultureIgnoreCase) >= 0;
+ }
+
+ public static string TrimMultipleWs(this string value)
+ {
+ if (string.IsNullOrEmpty(value))
+ return "";
+ int start = 0;
+ int len = value.Length;
+ while (value[start] == ' ')
+ {
+ start++;
+ if (start >= len)
+ return "";
+ }
+ if (start > 0)
+ start--;
+ int end = --len;
+ while (value[end] == ' ')
+ end--;
+ if (end < len)
+ end++;
+ if (end - start < len)
+ value = value.Substring(start, end - start + 1);
+ return value;
+ }
+
+ ///
+ /// Converts value to a string in fixed point notation using invariant formating (english style decimal point)
+ ///
+ /// Value to be converted
+ /// String representation of value
+ public static string ToInvariantString(this float value)
+ {
+ return value.ToString("F", NumberFormatInfo.InvariantInfo);
+ }
+ }
+}
\ No newline at end of file
diff --git a/VocaluxeLib/Game/CPoints.cs b/VocaluxeLib/Game/CPoints.cs
index a0f82b90..00749b0f 100644
--- a/VocaluxeLib/Game/CPoints.cs
+++ b/VocaluxeLib/Game/CPoints.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -51,7 +49,7 @@ namespace VocaluxeLib.Game
for (int player = 0; player < players.Length; player++)
{
_Rounds[round, player].SongID = songID;
- _Rounds[round, player].LineNr = players[player].LineNr;
+ _Rounds[round, player].VoiceNr = players[player].VoiceNr;
_Rounds[round, player].Points = players[player].Points;
_Rounds[round, player].PointsGoldenNotes = players[player].PointsGoldenNotes;
_Rounds[round, player].PointsLineBonus = players[player].PointsLineBonus;
@@ -80,7 +78,7 @@ namespace VocaluxeLib.Game
if (round >= NumRounds)
return new SPlayer[1];
- SPlayer[] players = new SPlayer[numPlayer];
+ var players = new SPlayer[numPlayer];
for (int p = 0; p < players.Length; p++)
{
@@ -88,7 +86,7 @@ namespace VocaluxeLib.Game
players[p].PointsGoldenNotes = _Rounds[round, p].PointsGoldenNotes;
players[p].PointsLineBonus = _Rounds[round, p].PointsLineBonus;
players[p].SongID = _Rounds[round, p].SongID;
- players[p].LineNr = _Rounds[round, p].LineNr;
+ players[p].VoiceNr = _Rounds[round, p].VoiceNr;
players[p].Medley = _Rounds[round, p].Medley;
players[p].Duet = _Rounds[round, p].Duet;
players[p].ShortSong = _Rounds[round, p].ShortSong;
diff --git a/VocaluxeLib/GlobalSuppressions.cs b/VocaluxeLib/GlobalSuppressions.cs
index c5b4da19..e24fa573 100644
--- a/VocaluxeLib/GlobalSuppressions.cs
+++ b/VocaluxeLib/GlobalSuppressions.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System.Diagnostics.CodeAnalysis;
diff --git a/VocaluxeLib/IBasic.cs b/VocaluxeLib/IBasic.cs
index 2c85ba9d..efdb45df 100644
--- a/VocaluxeLib/IBasic.cs
+++ b/VocaluxeLib/IBasic.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -31,6 +29,8 @@ namespace VocaluxeLib
{
public interface IConfig
{
+ EOffOn GetSaveModifiedSongs();
+
void SetBackgroundMusicVolume(int newVolume);
int GetBackgroundMusicVolume();
@@ -47,7 +47,7 @@ namespace VocaluxeLib
int GetCoverSize();
- IEnumerable GetSongFolder();
+ IEnumerable GetSongFolders();
ESongSorting GetSongSorting();
EOffOn GetTabs();
EOffOn GetIgnoreArticles();
@@ -79,6 +79,7 @@ namespace VocaluxeLib
float GetMedleyMinDuration();
string GetFolderProfiles();
+ string GetDataPath();
}
public interface ITheme
@@ -173,13 +174,14 @@ namespace VocaluxeLib
void SetNumPlayer(int numPlayer);
SPlayer[] GetPlayers();
CPoints GetPoints();
- float GetMidBeatD();
- int GetCurrentBeatD();
+ float GetMidRecordedBeat();
+ int GetRecordedBeat();
int GetRandom(int max);
double GetRandomDouble();
float GetTimeFromBeats(float beat, float bpm);
+ float GetBeatFromTime(float time, float bpm, float gap);
void AddSong(int songID, EGameMode gameMode);
void Reset();
@@ -262,6 +264,7 @@ namespace VocaluxeLib
public interface IDataBase
{
bool GetCover(string fileName, ref CTexture texture, int coverSize);
+ bool GetDataBaseSongInfos(string artist, string title, out int numPlayed, out string dateAdded, out int highscoreID);
}
public interface IControllers
diff --git a/VocaluxeLib/Menu/CBackground.cs b/VocaluxeLib/Menu/CBackground.cs
index 068ea9fc..2e77ffc7 100644
--- a/VocaluxeLib/Menu/CBackground.cs
+++ b/VocaluxeLib/Menu/CBackground.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -196,7 +194,7 @@ namespace VocaluxeLib.Menu
#region internal
private void _DrawColor()
{
- SRectF bounds = new SRectF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH(), CBase.Settings.GetZFar() / 4);
+ var bounds = new SRectF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH(), CBase.Settings.GetZFar() / 4);
CBase.Drawing.DrawColor(Color, bounds);
}
@@ -206,7 +204,7 @@ namespace VocaluxeLib.Menu
CTexture texture = CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
if (texture != null)
{
- RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
+ var bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
RectangleF rect;
CHelper.SetRect(bounds, out rect, texture.OrigAspect, EAspect.Crop);
@@ -221,7 +219,7 @@ namespace VocaluxeLib.Menu
CTexture videoTexture = CBase.Theme.GetSkinVideoTexture(_Theme.VideoName, _PartyModeID);
if (videoTexture != null)
{
- RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
+ var bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
RectangleF rect;
CHelper.SetRect(bounds, out rect, videoTexture.OrigAspect, EAspect.Crop);
@@ -236,7 +234,7 @@ namespace VocaluxeLib.Menu
CTexture videoTexture = CBase.BackgroundMusic.GetVideoTexture();
if (videoTexture != null)
{
- RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
+ var bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
RectangleF rect;
CHelper.SetRect(bounds, out rect, videoTexture.OrigAspect, EAspect.Crop);
diff --git a/VocaluxeLib/Menu/CButton.cs b/VocaluxeLib/Menu/CButton.cs
index e5551a93..7a9726ec 100644
--- a/VocaluxeLib/Menu/CButton.cs
+++ b/VocaluxeLib/Menu/CButton.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/VocaluxeLib/Menu/CEqualizer.cs b/VocaluxeLib/Menu/CEqualizer.cs
index c65b42c0..5d75a478 100644
--- a/VocaluxeLib/Menu/CEqualizer.cs
+++ b/VocaluxeLib/Menu/CEqualizer.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -258,7 +256,7 @@ namespace VocaluxeLib.Menu
for (int i = 0; i < _Bars.Length; i++)
{
- SRectF bar = new SRectF(Rect.X + dx * i, Rect.Y + Rect.H - _Bars[i] * Rect.H, dx - Space, _Bars[i] * Rect.H, Rect.Z);
+ var bar = new SRectF(Rect.X + dx * i, Rect.Y + Rect.H - _Bars[i] * Rect.H, dx - Space, _Bars[i] * Rect.H, Rect.Z);
SColorF color = Color;
if (i == max)
color = MaxColor;
diff --git a/VocaluxeLib/Menu/CInteraction.cs b/VocaluxeLib/Menu/CInteraction.cs
index b84e3892..cf67de78 100644
--- a/VocaluxeLib/Menu/CInteraction.cs
+++ b/VocaluxeLib/Menu/CInteraction.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
namespace VocaluxeLib.Menu
diff --git a/VocaluxeLib/Menu/CLyric.cs b/VocaluxeLib/Menu/CLyric.cs
index a57b5f6a..7c1376a5 100644
--- a/VocaluxeLib/Menu/CLyric.cs
+++ b/VocaluxeLib/Menu/CLyric.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -25,15 +23,6 @@ using VocaluxeLib.Songs;
namespace VocaluxeLib.Menu
{
- struct SNote
- {
- public string Text;
- public int StartBeat;
- public int EndBeat;
- public int Duration;
- public ENoteType Type;
- }
-
struct SThemeLyrics
{
public string Name;
@@ -48,7 +37,10 @@ namespace VocaluxeLib.Menu
private SThemeLyrics _Theme;
private bool _ThemeLoaded;
- private readonly List _Notes;
+ ///
+ /// Holds a reference to Songline. DO NOT MODIFY
+ ///
+ private CSongLine _Line;
private CText _Text;
private float _X;
@@ -111,7 +103,7 @@ namespace VocaluxeLib.Menu
_MaxW = 1f;
_H = 1f;
_Width = 1f;
- _Notes = new List();
+ _Line = new CSongLine();
_Text = new CText(_PartyModeID);
LyricStyle = ELyricStyle.Fill;
@@ -201,30 +193,29 @@ namespace VocaluxeLib.Menu
return false;
}
- public void SetLine(CLine line)
+ public void SetLine(CSongLine line)
{
- _Notes.Clear();
-
+ _Line = line;
_Width = 0f;
- foreach (CNote note in line.Notes)
+ foreach (CSongNote note in line.Notes)
{
- SNote n = new SNote {Text = note.Text, StartBeat = note.StartBeat, EndBeat = note.EndBeat, Duration = note.Duration, Type = note.NoteType};
-
- _Text.Text = note.Text;
- _Text.Style = EStyle.Bold;
-
- if (n.Type == ENoteType.Freestyle)
- _Text.Style = EStyle.BoldItalic;
-
- RectangleF rect = CBase.Fonts.GetTextBounds(_Text);
- _Width += rect.Width;
- _Notes.Add(n);
+ _SetText(note);
+ _Width += _Text.Rect.W;
}
}
+ private void _SetText(CSongNote note)
+ {
+ _Text.Text = note.Text;
+ _Text.Style = EStyle.Bold;
+
+ if (note.Type == ENoteType.Freestyle)
+ _Text.Style = EStyle.BoldItalic;
+ }
+
public void Clear()
{
- _Notes.Clear();
+ _Line = new CSongLine();
}
public float GetCurrentLyricPosX()
@@ -262,15 +253,10 @@ namespace VocaluxeLib.Menu
{
float x = _X - _Width / 2;
- foreach (SNote note in _Notes)
+ foreach (CSongNote note in _Line.Notes)
{
_Text.X = x;
- _Text.Style = EStyle.Bold;
- _Text.Text = note.Text;
- RectangleF rect = CBase.Fonts.GetTextBounds(_Text);
-
- if (note.Type == ENoteType.Freestyle)
- _Text.Style = EStyle.BoldItalic;
+ _SetText(note);
if (currentBeat >= note.StartBeat)
{
@@ -278,9 +264,8 @@ namespace VocaluxeLib.Menu
{
_Text.Color = _ColorProcessed;
-
- float diff = note.EndBeat - note.StartBeat;
- if (Math.Abs(diff) < float.Epsilon)
+ int diff = note.EndBeat - note.StartBeat;
+ if (diff <= 0)
_Text.Draw(0f, 1f);
else
{
@@ -301,7 +286,7 @@ namespace VocaluxeLib.Menu
_Text.Draw();
}
- x += rect.Width;
+ x += _Text.Rect.W;
}
}
@@ -310,37 +295,27 @@ namespace VocaluxeLib.Menu
float x = _X - _Width / 2; // most left position
//find last active note
- int lastNote = -1;
- for (int i = 0; i < _Notes.Count; i++)
- {
- if (currentBeat >= _Notes[i].StartBeat)
- lastNote = i;
- }
+ int lastNote = _Line.FindPreviousNote((int)currentBeat);
int zoomNote = -1;
int endBeat = -1;
float zoomx = 0f;
- for (int note = 0; note < _Notes.Count; note++)
+ for (int note = 0; note < _Line.Notes.Length; note++)
{
_Text.X = x;
- _Text.Style = EStyle.Bold;
- _Text.Text = _Notes[note].Text;
- RectangleF rect = CBase.Fonts.GetTextBounds(_Text);
+ _SetText(_Line.Notes[note]);
- if (_Notes[note].Type == ENoteType.Freestyle)
- _Text.Style = EStyle.BoldItalic;
-
- if (currentBeat >= _Notes[note].StartBeat)
+ if (currentBeat >= _Line.Notes[note].StartBeat)
{
- int endbeat = _Notes[note].EndBeat;
- if (note < _Notes.Count - 1)
- endbeat = _Notes[note + 1].StartBeat - 1;
+ int curEndBeat = _Line.Notes[note].EndBeat;
+ if (note < _Line.Notes.Length - 1)
+ curEndBeat = _Line.Notes[note + 1].StartBeat - 1;
- if (currentBeat <= endbeat)
+ if (currentBeat <= curEndBeat)
{
zoomNote = note;
- endBeat = endbeat;
+ endBeat = curEndBeat;
zoomx = _Text.X;
}
else
@@ -358,49 +333,37 @@ namespace VocaluxeLib.Menu
_Text.Draw();
}
- x += rect.Width;
+ x += _Text.Rect.W;
}
if (zoomNote > -1)
{
- if (_Notes[zoomNote].Duration == 0)
- return;
-
_Text.X = zoomx;
- _Text.Text = _Notes[zoomNote].Text;
- _Text.Color = _ColorProcessed;
- _Text.Style = EStyle.Bold;
+ _SetText(_Line.Notes[zoomNote]);
- if (_Notes[zoomNote].Type == ENoteType.Freestyle)
- _Text.Style = EStyle.BoldItalic;
-
- RectangleF rect = CBase.Fonts.GetTextBounds(_Text);
-
- float diff = endBeat - _Notes[zoomNote].StartBeat;
+ float diff = endBeat - _Line.Notes[zoomNote].StartBeat;
if (diff <= 0f)
diff = 1f;
- float p = (currentBeat - _Notes[zoomNote].StartBeat) / diff;
+ float p = (currentBeat - _Line.Notes[zoomNote].StartBeat) / diff;
if (p > 1f)
p = 1f;
p = 1f - p;
float ty = _Text.Y;
- float tx = _Text.X;
float th = _Text.Height;
float tz = _Text.Z;
+ SRectF normalRect = _Text.Rect;
_Text.Height += _Text.Height * p * 0.4f;
- RectangleF rectz = CBase.Fonts.GetTextBounds(_Text);
- _Text.X -= (rectz.Width - rect.Width) / 2f;
- _Text.Y -= (rectz.Height - rect.Height) / 2f;
+ _Text.X -= (_Text.Rect.W - normalRect.W) / 2f;
+ _Text.Y -= (_Text.Rect.W - normalRect.H) / 2f;
_Text.Z -= 0.1f;
_Text.Draw();
_Text.Y = ty;
- _Text.X = tx;
_Text.Height = th;
_Text.Z = tz;
}
@@ -410,15 +373,10 @@ namespace VocaluxeLib.Menu
{
float x = _X - _Width / 2; // most left position
- foreach (SNote note in _Notes)
+ foreach (CSongNote note in _Line.Notes)
{
_Text.X = x;
- _Text.Style = EStyle.Bold;
- _Text.Text = note.Text;
- RectangleF rect = CBase.Fonts.GetTextBounds(_Text);
-
- if (note.Type == ENoteType.Freestyle)
- _Text.Style = EStyle.BoldItalic;
+ _SetText(note);
if (currentBeat >= note.StartBeat)
{
@@ -432,7 +390,7 @@ namespace VocaluxeLib.Menu
_Text.Draw();
}
- x += rect.Width;
+ x += _Text.Rect.W;
}
}
@@ -441,29 +399,23 @@ namespace VocaluxeLib.Menu
float x = _X - _Width / 2; // most left position
//find last active note
- int lastNote = -1;
- for (int i = 0; i < _Notes.Count; i++)
- {
- if (currentBeat >= _Notes[i].StartBeat)
- lastNote = i;
- }
+ int lastNote = _Line.FindPreviousNote((int)currentBeat);
int jumpNote = -1;
float jumpx = 0f;
- for (int note = 0; note < _Notes.Count; note++)
+ for (int note = 0; note < _Line.Notes.Length; note++)
{
_Text.X = x;
- _Text.Style = EStyle.Bold;
- _Text.Text = _Notes[note].Text;
- RectangleF rect = CBase.Fonts.GetTextBounds(_Text);
+ _SetText(_Line.Notes[note]);
- if (_Notes[note].Type == ENoteType.Freestyle)
- _Text.Style = EStyle.BoldItalic;
-
- if (currentBeat >= _Notes[note].StartBeat)
+ if (currentBeat >= _Line.Notes[note].StartBeat)
{
- if (currentBeat <= _Notes[note].EndBeat)
+ int curEndBeat = _Line.Notes[note].EndBeat;
+ if (note < _Line.Notes.Length - 1)
+ curEndBeat = _Line.Notes[note + 1].StartBeat - 1;
+
+ if (currentBeat <= curEndBeat)
{
jumpNote = note;
jumpx = _Text.X;
@@ -483,27 +435,20 @@ namespace VocaluxeLib.Menu
_Text.Draw();
}
- x += rect.Width;
+ x += _Text.Rect.W;
}
if (jumpNote < 0)
return;
- if (_Notes[jumpNote].Duration == 0)
- return;
_Text.X = jumpx;
- _Text.Text = _Notes[jumpNote].Text;
- _Text.Color = _ColorProcessed;
- _Text.Style = EStyle.Bold;
+ _SetText(_Line.Notes[jumpNote]);
- if (_Notes[jumpNote].Type == ENoteType.Freestyle)
- _Text.Style = EStyle.BoldItalic;
-
- int diff = _Notes[jumpNote].EndBeat - _Notes[jumpNote].StartBeat;
+ int diff = _Line.Notes[jumpNote].EndBeat - _Line.Notes[jumpNote].StartBeat;
if (diff <= 0)
diff = 1;
- float p = 1f - (currentBeat - _Notes[jumpNote].StartBeat) / diff;
+ float p = 1f - (currentBeat - _Line.Notes[jumpNote].StartBeat) / diff;
if (Math.Abs(p) < float.Epsilon)
_Text.Draw();
diff --git a/VocaluxeLib/Menu/CMenu.cs b/VocaluxeLib/Menu/CMenu.cs
index 4a3021b9..2c365121 100644
--- a/VocaluxeLib/Menu/CMenu.cs
+++ b/VocaluxeLib/Menu/CMenu.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -151,7 +149,7 @@ namespace VocaluxeLib.Menu
{
foreach (string elName in elements)
{
- T element = (T)Activator.CreateInstance(typeof(T), _PartyModeID);
+ var element = (T)Activator.CreateInstance(typeof(T), _PartyModeID);
if (element.LoadTheme("//root/" + ThemeName, elName, xmlReader, skinIndex))
addElementHandler(element, elName);
else
@@ -198,7 +196,7 @@ namespace VocaluxeLib.Menu
if (_ThemePath == "")
return;
- XmlWriterSettings settings = new XmlWriterSettings {Indent = true, Encoding = Encoding.UTF8, ConformanceLevel = ConformanceLevel.Document};
+ var settings = new XmlWriterSettings {Indent = true, Encoding = Encoding.UTF8, ConformanceLevel = ConformanceLevel.Document};
string file = Path.Combine(_ThemePath, ThemeName + ".xml");
using (XmlWriter writer = XmlWriter.Create(file, settings))
@@ -770,7 +768,7 @@ namespace VocaluxeLib.Menu
if (_Interactions.Count <= 0)
return;
- List items = new List();
+ var items = new List();
for (int i = 0; i < _Interactions.Count; i++)
{
@@ -779,7 +777,7 @@ namespace VocaluxeLib.Menu
_Interactions[i].Type != EType.NameSelection && _Interactions[i].Type != EType.Text && _Interactions[i].Type != EType.SongMenu &&
_Interactions[i].Type != EType.Equalizer && _Interactions[i].Type != EType.Playlist && _Interactions[i].Type != EType.ParticleEffect))
continue;
- SZSort zs = new SZSort {ID = i, Z = _GetZValue(i)};
+ var zs = new SZSort {ID = i, Z = _GetZValue(i)};
items.Add(zs);
}
@@ -1105,10 +1103,10 @@ namespace VocaluxeLib.Menu
///
private bool _NextInteraction(SKeyEvent key)
{
- SKeyEvent[] directions = new SKeyEvent[4];
- float[] distances = new float[4];
- int[] stages = new int[4];
- int[] elements = new int[4];
+ var directions = new SKeyEvent[4];
+ var distances = new float[4];
+ var stages = new int[4];
+ var elements = new int[4];
for (int i = 0; i < 4; i++)
directions[i] = new SKeyEvent();
@@ -1248,11 +1246,11 @@ namespace VocaluxeLib.Menu
private float _GetDistanceDirect(SKeyEvent key, SRectF actualRect, SRectF targetRect)
{
- PointF source = new PointF(actualRect.X + actualRect.W / 2f, actualRect.Y + actualRect.H / 2f);
- PointF dest = new PointF(targetRect.X + targetRect.W / 2f, targetRect.Y + targetRect.H / 2f);
+ var source = new PointF(actualRect.X + actualRect.W / 2f, actualRect.Y + actualRect.H / 2f);
+ var dest = new PointF(targetRect.X + targetRect.W / 2f, targetRect.Y + targetRect.H / 2f);
- PointF vector = new PointF(dest.X - source.X, dest.Y - source.Y);
- float distance = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
+ var vector = new PointF(dest.X - source.X, dest.Y - source.Y);
+ var distance = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
bool inDirection = false;
switch (key.Key)
{
@@ -1281,11 +1279,11 @@ namespace VocaluxeLib.Menu
private float _GetDistance180(SKeyEvent key, SRectF actualRect, SRectF targetRect)
{
- PointF source = new PointF(actualRect.X + actualRect.W / 2f, actualRect.Y + actualRect.H / 2f);
- PointF dest = new PointF(targetRect.X + targetRect.W / 2f, targetRect.Y + targetRect.H / 2f);
+ var source = new PointF(actualRect.X + actualRect.W / 2f, actualRect.Y + actualRect.H / 2f);
+ var dest = new PointF(targetRect.X + targetRect.W / 2f, targetRect.Y + targetRect.H / 2f);
- PointF vector = new PointF(dest.X - source.X, dest.Y - source.Y);
- float distance = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
+ var vector = new PointF(dest.X - source.X, dest.Y - source.Y);
+ var distance = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
bool inDirection = false;
switch (key.Key)
{
@@ -1584,7 +1582,7 @@ namespace VocaluxeLib.Menu
private SRectF _GetRect(CInteraction interaction)
{
- SRectF result = new SRectF();
+ var result = new SRectF();
switch (interaction.Type)
{
case EType.Button:
@@ -1808,7 +1806,7 @@ namespace VocaluxeLib.Menu
private void _LoadThemeBasics(CXMLReader xmlReader, int skinIndex)
{
// Backgrounds
- CBackground background = new CBackground(_PartyModeID);
+ var background = new CBackground(_PartyModeID);
int i = 1;
while (background.LoadTheme("//root/" + ThemeName, "Background" + i, xmlReader, skinIndex))
{
@@ -1818,7 +1816,7 @@ namespace VocaluxeLib.Menu
}
// Statics
- CStatic stat = new CStatic(_PartyModeID);
+ var stat = new CStatic(_PartyModeID);
i = 1;
while (stat.LoadTheme("//root/" + ThemeName, "Static" + i, xmlReader, skinIndex))
{
@@ -1828,7 +1826,7 @@ namespace VocaluxeLib.Menu
}
// Texts
- CText text = new CText(_PartyModeID);
+ var text = new CText(_PartyModeID);
i = 1;
while (text.LoadTheme("//root/" + ThemeName, "Text" + i, xmlReader, skinIndex))
{
@@ -1838,7 +1836,7 @@ namespace VocaluxeLib.Menu
}
// ParticleEffects
- CParticleEffect partef = new CParticleEffect(_PartyModeID);
+ var partef = new CParticleEffect(_PartyModeID);
i = 1;
while (partef.LoadTheme("//root/" + ThemeName, "ParticleEffect" + i, xmlReader, skinIndex))
{
diff --git a/VocaluxeLib/Menu/CMenuParty.cs b/VocaluxeLib/Menu/CMenuParty.cs
index d57a9304..cbb68aff 100644
--- a/VocaluxeLib/Menu/CMenuParty.cs
+++ b/VocaluxeLib/Menu/CMenuParty.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/VocaluxeLib/Menu/CNameSelection.cs b/VocaluxeLib/Menu/CNameSelection.cs
index b2238b53..d162d539 100644
--- a/VocaluxeLib/Menu/CNameSelection.cs
+++ b/VocaluxeLib/Menu/CNameSelection.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -409,9 +407,9 @@ namespace VocaluxeLib.Menu
{
if ((i + offset * _Tiles.Count) < _VisibleProfiles.Count)
{
- _Tiles[i].Avatar.Texture = CBase.Profiles.GetProfiles()[_VisibleProfiles[i + offset * _Tiles.Count]].Avatar.Texture;
+ _Tiles[i].Avatar.Texture = CBase.Profiles.GetAvatar(_VisibleProfiles[i + offset * _Tiles.Count]);
_Tiles[i].Avatar.Color = new SColorF(1, 1, 1, 1);
- _Tiles[i].Name.Text = CBase.Profiles.GetProfiles()[_VisibleProfiles[i + offset * _Tiles.Count]].PlayerName;
+ _Tiles[i].Name.Text = CBase.Profiles.GetPlayerName(_VisibleProfiles[i + offset * _Tiles.Count]); ;
_Tiles[i].ProfileID = _VisibleProfiles[i + offset * _Tiles.Count];
}
else
@@ -487,10 +485,10 @@ namespace VocaluxeLib.Menu
{
for (int j = 0; j < _NumW; j++)
{
- SRectF rect = new SRectF(Rect.X + j * (_TileW + _SpaceW), Rect.Y + i * (_TileH + _SpaceH), _TileW, _TileH, Rect.Z);
- CStatic tileStatic = new CStatic(_PartyModeID, _TextureEmptyTile, ColorEmptyTile, rect) {Aspect = EAspect.Crop};
- CText tileText = new CText(rect.X + rect.W / 2, rect.Y + rect.H + _Theme.NameSpace, rect.Z, _Theme.NameHeight, rect.W, EAlignment.Center, _Theme.NameStyle,
- _Theme.NameFont, _Theme.NameColor, "");
+ var rect = new SRectF(Rect.X + j * (_TileW + _SpaceW), Rect.Y + i * (_TileH + _SpaceH), _TileW, _TileH, Rect.Z);
+ var tileStatic = new CStatic(_PartyModeID, _TextureEmptyTile, ColorEmptyTile, rect) {Aspect = EAspect.Crop};
+ var tileText = new CText(rect.X + rect.W / 2, rect.Y + rect.H + _Theme.NameSpace, rect.Z, _Theme.NameHeight, rect.W, EAlignment.Center, _Theme.NameStyle,
+ _Theme.NameFont, _Theme.NameColor, "");
_Tiles.Add(new CTile(tileStatic, tileText, -1));
}
}
@@ -501,21 +499,21 @@ namespace VocaluxeLib.Menu
_VisibleProfiles.Clear();
CProfile[] profiles = CBase.Profiles.GetProfiles();
- for (int i = 0; i < profiles.Length; i++)
+ foreach (CProfile profile in profiles)
{
- bool visible = profiles[i].Active == EOffOn.TR_CONFIG_ON;
+ bool visible = profile.Active == EOffOn.TR_CONFIG_ON;
if (visible)
{
//Show profile only if active
for (int p = 0; p < CBase.Game.GetNumPlayer(); p++)
{
//Don't show profile if is selected, but if selected and guest
- if (CBase.Game.GetPlayers()[p].ProfileID == profiles[i].ID && profiles[i].GuestProfile == EOffOn.TR_CONFIG_OFF)
+ if (CBase.Game.GetPlayers()[p].ProfileID == profile.ID && profile.GuestProfile == EOffOn.TR_CONFIG_OFF)
visible = false;
}
}
if (visible)
- _VisibleProfiles.Add(profiles[i].ID);
+ _VisibleProfiles.Add(profile.ID);
}
}
diff --git a/VocaluxeLib/Menu/CObjectInteractions.cs b/VocaluxeLib/Menu/CObjectInteractions.cs
index 1aafbb94..57d86b00 100644
--- a/VocaluxeLib/Menu/CObjectInteractions.cs
+++ b/VocaluxeLib/Menu/CObjectInteractions.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -307,7 +305,7 @@ namespace VocaluxeLib.Menu
if (_Interactions.Count <= 0)
return;
- List items = new List();
+ var items = new List();
for (int i = 0; i < _Interactions.Count; i++)
{
@@ -320,7 +318,7 @@ namespace VocaluxeLib.Menu
_Interactions[i].Type == EType.SongMenu ||
_Interactions[i].Type == EType.Equalizer))
{
- SZSort zs = new SZSort {ID = i, Z = _GetZValue(i)};
+ var zs = new SZSort {ID = i, Z = _GetZValue(i)};
items.Add(zs);
}
}
@@ -613,10 +611,10 @@ namespace VocaluxeLib.Menu
///
private bool _NextInteraction(SKeyEvent key)
{
- SKeyEvent[] directions = new SKeyEvent[4];
- float[] distances = new float[4];
- int[] stages = new int[4];
- int[] elements = new int[4];
+ var directions = new SKeyEvent[4];
+ var distances = new float[4];
+ var stages = new int[4];
+ var elements = new int[4];
for (int i = 0; i < 4; i++)
directions[i] = new SKeyEvent();
@@ -756,11 +754,11 @@ namespace VocaluxeLib.Menu
private float _GetDistanceDirect(SKeyEvent key, SRectF actualRect, SRectF targetRect)
{
- PointF source = new PointF(actualRect.X + actualRect.W / 2f, actualRect.Y + actualRect.H / 2f);
- PointF dest = new PointF(targetRect.X + targetRect.W / 2f, targetRect.Y + targetRect.H / 2f);
+ var source = new PointF(actualRect.X + actualRect.W / 2f, actualRect.Y + actualRect.H / 2f);
+ var dest = new PointF(targetRect.X + targetRect.W / 2f, targetRect.Y + targetRect.H / 2f);
- PointF vector = new PointF(dest.X - source.X, dest.Y - source.Y);
- float distance = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
+ var vector = new PointF(dest.X - source.X, dest.Y - source.Y);
+ var distance = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
bool inDirection = false;
switch (key.Key)
{
@@ -789,11 +787,11 @@ namespace VocaluxeLib.Menu
private float _GetDistance180(SKeyEvent key, SRectF actualRect, SRectF targetRect)
{
- PointF source = new PointF(actualRect.X + actualRect.W / 2f, actualRect.Y + actualRect.H / 2f);
- PointF dest = new PointF(targetRect.X + targetRect.W / 2f, targetRect.Y + targetRect.H / 2f);
+ var source = new PointF(actualRect.X + actualRect.W / 2f, actualRect.Y + actualRect.H / 2f);
+ var dest = new PointF(targetRect.X + targetRect.W / 2f, targetRect.Y + targetRect.H / 2f);
- PointF vector = new PointF(dest.X - source.X, dest.Y - source.Y);
- float distance = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
+ var vector = new PointF(dest.X - source.X, dest.Y - source.Y);
+ var distance = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
bool inDirection = false;
switch (key.Key)
{
@@ -1002,7 +1000,7 @@ namespace VocaluxeLib.Menu
private SRectF _GetRect(int interaction)
{
- SRectF result = new SRectF();
+ var result = new SRectF();
switch (_Interactions[interaction].Type)
{
case EType.Button:
diff --git a/VocaluxeLib/Menu/COrderedDictionaryLite.cs b/VocaluxeLib/Menu/COrderedDictionaryLite.cs
index 76ef3a88..04199f9a 100644
--- a/VocaluxeLib/Menu/COrderedDictionaryLite.cs
+++ b/VocaluxeLib/Menu/COrderedDictionaryLite.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/VocaluxeLib/Menu/CParticle.cs b/VocaluxeLib/Menu/CParticle.cs
index 3e49902b..6ab8a9c1 100644
--- a/VocaluxeLib/Menu/CParticle.cs
+++ b/VocaluxeLib/Menu/CParticle.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -203,7 +201,7 @@ namespace VocaluxeLib.Menu
break;
case EParticleType.Snow:
- int maxy = (int)Math.Round(CBase.Settings.GetRenderH() - _Size * 0.4f);
+ var maxy = (int)Math.Round(CBase.Settings.GetRenderH() - _Size * 0.4f);
if (Math.Round(Y) < maxy)
{
@@ -525,8 +523,8 @@ namespace VocaluxeLib.Menu
break;
}
- int w = (int)(Rect.W - size / 4f);
- int h = (int)(Rect.H - size / 4f);
+ var w = (int)(Rect.W - size / 4f);
+ var h = (int)(Rect.H - size / 4f);
if (w < 0)
w = 0;
diff --git a/VocaluxeLib/Menu/CPlaylist.cs b/VocaluxeLib/Menu/CPlaylist.cs
index 33af9c65..1610fd52 100644
--- a/VocaluxeLib/Menu/CPlaylist.cs
+++ b/VocaluxeLib/Menu/CPlaylist.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -86,7 +84,7 @@ namespace VocaluxeLib.Menu
{
private class CPlaylistElementContent
{
- public EGameMode[] Modes;
+ public IList Modes;
public int SongID;
public EGameMode Mode;
}
@@ -631,7 +629,7 @@ namespace VocaluxeLib.Menu
CBase.Playlist.MovePlaylistSongUp(ActivePlaylistID, CurrentPlaylistElement + Offset);
UpdatePlaylist();
- SKeyEvent key = new SKeyEvent {Key = Keys.Up};
+ var key = new SKeyEvent {Key = Keys.Up};
if (CurrentPlaylistElement > scrollLimit)
{
@@ -660,7 +658,7 @@ namespace VocaluxeLib.Menu
CBase.Playlist.MovePlaylistSongDown(ActivePlaylistID, CurrentPlaylistElement + Offset);
UpdatePlaylist();
- SKeyEvent key = new SKeyEvent {Key = Keys.Down};
+ var key = new SKeyEvent {Key = Keys.Down};
if (CurrentPlaylistElement >= scrollLimit)
{
@@ -973,11 +971,11 @@ namespace VocaluxeLib.Menu
if (!mouseEvent.LBH && DragAndDropSongID != -1)
{
- EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
CSong song = CBase.Songs.GetSongByID(DragAndDropSongID);
if (song != null)
{
+ var gm = EGameMode.TR_GAMEMODE_NORMAL;
if (song.IsDuet)
gm = EGameMode.TR_GAMEMODE_DUET;
@@ -1102,7 +1100,7 @@ namespace VocaluxeLib.Menu
for (int i = 0; i < Math.Floor(Rect.H / _Theme.EntryHeight); i++)
{
- CPlaylistElement en = new CPlaylistElement
+ var en = new CPlaylistElement
{
Background = new CStatic(_PartyModeID, _Theme.TextureBackgroundName, BackgroundColor,
new SRectF(Rect.X, Rect.Y + (i * _Theme.EntryHeight), Rect.W, _Theme.EntryHeight, Rect.Z)),
@@ -1143,7 +1141,7 @@ namespace VocaluxeLib.Menu
_PlaylistElementContents.Clear();
for (int i = 0; i < CBase.Playlist.GetPlaylistSongCount(ActivePlaylistID); i++)
{
- CPlaylistElementContent pec = new CPlaylistElementContent
+ var pec = new CPlaylistElementContent
{
SongID = CBase.Playlist.GetPlaylistSong(ActivePlaylistID, i).SongID,
Modes = CBase.Songs.GetSongByID(CBase.Playlist.GetPlaylistSong(ActivePlaylistID, i).SongID).AvailableGameModes,
@@ -1162,7 +1160,7 @@ namespace VocaluxeLib.Menu
_PlaylistElementContents.Clear();
for (int i = 0; i < CBase.Playlist.GetPlaylistSongCount(ActivePlaylistID); i++)
{
- CPlaylistElementContent pec = new CPlaylistElementContent {SongID = CBase.Playlist.GetPlaylistSong(ActivePlaylistID, i).SongID};
+ var pec = new CPlaylistElementContent {SongID = CBase.Playlist.GetPlaylistSong(ActivePlaylistID, i).SongID};
pec.Modes = CBase.Songs.GetSongByID(pec.SongID).AvailableGameModes;
pec.Mode = CBase.Playlist.GetPlaylistSong(ActivePlaylistID, i).GameMode;
_PlaylistElementContents.Add(pec);
@@ -1222,7 +1220,7 @@ namespace VocaluxeLib.Menu
string t1 = CBase.Language.Translate(_Theme.Text1.Text).Replace("%a", song.Artist).Replace("%t", song.Title);
_PlaylistElements[i].Text1.Text = /*(Offset + i + 1) + ") " + */ t1; //TODO: Add text field for the number
_PlaylistElements[i].SelectSlide.Clear();
- for (int g = 0; g < pec.Modes.Length; g++)
+ for (int g = 0; g < pec.Modes.Count; g++)
{
_PlaylistElements[i].SelectSlide.AddValue(Enum.GetName(typeof(EGameMode), pec.Modes[g]));
if (pec.Modes[g] == pec.Mode)
diff --git a/VocaluxeLib/Menu/CScreenSetting.cs b/VocaluxeLib/Menu/CScreenSetting.cs
index ffe6e98f..9d377504 100644
--- a/VocaluxeLib/Menu/CScreenSetting.cs
+++ b/VocaluxeLib/Menu/CScreenSetting.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/VocaluxeLib/Menu/CSelectSlide.cs b/VocaluxeLib/Menu/CSelectSlide.cs
index b7f62571..19d5d924 100644
--- a/VocaluxeLib/Menu/CSelectSlide.cs
+++ b/VocaluxeLib/Menu/CSelectSlide.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -750,10 +748,10 @@ namespace VocaluxeLib.Menu
_ValueBounds.Clear();
for (int i = 0; i < numvis; i++)
{
- CText text = new CText(0, 0, 0, TextH, MaxW, EAlignment.Center, _Theme.TextStyle, _Theme.TextFont, TextColor, _ValueNames[i + offset],
- _ValuePartyModeIDs[i + offset]);
+ var text = new CText(0, 0, 0, TextH, MaxW, EAlignment.Center, _Theme.TextStyle, _Theme.TextFont, TextColor, _ValueNames[i + offset],
+ _ValuePartyModeIDs[i + offset]);
- SColorF alpha = new SColorF(1f, 1f, 1f, 0.35f);
+ var alpha = new SColorF(1f, 1f, 1f, 0.35f);
if (i + offset == _Selection)
{
text.Color = SelTextColor;
@@ -774,7 +772,7 @@ namespace VocaluxeLib.Menu
if (WithTextures)
{
float dh = text.Y - Rect.Y - Rect.H * 0.1f;
- SRectF rect = new SRectF(text.X - dh / 2, Rect.Y + Rect.H * 0.05f, dh, dh, Rect.Z);
+ var rect = new SRectF(text.X - dh / 2, Rect.Y + Rect.H * 0.05f, dh, dh, Rect.Z);
CBase.Drawing.DrawTexture(_Textures[i + offset], rect, alpha);
_ValueBounds.Add(rect);
}
diff --git a/VocaluxeLib/Menu/CStatic.cs b/VocaluxeLib/Menu/CStatic.cs
index 3d0678be..5051abe7 100644
--- a/VocaluxeLib/Menu/CStatic.cs
+++ b/VocaluxeLib/Menu/CStatic.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -205,11 +203,9 @@ namespace VocaluxeLib.Menu
public void Draw(float scale, float z, EAspect aspect, bool forceDraw = false)
{
- CTexture texture = Texture;
- if (texture == null)
- texture = new CTexture((int)Rect.W, (int)Rect.H);
+ CTexture texture = Texture ?? new CTexture((int)Rect.W, (int)Rect.H);
- SRectF bounds = new SRectF(
+ var bounds = new SRectF(
Rect.X - Rect.W * (scale - 1f),
Rect.Y - Rect.H * (scale - 1f),
Rect.W + 2 * Rect.W * (scale - 1f),
@@ -220,7 +216,7 @@ namespace VocaluxeLib.Menu
if (aspect != EAspect.Stretch)
{
- RectangleF bounds2 = new RectangleF(bounds.X, bounds.Y, bounds.W, bounds.H);
+ var bounds2 = new RectangleF(bounds.X, bounds.Y, bounds.W, bounds.H);
RectangleF rect2;
CHelper.SetRect(bounds2, out rect2, texture.OrigAspect, aspect);
@@ -230,7 +226,7 @@ namespace VocaluxeLib.Menu
rect.H = rect2.Height;
}
- SColorF color = new SColorF(Color.R, Color.G, Color.B, Color.A * Alpha);
+ var color = new SColorF(Color.R, Color.G, Color.B, Color.A * Alpha);
if (Visible || forceDraw || (CBase.Settings.GetGameState() == EGameState.EditTheme))
{
CBase.Drawing.DrawTexture(texture, rect, color, bounds);
diff --git a/VocaluxeLib/Menu/CText.cs b/VocaluxeLib/Menu/CText.cs
index e326d5d8..94c2c01c 100644
--- a/VocaluxeLib/Menu/CText.cs
+++ b/VocaluxeLib/Menu/CText.cs
@@ -1,20 +1,18 @@
#region license
-// /*
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-// */
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -424,7 +422,7 @@ namespace VocaluxeLib.Menu
writer.WriteElementString("Align", Enum.GetName(typeof(EAlignment), Align));
writer.WriteComment(": Text align vertical (on downsizing): " + CHelper.ListStrings(Enum.GetNames(typeof(EHAlignment))));
- writer.WriteElementString("HAlign", Enum.GetName(typeof(EHAlignment), ResizeAlign));
+ writer.WriteElementString("ResizeAlign", Enum.GetName(typeof(EHAlignment), ResizeAlign));
writer.WriteComment("