1/////////////////////////////////////////////////////////////////////////////
2// Name:        src/dfb/utils.cpp
3// Purpose:     Miscellaneous utility functions and classes
4// Author:      Vaclav Slavik
5// Created:     2006-08-08
6// RCS-ID:      $Id: utils.cpp 41154 2006-09-11 09:08:57Z VS $
7// Copyright:   (c) 2006 REA Elektronik GmbH
8// Licence:     wxWindows licence
9/////////////////////////////////////////////////////////////////////////////
10
11// For compilers that support precompilation, includes "wx.h".
12#include "wx/wxprec.h"
13
14#ifdef __BORLANDC__
15    #pragma hdrstop
16#endif
17
18#include "wx/utils.h"
19#include "wx/apptrait.h"
20#include "wx/unix/execute.h"
21
22#ifndef WX_PRECOMP
23    #include "wx/app.h"
24#endif
25
26#include "wx/dfb/private.h"
27#include <directfb_version.h>
28
29// ----------------------------------------------------------------------------
30// toolkit info
31// ----------------------------------------------------------------------------
32
33wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
34{
35    if ( verMaj ) *verMaj = DIRECTFB_MAJOR_VERSION;
36    if ( verMin ) *verMaj = DIRECTFB_MINOR_VERSION;
37
38    return wxPORT_DFB;
39}
40
41// ----------------------------------------------------------------------------
42// display characteristics
43// ----------------------------------------------------------------------------
44
45bool wxColourDisplay()
46{
47    #warning "FIXME: wxColourDisplay"
48    return true;
49}
50
51int wxDisplayDepth()
52{
53    return wxTheApp->GetDisplayMode().bpp;
54}
55
56void wxDisplaySize(int *width, int *height)
57{
58    wxVideoMode mode(wxTheApp->GetDisplayMode());
59    if ( width ) *width = mode.w;
60    if ( height ) *height = mode.h;
61}
62
63void wxDisplaySizeMM(int *width, int *height)
64{
65    // FIXME: there's no way to get physical resolution using the DirectDB
66    //        API, we hardcode a commonly used value of 72dpi
67    #define DPI          72.0
68    #define PX_TO_MM(x)  (int(((x) / DPI) * inches2mm))
69
70    wxDisplaySize(width, height);
71    if ( width ) *width = PX_TO_MM(*width);
72    if ( height ) *height = PX_TO_MM(*height);
73
74    #undef DPI
75    #undef PX_TO_MM
76}
77
78void wxClientDisplayRect(int *x, int *y, int *width, int *height)
79{
80    // return desktop dimensions minus any panels, menus, trays:
81    if (x) *x = 0;
82    if (y) *y = 0;
83    wxDisplaySize(width, height);
84}
85
86
87//-----------------------------------------------------------------------------
88// mouse
89//-----------------------------------------------------------------------------
90
91void wxGetMousePosition(int *x, int *y)
92{
93    wxIDirectFBDisplayLayerPtr layer(wxIDirectFB::Get()->GetDisplayLayer());
94    if ( layer )
95        layer->GetCursorPosition(x, y);
96}
97
98wxPoint wxGetMousePosition()
99{
100    wxPoint pt;
101    wxGetMousePosition(&pt.x, &pt.y);
102    return pt;
103}
104
105//-----------------------------------------------------------------------------
106// keyboard
107//-----------------------------------------------------------------------------
108
109bool wxGetKeyState(wxKeyCode key)
110{
111    wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key != WXK_MBUTTON,
112                 _T("can't use wxGetKeyState() for mouse buttons"));
113
114    return false; // FIXME
115}
116
117//----------------------------------------------------------------------------
118// misc.
119//----------------------------------------------------------------------------
120
121void wxBell()
122{
123}
124
125int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
126{
127    wxFAIL_MSG( _T("wxAddProcessCallback not implemented") );
128    return 0;
129}
130