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