2using Microsoft.Xna.Framework.Graphics;
4using XnaV2 = Microsoft.Xna.Framework.Vector2;
7using Microsoft.Xna.Framework.Content;
9using System.Collections.Generic;
73 if (value <= 0)
throw new Exception(
"Fontsize must be greater than zero.");
130 get {
return XnaFont.MeasureString(
"X" ).X; }
138 get {
return XnaFont.MeasureString(
"X" ).Y; }
195 this.size = fontSize;
213 else s = File.Open(
name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
239 Stream s = File.Open(
"Content/" + filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
250 return XnaFont.MeasureString(c.ToString());
262 StringBuilder builder =
new StringBuilder( str );
263 double realWidth =
XnaFont.MeasureString( str ).X;
265 while ( realWidth > maxLineWidth )
267 builder.Remove( builder.Length - 1, 1 );
268 realWidth =
XnaFont.MeasureString( builder ).X;
271 return builder.ToString();
281 var xnaVector2 =
XnaFont.MeasureString(str);
282 return new Vector(xnaVector2.X, xnaVector2.Y);
285 private static void appendLine(StringBuilder dest, StringBuilder line)
287 if ( dest.Length > 0 ) dest.Append(
"\n" );
288 line.RemoveLeading( c => Char.IsWhiteSpace( c ) );
298 public string WrapText(
string text,
double softLineWidth,
double hardLineWidth )
300 if ( softLineWidth <= 0 || hardLineWidth <= 0 )
302 throw new ArgumentException(
"Width must be positive." );
305 StringBuilder src =
new StringBuilder( text );
306 StringBuilder word =
new StringBuilder();
307 StringBuilder line =
new StringBuilder();
308 StringBuilder dest =
new StringBuilder();
309 double lineWidth = 0;
311 while ( src.Length > 0 || word.Length > 0 )
313 if (word.Length == 0)
314 src.TakeFirstWord( word );
316 var wordWidth =
XnaFont.MeasureString( word ).X;
318 if ( lineWidth + wordWidth > softLineWidth )
324 else if (lineWidth + wordWidth > hardLineWidth)
326 int wi =
FindWrapIndex(word, hardLineWidth - lineWidth,
false);
327 word.PutTo(line, 0, wi + 1);
334 lineWidth += wordWidth;
338 if ( line.Length > 0 )
341 return dest.ToString();
352 private int FindWrapIndex( StringBuilder text,
double maxWidth,
bool fromRight )
355 double currentWidth = -
xnaFont.FontSystem.CharacterSpacing;
356 int i = fromRight ? text.Length - 1 : 0;
357 int step = fromRight ? -1 : 1;
360 while ( ( fromRight && i >= 0 ) || ( !fromRight && i < text.Length ) )
363 if ( currentWidth >= maxWidth )
return i;
367 return fromRight ? -1 : text.Length;
Microsoft.Xna.Framework.Vector2 XnaV2
Font(string name, int fontSize)
Lataa uuden fontin contentista.
Font(string name, ContentSource source, int fontSize)
DynamicSpriteFont XnaFont
void MergeFont(string filename)
int FindWrapIndex(StringBuilder text, double maxWidth, bool fromRight)
Etsii katkaisuindeksin merkkijonolle merkki kerrallaan. Välilyönneillä ei ole erikoisasemaaa.
int StrokeAmount
Asettaa tekstin reunuksen paksuuden.
Font(string name)
Lataa uuden fontin contentista.
double CharacterHeight
Merkin korkeus.
List< string > mergedFonts
Font(int fontSize, bool bold)
Luo uuden oletusfontin halutulla koolla.
static string defaultFontBold
Vector MeasureSize(string str)
Laskee tekstin koon fontilla.
Vector GetCharacterSize(char c)
Palauttaa annetun merkin koon tässä fontissa.
DynamicSpriteFont xnaFont
static readonly Font Default
Oletusfontti.
string WrapText(string text, double softLineWidth, double hardLineWidth)
Rivittää tekstin.
Font(string name, ContentSource source)
Font(int fontSize=25)
Luo uuden oletusfontin halutulla koolla.
static readonly Font DefaultBold
Lihavoitu oletusfontti.
string TruncateText(string str, double maxLineWidth)
Katkaisee merkkijonon loppupäästä niin että se sopii annettuun pikselileveyteen fontilla kirjoitettun...
int BlurAmount
Asettaa tekstin sumennuksen määrän.
static Font FromContent(string name)
Lataa uuden fontin contentista.
static void appendLine(StringBuilder dest, StringBuilder line)
void AddFont(string filename)
Lisää toisen fontin merkistön tähän fonttiin. Jos fontit sisältävät päällekkäistä merkistöä,...
Font(DynamicSpriteFont xnaFont)
static string defaultFont
double CharacterWidth
Merkin leveys.
static new GraphicsDevice GraphicsDevice
XNA:n grafiikkakortti.
static JypeliContentManager ResourceContent
Kirjaston mukana tuleva sisältö. Voidaan käyttää esimerkiksi sisäisten tekstuurien lataamiseen.
double X
Vektorin X-komponentti.