Преглед на файлове

adjusted text bounds size to be more accurate

Nicolas Cannasse преди 9 месеца
родител
ревизия
0e436da1d7
променени са 2 файла, в които са добавени 8 реда и са изтрити 6 реда
  1. 2 2
      h2d/HtmlText.hx
  2. 6 4
      h2d/Text.hx

+ 2 - 2
h2d/HtmlText.hx

@@ -336,8 +336,8 @@ class HtmlText extends Text {
 		var y = yPos;
 		calcXMin = xMin;
 		calcWidth = xMax - xMin;
-		calcHeight = y + metrics[sizePos].height;
-		calcSizeHeight = y + metrics[sizePos].baseLine;//(font.baseLine > 0 ? font.baseLine : font.lineHeight);
+		calcHeight = y + metrics[sizePos].height - calcYMin;
+		calcSizeHeight = y + metrics[sizePos].baseLine;
 		calcDone = true;
 		if ( rebuild ) needsRebuild = false;
 	}

+ 6 - 4
h2d/Text.hx

@@ -409,7 +409,7 @@ class Text extends Drawable {
 
 	function initGlyphs( text : String, rebuild = true ) : Void {
 		if( rebuild ) glyphs.clear();
-		var x = 0., y = 0., xMax = 0., xMin = 0., yMin = 0., prevChar = -1, linei = 0;
+		var x = 0., y = 0., xMax = 0., xMin = 0., yMin = 0., yMax = 0., prevChar = -1, linei = 0;
 		var align = textAlign;
 		var lines = new Array<Float>();
 		var dl = font.lineHeight + lineSpacing;
@@ -454,6 +454,8 @@ class Text extends Drawable {
 				if( e != null ) {
 					if( rebuild ) glyphs.add(x + offs, y, e.t);
 					if( y == 0 && e.t.dy < yMin ) yMin = e.t.dy;
+					var ty = y + e.t.dy + e.t.height;
+					if( ty > yMax ) yMax = ty;
 					x += esize + letterSpacing;
 				}
 				prevChar = cc;
@@ -464,7 +466,7 @@ class Text extends Drawable {
 		calcXMin = xMin;
 		calcYMin = yMin;
 		calcWidth = xMax - xMin;
-		calcHeight = y + font.lineHeight;
+		calcHeight = yMax - yMin;
 		calcSizeHeight = y + (font.baseLine > 0 ? font.baseLine : font.lineHeight);
 		calcDone = true;
 		if ( rebuild ) needsRebuild = false;
@@ -477,7 +479,7 @@ class Text extends Drawable {
 
 	function get_textHeight() {
 		updateSize();
-		return calcHeight;
+		return font.baseLine == 0 ? calcSizeHeight : calcSizeHeight - font.baseLine + font.lineHeight;
 	}
 
 	function get_textWidth() {
@@ -526,7 +528,7 @@ class Text extends Drawable {
 			x = calcXMin;
 			y = calcYMin;
 			w = calcWidth;
-			h = calcHeight - calcYMin;
+			h = calcHeight;
 		}
 		addBounds(relativeTo, out, x, y, w, h);
 	}