, int nType
)
{
-#ifndef __EMX__
+#if defined(__VISAGECPP__)
long lrc;
// UPM procs return 0 on success
lrc = U32ELOCU((unsigned char*)zBuf, (unsigned long *)&nType);
// Return TRUE if we have a colour display
bool wxColourDisplay()
{
+#if 0
HPS hpsScreen;
HDC hdcScreen;
LONG lColors;
hdcScreen = ::GpiQueryDevice(hpsScreen);
::DevQueryCaps(hdcScreen, CAPS_COLORS, 1L, &lColors);
return(lColors > 1L);
+#else
+ // I don't see how the PM display could not be color. Besides, this
+ // was leaking DCs and PSs!!! MN
+ return TRUE;
+#endif
}
// Returns depth of screen
HDC hdcScreen;
LONG lPlanes;
LONG lBitsPerPixel;
- LONG nDepth;
-
- hpsScreen = ::WinGetScreenPS(HWND_DESKTOP);
- hdcScreen = ::GpiQueryDevice(hpsScreen);
- ::DevQueryCaps(hdcScreen, CAPS_COLOR_PLANES, 1L, &lPlanes);
- ::DevQueryCaps(hdcScreen, CAPS_COLOR_BITCOUNT, 1L, &lBitsPerPixel);
-
- nDepth = (int)(lPlanes * lBitsPerPixel);
- DevCloseDC(hdcScreen);
+ static LONG nDepth = 0;
+
+ // The screen colordepth ain't gonna change. No reason to query
+ // it over and over!
+ if (!nDepth) {
+ hpsScreen = ::WinGetScreenPS(HWND_DESKTOP);
+ hdcScreen = ::GpiQueryDevice(hpsScreen);
+ ::DevQueryCaps(hdcScreen, CAPS_COLOR_PLANES, 1L, &lPlanes);
+ ::DevQueryCaps(hdcScreen, CAPS_COLOR_BITCOUNT, 1L, &lBitsPerPixel);
+
+ nDepth = (int)(lPlanes * lBitsPerPixel);
+ ::DevCloseDC(hdcScreen);
+ ::WinReleasePS(hpsScreen);
+ }
return (nDepth);
}
{
HPS hpsScreen;
HDC hdcScreen;
- LONG lWidth;
- LONG lHeight;
-
- hpsScreen = ::WinGetScreenPS(HWND_DESKTOP);
- hdcScreen = ::GpiQueryDevice(hpsScreen);
- ::DevQueryCaps(hdcScreen, CAPS_WIDTH, 1L, &lWidth);
- ::DevQueryCaps(hdcScreen, CAPS_HEIGHT, 1L, &lHeight);
- DevCloseDC(hdcScreen);
+ static LONG lWidth = 0;
+ static LONG lHeight = 0;
+
+ // The screen size ain't gonna change either so just cache the values
+ if (!lWidth) {
+ hpsScreen = ::WinGetScreenPS(HWND_DESKTOP);
+ hdcScreen = ::GpiQueryDevice(hpsScreen);
+ ::DevQueryCaps(hdcScreen, CAPS_WIDTH, 1L, &lWidth);
+ ::DevQueryCaps(hdcScreen, CAPS_HEIGHT, 1L, &lHeight);
+ ::DevCloseDC(hdcScreen);
+ ::WinReleasePS(hpsScreen);
+ }
*pWidth = (int)lWidth;
*pHeight = (int)lHeight;
}
,1L
,(PLONG)pHeight
);
+ ::DevCloseDC(hdcScreen);
+ ::WinReleasePS(hpsScreen);
}
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
}
} // end of wxDrawBorder
+void wxOS2SetFont(
+ HWND hWnd
+, const wxFont& rFont
+)
+{
+ char zFont[128];
+ char zFacename[30];
+ char zWeight[30];
+ char zStyle[30];
+
+ if (hWnd == NULLHANDLE)
+
+ //
+ // The fonts available for Presentation Params are just three
+ // outline fonts, the rest are available to the GPI, so we must
+ // map the families to one of these three
+ //
+ switch(rFont.GetFamily())
+ {
+ case wxSCRIPT:
+ case wxDECORATIVE:
+ case wxROMAN:
+ strcpy(zFacename,"Times New Roman");
+ break;
+
+ case wxTELETYPE:
+ case wxMODERN:
+ strcpy(zFacename, "Courier");
+ break;
+
+ case wxSWISS:
+ case wxDEFAULT:
+ default:
+ strcpy(zFacename, "Helvetica");
+ break;
+ }
+
+ switch(rFont.GetWeight())
+ {
+ default:
+ case wxNORMAL:
+ case wxLIGHT:
+ zWeight[0] = '\0';
+ break;
+
+ case wxBOLD:
+ case wxFONTWEIGHT_MAX:
+ strcpy(zWeight, "Bold");
+ break;
+ }
+
+ switch(rFont.GetStyle())
+ {
+ case wxITALIC:
+ case wxSLANT:
+ strcpy(zStyle, "Italic");
+ break;
+
+ default:
+ zStyle[0] = '\0';
+ break;
+ }
+ sprintf(zFont, "%d.%s", rFont.GetPointSize(), zFacename);
+ if (zWeight[0] != '\0')
+ {
+ strcat(zFont, " ");
+ strcat(zFont, zWeight);
+ }
+ if (zStyle[0] != '\0')
+ {
+ strcat(zFont, " ");
+ strcat(zFont, zStyle);
+ }
+ ::WinSetPresParam(hWnd, PP_FONTNAMESIZE, strlen(zFont) + 1, (PVOID)zFont);
+} // end of wxOS2SetFont