Revision: 42266
          http://brlcad.svn.sourceforge.net/brlcad/?rev=42266&view=rev
Author:   bob1961
Date:     2011-01-14 16:40:56 +0000 (Fri, 14 Jan 2011)

Log Message:
-----------
Mods for overriding the display manager's auto font selection mechanism. 
Implemented for ogl and wgl.

Modified Paths:
--------------
    brlcad/trunk/include/dm.h
    brlcad/trunk/src/libdm/dm-Null.c
    brlcad/trunk/src/libdm/dm-X.c
    brlcad/trunk/src/libdm/dm-ogl.c
    brlcad/trunk/src/libdm/dm-plot.c
    brlcad/trunk/src/libdm/dm-ps.c
    brlcad/trunk/src/libdm/dm-rtgl.c
    brlcad/trunk/src/libdm/dm-tk.c
    brlcad/trunk/src/libdm/dm-wgl.c
    brlcad/trunk/src/libdm/dm_obj.c
    brlcad/trunk/src/libtclcad/ged_obj.c
    brlcad/trunk/src/mged/dm-X.c
    brlcad/trunk/src/mged/dm-ogl.c
    brlcad/trunk/src/mged/dm-rtgl.c
    brlcad/trunk/src/mged/dm-tk.c
    brlcad/trunk/src/mged/dm-wgl.c
    brlcad/trunk/src/mged/doevent.c
    brlcad/trunk/src/tclscripts/lib/Ged.tcl

Modified: brlcad/trunk/include/dm.h
===================================================================
--- brlcad/trunk/include/dm.h   2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/include/dm.h   2011-01-14 16:40:56 UTC (rev 42266)
@@ -89,8 +89,15 @@
 #define FONT8 "8x13"
 #define FONT9 "9x15"
 #define FONT10 "10x20"
-#define FONT11 "12x24"
+#define FONT12 "12x24"
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#  define DM_VALID_FONT_SIZE(_size) (14 <= (_size) && (_size) <= 29)
+#else
+#  define DM_VALID_FONT_SIZE(_size) (5 <= (_size) && (_size) <= 12 && (_size) 
!= 11)
+#  define DM_FONT_SIZE_TO_NAME(_size) (((_size) == 5) ? FONT5 : (((_size) == 
6) ? FONT6 : (((_size) == 7) ? FONT7 : (((_size) == 8) ? FONT8 : (((_size) == 
9) ? FONT9 : (((_size) == 10) ? FONT10 : FONT12))))))
+#endif
+
 /* Display Manager Types */
 #define DM_TYPE_BAD     -1
 #define DM_TYPE_NULL   0
@@ -273,6 +280,7 @@
     int dm_zbuffer;            /**< @brief !0 means zbuffer on */
     int dm_zclip;                      /**< @brief !0 means zclipping */
     int dm_clearBufferAfter;   /**< @brief 1 means clear back buffer after 
drawing and swap */
+    int dm_fontsize;           /**< @brief !0 override's the auto font size */
     Tcl_Interp *dm_interp;     /**< @brief Tcl interpreter */
 };
 
@@ -313,7 +321,7 @@
 #define DM_SET_FGCOLOR(_dmp, _r, _g, _b, _strict, _transparency) 
_dmp->dm_setFGColor(_dmp, _r, _g, _b, _strict, _transparency)
 #define DM_SET_BGCOLOR(_dmp, _r, _g, _b) _dmp->dm_setBGColor(_dmp, _r, _g, _b)
 #define DM_SET_LINE_ATTR(_dmp, _width, _dashed) _dmp->dm_setLineAttr(_dmp, 
_width, _dashed)
-#define DM_CONFIGURE_WIN(_dmp) _dmp->dm_configureWin(_dmp)
+#define DM_CONFIGURE_WIN(_dmp,_force) _dmp->dm_configureWin((_dmp),(_force))
 #define DM_SET_WIN_BOUNDS(_dmp, _w) _dmp->dm_setWinBounds(_dmp, _w)
 #define DM_SET_LIGHT(_dmp, _on) _dmp->dm_setLight(_dmp, _on)
 #define DM_SET_TRANSPARENCY(_dmp, _on) _dmp->dm_setTransparency(_dmp, _on)
@@ -456,7 +464,7 @@
    HIDDEN int _dmtype##_setBGColor(struct dm *dmp, unsigned char r, unsigned 
char g, unsigned char b); \
    HIDDEN int _dmtype##_setLineAttr(struct dm *dmp, int width, int style); \
    HIDDEN int _dmtype##_configureWin_guts(struct dm *dmp, int force); \
-   HIDDEN int _dmtype##_configureWin(struct dm *dmp); \
+   HIDDEN int _dmtype##_configureWin(struct dm *dmp, int force);               
      \
    HIDDEN int _dmtype##_setLight(struct dm *dmp, int lighting_on); \
    HIDDEN int _dmtype##_setTransparency(struct dm *dmp, int transparency_on); \
    HIDDEN int _dmtype##_setDepthMask(struct dm *dmp, int depthMask_on); \

Modified: brlcad/trunk/src/libdm/dm-Null.c
===================================================================
--- brlcad/trunk/src/libdm/dm-Null.c    2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm-Null.c    2011-01-14 16:40:56 UTC (rev 42266)
@@ -161,7 +161,8 @@
     0,                         /* depth buffer is not writable */
     0,                         /* no zbuffer */
     0,                         /* no zclipping */
-    1,                            /* clear back buffer after drawing and swap 
*/
+    1,                          /* clear back buffer after drawing and swap */
+    0,                          /* not overriding the auto font size */
     0                          /* Tcl interpreter */
 };
 

Modified: brlcad/trunk/src/libdm/dm-X.c
===================================================================
--- brlcad/trunk/src/libdm/dm-X.c       2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm-X.c       2011-01-14 16:40:56 UTC (rev 42266)
@@ -1367,10 +1367,10 @@
 
 
 HIDDEN int
-X_configureWin(struct dm *dmp)
+X_configureWin(struct dm *dmp, int force)
 {
     /* don't force */
-    return X_configureWin_guts(dmp, 0);
+    return X_configureWin_guts(dmp, force);
 }
 
 
@@ -1673,7 +1673,8 @@
     0,                         /* depth buffer is not writable */
     0,                         /* no zbuffer */
     0,                         /* no zclipping */
-    1,                            /* clear back buffer after drawing and swap 
*/
+    1,                          /* clear back buffer after drawing and swap */
+    0,                          /* not overriding the auto font size */
     0                          /* Tcl interpreter */
 };
 

Modified: brlcad/trunk/src/libdm/dm-ogl.c
===================================================================
--- brlcad/trunk/src/libdm/dm-ogl.c     2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm-ogl.c     2011-01-14 16:40:56 UTC (rev 42266)
@@ -116,7 +116,7 @@
 HIDDEN int ogl_setBGColor(struct dm *dmp, unsigned char r, unsigned char g, 
unsigned char b);
 HIDDEN int ogl_setLineAttr(struct dm *dmp, int width, int style);
 HIDDEN int ogl_configureWin_guts(struct dm *dmp, int force);
-HIDDEN int ogl_configureWin(struct dm *dmp);
+HIDDEN int ogl_configureWin(struct dm *dmp, int force);
 HIDDEN int ogl_setLight(struct dm *dmp, int lighting_on);
 HIDDEN int ogl_setTransparency(struct dm *dmp, int transparency_on);
 HIDDEN int ogl_setDepthMask(struct dm *dmp, int depthMask_on);
@@ -195,6 +195,7 @@
     1,                         /* zbuffer */
     0,                         /* no zclipping */
     0,                          /* clear back buffer after drawing and swap */
+    0,                          /* not overriding the auto font size */
     0                          /* Tcl interpreter */
 };
 
@@ -343,14 +344,10 @@
                    0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
     }
 
-
-    /* Always try to choose a the font that best fits the window size.
-     */
-
-    if (dmp->dm_width < 582) {
-       if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 5) {
+    if (DM_VALID_FONT_SIZE(dmp->dm_fontsize)) {
+       if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != dmp->dm_fontsize) {
            if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
-                                               FONT5)) != NULL) {
+                                               
DM_FONT_SIZE_TO_NAME(dmp->dm_fontsize))) != NULL) {
                XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
                          ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
                ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
@@ -358,71 +355,87 @@
                            0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
            }
        }
-    } else if (dmp->dm_width < 679) {
-       if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 6) {
-           if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
-                                               FONT6)) != NULL) {
-               XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
-                         ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
-                           0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+    } else {
+       /* Always try to choose a the font that best fits the window size.
+        */
+
+       if (dmp->dm_width < 582) {
+           if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 5) {
+               if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
+                                                   FONT5)) != NULL) {
+                   XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
+                             ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
+                               0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+               }
            }
-       }
-    } else if (dmp->dm_width < 776) {
-       if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 7) {
-           if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
-                                               FONT7)) != NULL) {
-               XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
-                         ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
-                           0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 679) {
+           if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 6) {
+               if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
+                                                   FONT6)) != NULL) {
+                   XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
+                             ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
+                               0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+               }
            }
-       }
-    } else if (dmp->dm_width < 873) {
-       if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 8) {
-           if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
-                                               FONT8)) != NULL) {
-               XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
-                         ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
-                           0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 776) {
+           if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 7) {
+               if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
+                                                   FONT7)) != NULL) {
+                   XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
+                             ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
+                               0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+               }
            }
-       }
-    } else if (dmp->dm_width < 1455) {
-       if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 9) {
-           if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
-                                               FONT9)) != NULL) {
-               XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
-                         ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
-                           0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 873) {
+           if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 8) {
+               if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
+                                                   FONT8)) != NULL) {
+                   XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
+                             ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
+                               0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+               }
            }
-       }
-    } else if (dmp->dm_width < 2037) {
-       if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 10) {
-           if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
-                                               FONT10)) != NULL) {
-               XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
-                         ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
-                           0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1455) {
+           if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 9) {
+               if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
+                                                   FONT9)) != NULL) {
+                   XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
+                             ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
+                               0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+               }
            }
-       }
-    } else {
-       if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 11) {
-           if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
-                                               FONT11)) != NULL) {
-               XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
-                         ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
-                           0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 2037) {
+           if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 10) {
+               if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
+                                                   FONT10)) != NULL) {
+                   XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
+                             ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
+                               0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+               }
            }
+       } else {
+           if (((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->per_char->width != 12) {
+               if ((newfontstruct = XLoadQueryFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->dpy,
+                                                   FONT12)) != NULL) {
+                   XFreeFont(((struct dm_xvars *)dmp->dm_vars.pub_vars)->dpy,
+                             ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   glXUseXFont(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct->fid,
+                               0, 127, ((struct ogl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+               }
+           }
        }
     }
 
@@ -431,9 +444,9 @@
 
 
 HIDDEN int
-ogl_configureWin(struct dm *dmp)
+ogl_configureWin(struct dm *dmp, int force)
 {
-    return ogl_configureWin_guts(dmp, 0);
+    return ogl_configureWin_guts(dmp, force);
 }
 
 

Modified: brlcad/trunk/src/libdm/dm-plot.c
===================================================================
--- brlcad/trunk/src/libdm/dm-plot.c    2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm-plot.c    2011-01-14 16:40:56 UTC (rev 42266)
@@ -117,7 +117,8 @@
     0,                         /* depth buffer is not writable */
     0,                         /* no zbuffer */
     0,                         /* no zclipping */
-    1,                            /* clear back buffer after drawing and swap 
*/
+    1,                          /* clear back buffer after drawing and swap */
+    0,                          /* not overriding the auto font size */
     0                          /* Tcl interpreter */
 };
 

Modified: brlcad/trunk/src/libdm/dm-ps.c
===================================================================
--- brlcad/trunk/src/libdm/dm-ps.c      2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm-ps.c      2011-01-14 16:40:56 UTC (rev 42266)
@@ -117,7 +117,8 @@
     0,                         /* depth buffer is not writable */
     0,                         /* no zbuffer */
     0,                         /* no zclipping */
-    1,                            /* clear back buffer after drawing and swap 
*/
+    1,                          /* clear back buffer after drawing and swap */
+    0,                          /* not overriding the auto font size */
     0                          /* Tcl interpreter */
 };
 

Modified: brlcad/trunk/src/libdm/dm-rtgl.c
===================================================================
--- brlcad/trunk/src/libdm/dm-rtgl.c    2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm-rtgl.c    2011-01-14 16:40:56 UTC (rev 42266)
@@ -149,6 +149,7 @@
     1,                         /* zbuffer */
     0,                         /* no zclipping */
     0,                          /* clear back buffer after drawing and swap */
+    0,                          /* not overriding the auto font size */
     0                          /* Tcl interpreter */
 };
 
@@ -2561,9 +2562,9 @@
 
 
 HIDDEN int
-rtgl_configureWin(struct dm *dmp)
+rtgl_configureWin(struct dm *dmp, int force)
 {
-    return rtgl_configureWin_guts(dmp, 0);
+    return rtgl_configureWin_guts(dmp, force);
 }
 
 

Modified: brlcad/trunk/src/libdm/dm-tk.c
===================================================================
--- brlcad/trunk/src/libdm/dm-tk.c      2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm-tk.c      2011-01-14 16:40:56 UTC (rev 42266)
@@ -138,7 +138,8 @@
     0,                         /* depth buffer is not writable */
     0,                         /* no zbuffer */
     0,                         /* no zclipping */
-    1,                            /* clear back buffer after drawing and swap 
*/
+    1,                          /* clear back buffer after drawing and swap */
+    0,                          /* not overriding the auto font size */
     0                          /* Tcl interpreter */
 };
 
@@ -1062,10 +1063,10 @@
 
 
 HIDDEN int
-tk_configureWin(struct dm *dmp)
+tk_configureWin(struct dm *dmp, int force)
 {
     /* don't force */
-    return tk_configureWin_guts(dmp, 0);
+    return tk_configureWin_guts(dmp, force);
 }
 
 

Modified: brlcad/trunk/src/libdm/dm-wgl.c
===================================================================
--- brlcad/trunk/src/libdm/dm-wgl.c     2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm-wgl.c     2011-01-14 16:40:56 UTC (rev 42266)
@@ -1634,9 +1634,9 @@
     }
 
 
-    if (dmp->dm_width < 582) {
-       if (logfont.lfHeight != 14) {
-           logfont.lfHeight = 14;
+    if (DM_VALID_FONT_SIZE(dmp->dm_fontsize)) {
+       if (logfont.lfHeight != dmp->dm_fontsize) {
+           logfont.lfHeight = dmp->dm_fontsize;
            logfont.lfWidth = 0;
            if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
 
@@ -1648,200 +1648,216 @@
                    DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
            }
        }
-    } else if (dmp->dm_width < 679) {
-       if (logfont.lfHeight != 15) {
-           logfont.lfHeight = 15;
-           logfont.lfWidth = 0;
+    } else {
+       if (dmp->dm_width < 582) {
+           if (logfont.lfHeight != 14) {
+               logfont.lfHeight = 14;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
 
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 776) {
-       if (logfont.lfHeight != 16) {
-           logfont.lfHeight = 16;
-           logfont.lfWidth = 0;
+       } else if (dmp->dm_width < 679) {
+           if (logfont.lfHeight != 15) {
+               logfont.lfHeight = 15;
+               logfont.lfWidth = 0;
 
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
-               DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 873) {
-       if (logfont.lfHeight != 17) {
-           logfont.lfHeight = 17;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 776) {
+           if (logfont.lfHeight != 16) {
+               logfont.lfHeight = 16;
+               logfont.lfWidth = 0;
 
-               if (oldfont != NULL)
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
                    DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 970) {
-       if (logfont.lfWidth != 18) {
-           logfont.lfHeight = 18;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 873) {
+           if (logfont.lfHeight != 17) {
+               logfont.lfHeight = 17;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1067) {
-       if (logfont.lfWidth != 19) {
-           logfont.lfHeight = 19;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 970) {
+           if (logfont.lfWidth != 18) {
+               logfont.lfHeight = 18;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1164) {
-       if (logfont.lfWidth != 20) {
-           logfont.lfHeight = 20;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1067) {
+           if (logfont.lfWidth != 19) {
+               logfont.lfHeight = 19;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1261) {
-       if (logfont.lfWidth != 21) {
-           logfont.lfHeight = 21;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1164) {
+           if (logfont.lfWidth != 20) {
+               logfont.lfHeight = 20;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1358) {
-       if (logfont.lfWidth != 22) {
-           logfont.lfHeight = 22;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1261) {
+           if (logfont.lfWidth != 21) {
+               logfont.lfHeight = 21;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1455) {
-       if (logfont.lfWidth != 23) {
-           logfont.lfHeight = 23;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1358) {
+           if (logfont.lfWidth != 22) {
+               logfont.lfHeight = 22;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1552) {
-       if (logfont.lfWidth != 24) {
-           logfont.lfHeight = 24;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1455) {
+           if (logfont.lfWidth != 23) {
+               logfont.lfHeight = 23;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1649) {
-       if (logfont.lfWidth != 25) {
-           logfont.lfHeight = 25;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1552) {
+           if (logfont.lfWidth != 24) {
+               logfont.lfHeight = 24;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1746) {
-       if (logfont.lfWidth != 26) {
-           logfont.lfHeight = 26;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1649) {
+           if (logfont.lfWidth != 25) {
+               logfont.lfHeight = 25;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1843) {
-       if (logfont.lfWidth != 27) {
-           logfont.lfHeight = 27;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1746) {
+           if (logfont.lfWidth != 26) {
+               logfont.lfHeight = 26;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else if (dmp->dm_width < 1940) {
-       if (logfont.lfWidth != 28) {
-           logfont.lfHeight = 28;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1843) {
+           if (logfont.lfWidth != 27) {
+               logfont.lfHeight = 27;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
-       }
-    } else {
-       if (logfont.lfWidth != 29) {
-           logfont.lfHeight = 29;
-           logfont.lfWidth = 0;
-           if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
-               ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
-               oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
-               wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+       } else if (dmp->dm_width < 1940) {
+           if (logfont.lfWidth != 28) {
+               logfont.lfHeight = 28;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
 
-               if (oldfont != NULL)
-                   DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
            }
+       } else {
+           if (logfont.lfWidth != 29) {
+               logfont.lfHeight = 29;
+               logfont.lfWidth = 0;
+               if ((newfontstruct = CreateFontIndirect(&logfont)) != NULL) {
+                   ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = 
newfontstruct;
+                   oldfont = SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, ((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->fontstruct);
+                   wglUseFontBitmaps(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, 0, 256, ((struct wgl_vars 
*)dmp->dm_vars.priv_vars)->fontOffset);
+
+                   if (oldfont != NULL)
+                       DeleteObject(SelectObject(((struct dm_xvars 
*)dmp->dm_vars.pub_vars)->hdc, oldfont));
+               }
+           }
        }
     }
 
@@ -1850,9 +1866,9 @@
 
 
 HIDDEN int
-wgl_configureWin(struct dm *dmp)
+wgl_configureWin(struct dm *dmp, int force)
 {
-    return wgl_configureWin_guts(dmp, 0);
+    return wgl_configureWin_guts(dmp, force);
 }
 
 HIDDEN int
@@ -2086,6 +2102,7 @@
     1,                         /* zbuffer */
     0,                         /* no zclipping */
     0,                          /* clear back buffer after drawing and swap */
+    0,                          /* not overriding the auto font size */
     0                          /* Tcl interpreter */
 };
 

Modified: brlcad/trunk/src/libdm/dm_obj.c
===================================================================
--- brlcad/trunk/src/libdm/dm_obj.c     2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/libdm/dm_obj.c     2011-01-14 16:40:56 UTC (rev 42266)
@@ -1909,7 +1909,7 @@
     }
 
     /* configure the display manager window */
-    status = DM_CONFIGURE_WIN(dmop->dmo_dmp);
+    status = DM_CONFIGURE_WIN(dmop->dmo_dmp, 0);
 
 #ifdef USE_FBSERV
     /* configure the framebuffer window */

Modified: brlcad/trunk/src/libtclcad/ged_obj.c
===================================================================
--- brlcad/trunk/src/libtclcad/ged_obj.c        2011-01-14 16:23:12 UTC (rev 
42265)
+++ brlcad/trunk/src/libtclcad/ged_obj.c        2011-01-14 16:40:56 UTC (rev 
42266)
@@ -189,6 +189,12 @@
                        ged_func_ptr func,
                        const char *usage,
                        int maxargs);
+HIDDEN int go_fontsize(struct ged *gedp,
+                      int argc,
+                      const char *argv[],
+                      ged_func_ptr func,
+                      const char *usage,
+                      int maxargs);
 HIDDEN int go_init_view_bindings(struct ged *gedp,
                                 int argc,
                                 const char *argv[],
@@ -743,6 +749,7 @@
     {"eye_pos",        "[x y z]", 5, go_view_func, ged_eye_pos},
     {"faceplate",      "center_dot|prim_labels|view_params|view_scale 
color|draw [val(s)]", GO_UNLIMITED, go_faceplate, GED_FUNC_PTR_NULL},
     {"facetize",       (char *)0, GO_UNLIMITED, go_pass_through_func, 
ged_facetize},
+    {"fontsize",       "[fontsize]", 3, go_fontsize, GED_FUNC_PTR_NULL},
     {"form",   (char *)0, GO_UNLIMITED, go_pass_through_func, ged_form},
     {"fracture",       (char *)0, GO_UNLIMITED, go_pass_through_func, 
ged_fracture},
     {"g",      (char *)0, GO_UNLIMITED, go_pass_through_func, ged_group},
@@ -1882,7 +1889,7 @@
     }
 
     /* configure the display manager window */
-    status = DM_CONFIGURE_WIN(gdvp->gdv_dmp);
+    status = DM_CONFIGURE_WIN(gdvp->gdv_dmp, 0);
 
     /* configure the framebuffer window */
     if (gdvp->gdv_fbs.fbs_fbp != FBIO_NULL)
@@ -3712,6 +3719,63 @@
 }
 
 HIDDEN int
+go_fontsize(struct ged *gedp,
+           int argc,
+           const char *argv[],
+           ged_func_ptr func,
+           const char *usage,
+           int UNUSED(maxargs))
+{
+    int fontsize;
+    struct ged_dm_view *gdvp;
+
+    /* initialize result */
+    bu_vls_trunc(&gedp->ged_result_str, 0);
+
+    /* must be wanting help */
+    if (argc == 1) {
+       bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_HELP;
+    }
+
+    if (argc < 2 || 3 < argc) {
+       bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return BRLCAD_ERROR;
+    }
+
+    for (BU_LIST_FOR(gdvp, ged_dm_view, &go_current_gop->go_head_views.l)) {
+       if (!strcmp(bu_vls_addr(&gdvp->gdv_name), argv[1]))
+           break;
+    }
+
+    if (BU_LIST_IS_HEAD(&gdvp->l, &go_current_gop->go_head_views.l)) {
+       bu_vls_printf(&gedp->ged_result_str, "View not found - %s", argv[1]);
+       return BRLCAD_ERROR;
+    }
+
+    /* get the font size */
+    if (argc == 2) {
+       bu_vls_printf(&gedp->ged_result_str, "%d", gdvp->gdv_dmp->dm_fontsize);
+       return BRLCAD_OK;
+    }
+
+    /* set background color */
+    if (sscanf(argv[2], "%d", &fontsize) != 1)
+       goto bad_fontsize;
+
+    if (DM_VALID_FONT_SIZE(fontsize) || fontsize == 0) {
+       gdvp->gdv_dmp->dm_fontsize = fontsize;
+       DM_CONFIGURE_WIN(gdvp->gdv_dmp, 1);
+       go_refresh_view(gdvp);
+       return BRLCAD_OK;
+    }
+
+ bad_fontsize:
+    bu_vls_printf(&gedp->ged_result_str, "%s: %s", argv[0], argv[2]);
+    return BRLCAD_ERROR;
+}
+
+HIDDEN int
 go_init_view_bindings(struct ged *gedp,
                      int argc,
                      const char *argv[],

Modified: brlcad/trunk/src/mged/dm-X.c
===================================================================
--- brlcad/trunk/src/mged/dm-X.c        2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/mged/dm-X.c        2011-01-14 16:40:56 UTC (rev 42266)
@@ -156,7 +156,7 @@
     Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
 #endif
 
-    (void)DM_CONFIGURE_WIN(dmp);
+    (void)DM_CONFIGURE_WIN(dmp, 0);
 
     bu_vls_init(&vls);
     bu_vls_printf(&vls, "mged_bind_dm %s", bu_vls_addr(&pathName));

Modified: brlcad/trunk/src/mged/dm-ogl.c
===================================================================
--- brlcad/trunk/src/mged/dm-ogl.c      2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/mged/dm-ogl.c      2011-01-14 16:40:56 UTC (rev 42266)
@@ -113,7 +113,7 @@
 
     eventHandler = Ogl_doevent;
     Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
-    (void)DM_CONFIGURE_WIN(dmp);
+    (void)DM_CONFIGURE_WIN(dmp, 0);
 
     bu_vls_init(&vls);
     bu_vls_printf(&vls, "mged_bind_dm %s", bu_vls_addr(&pathName));

Modified: brlcad/trunk/src/mged/dm-rtgl.c
===================================================================
--- brlcad/trunk/src/mged/dm-rtgl.c     2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/mged/dm-rtgl.c     2011-01-14 16:40:56 UTC (rev 42266)
@@ -113,7 +113,7 @@
 
     eventHandler = Rtgl_doevent;
     Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
-    (void)DM_CONFIGURE_WIN(dmp);
+    (void)DM_CONFIGURE_WIN(dmp, 0);
 
     bu_vls_init(&vls);
     bu_vls_printf(&vls, "mged_bind_dm %s", bu_vls_addr(&pathName));

Modified: brlcad/trunk/src/mged/dm-tk.c
===================================================================
--- brlcad/trunk/src/mged/dm-tk.c       2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/mged/dm-tk.c       2011-01-14 16:40:56 UTC (rev 42266)
@@ -85,7 +85,7 @@
 
     eventHandler = tk_doevent;
     Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
-    (void)DM_CONFIGURE_WIN(dmp);
+    (void)DM_CONFIGURE_WIN(dmp, 0);
 
     bu_vls_init(&vls);
     bu_vls_printf(&vls, "mged_bind_dm %s", bu_vls_addr(&pathName));

Modified: brlcad/trunk/src/mged/dm-wgl.c
===================================================================
--- brlcad/trunk/src/mged/dm-wgl.c      2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/mged/dm-wgl.c      2011-01-14 16:40:56 UTC (rev 42266)
@@ -115,7 +115,7 @@
 
     eventHandler = Wgl_doevent;
     Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
-    (void)DM_CONFIGURE_WIN(dmp);
+    (void)DM_CONFIGURE_WIN(dmp, 0);
 
     bu_vls_init(&vls);
     bu_vls_printf(&vls, "mged_bind_dm %s", bu_vls_addr(&pathName));

Modified: brlcad/trunk/src/mged/doevent.c
===================================================================
--- brlcad/trunk/src/mged/doevent.c     2011-01-14 16:23:12 UTC (rev 42265)
+++ brlcad/trunk/src/mged/doevent.c     2011-01-14 16:40:56 UTC (rev 42266)
@@ -146,7 +146,7 @@
     if (eventPtr->type == ConfigureNotify) {
        XConfigureEvent *conf = (XConfigureEvent *)eventPtr;
 
-       DM_CONFIGURE_WIN(dmp);
+       DM_CONFIGURE_WIN(dmp, 0);
        rect_image2view();
        dirty = 1;
 

Modified: brlcad/trunk/src/tclscripts/lib/Ged.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/lib/Ged.tcl     2011-01-14 16:23:12 UTC (rev 
42265)
+++ brlcad/trunk/src/tclscripts/lib/Ged.tcl     2011-01-14 16:40:56 UTC (rev 
42266)
@@ -183,6 +183,7 @@
        method eye_pos {args}
        method faceplate {args}
        method facetize {args}
+       method fontsize {args}
        method form {args}
        method fracture {args}
        method g {args}
@@ -1254,6 +1255,10 @@
     eval $mGed facetize $args
 }
 
+::itcl::body cadwidgets::Ged::fontsize {args} {
+    eval $mGed fontsize $itk_component($itk_option(-pane)) $args
+}
+
 ::itcl::body cadwidgets::Ged::form {args} {
     eval $mGed form $args
 }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand 
malware threats, the impact they can have on your business, and how you 
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to