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;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |