fixed wxBitmap<->wxImage conversion to not exchange red and blue components
[wxWidgets.git] / src / dfb / utils.cpp
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$
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
33 wxPortId 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
45 bool wxColourDisplay()
46 {
47 #warning "FIXME: wxColourDisplay"
48 return true;
49 }
50
51 int wxDisplayDepth()
52 {
53 return wxTheApp->GetDisplayMode().bpp;
54 }
55
56 void 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
63 void 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
78 void 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
91 void wxGetMousePosition(int *x, int *y)
92 {
93 wxIDirectFBDisplayLayerPtr layer(wxIDirectFB::Get()->GetDisplayLayer());
94 if ( layer )
95 layer->GetCursorPosition(x, y);
96 }
97
98 wxPoint wxGetMousePosition()
99 {
100 wxPoint pt;
101 wxGetMousePosition(&pt.x, &pt.y);
102 return pt;
103 }
104
105 //-----------------------------------------------------------------------------
106 // keyboard
107 //-----------------------------------------------------------------------------
108
109 bool 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
121 void wxBell()
122 {
123 }
124
125 int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
126 {
127 wxFAIL_MSG( _T("wxAddProcessCallback not implemented") );
128 return 0;
129 }