[Scummvm-git-logs] scummvm master -> 9bb24b21f3541b4649f84dd83efe87e02cf35a89

sev- noreply at scummvm.org
Sat Mar 18 19:18:29 UTC 2023


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
9bb24b21f3 GRAPHICS: Use better rounding for BDF font scaling


Commit: 9bb24b21f3541b4649f84dd83efe87e02cf35a89
    https://github.com/scummvm/scummvm/commit/9bb24b21f3541b4649f84dd83efe87e02cf35a89
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-03-18T20:18:11+01:00

Commit Message:
GRAPHICS: Use better rounding for BDF font scaling

Changed paths:
    graphics/fonts/bdf.cpp


diff --git a/graphics/fonts/bdf.cpp b/graphics/fonts/bdf.cpp
index af11c77bd80..9f257a6fb92 100644
--- a/graphics/fonts/bdf.cpp
+++ b/graphics/fonts/bdf.cpp
@@ -746,14 +746,14 @@ BdfFont *BdfFont::scaleFont(const BdfFont *src, int newSize) {
 
 	BdfFontData data;
 
-	data.maxAdvance = (int)((float)src->_data.maxAdvance * scale);
-	data.height = (int)((float)src->_data.height * scale);
-	data.size = (int)((float)src->_data.size * scale);
-	data.defaultBox.width = (int)((float)src->_data.defaultBox.width * scale);
-	data.defaultBox.height = (int)((float)src->_data.defaultBox.height * scale);
-	data.defaultBox.xOffset = (int)((float)src->_data.defaultBox.xOffset * scale);
-	data.defaultBox.yOffset = (int)((float)src->_data.defaultBox.yOffset * scale);
-	data.ascent = (int)((float)src->_data.ascent * scale);
+	data.maxAdvance = (int)(roundf((float)src->_data.maxAdvance * scale));
+	data.height = (int)(roundf((float)src->_data.height * scale));
+	data.size = (int)(roundf((float)src->_data.size * scale));
+	data.defaultBox.width = (int)(roundf((float)src->_data.defaultBox.width * scale));
+	data.defaultBox.height = (int)(roundf((float)src->_data.defaultBox.height * scale));
+	data.defaultBox.xOffset = (int)(roundf((float)src->_data.defaultBox.xOffset * scale));
+	data.defaultBox.yOffset = (int)(roundf((float)src->_data.defaultBox.yOffset * scale));
+	data.ascent = (int)roundf(((float)src->_data.ascent * scale));
 	data.firstCharacter = src->_data.firstCharacter;
 	data.defaultCharacter = src->_data.defaultCharacter;
 	data.numCharacters = src->_data.numCharacters;
@@ -768,16 +768,16 @@ BdfFont *BdfFont::scaleFont(const BdfFont *src, int newSize) {
 
 	BdfBoundingBox *boxes = new BdfBoundingBox[data.numCharacters];
 	for (int i = 0; i < data.numCharacters; ++i) {
-		boxes[i].width = (int)((float)src->_data.boxes[i].width * scale);
-		boxes[i].height = (int)((float)src->_data.boxes[i].height * scale);
-		boxes[i].xOffset = (int)((float)src->_data.boxes[i].xOffset * scale);
-		boxes[i].yOffset = (int)((float)src->_data.boxes[i].yOffset * scale);
+		boxes[i].width = (int)(roundf((float)src->_data.boxes[i].width * scale));
+		boxes[i].height = (int)(roundf((float)src->_data.boxes[i].height * scale));
+		boxes[i].xOffset = (int)(roundf((float)src->_data.boxes[i].xOffset * scale));
+		boxes[i].yOffset = (int)(roundf((float)src->_data.boxes[i].yOffset * scale));
 	}
 	data.boxes = boxes;
 
 	byte *advances = new byte[data.numCharacters];
 	for (int i = 0; i < data.numCharacters; ++i) {
-		advances[i] = (int)((float)src->_data.advances[i] * scale);
+		advances[i] = (int)(roundf((float)src->_data.advances[i] * scale));
 	}
 	data.advances = advances;
 
@@ -804,7 +804,7 @@ BdfFont *BdfFont::scaleFont(const BdfFont *src, int newSize) {
 				for (int x = 0; x < box.width; x++) {
 					b <<= 1;
 
-					int sx = (int)((float)x / scale);
+					int sx = (int)(roundf((float)x / scale));
 
 					if (srcd[sx / 8] & (0x80 >> (sx % 8))) {
 						b |= 1;




More information about the Scummvm-git-logs mailing list