Renaming of folder Font and namespace fixes
This commit is contained in:
1 parent
2029f0cbef
commit
a019ae4f18
16 files changed
+183
-1045
No files matched your search
@@ -22,7 +22,6 @@ using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Vocaluxe.Base;
|
||||
using VocaluxeLib.Menu;
|
||||
using VocaluxeLib.Menu.SongMenu;
|
||||
|
||||
@@ -496,138 +495,138 @@ namespace Vocaluxe.Base
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class CPlaylistElement
|
||||
{
|
||||
private readonly CSong _Song;
|
||||
|
||||
private readonly int _SongID;
|
||||
public int SongID
|
||||
class CPlaylistElement
|
||||
{
|
||||
get { return _SongID; }
|
||||
}
|
||||
private readonly CSong _Song;
|
||||
|
||||
private string _MusicFilePath = String.Empty;
|
||||
|
||||
public string MusicFilePath
|
||||
{
|
||||
get
|
||||
private readonly int _SongID;
|
||||
public int SongID
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.GetMP3();
|
||||
|
||||
return _MusicFilePath;
|
||||
get { return _SongID; }
|
||||
}
|
||||
|
||||
set { _MusicFilePath = value; }
|
||||
}
|
||||
private string _MusicFilePath = String.Empty;
|
||||
|
||||
public string VideoFilePath
|
||||
{
|
||||
get
|
||||
public string MusicFilePath
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.GetVideo();
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.GetMP3();
|
||||
|
||||
return string.Empty;
|
||||
return _MusicFilePath;
|
||||
}
|
||||
|
||||
set { _MusicFilePath = value; }
|
||||
}
|
||||
}
|
||||
|
||||
public string Title
|
||||
{
|
||||
get
|
||||
public string VideoFilePath
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.Title;
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.GetVideo();
|
||||
|
||||
return "";
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string Artist
|
||||
{
|
||||
get
|
||||
public string Title
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.Artist;
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.Title;
|
||||
|
||||
return "";
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float Start
|
||||
{
|
||||
get
|
||||
public string Artist
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.Start;
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.Artist;
|
||||
|
||||
return 0f;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float Finish
|
||||
{
|
||||
get
|
||||
public float Start
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.Finish;
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.Start;
|
||||
|
||||
return 0f;
|
||||
return 0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public STexture Cover
|
||||
{
|
||||
get
|
||||
public float Finish
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.CoverTextureSmall;
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.Finish;
|
||||
|
||||
return CCover.NoCover;
|
||||
return 0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float VideoGap
|
||||
{
|
||||
get
|
||||
public STexture Cover
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.VideoGap;
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.CoverTextureSmall;
|
||||
|
||||
return 0;
|
||||
return CCover.NoCover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool Duet
|
||||
{
|
||||
get
|
||||
public float VideoGap
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.IsDuet;
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.VideoGap;
|
||||
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CPlaylistElement(CSong song)
|
||||
{
|
||||
MusicFilePath = string.Empty;
|
||||
_SongID = song.ID;
|
||||
public bool Duet
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_Song != null)
|
||||
return _Song.IsDuet;
|
||||
|
||||
_Song = song;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public CPlaylistElement(string filePath)
|
||||
{
|
||||
MusicFilePath = filePath;
|
||||
_SongID = -1;
|
||||
}
|
||||
public CPlaylistElement(CSong song)
|
||||
{
|
||||
MusicFilePath = string.Empty;
|
||||
_SongID = song.ID;
|
||||
|
||||
public CPlaylistElement()
|
||||
{
|
||||
MusicFilePath = string.Empty;
|
||||
_SongID = -1;
|
||||
_Song = song;
|
||||
}
|
||||
|
||||
public CPlaylistElement(string filePath)
|
||||
{
|
||||
MusicFilePath = filePath;
|
||||
_SongID = -1;
|
||||
}
|
||||
|
||||
public CPlaylistElement()
|
||||
{
|
||||
MusicFilePath = string.Empty;
|
||||
_SongID = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using Vocaluxe.Screens;
|
||||
using VocaluxeLib.Menu;
|
||||
using VocaluxeLib.PartyModes;
|
||||
|
||||
@@ -21,7 +21,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Drawing;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using VocaluxeLib.Menu;
|
||||
using VocaluxeLib.Menu.SongMenu;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ using System.IO;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace Vocaluxe.Base
|
||||
|
||||
@@ -1,173 +0,0 @@
|
||||
#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 <http://www.gnu.org/licenses/>.
|
||||
// */
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace Vocaluxe.Base.Font
|
||||
{
|
||||
class CFont : IDisposable
|
||||
{
|
||||
private readonly Dictionary<char, CGlyph> _Glyphs;
|
||||
private PrivateFontCollection _Fonts;
|
||||
private FontFamily _Family;
|
||||
private readonly float _Sizeh;
|
||||
|
||||
private readonly string _FilePath;
|
||||
|
||||
private Font _LastFont;
|
||||
|
||||
public CFont(string file)
|
||||
{
|
||||
_FilePath = file;
|
||||
|
||||
_Glyphs = new Dictionary<char, CGlyph>();
|
||||
|
||||
switch (CConfig.TextureQuality)
|
||||
{
|
||||
case ETextureQuality.TR_CONFIG_TEXTURE_LOWEST:
|
||||
_Sizeh = 25f;
|
||||
break;
|
||||
case ETextureQuality.TR_CONFIG_TEXTURE_LOW:
|
||||
_Sizeh = 50f;
|
||||
break;
|
||||
case ETextureQuality.TR_CONFIG_TEXTURE_MEDIUM:
|
||||
_Sizeh = 100f;
|
||||
break;
|
||||
case ETextureQuality.TR_CONFIG_TEXTURE_HIGH:
|
||||
_Sizeh = 200f;
|
||||
break;
|
||||
case ETextureQuality.TR_CONFIG_TEXTURE_HIGHEST:
|
||||
_Sizeh = 400f;
|
||||
break;
|
||||
default:
|
||||
_Sizeh = 100f;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public System.Drawing.Font GetFont()
|
||||
{
|
||||
if (_Fonts == null)
|
||||
{
|
||||
_Fonts = new PrivateFontCollection();
|
||||
try
|
||||
{
|
||||
_Fonts.AddFontFile(_FilePath);
|
||||
_Family = _Fonts.Families[0];
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
CLog.LogError("Error opening font file " + _FilePath + ": " + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
return new System.Drawing.Font(_Family, CFonts.Height, CFonts.GetFontStyle(), GraphicsUnit.Pixel);
|
||||
}
|
||||
|
||||
public void DrawGlyph(char chr, float x, float y, float z, SColorF color)
|
||||
{
|
||||
STexture texture;
|
||||
SRectF rect;
|
||||
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
||||
CDraw.DrawTexture(texture, rect, color);
|
||||
}
|
||||
|
||||
public void DrawGlyph(char chr, float x, float y, float z, SColorF color, float begin, float end)
|
||||
{
|
||||
STexture texture;
|
||||
SRectF rect;
|
||||
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
||||
CDraw.DrawTexture(texture, rect, color, begin, end);
|
||||
}
|
||||
|
||||
public void DrawGlyphReflection(char chr, float x, float y, float z, SColorF color, float rspace, float rheight)
|
||||
{
|
||||
STexture texture;
|
||||
SRectF rect;
|
||||
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
||||
CDraw.DrawTextureReflection(texture, rect, color, rect, rspace, rheight);
|
||||
}
|
||||
|
||||
public float GetWidth(char chr)
|
||||
{
|
||||
return GetOrAddGlyph(chr).Width;
|
||||
}
|
||||
|
||||
public float GetHeight(char chr)
|
||||
{
|
||||
return GetOrAddGlyph(chr).Height;
|
||||
}
|
||||
|
||||
public CGlyph GetOrAddGlyph(char chr)
|
||||
{
|
||||
CGlyph glyph;
|
||||
if (!_Glyphs.TryGetValue(chr, out glyph))
|
||||
{
|
||||
glyph = new CGlyph(chr, _Sizeh);
|
||||
_Glyphs.Add(chr, glyph);
|
||||
}
|
||||
return glyph;
|
||||
}
|
||||
|
||||
public void UnloadGlyphs()
|
||||
{
|
||||
foreach (CGlyph glyph in _Glyphs.Values)
|
||||
glyph.UnloadTexture();
|
||||
_Glyphs.Clear();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_Fonts != null)
|
||||
{
|
||||
_Fonts.Dispose();
|
||||
_Fonts = null;
|
||||
UnloadGlyphs();
|
||||
}
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
||||
struct SFont
|
||||
{
|
||||
public string Name;
|
||||
|
||||
public bool IsThemeFont;
|
||||
public int PartyModeID;
|
||||
public string ThemeName;
|
||||
|
||||
public string Folder;
|
||||
public string FileNormal;
|
||||
public string FileItalic;
|
||||
public string FileBold;
|
||||
public string FileBoldItalic;
|
||||
|
||||
public float Outline; //0..1, 0=not outline 1=100% outline
|
||||
public SColorF OutlineColor;
|
||||
|
||||
public CFont Normal;
|
||||
public CFont Italic;
|
||||
public CFont Bold;
|
||||
public CFont BoldItalic;
|
||||
}
|
||||
}
|
||||
@@ -1,474 +0,0 @@
|
||||
#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 <http://www.gnu.org/licenses/>.
|
||||
// */
|
||||
#endregion
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace Vocaluxe.Base.Font
|
||||
{
|
||||
static class CFonts
|
||||
{
|
||||
private static readonly XmlWriterSettings _Settings = new XmlWriterSettings();
|
||||
|
||||
private static List<SFont> _Fonts;
|
||||
private static int _CurrentFont;
|
||||
private static float _Height = 1f;
|
||||
|
||||
public static int PartyModeID { get; set; }
|
||||
|
||||
public static EStyle Style = EStyle.Normal;
|
||||
|
||||
public static float Height
|
||||
{
|
||||
get { return _Height; }
|
||||
set { _Height = value < 0f ? 0f : value; }
|
||||
}
|
||||
|
||||
public static float Outline
|
||||
{
|
||||
get { return _Fonts[_CurrentFont].Outline; }
|
||||
}
|
||||
|
||||
public static SColorF OutlineColor
|
||||
{
|
||||
get { return _Fonts[_CurrentFont].OutlineColor; }
|
||||
}
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
_Settings.Indent = true;
|
||||
_Settings.Encoding = Encoding.UTF8;
|
||||
_Settings.ConformanceLevel = ConformanceLevel.Document;
|
||||
|
||||
_CurrentFont = 0;
|
||||
PartyModeID = -1;
|
||||
BuildFonts();
|
||||
}
|
||||
|
||||
public static void BuildFonts()
|
||||
{
|
||||
_Fonts = new List<SFont>();
|
||||
_CurrentFont = 0;
|
||||
|
||||
_LoadFontList();
|
||||
}
|
||||
|
||||
public static System.Drawing.Font GetFont()
|
||||
{
|
||||
return _GetCurrentFont().GetFont();
|
||||
}
|
||||
|
||||
private static CFont _GetCurrentFont()
|
||||
{
|
||||
switch (Style)
|
||||
{
|
||||
case EStyle.Normal:
|
||||
return _Fonts[_CurrentFont].Normal;
|
||||
case EStyle.Italic:
|
||||
return _Fonts[_CurrentFont].Italic;
|
||||
case EStyle.Bold:
|
||||
return _Fonts[_CurrentFont].Bold;
|
||||
case EStyle.BoldItalic:
|
||||
return _Fonts[_CurrentFont].BoldItalic;
|
||||
}
|
||||
//Just in case...
|
||||
return _Fonts[_CurrentFont].Normal;
|
||||
}
|
||||
|
||||
#region DrawText
|
||||
public static void DrawText(string text, int x, int y, int h)
|
||||
{
|
||||
DrawText(text, h, x, y, 0f, new SColorF(0f, 0f, 0f, 1f));
|
||||
}
|
||||
|
||||
public static void DrawText(string text, float x, float y, float z)
|
||||
{
|
||||
DrawText(text, Height, x, y, z, new SColorF(0f, 0f, 0f, 1f));
|
||||
}
|
||||
|
||||
public static void DrawText(string text, float h, float x, float y, float z, SColorF color)
|
||||
{
|
||||
if (h <= 0f)
|
||||
return;
|
||||
|
||||
if (text == "")
|
||||
return;
|
||||
|
||||
Height = h;
|
||||
CFont font = _GetCurrentFont();
|
||||
|
||||
float dx = x;
|
||||
foreach (char chr in text)
|
||||
{
|
||||
font.DrawGlyph(chr, dx, y, z, color);
|
||||
dx += font.GetWidth(chr);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DrawTextReflection(string text, float h, float x, float y, float z, SColorF color, float rspace, float rheight)
|
||||
{
|
||||
if (h <= 0f)
|
||||
return;
|
||||
|
||||
if (text == "")
|
||||
return;
|
||||
|
||||
Height = h;
|
||||
CFont font = _GetCurrentFont();
|
||||
|
||||
float dx = x;
|
||||
foreach (char chr in text)
|
||||
{
|
||||
font.DrawGlyphReflection(chr, dx, y, z, color, rspace, rheight);
|
||||
dx += font.GetWidth(chr);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DrawText(string text, float h, float x, float y, float z, SColorF color, float begin, float end)
|
||||
{
|
||||
if (h <= 0f)
|
||||
return;
|
||||
|
||||
if (text == "")
|
||||
return;
|
||||
|
||||
Height = h;
|
||||
|
||||
float dx = x;
|
||||
float w = GetTextWidth(text);
|
||||
if (w <= 0f)
|
||||
return;
|
||||
|
||||
float x1 = x + w * begin;
|
||||
float x2 = x + w * end;
|
||||
|
||||
CFont font = _GetCurrentFont();
|
||||
|
||||
foreach (char chr in text)
|
||||
{
|
||||
float w2 = font.GetWidth(chr);
|
||||
float b = (x1 - dx) / w2;
|
||||
|
||||
if (b < 1f)
|
||||
{
|
||||
if (b < 0f)
|
||||
b = 0f;
|
||||
float e = (x2 - dx) / w2;
|
||||
if (e > 0f)
|
||||
{
|
||||
if (e > 1f)
|
||||
e = 1f;
|
||||
font.DrawGlyph(chr, dx, y, z, color, b, e);
|
||||
}
|
||||
}
|
||||
dx += w2;
|
||||
}
|
||||
}
|
||||
#endregion DrawText
|
||||
|
||||
public static FontStyle GetFontStyle()
|
||||
{
|
||||
switch (Style)
|
||||
{
|
||||
case EStyle.Normal:
|
||||
return FontStyle.Regular;
|
||||
case EStyle.Italic:
|
||||
return FontStyle.Italic;
|
||||
case EStyle.Bold:
|
||||
return FontStyle.Bold;
|
||||
case EStyle.BoldItalic:
|
||||
return FontStyle.Bold | FontStyle.Italic;
|
||||
default:
|
||||
return FontStyle.Regular;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetFont(string fontName)
|
||||
{
|
||||
int index = _GetPartyFontIndex(PartyModeID, fontName);
|
||||
if (index < 0)
|
||||
index = _GetThemeFontIndex(CConfig.Theme, fontName);
|
||||
if (index < 0)
|
||||
index = _GetFontIndex(fontName);
|
||||
if (index >= 0)
|
||||
_CurrentFont = index;
|
||||
}
|
||||
|
||||
public static RectangleF GetTextBounds(CText text)
|
||||
{
|
||||
return GetTextBounds(text, text.Height);
|
||||
}
|
||||
|
||||
public static RectangleF GetTextBounds(CText text, float height)
|
||||
{
|
||||
Height = height;
|
||||
return new RectangleF(text.X, text.Y, GetTextWidth(CLanguage.Translate(text.Text, text.TranslationID)),
|
||||
GetTextHeight(CLanguage.Translate(text.Text, text.TranslationID)));
|
||||
}
|
||||
|
||||
public static float GetTextWidth(string text)
|
||||
{
|
||||
CFont font = _GetCurrentFont();
|
||||
return text.Sum(chr => font.GetWidth(chr));
|
||||
}
|
||||
|
||||
public static float GetTextHeight(string text)
|
||||
{
|
||||
//return TextRenderer.MeasureText(text, GetFont()).Height;
|
||||
CFont font = _GetCurrentFont();
|
||||
return text == "" ? 0 : text.Select(font.GetHeight).Max();
|
||||
}
|
||||
|
||||
private static void _LoadFontFiles(CXMLReader xmlReader, string fontFolder, string themeName = "", int partyModeId = -1)
|
||||
{
|
||||
string value = string.Empty;
|
||||
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};
|
||||
|
||||
bool ok = true;
|
||||
|
||||
string name;
|
||||
ok &= xmlReader.GetValue("//root/Fonts/Font" + i + "/Name", out name, value);
|
||||
sf.Name = name;
|
||||
|
||||
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);
|
||||
sf.Normal = f;
|
||||
|
||||
ok &= xmlReader.GetValue("//root/Fonts/Font" + i + "/FileItalic", out value, value);
|
||||
sf.FileItalic = value;
|
||||
value = Path.Combine(fontFolder, Path.Combine(sf.Folder, value));
|
||||
f = new CFont(value);
|
||||
sf.Italic = f;
|
||||
|
||||
ok &= xmlReader.GetValue("//root/Fonts/Font" + i + "/FileBold", out value, value);
|
||||
sf.FileBold = value;
|
||||
value = Path.Combine(fontFolder, Path.Combine(sf.Folder, value));
|
||||
f = new CFont(value);
|
||||
sf.Bold = f;
|
||||
|
||||
ok &= xmlReader.GetValue("//root/Fonts/Font" + i + "/FileBoldItalic", out value, value);
|
||||
sf.FileBoldItalic = value;
|
||||
value = Path.Combine(fontFolder, Path.Combine(sf.Folder, value));
|
||||
f = new CFont(value);
|
||||
sf.BoldItalic = f;
|
||||
|
||||
sf.Outline = 0f;
|
||||
ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i + "/Outline", ref sf.Outline);
|
||||
|
||||
sf.OutlineColor = new SColorF(0f, 0f, 0f, 1f);
|
||||
ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i + "/OutlineColorR", ref sf.OutlineColor.R);
|
||||
ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i + "/OutlineColorG", ref sf.OutlineColor.G);
|
||||
ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i + "/OutlineColorB", ref sf.OutlineColor.B);
|
||||
ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i + "/OutlineColorA", ref sf.OutlineColor.A);
|
||||
|
||||
if (ok)
|
||||
_Fonts.Add(sf);
|
||||
else
|
||||
{
|
||||
string fontTypes;
|
||||
if (partyModeId >= 0)
|
||||
fontTypes = "theme fonts for party mode";
|
||||
else if (themeName != "")
|
||||
fontTypes = "theme fonts for theme \"" + themeName + "\"";
|
||||
else
|
||||
fontTypes = "basic fonts";
|
||||
CLog.LogError("Error loading " + fontTypes + ": Error in Font" + i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load default fonts
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private static bool _LoadFontList()
|
||||
{
|
||||
CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(CSettings.FolderFonts, CSettings.FileFonts));
|
||||
if (xmlReader == null)
|
||||
return false;
|
||||
|
||||
_Fonts.Clear();
|
||||
|
||||
_LoadFontFiles(xmlReader, Path.Combine(Directory.GetCurrentDirectory(), CSettings.FolderFonts));
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads theme fonts from skin file
|
||||
/// </summary>
|
||||
public static void LoadThemeFonts(string themeName, string fontFolder, CXMLReader xmlReader)
|
||||
{
|
||||
_LoadFontFiles(xmlReader, fontFolder, themeName);
|
||||
CLog.StartBenchmark(1, "BuildGlyphs");
|
||||
_BuildGlyphs();
|
||||
CLog.StopBenchmark(1, "BuildGlyphs");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads party mode fonts from skin file
|
||||
/// </summary>
|
||||
public static void LoadPartyModeFonts(int partyModeID, string fontFolder, CXMLReader xmlReader)
|
||||
{
|
||||
_LoadFontFiles(xmlReader, fontFolder, "", partyModeID);
|
||||
CLog.StartBenchmark(1, "BuildGlyphs");
|
||||
_BuildGlyphs();
|
||||
CLog.StopBenchmark(1, "BuildGlyphs");
|
||||
}
|
||||
|
||||
public static void SaveThemeFonts(string themeName, XmlWriter writer)
|
||||
{
|
||||
if (_Fonts.Count == 0)
|
||||
return;
|
||||
|
||||
int index = 0;
|
||||
int fontNr = 1;
|
||||
bool setStart = false;
|
||||
while (index < _Fonts.Count)
|
||||
{
|
||||
if (_Fonts[index].IsThemeFont && _Fonts[index].ThemeName == themeName)
|
||||
{
|
||||
if (!setStart)
|
||||
{
|
||||
writer.WriteStartElement("Fonts");
|
||||
setStart = true;
|
||||
}
|
||||
|
||||
writer.WriteStartElement("Font" + fontNr);
|
||||
|
||||
writer.WriteElementString("Name", _Fonts[index].Name);
|
||||
writer.WriteElementString("Folder", _Fonts[index].Folder);
|
||||
|
||||
writer.WriteElementString("Outline", _Fonts[index].Outline.ToString("#0.00"));
|
||||
writer.WriteElementString("OutlineColorR", _Fonts[index].OutlineColor.R.ToString("#0.00"));
|
||||
writer.WriteElementString("OutlineColorG", _Fonts[index].OutlineColor.G.ToString("#0.00"));
|
||||
writer.WriteElementString("OutlineColorB", _Fonts[index].OutlineColor.B.ToString("#0.00"));
|
||||
writer.WriteElementString("OutlineColorA", _Fonts[index].OutlineColor.A.ToString("#0.00"));
|
||||
|
||||
writer.WriteElementString("FileNormal", _Fonts[index].FileNormal);
|
||||
writer.WriteElementString("FileBold", _Fonts[index].FileBold);
|
||||
writer.WriteElementString("FileItalic", _Fonts[index].FileItalic);
|
||||
writer.WriteElementString("FileBoldItalic", _Fonts[index].FileBoldItalic);
|
||||
|
||||
writer.WriteEndElement();
|
||||
|
||||
fontNr++;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
if (setStart)
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
public static void UnloadThemeFonts(string themeName)
|
||||
{
|
||||
if (_Fonts.Count == 0)
|
||||
return;
|
||||
|
||||
int index = 0;
|
||||
while (index < _Fonts.Count)
|
||||
{
|
||||
if (_Fonts[index].IsThemeFont && _Fonts[index].ThemeName == themeName)
|
||||
{
|
||||
_Fonts[index].Normal.UnloadGlyphs();
|
||||
_Fonts[index].Italic.UnloadGlyphs();
|
||||
_Fonts[index].Bold.UnloadGlyphs();
|
||||
_Fonts[index].BoldItalic.UnloadGlyphs();
|
||||
_Fonts.RemoveAt(index);
|
||||
}
|
||||
else
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
private static int _GetFontIndex(string fontName)
|
||||
{
|
||||
for (int i = 0; i < _Fonts.Count; i++)
|
||||
{
|
||||
if (!_Fonts[i].IsThemeFont && _Fonts[i].Name == fontName)
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
private static int _GetThemeFontIndex(string themeName, string fontName)
|
||||
{
|
||||
if (themeName == "" || fontName == "")
|
||||
return -1;
|
||||
|
||||
for (int i = 0; i < _Fonts.Count; i++)
|
||||
{
|
||||
if (_Fonts[i].IsThemeFont && _Fonts[i].Name == fontName && _Fonts[i].ThemeName == themeName)
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
private static int _GetPartyFontIndex(int partyModeID, string fontName)
|
||||
{
|
||||
if (partyModeID == -1 || fontName == "")
|
||||
return -1;
|
||||
|
||||
for (int i = 0; i < _Fonts.Count; i++)
|
||||
{
|
||||
if (!_Fonts[i].IsThemeFont && _Fonts[i].PartyModeID == partyModeID && _Fonts[i].Name == fontName)
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
private static void _BuildGlyphs()
|
||||
{
|
||||
const string text = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
|
||||
|
||||
for (int i = 0; i < _Fonts.Count; i++)
|
||||
{
|
||||
_CurrentFont = i;
|
||||
|
||||
foreach (char chr in text)
|
||||
{
|
||||
Style = EStyle.Normal;
|
||||
_Fonts[_CurrentFont].Normal.GetOrAddGlyph(chr);
|
||||
Style = EStyle.Bold;
|
||||
_Fonts[_CurrentFont].Bold.GetOrAddGlyph(chr);
|
||||
Style = EStyle.Italic;
|
||||
_Fonts[_CurrentFont].Italic.GetOrAddGlyph(chr);
|
||||
Style = EStyle.BoldItalic;
|
||||
_Fonts[_CurrentFont].BoldItalic.GetOrAddGlyph(chr);
|
||||
}
|
||||
}
|
||||
Style = EStyle.Normal;
|
||||
SetFont("Normal");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,214 +0,0 @@
|
||||
#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 <http://www.gnu.org/licenses/>.
|
||||
// */
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Drawing.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace Vocaluxe.Base.Font
|
||||
{
|
||||
class CGlyph
|
||||
{
|
||||
private STexture _Texture;
|
||||
private readonly SizeF _BoundingBox;
|
||||
private readonly RectangleF _DrawBounding;
|
||||
|
||||
public float Width
|
||||
{
|
||||
get { return _BoundingBox.Width * _GetFactor(); }
|
||||
}
|
||||
|
||||
public float Height
|
||||
{
|
||||
get { return _BoundingBox.Height * _GetFactor(); }
|
||||
}
|
||||
|
||||
public CGlyph(char chr, float maxHeight)
|
||||
{
|
||||
float oldHeight = CFonts.Height;
|
||||
float outline = CFonts.Outline;
|
||||
float outlineSize = outline * maxHeight;
|
||||
string chrString = chr.ToString();
|
||||
|
||||
CFonts.Height = maxHeight; // *factor;
|
||||
//float factor = _GetFactor(chr, flags);
|
||||
System.Drawing.Font fo = CFonts.GetFont();
|
||||
SizeF fullSize, boundingSize;
|
||||
Size bmpSize;
|
||||
using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
|
||||
{
|
||||
fullSize = g.MeasureString(chrString, fo);
|
||||
fullSize.Width += outlineSize;
|
||||
if (chr != ' ')
|
||||
{
|
||||
//Gets exact height and width for drawing more than 1 char. But width is to small to draw char on bitmap as e.g. italic chars will get cropped
|
||||
boundingSize = g.MeasureString(chrString, fo, -1, new StringFormat(StringFormat.GenericTypographic));
|
||||
boundingSize.Width += outlineSize;
|
||||
if (boundingSize.Height > 0)
|
||||
boundingSize.Height += outlineSize;
|
||||
else
|
||||
boundingSize.Height = fullSize.Height;
|
||||
bmpSize = new Size((int)fullSize.Width, (int)Math.Round(boundingSize.Height));
|
||||
}
|
||||
else
|
||||
{
|
||||
boundingSize = fullSize;
|
||||
bmpSize = new Size(1, 1);
|
||||
}
|
||||
_BoundingBox = boundingSize;
|
||||
}
|
||||
using (Bitmap bmp = new Bitmap(bmpSize.Width, bmpSize.Height, PixelFormat.Format32bppArgb))
|
||||
using (Graphics g = Graphics.FromImage(bmp))
|
||||
{
|
||||
g.Clear(Color.Transparent);
|
||||
|
||||
if (chr == ' ')
|
||||
{
|
||||
_Texture = CDraw.AddTexture(bmp);
|
||||
_DrawBounding = new RectangleF(0, 0, 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||
g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
|
||||
|
||||
PointF point = new PointF(outlineSize / 2, outlineSize / 2);
|
||||
|
||||
using (GraphicsPath 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))
|
||||
{
|
||||
pen.LineJoin = LineJoin.Round;
|
||||
g.DrawPath(pen, path);
|
||||
g.FillPath(Brushes.White, path);
|
||||
}
|
||||
}
|
||||
Rectangle realBounds = _GetRealBounds(bmp);
|
||||
_DrawBounding = realBounds;
|
||||
float dx = (fullSize.Width - boundingSize.Width - 1) / 2;
|
||||
_DrawBounding.X -= dx;
|
||||
using (Bitmap bmpCropped = bmp.Clone(realBounds, PixelFormat.Format32bppArgb))
|
||||
{
|
||||
_Texture = CDraw.AddTexture(bmpCropped);
|
||||
if (false)
|
||||
{
|
||||
if (outline > 0)
|
||||
bmpCropped.Save("font/" + chr + "o" + CFonts.Style + "2.png", ImageFormat.Png);
|
||||
else
|
||||
bmpCropped.Save("font/" + chr + CFonts.Style + "2.png", ImageFormat.Png);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fo.Dispose();
|
||||
CFonts.Height = oldHeight;
|
||||
}
|
||||
|
||||
private float _GetFactor()
|
||||
{
|
||||
return CFonts.Height / _BoundingBox.Height;
|
||||
}
|
||||
|
||||
public void UnloadTexture()
|
||||
{
|
||||
CDraw.RemoveTexture(ref _Texture);
|
||||
}
|
||||
|
||||
public void GetTextureAndRect(float x, float y, float z, out STexture texture, out SRectF rect)
|
||||
{
|
||||
texture = _Texture;
|
||||
float factor = _GetFactor();
|
||||
x += _DrawBounding.X * factor;
|
||||
y += _DrawBounding.Y * factor;
|
||||
float w = _DrawBounding.Width * factor;
|
||||
float h = _DrawBounding.Height * factor;
|
||||
rect = new SRectF(x, y, w, h, z);
|
||||
}
|
||||
|
||||
private static Rectangle _GetRealBounds(Bitmap bmp)
|
||||
{
|
||||
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];
|
||||
Marshal.Copy(bmpData.Scan0, rgbValues, 0, values);
|
||||
int index = 0;
|
||||
bool found = false;
|
||||
//find from top
|
||||
for (int y = 0; y < bmp.Height && !found; y++)
|
||||
{
|
||||
for (int x = 0; x < bmp.Width; x++)
|
||||
{
|
||||
if (rgbValues[index] != 0)
|
||||
{
|
||||
minX = x;
|
||||
maxX = x;
|
||||
minY = y;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
}
|
||||
found = false;
|
||||
//find left
|
||||
for (int x = 0; x < minX && !found; x++)
|
||||
{
|
||||
index = x + minY * bmp.Width;
|
||||
for (int y = minY; y < bmp.Height; y++)
|
||||
{
|
||||
if (rgbValues[index] != 0)
|
||||
{
|
||||
found = true;
|
||||
minX = x;
|
||||
break;
|
||||
}
|
||||
index += bmp.Width;
|
||||
}
|
||||
}
|
||||
found = false;
|
||||
//find right
|
||||
for (int x = bmp.Width - 1; x > maxX && !found; x--)
|
||||
{
|
||||
index = x + minY * bmp.Width;
|
||||
for (int y = minY; y < bmp.Height; y++)
|
||||
{
|
||||
if (rgbValues[index] != 0)
|
||||
{
|
||||
found = true;
|
||||
maxX = x;
|
||||
break;
|
||||
}
|
||||
index += bmp.Width;
|
||||
}
|
||||
}
|
||||
return new Rectangle(minX, minY, maxX - minX + 1, bmp.Height - minY);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
using SlimDX.Windows;
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace Vocaluxe.Lib.Draw
|
||||
|
||||
@@ -27,7 +27,7 @@ using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace Vocaluxe.Lib.Draw
|
||||
|
||||
@@ -30,7 +30,7 @@ using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using VocaluxeLib.Menu;
|
||||
using BeginMode = OpenTK.Graphics.OpenGL.BeginMode;
|
||||
using BlendingFactorDest = OpenTK.Graphics.OpenGL.BlendingFactorDest;
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ using System.Reflection;
|
||||
using System.Windows.Forms;
|
||||
using Vocaluxe.Base;
|
||||
using System.Runtime.ExceptionServices;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
|
||||
namespace Vocaluxe
|
||||
{
|
||||
|
||||
@@ -24,87 +24,87 @@ using System.Windows.Forms;
|
||||
using Vocaluxe.Base;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
enum EDirection
|
||||
{
|
||||
Left,
|
||||
Right,
|
||||
Up
|
||||
}
|
||||
|
||||
class CCreditName
|
||||
{
|
||||
private readonly CStatic _Image;
|
||||
private readonly CStatic _ImgDot;
|
||||
private readonly CParticleEffect _Particle;
|
||||
private readonly int _ParticleOffsetX;
|
||||
private readonly int _ParticleOffsetY;
|
||||
public EDirection Direction;
|
||||
public float StartTimeUp;
|
||||
public bool Active;
|
||||
|
||||
public CCreditName(CStatic image, CStatic imgDot, CParticleEffect particle, int particleOffsetX, int particleOffsetY)
|
||||
{
|
||||
_Image = image;
|
||||
_ImgDot = imgDot;
|
||||
_Particle = particle;
|
||||
_ParticleOffsetX = (int)Math.Round(particleOffsetX * image.Rect.W / image.Texture.Width - particle.Rect.W / 2);
|
||||
_ParticleOffsetY = (int)Math.Round(particleOffsetY * image.Rect.H / image.Texture.Height - particle.Rect.H / 2);
|
||||
Active = true;
|
||||
}
|
||||
|
||||
public float X
|
||||
{
|
||||
get { return _Image.Rect.X; }
|
||||
set
|
||||
{
|
||||
_Image.Rect.X = value;
|
||||
_ImgDot.Rect.X = value + _ParticleOffsetX;
|
||||
_Particle.Rect.X = value + _ParticleOffsetX;
|
||||
}
|
||||
}
|
||||
public float Y
|
||||
{
|
||||
get { return _Image.Rect.Y; }
|
||||
set
|
||||
{
|
||||
_Image.Rect.Y = value;
|
||||
_ImgDot.Rect.Y = value + _ParticleOffsetY;
|
||||
_Particle.Rect.Y = value + _ParticleOffsetY;
|
||||
}
|
||||
}
|
||||
|
||||
public float W
|
||||
{
|
||||
get { return _Image.Rect.W; }
|
||||
}
|
||||
public float H
|
||||
{
|
||||
get { return _Image.Rect.H; }
|
||||
}
|
||||
|
||||
public float Alpha
|
||||
{
|
||||
get { return _Image.Alpha; }
|
||||
set
|
||||
{
|
||||
_Image.Alpha = value;
|
||||
_ImgDot.Alpha = value;
|
||||
}
|
||||
}
|
||||
|
||||
public void Draw()
|
||||
{
|
||||
if (Active)
|
||||
{
|
||||
_Image.Draw();
|
||||
_ImgDot.Draw();
|
||||
_Particle.Draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace Vocaluxe.Screens
|
||||
{
|
||||
enum EDirection
|
||||
{
|
||||
Left,
|
||||
Right,
|
||||
Up
|
||||
}
|
||||
|
||||
class CCreditName
|
||||
{
|
||||
private readonly CStatic _Image;
|
||||
private readonly CStatic _ImgDot;
|
||||
private readonly CParticleEffect _Particle;
|
||||
private readonly int _ParticleOffsetX;
|
||||
private readonly int _ParticleOffsetY;
|
||||
public EDirection Direction;
|
||||
public float StartTimeUp;
|
||||
public bool Active;
|
||||
|
||||
public CCreditName(CStatic image, CStatic imgDot, CParticleEffect particle, int particleOffsetX, int particleOffsetY)
|
||||
{
|
||||
_Image = image;
|
||||
_ImgDot = imgDot;
|
||||
_Particle = particle;
|
||||
_ParticleOffsetX = (int)Math.Round(particleOffsetX * image.Rect.W / image.Texture.Width - particle.Rect.W / 2);
|
||||
_ParticleOffsetY = (int)Math.Round(particleOffsetY * image.Rect.H / image.Texture.Height - particle.Rect.H / 2);
|
||||
Active = true;
|
||||
}
|
||||
|
||||
public float X
|
||||
{
|
||||
get { return _Image.Rect.X; }
|
||||
set
|
||||
{
|
||||
_Image.Rect.X = value;
|
||||
_ImgDot.Rect.X = value + _ParticleOffsetX;
|
||||
_Particle.Rect.X = value + _ParticleOffsetX;
|
||||
}
|
||||
}
|
||||
public float Y
|
||||
{
|
||||
get { return _Image.Rect.Y; }
|
||||
set
|
||||
{
|
||||
_Image.Rect.Y = value;
|
||||
_ImgDot.Rect.Y = value + _ParticleOffsetY;
|
||||
_Particle.Rect.Y = value + _ParticleOffsetY;
|
||||
}
|
||||
}
|
||||
|
||||
public float W
|
||||
{
|
||||
get { return _Image.Rect.W; }
|
||||
}
|
||||
public float H
|
||||
{
|
||||
get { return _Image.Rect.H; }
|
||||
}
|
||||
|
||||
public float Alpha
|
||||
{
|
||||
get { return _Image.Alpha; }
|
||||
set
|
||||
{
|
||||
_Image.Alpha = value;
|
||||
_ImgDot.Alpha = value;
|
||||
}
|
||||
}
|
||||
|
||||
public void Draw()
|
||||
{
|
||||
if (Active)
|
||||
{
|
||||
_Image.Draw();
|
||||
_ImgDot.Draw();
|
||||
_Particle.Draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class CScreenCredits : CMenu
|
||||
{
|
||||
// Version number for theme files. Increment it, if you've changed something on the theme files!
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
using System.Windows.Forms;
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace Vocaluxe.Screens
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
using System.Windows.Forms;
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace Vocaluxe.Screens
|
||||
|
||||
@@ -25,7 +25,7 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Base.Font;
|
||||
using Vocaluxe.Base.Fonts;
|
||||
using VocaluxeLib.Menu;
|
||||
using VocaluxeLib.Menu.SingNotes;
|
||||
using VocaluxeLib.Menu.SongMenu;
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
<Compile Include="Base\CCover.cs" />
|
||||
<Compile Include="Base\CDataBase.cs" />
|
||||
<Compile Include="Base\CDraw.cs" />
|
||||
<Compile Include="Base\Font\CFont.cs" />
|
||||
<Compile Include="Base\Fonts\CFont.cs" />
|
||||
<Compile Include="Base\CGame.cs" />
|
||||
<Compile Include="Base\CController.cs" />
|
||||
<Compile Include="Base\CLanguage.cs" />
|
||||
@@ -195,8 +195,8 @@
|
||||
<Compile Include="Base\CTheme.cs" />
|
||||
<Compile Include="Base\CVideo.cs" />
|
||||
<Compile Include="Base\CWebcam.cs" />
|
||||
<Compile Include="Base\Font\CFonts.cs" />
|
||||
<Compile Include="Base\Font\CGlyph.cs" />
|
||||
<Compile Include="Base\Fonts\CFonts.cs" />
|
||||
<Compile Include="Base\Fonts\CGlyph.cs" />
|
||||
<Compile Include="CSplashScreen.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
||||
Reference in new issue
Block a user