Konstantin Koch 8287c54432 Included the Visual Studio extension and made the necessary changes to make it run.
Replaced the old VS templates with ones that offer more flexiblity.
Started replacing the Content Project for the samples with our custom project type.
Inlcuded a basic not yet working AssimpImporter.
2015-04-08 14:50:03 +02:00

141 lines
3.9 KiB
C#

#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#endregion
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
namespace ANX.Framework.Content.Pipeline.Graphics
{
public class FontDescription : ContentItem
{
private List<char> _characters = new List<char>();
internal FontDescription()
{
}
public FontDescription(string fontName, float size, float spacing)
{
FontName = fontName;
Size = size;
Spacing = spacing;
}
public FontDescription(string fontName, float size, float spacing, FontDescriptionStyle fontStyle)
{
FontName = fontName;
Size = size;
Spacing = spacing;
Style = fontStyle;
}
public FontDescription(string fontName, float size, float spacing, FontDescriptionStyle fontStyle, bool useKerning)
{
FontName = fontName;
Size = size;
Spacing = spacing;
Style = fontStyle;
UseKerning = useKerning;
}
[ContentSerializer(AllowNull = false)]
public string FontName
{
get;
set;
}
public float Size
{
get;
set;
}
[ContentSerializer(Optional = true)]
public float Spacing
{
get;
set;
}
[ContentSerializer(Optional = true)]
public bool UseKerning
{
get;
set;
}
public FontDescriptionStyle Style
{
get;
set;
}
[ContentSerializer(Optional = true)]
public Nullable<char> DefaultCharacter
{
get;
set;
}
[ContentSerializer(CollectionItemName = "CharacterRegion")]
internal CharacterRegion[] CharacterRegions
{
get
{
if (_characters.Count == 0)
return new CharacterRegion[0];
List<CharacterRegion> regions = new List<CharacterRegion>();
_characters.Sort();
//Find gaps in the characters and put them into groups.
char start = _characters[0];
char previousCharacter = start;
for (int i = 1; i < _characters.Count; i++)
{
if (_characters[i] != previousCharacter + 1)
{
regions.Add(new CharacterRegion() { Start = start, End = previousCharacter});
start = _characters[i];
}
previousCharacter = _characters[i];
}
regions.Add(new CharacterRegion() { Start = start, End = previousCharacter });
return regions.ToArray();
}
set
{
if (value == null)
throw new ArgumentNullException("value");
_characters.Clear();
foreach (CharacterRegion region in value)
{
if (region.End < region.Start)
throw new ArgumentException(string.Format("The end value is lower than the start value for the character region {0}:{1}", region.Start, region.End));
for (char c = region.Start; c <= region.End; c++)
_characters.Add(c);
}
}
}
[ContentSerializerIgnore]
public ICollection<char> Characters
{
get { return _characters; }
}
}
}