92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package kha.java;
 | 
						|
 | 
						|
import kha.FontStyle;
 | 
						|
import java.awt.image.BufferedImage;
 | 
						|
import java.awt.Graphics2D;
 | 
						|
import java.awt.Font in JFont;
 | 
						|
 | 
						|
// @:classCode('
 | 
						|
// 	private static java.awt.image.BufferedImage testImage = new java.awt.image.BufferedImage(1, 1, java.awt.image.BufferedImage.TYPE_INT_ARGB);
 | 
						|
// 	private static java.awt.Graphics2D testGraphics;
 | 
						|
// 	public java.awt.Font font;
 | 
						|
// 	static {
 | 
						|
// 		testGraphics = testImage.createGraphics();
 | 
						|
// 	}
 | 
						|
// ')
 | 
						|
class Font implements Resource {
 | 
						|
	static var testImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
 | 
						|
	static var testGraphics: Graphics2D;
 | 
						|
 | 
						|
	public var font: JFont;
 | 
						|
	public var myName: String;
 | 
						|
	public var myStyle: FontStyle;
 | 
						|
	public var mySize: Float;
 | 
						|
 | 
						|
	public function new(name: String, style: FontStyle, size: Float) {
 | 
						|
		if (testGraphics == null)
 | 
						|
			testGraphics = testImage.createGraphics();
 | 
						|
		init(name, style, 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('
 | 
						|
	// 	font = new java.awt.Font(name, 0, (int)size);
 | 
						|
	// 	myName = name;
 | 
						|
	// 	myStyle = style;
 | 
						|
	// 	mySize = size;
 | 
						|
	// ')
 | 
						|
	function init(name: String, style: FontStyle, size: Float) {
 | 
						|
		font = new JFont(name, 0, Std.int(size));
 | 
						|
		myName = name;
 | 
						|
		myStyle = style;
 | 
						|
		mySize = size;
 | 
						|
	}
 | 
						|
 | 
						|
	// @:functionCode('
 | 
						|
	// 	return testGraphics.getFontMetrics(font).getHeight();
 | 
						|
	// ')
 | 
						|
	public function height(fontSize: Int): Float {
 | 
						|
		return testGraphics.getFontMetrics(font).getHeight();
 | 
						|
	}
 | 
						|
 | 
						|
	// @:functionCode('
 | 
						|
	// 	return testGraphics.getFontMetrics(font).stringWidth(str);
 | 
						|
	// ')
 | 
						|
	public function width(fontSize: Int, str: String): Float {
 | 
						|
		return testGraphics.getFontMetrics(font).stringWidth(str);
 | 
						|
		// return 0;
 | 
						|
	}
 | 
						|
 | 
						|
	// @:functionCode('
 | 
						|
	// 	return testGraphics.getFontMetrics(font).getHeight() - testGraphics.getFontMetrics(font).getLeading();
 | 
						|
	// ')
 | 
						|
	public function baseline(fontSize: Int): Float {
 | 
						|
		return testGraphics.getFontMetrics(font).getHeight() - testGraphics.getFontMetrics(font).getLeading();
 | 
						|
		// return 0;
 | 
						|
	}
 | 
						|
 | 
						|
	// @:functionCode('
 | 
						|
	// 	font = null;
 | 
						|
	// ')
 | 
						|
	public function unload(): Void {
 | 
						|
		font = null;
 | 
						|
	}
 | 
						|
}
 |