changeset 452:cf00d6e2b3cc

Optimizations to the layout engine on OS/2 and Windows, eliminated 3 MUL and 3 ADD operations per loop (on average). Also always return a valid HFONT from _acquire_font().
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 23 Jun 2003 16:52:21 +0000
parents 538b529052e0
children 031d762fc8d6
files os2/dw.c win/dw.c
diffstat 2 files changed, 29 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/os2/dw.c	Mon Jun 23 08:58:38 2003 +0000
+++ b/os2/dw.c	Mon Jun 23 16:52:21 2003 +0000
@@ -1036,12 +1036,14 @@
 
 		if(thisbox->type == DW_VERT)
 		{
-			if((thisbox->items[z].width + (thisbox->items[z].pad*2)) > uxmax)
-				uxmax = (thisbox->items[z].width + (thisbox->items[z].pad*2));
+			int itemwidth = thisbox->items[z].width + (thisbox->items[z].pad*2);
+
+			if(itemwidth > uxmax)
+				uxmax = itemwidth;
 			if(thisbox->items[z].hsize != SIZEEXPAND)
 			{
-				if(((thisbox->items[z].pad*2) + thisbox->items[z].width) > upxmax)
-					upxmax = (thisbox->items[z].pad*2) + thisbox->items[z].width;
+				if(itemwidth > upxmax)
+					upxmax = itemwidth;
 			}
 			else
 			{
@@ -1067,12 +1069,14 @@
 		}
 		if(thisbox->type == DW_HORZ)
 		{
-			if((thisbox->items[z].height + (thisbox->items[z].pad*2)) > uymax)
-				uymax = (thisbox->items[z].height + (thisbox->items[z].pad*2));
+			int itemheight = thisbox->items[z].height + (thisbox->items[z].pad*2);
+
+			if(itemheight > uymax)
+				uymax = itemheight;
 			if(thisbox->items[z].vsize != SIZEEXPAND)
 			{
-				if(((thisbox->items[z].pad*2) + thisbox->items[z].height) > upymax)
-					upymax = (thisbox->items[z].pad*2) + thisbox->items[z].height;
+				if(itemheight > upymax)
+					upymax = itemheight;
 			}
 			else
 			{
--- a/win/dw.c	Mon Jun 23 08:58:38 2003 +0000
+++ b/win/dw.c	Mon Jun 23 16:52:21 2003 +0000
@@ -998,12 +998,14 @@
 
 		if(thisbox->type == DW_VERT)
 		{
-			if((thisbox->items[z].width + (thisbox->items[z].pad*2)) > uxmax)
-				uxmax = (thisbox->items[z].width + (thisbox->items[z].pad*2));
+			int itemwidth = (thisbox->items[z].pad*2) + thisbox->items[z].width;
+
+			if(itemwidth > uxmax)
+				uxmax = itemwidth;
 			if(thisbox->items[z].hsize != SIZEEXPAND)
 			{
-				if(((thisbox->items[z].pad*2) + thisbox->items[z].width) > upxmax)
-					upxmax = (thisbox->items[z].pad*2) + thisbox->items[z].width;
+				if(itemwidth > upxmax)
+					upxmax = itemwidth;
 			}
 			else
 			{
@@ -1029,12 +1031,14 @@
 		}
 		if(thisbox->type == DW_HORZ)
 		{
-			if((thisbox->items[z].height + (thisbox->items[z].pad*2)) > uymax)
-				uymax = (thisbox->items[z].height + (thisbox->items[z].pad*2));
+			int itemheight = (thisbox->items[z].pad*2) + thisbox->items[z].height;
+
+			if(itemheight > uymax)
+				uymax = itemheight;
 			if(thisbox->items[z].vsize != SIZEEXPAND)
 			{
-				if(((thisbox->items[z].pad*2) + thisbox->items[z].height) > upymax)
-					upymax = (thisbox->items[z].pad*2) + thisbox->items[z].height;
+				if(itemheight > upymax)
+					upymax = itemheight;
 			}
 			else
 			{
@@ -3406,11 +3410,9 @@
 
 HFONT _acquire_font(HWND handle, char *fontname)
 {
-	HFONT hfont;
-
-	if(fontname == DefaultFont || !fontname[0])
-		hfont = GetStockObject(DEFAULT_GUI_FONT);
-	else
+	HFONT hfont = 0;
+
+	if(fontname != DefaultFont && fontname[0])
 	{
         int Italic, Bold;
 		char *myFontName;
@@ -3459,6 +3461,8 @@
 		ReleaseDC(handle, hDC);
 #endif
 	}
+	if(!hfont)
+		hfont = GetStockObject(DEFAULT_GUI_FONT);
 	return hfont;
 }