74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package kha.wpf;
 | 
						|
 | 
						|
import kha.FontStyle;
 | 
						|
 | 
						|
@:classCode('
 | 
						|
	private System.Windows.Media.FormattedText getFormat(string text = "ABC") {
 | 
						|
		System.Windows.Media.FormattedText fText = new System.Windows.Media.FormattedText(text,
 | 
						|
				System.Globalization.CultureInfo.GetCultureInfo("en-us"), System.Windows.FlowDirection.LeftToRight,
 | 
						|
				new System.Windows.Media.Typeface(get_name()), get_size(), System.Windows.Media.Brushes.Black);
 | 
						|
		if (get_style().getBold()) fText.SetFontWeight(System.Windows.FontWeights.Bold);
 | 
						|
		if (get_style().getItalic()) fText.SetFontStyle(System.Windows.FontStyles.Italic);
 | 
						|
		if (get_style().getUnderlined()) fText.SetTextDecorations(System.Windows.TextDecorations.Underline);
 | 
						|
		return fText;
 | 
						|
	}
 | 
						|
')
 | 
						|
class Font implements Resource {
 | 
						|
	public var myName: String;
 | 
						|
	public var myStyle: FontStyle;
 | 
						|
	public var mySize: Float;
 | 
						|
 | 
						|
	public function new(name: String, style: FontStyle, size: Float) {
 | 
						|
		myName = name;
 | 
						|
		myStyle = style;
 | 
						|
		mySize = size;
 | 
						|
	}
 | 
						|
 | 
						|
	public var name(get, never): String;
 | 
						|
 | 
						|
	function get_name(): String {
 | 
						|
		return myName;
 | 
						|
	}
 | 
						|
 | 
						|
	public var style(get, never): FontStyle;
 | 
						|
 | 
						|
	function get_style(): FontStyle {
 | 
						|
		return myStyle;
 | 
						|
	}
 | 
						|
 | 
						|
	public var size(get, never): Float;
 | 
						|
 | 
						|
	function get_size(): Float {
 | 
						|
		return mySize;
 | 
						|
	}
 | 
						|
 | 
						|
	@:functionCode('
 | 
						|
		return getFormat().Height;
 | 
						|
	')
 | 
						|
	public function getHeight(): Float {
 | 
						|
		return 0;
 | 
						|
	}
 | 
						|
 | 
						|
	public function charWidth(ch: String): Float {
 | 
						|
		return stringWidth(ch);
 | 
						|
	}
 | 
						|
 | 
						|
	public function charsWidth(ch: String, offset: Int, length: Int): Float {
 | 
						|
		return stringWidth(ch.substr(offset, length));
 | 
						|
	}
 | 
						|
 | 
						|
	@:functionCode('
 | 
						|
		return getFormat(str).WidthIncludingTrailingWhitespace;
 | 
						|
	')
 | 
						|
	public function stringWidth(str: String): Float {
 | 
						|
		return 0;
 | 
						|
	}
 | 
						|
 | 
						|
	@:functionCode('
 | 
						|
		return getFormat().Baseline;
 | 
						|
	')
 | 
						|
	public function getBaselinePosition(): Float {
 | 
						|
		return 0;
 | 
						|
	}
 | 
						|
}
 |