X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32b8ec418aee4e38877d4cb79e2984c766dcc358..e8d9821d754585e579a0a7e9aeb2fd7913706d05:/src/mgl/utils.cpp?ds=sidebyside diff --git a/src/mgl/utils.cpp b/src/mgl/utils.cpp index 354f08d83f..25618fdb3c 100644 --- a/src/mgl/utils.cpp +++ b/src/mgl/utils.cpp @@ -1,19 +1,30 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp +// Name: src/mgl/utils.cpp // Purpose: // Author: Vaclav Slavik // Id: $Id$ -// Copyright: (c) 2001 Vaclav Slavik +// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + #include "wx/utils.h" -#include "wx/string.h" -#include "wx/intl.h" -#include "wx/log.h" +#ifndef WX_PRECOMP + #include "wx/string.h" + #include "wx/intl.h" + #include "wx/log.h" +#endif +#include "wx/apptrait.h" #include "wx/process.h" +#include "wx/evtloop.h" #include #include @@ -26,73 +37,130 @@ #include "wx/unix/execute.h" #endif +#include "wx/mgl/private.h" + //---------------------------------------------------------------------------- // misc. //---------------------------------------------------------------------------- +// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) +wxMemorySize wxGetFreeMemory() +{ + // TODO - probably should be extracted to + // src/msdos/utilsdos.cpp and src/unix/utilsunx.cpp + // to avoid code duplication + return -1; +} + void wxBell() { // FIXME_MGL } +bool wxGetKeyState(wxKeyCode key) +{ + wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key != + WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons")); + + // TODO + + return false; +} + // ---------------------------------------------------------------------------- // display characterstics // ---------------------------------------------------------------------------- -extern MGLDevCtx *g_displayDC; +void wxDisplaySize(int *width, int *height) +{ + wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); + if (width) *width = g_displayDC->sizex()+1; + if (height) *height = g_displayDC->sizey()+1; +} -void wxDisplaySize( int *width, int *height ) +void wxDisplaySizeMM(int *width, int *height) { - wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") ); - if (width) *width = g_displayDC->sizex(); - if (height) *height = g_displayDC->sizey(); + wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); + + int xDPI, yDPI; + MGL_getDotsPerInch(&xDPI, &yDPI); + + if ( width ) + *width = (int)((g_displayDC->sizex()+1) * 25.4 / xDPI); + if ( height ) + *height = (int)((g_displayDC->sizey()+1) * 25.4 / yDPI); } -void wxGetMousePosition( int* x, int* y ) +void wxClientDisplayRect(int *x, int *y, int *width, int *height) { -#if 0 // FIXME_MGL - gdk_window_get_pointer( (GdkWindow*) NULL, x, y, (GdkModifierType*) NULL ); -#endif + if ( x ) *x = 0; + if ( y ) *y = 0; + wxDisplaySize(width, height); + // FIXME_MGL - windowed version needs different handling } bool wxColourDisplay() { - wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") ); - + wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); + return (wxDisplayDepth() > 1); } int wxDisplayDepth() { - wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") ); + wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); return g_displayDC->getBitsPerPixel(); } -int wxGetOsVersion(int *majorVsn, int *minorVsn) +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const { -#if 0 // FIXME_MGL - // FIXME_MGL : wxGetOsVersion, too - if (majorVsn) *majorVsn = GTK_MAJOR_VERSION; - if (minorVsn) *minorVsn = GTK_MINOR_VERSION; + if ( verMaj ) + *verMaj = MGL_RELEASE_MAJOR; + if ( verMin ) + *verMin = MGL_RELEASE_MINOR; - return wxGTK; -#endif + return wxPORT_MGL; } +wxEventLoopBase* wxGUIAppTraits::CreateEventLoop() +{ + return new wxEventLoop; +} -#ifdef __UNIX__ -int wxAddProcessCallback(wxEndProcessData *proc_data, int fd) +void wxGetMousePosition(int* x, int* y) { -#if 0 // FIXME_MGL -do we need it at all? - int tag = gdk_input_add(fd, - GDK_INPUT_READ, - GTK_EndProcessDetector, - (gpointer)proc_data); + MS_getPos(x, y); +} - return tag; -#endif +wxPoint wxGetMousePosition() +{ + wxPoint pt; + wxGetMousePosition(&pt.x, &pt.y); + return pt; +} + +wxMouseState wxGetMouseState() +{ + wxMouseState ms; + int x, y; + + wxGetMousePosition(&x, &y); + + ms.SetX(x); + ms.SetY(y); + + extern unsigned long g_buttonState; + ms.SetLeftDown(g_buttonState & EVT_LEFTBUT); + ms.SetMiddleDown(g_buttonState & EVT_MIDDLEBUT); + ms.SetRightDown(g_buttonState & EVT_RIGHTBUT); + + ms.SetControlDown(EVT_isKeyDown(KB_leftCtrl) || EVT_isKeyDown(KB_rightCtrl)); + ms.SetShiftDown(EVT_isKeyDown(KB_leftShift) || EVT_isKeyDown(KB_rightShift)); + ms.SetAltDown(EVT_isKeyDown(KB_leftAlt)); + ms.SetMetaDown(EVT_isKeyDown(KB_rightAlt)); + + return ms; } -#endif