Enlightenment CVS committal
Author : doursse
Project : e17
Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_win32
Modified Files:
ecore_win32.c ecore_win32_cursor.c ecore_win32_event.c
ecore_win32_glew.c ecore_win32_private.h ecore_win32_window.c
Removed Files:
ecore_win32_ddraw.cpp ecore_win32_direct3d.cpp
Log Message:
reorganize header files and fix minor warnings
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_win32/ecore_win32.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ecore_win32.c 26 Jun 2008 04:30:29 -0000 1.6
+++ ecore_win32.c 26 Jun 2008 05:11:16 -0000 1.7
@@ -2,17 +2,211 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h> /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
#include <windowsx.h>
+#ifdef HAVE_OPENGL_GLEW
+# include <GL/glew.h>
+#endif /* HAVE_OPENGL_GLEW */
+
+#include "Ecore.h"
+#include "Ecore_Win32.h"
#include "ecore_win32_private.h"
+/***** Global declarations *****/
+
HINSTANCE _ecore_win32_instance = NULL;
double _ecore_win32_double_click_time = 0.25;
double _ecore_win32_event_last_time = 0.0;
Ecore_Win32_Window *_ecore_win32_event_last_window = NULL;
-static int _ecore_win32_init_count = 0;
+int ECORE_WIN32_EVENT_KEY_DOWN = 0;
+int ECORE_WIN32_EVENT_KEY_UP = 0;
+int ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN = 0;
+int ECORE_WIN32_EVENT_MOUSE_BUTTON_UP = 0;
+int ECORE_WIN32_EVENT_MOUSE_MOVE = 0;
+int ECORE_WIN32_EVENT_MOUSE_IN = 0;
+int ECORE_WIN32_EVENT_MOUSE_OUT = 0;
+int ECORE_WIN32_EVENT_MOUSE_WHEEL = 0;
+int ECORE_WIN32_EVENT_WINDOW_FOCUS_IN = 0;
+int ECORE_WIN32_EVENT_WINDOW_FOCUS_OUT = 0;
+int ECORE_WIN32_EVENT_WINDOW_DAMAGE = 0;
+int ECORE_WIN32_EVENT_WINDOW_CREATE = 0;
+int ECORE_WIN32_EVENT_WINDOW_DESTROY = 0;
+int ECORE_WIN32_EVENT_WINDOW_SHOW = 0;
+int ECORE_WIN32_EVENT_WINDOW_HIDE = 0;
+int ECORE_WIN32_EVENT_WINDOW_CONFIGURE = 0;
+int ECORE_WIN32_EVENT_WINDOW_RESIZE = 0;
+int ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST = 0;
+
+
+/***** Private declarations *****/
+
+static int _ecore_win32_init_count = 0;
+
+LRESULT CALLBACK _ecore_win32_window_procedure(HWND window,
+ UINT message,
+ WPARAM window_param,
+ LPARAM data_param);
+
+
+/***** API *****/
+
+
+int
+ecore_win32_init()
+{
+ WNDCLASS wc;
+
+ if (_ecore_win32_init_count > 0)
+ {
+ _ecore_win32_init_count++;
+ return _ecore_win32_init_count;
+ }
+
+ printf (" *** ecore_win32_init\n");
+ _ecore_win32_instance = GetModuleHandle(NULL);
+ if (!_ecore_win32_instance)
+ return 0;
+
+ memset (&wc, 0, sizeof (WNDCLASS));
+ wc.style = CS_HREDRAW | CS_VREDRAW;
+ wc.lpfnWndProc = _ecore_win32_window_procedure;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = _ecore_win32_instance;
+ wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
+ wc.hCursor = LoadCursor (NULL, IDC_ARROW);
+ wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
+ wc.lpszMenuName = NULL;
+ wc.lpszClassName = ECORE_WIN32_WINDOW_CLASS;
+
+ if(!RegisterClass(&wc))
+ {
+ FreeLibrary(_ecore_win32_instance);
+ return 0;
+ }
+
+ if (!ECORE_WIN32_EVENT_KEY_DOWN)
+ {
+ ECORE_WIN32_EVENT_KEY_DOWN = ecore_event_type_new();
+ ECORE_WIN32_EVENT_KEY_UP = ecore_event_type_new();
+ ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN = ecore_event_type_new();
+ ECORE_WIN32_EVENT_MOUSE_BUTTON_UP = ecore_event_type_new();
+ ECORE_WIN32_EVENT_MOUSE_MOVE = ecore_event_type_new();
+ ECORE_WIN32_EVENT_MOUSE_IN = ecore_event_type_new();
+ ECORE_WIN32_EVENT_MOUSE_OUT = ecore_event_type_new();
+ ECORE_WIN32_EVENT_MOUSE_WHEEL = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_FOCUS_IN = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_FOCUS_OUT = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_DAMAGE = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_CREATE = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_DESTROY = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_SHOW = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_HIDE = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_CONFIGURE = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_RESIZE = ecore_event_type_new();
+ ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new();
+ }
+
+#ifdef HAVE_OPENGL_GLEW
+ if (GLEW_VERSION_2_0)
+ {
+ printf ("pas 2.0\n");
+ return 0;
+ }
+ else {
+ printf ("2.0 !!\n");
+ }
+#endif /* HAVE_OPENGL_GLEW */
+
+ _ecore_win32_init_count++;
+
+ return _ecore_win32_init_count;
+}
+
+int
+ecore_win32_shutdown()
+{
+ _ecore_win32_init_count++;
+ if (_ecore_win32_init_count > 0) return _ecore_win32_init_count;
+ if (!_ecore_win32_instance) return _ecore_win32_init_count;
+
+ UnregisterClass(ECORE_WIN32_WINDOW_CLASS, _ecore_win32_instance);
+ FreeLibrary(_ecore_win32_instance);
+ _ecore_win32_instance = NULL;
+
+ if (_ecore_win32_init_count < 0) _ecore_win32_init_count = 0;
+
+ return _ecore_win32_init_count;
+}
+
+int
+ecore_win32_screen_depth_get()
+{
+ HDC dc;
+ int depth;
+
+ dc = GetDC(NULL);
+ if (!dc)
+ return 0;
+
+ depth = GetDeviceCaps(dc, BITSPIXEL);
+ ReleaseDC(NULL, dc);
+
+ return depth;
+}
+
+/**
+ * Sets the timeout for a double and triple clicks to be flagged.
+ *
+ * This sets the time between clicks before the double_click flag is
+ * set in a button down event. If 3 clicks occur within double this
+ * time, the triple_click flag is also set.
+ *
+ * @param t The time in seconds
+ */
+void
+ecore_win32_double_click_time_set(double t)
+{
+ if (t < 0.0) t = 0.0;
+ _ecore_win32_double_click_time = t;
+}
+
+/**
+ * Retrieves the double and triple click flag timeout.
+ *
+ * See @ref ecore_win32_double_click_time_set for more information.
+ *
+ * @return The timeout for double clicks in seconds.
+ */
+double
+ecore_win32_double_click_time_get(void)
+{
+ return _ecore_win32_double_click_time;
+}
+
+/**
+ * Return the last event time
+ */
+double
+ecore_win32_current_time_get(void)
+{
+ return _ecore_win32_event_last_time;
+}
+
+
+/***** Private functions definitions *****/
LRESULT CALLBACK
@@ -230,192 +424,4 @@
return DefWindowProc(window, message, window_param, data_param);
}
-}
-
-/*
- Events:
-
-x * key down
- * key sys down
-x * key up
- * key sys up
-x * mouse button down left
-x * mouse button down middle
-x * mouse button down right
-x * mouse button up left
-x * mouse button up middle
-x * mouse button up right
-x * mouse move (contains enter)
-x * mouse leave
-x * focus in
-x * focus out
-x * expose
-x * create
-x * destroy
-x * configure
-x * resize
-x * delete
-
-*/
-
-EAPI int ECORE_WIN32_EVENT_KEY_DOWN = 0;
-EAPI int ECORE_WIN32_EVENT_KEY_UP = 0;
-EAPI int ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN = 0;
-EAPI int ECORE_WIN32_EVENT_MOUSE_BUTTON_UP = 0;
-EAPI int ECORE_WIN32_EVENT_MOUSE_MOVE = 0;
-EAPI int ECORE_WIN32_EVENT_MOUSE_IN = 0;
-EAPI int ECORE_WIN32_EVENT_MOUSE_OUT = 0;
-EAPI int ECORE_WIN32_EVENT_MOUSE_WHEEL = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_FOCUS_IN = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_FOCUS_OUT = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_DAMAGE = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_CREATE = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_DESTROY = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_SHOW = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_HIDE = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_CONFIGURE = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_RESIZE = 0;
-EAPI int ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST = 0;
-
-
-EAPI int
-ecore_win32_init()
-{
- WNDCLASS wc;
-
- if (_ecore_win32_init_count > 0)
- {
- _ecore_win32_init_count++;
- return _ecore_win32_init_count;
- }
-
- printf (" *** ecore_win32_init\n");
- _ecore_win32_instance = GetModuleHandle(NULL);
- if (!_ecore_win32_instance)
- return 0;
-
- memset (&wc, 0, sizeof (WNDCLASS));
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = _ecore_win32_window_procedure;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = _ecore_win32_instance;
- wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
- wc.hCursor = LoadCursor (NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = ECORE_WIN32_WINDOW_CLASS;
-
- if(!RegisterClass(&wc))
- {
- FreeLibrary(_ecore_win32_instance);
- return 0;
- }
-
- if (!ECORE_WIN32_EVENT_KEY_DOWN)
- {
- ECORE_WIN32_EVENT_KEY_DOWN = ecore_event_type_new();
- ECORE_WIN32_EVENT_KEY_UP = ecore_event_type_new();
- ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN = ecore_event_type_new();
- ECORE_WIN32_EVENT_MOUSE_BUTTON_UP = ecore_event_type_new();
- ECORE_WIN32_EVENT_MOUSE_MOVE = ecore_event_type_new();
- ECORE_WIN32_EVENT_MOUSE_IN = ecore_event_type_new();
- ECORE_WIN32_EVENT_MOUSE_OUT = ecore_event_type_new();
- ECORE_WIN32_EVENT_MOUSE_WHEEL = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_FOCUS_IN = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_FOCUS_OUT = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_DAMAGE = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_CREATE = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_DESTROY = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_SHOW = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_HIDE = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_CONFIGURE = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_RESIZE = ecore_event_type_new();
- ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new();
- }
-
-#ifdef HAVE_OPENGL_GLEW
- if (GLEW_VERSION_2_0)
- {
- printf ("pas 2.0\n");
- return 0;
- }
- else {
- printf ("2.0 !!\n");
- }
-#endif /* HAVE_OPENGL_GLEW */
-
- _ecore_win32_init_count++;
-
- return _ecore_win32_init_count;
-}
-
-EAPI int
-ecore_win32_shutdown()
-{
- _ecore_win32_init_count++;
- if (_ecore_win32_init_count > 0) return _ecore_win32_init_count;
- if (!_ecore_win32_instance) return _ecore_win32_init_count;
-
- UnregisterClass(ECORE_WIN32_WINDOW_CLASS, _ecore_win32_instance);
- FreeLibrary(_ecore_win32_instance);
- _ecore_win32_instance = NULL;
-
- if (_ecore_win32_init_count < 0) _ecore_win32_init_count = 0;
-
- return _ecore_win32_init_count;
-}
-
-EAPI int
-ecore_win32_screen_depth_get()
-{
- HDC dc;
- int depth;
-
- dc = GetDC(NULL);
- if (!dc)
- return 0;
-
- depth = GetDeviceCaps(dc, BITSPIXEL);
- ReleaseDC(NULL, dc);
-
- return depth;
-}
-
-/**
- * Sets the timeout for a double and triple clicks to be flagged.
- *
- * This sets the time between clicks before the double_click flag is
- * set in a button down event. If 3 clicks occur within double this
- * time, the triple_click flag is also set.
- *
- * @param t The time in seconds
- */
-EAPI void
-ecore_win32_double_click_time_set(double t)
-{
- if (t < 0.0) t = 0.0;
- _ecore_win32_double_click_time = t;
-}
-
-/**
- * Retrieves the double and triple click flag timeout.
- *
- * See @ref ecore_win32_double_click_time_set for more information.
- *
- * @return The timeout for double clicks in seconds.
- */
-EAPI double
-ecore_win32_double_click_time_get(void)
-{
- return _ecore_win32_double_click_time;
-}
-
-/**
- * Return the last event time
- */
-EAPI double
-ecore_win32_current_time_get(void)
-{
- return _ecore_win32_event_last_time;
}
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_win32/ecore_win32_cursor.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ecore_win32_cursor.c 29 Oct 2007 20:05:39 -0000 1.2
+++ ecore_win32_cursor.c 26 Jun 2008 05:11:16 -0000 1.3
@@ -2,9 +2,21 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include "Ecore_Win32.h"
#include "ecore_win32_private.h"
-EAPI Ecore_Win32_Cursor *
+
+/***** API *****/
+
+Ecore_Win32_Cursor *
ecore_win32_cursor_new(const void *pixels_and,
const void *pixels_xor,
int width,
@@ -33,13 +45,13 @@
return cursor;
}
-EAPI void
+void
ecore_win32_cursor_free(Ecore_Win32_Cursor *cursor)
{
DestroyCursor(cursor);
}
-EAPI Ecore_Win32_Cursor *
+Ecore_Win32_Cursor *
ecore_win32_cursor_shape_get(Ecore_Win32_Cursor_Shape shape)
{
Ecore_Win32_Cursor *cursor = NULL;
@@ -99,7 +111,7 @@
return cursor;
}
-EAPI int
+int
ecore_win32_cursor_size_get(void)
{
int width;
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_win32/ecore_win32_event.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ecore_win32_event.c 26 Jun 2008 04:30:29 -0000 1.4
+++ ecore_win32_event.c 26 Jun 2008 05:11:16 -0000 1.5
@@ -2,13 +2,26 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h> /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
#include <windowsx.h>
#include "Ecore.h"
+#include "Ecore_Win32.h"
#include "ecore_win32_private.h"
+/***** Private declarations *****/
+
+
static Ecore_Win32_Window *_ecore_win32_mouse_down_last_window = NULL;
static Ecore_Win32_Window *_ecore_win32_mouse_down_last_last_window = NULL;
static double _ecore_win32_mouse_down_last_time = 0;
@@ -16,422 +29,128 @@
static int _ecore_win32_mouse_down_did_triple = 0;
static int _ecore_win32_mouse_up_count = 0;
-static void
-_ecore_win32_event_free_key_down(void *data,
- void *ev)
+static void _ecore_win32_event_free_key_down(void *data,
+ void *ev);
+
+static void _ecore_win32_event_free_key_up(void *data,
+ void *ev);
+
+static int _ecore_win32_event_keystroke_get(int key,
+ char **keyname,
+ char **keysymbol,
+ char **keycompose);
+
+static int _ecore_win32_event_char_get(int key,
+ char **keyname,
+ char **keysymbol,
+ char **keycompose);
+
+
+/***** Global functions definitions *****/
+
+void
+_ecore_win32_event_handle_key_press(Ecore_Win32_Callback_Data *msg,
+ int is_keystroke)
{
Ecore_Win32_Event_Key_Down *e;
- e = ev;
- if (e->keyname) free(e->keyname);
- if (e->keysymbol) free(e->keysymbol);
- if (e->keycompose) free(e->keycompose);
- free(e);
+ e = (Ecore_Win32_Event_Key_Down
*)malloc(sizeof(Ecore_Win32_Event_Key_Down));
+ if (!e) return;
+
+ if (is_keystroke)
+ {
+ if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param),
+ &e->keyname,
+ &e->keysymbol,
+ &e->keycompose))
+ {
+ free(e);
+ return;
+ }
+ goto store_key;
+ }
+ else
+ {
+ if (!_ecore_win32_event_char_get(LOWORD(msg->window_param),
+ &e->keyname,
+ &e->keysymbol,
+ &e->keycompose))
+ {
+ free(e);
+ return;
+ }
+ }
+
+ store_key:
+ e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+ if (!e->window)
+ {
+ free(e);
+ return;
+ }
+ e->time = (double)msg->time / 1000.0;
+
+ _ecore_win32_event_last_time = e->time;
+
+ ecore_event_add(ECORE_WIN32_EVENT_KEY_DOWN, e,
_ecore_win32_event_free_key_down, NULL);
}
-static void
-_ecore_win32_event_free_key_up(void *data,
- void *ev)
+void
+_ecore_win32_event_handle_key_release(Ecore_Win32_Callback_Data *msg,
+ int is_keystroke)
{
Ecore_Win32_Event_Key_Up *e;
- e = ev;
- if (e->keyname) free(e->keyname);
- if (e->keysymbol) free(e->keysymbol);
- if (e->keycompose) free(e->keycompose);
- free(e);
+ e = (Ecore_Win32_Event_Key_Up *)calloc(1, sizeof(Ecore_Win32_Event_Key_Up));
+ if (!e) return;
+
+ if (is_keystroke)
+ {
+ if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param),
+ &e->keyname,
+ &e->keysymbol,
+ &e->keycompose))
+ {
+ free(e);
+ return;
+ }
+ goto store_key;
+ }
+ else
+ {
+ if (!_ecore_win32_event_char_get(LOWORD(msg->window_param),
+ &e->keyname,
+ &e->keysymbol,
+ &e->keycompose))
+ {
+ free(e);
+ return;
+ }
+ }
+
+ store_key:
+ e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+ if (!e->window)
+ {
+ free(e);
+ return;
+ }
+ e->time = (double)msg->time / 1000.0;
+
+ _ecore_win32_event_last_time = e->time;
+
+ ecore_event_add(ECORE_WIN32_EVENT_KEY_UP, e,
_ecore_win32_event_free_key_up, NULL);
}
-static int
-_ecore_win32_event_keystroke_get(int key,
- char **keyname,
- char **keysymbol,
- char **keycompose)
+void
+_ecore_win32_event_handle_button_press(Ecore_Win32_Callback_Data *msg,
+ int button)
{
- char *kn;
- char *ks;
- char *kc;
+ Ecore_Win32_Window *window;
- *keyname = NULL;
- *keysymbol = NULL;
- *keycompose = NULL;
+ window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
- switch (key)
- {
- /* Keystroke */
- case VK_PRIOR:
- kn = "KP_Prior";
- ks = "KP_Prior";
- kc = "";
- break;
- case VK_NEXT:
- kn = "KP_Next";
- ks = "KP_Next";
- kc = "";
- break;
- case VK_END:
- kn = "KP_End";
- ks = "KP_End";
- kc = "";
- break;
- case VK_HOME:
- kn = "KP_Home";
- ks = "KP_Home";
- kc = "";
- break;
- case VK_LEFT:
- kn = "KP_Left";
- ks = "KP_Left";
- kc = "";
- break;
- case VK_UP:
- kn = "KP_Up";
- ks = "KP_Up";
- kc = "";
- break;
- case VK_RIGHT:
- kn = "KP_Right";
- ks = "KP_Right";
- kc = "";
- break;
- case VK_DOWN:
- kn = "KP_Down";
- ks = "KP_Down";
- kc = "";
- break;
- case VK_INSERT:
- kn = "KP_Insert";
- ks = "KP_Insert";
- kc = "";
- break;
- case VK_DELETE:
- kn = "KP_Delete";
- ks = "KP_Delete";
- kc = "";
- break;
- case VK_F1:
- kn = "F1";
- ks = "F1";
- kc = "";
- break;
- case VK_F2:
- kn = "F2";
- ks = "F2";
- kc = "";
- break;
- case VK_F3:
- kn = "F3";
- ks = "F3";
- kc = "";
- break;
- case VK_F4:
- kn = "F4";
- ks = "F4";
- kc = "";
- break;
- case VK_F5:
- kn = "F5";
- ks = "F5";
- kc = "";
- break;
- case VK_F6:
- kn = "F6";
- ks = "F6";
- kc = "";
- break;
- case VK_F7:
- kn = "F7";
- ks = "F7";
- kc = "";
- break;
- case VK_F8:
- kn = "F8";
- ks = "F8";
- kc = "";
- break;
- case VK_F9:
- kn = "F9";
- ks = "F9";
- kc = "";
- break;
- case VK_F10:
- kn = "F10";
- ks = "F10";
- kc = "";
- break;
- case VK_F11:
- kn = "F11";
- ks = "F11";
- kc = "";
- break;
- case VK_F12:
- kn = "F12";
- ks = "F12";
- kc = "";
- break;
- case VK_F13:
- kn = "F13";
- ks = "F13";
- kc = "";
- break;
- case VK_F14:
- kn = "F14";
- ks = "F14";
- kc = "";
- break;
- case VK_F15:
- kn = "F15";
- ks = "F15";
- kc = "";
- break;
- case VK_F16:
- kn = "F16";
- ks = "F16";
- kc = "";
- break;
- case VK_F17:
- kn = "F17";
- ks = "F17";
- kc = "";
- break;
- case VK_F18:
- kn = "F18";
- ks = "F18";
- kc = "";
- break;
- case VK_F19:
- kn = "F19";
- ks = "F19";
- kc = "";
- break;
- case VK_F20:
- kn = "F20";
- ks = "F20";
- kc = "";
- break;
- case VK_F21:
- kn = "F21";
- ks = "F21";
- kc = "";
- break;
- case VK_F22:
- kn = "F22";
- ks = "F22";
- kc = "";
- break;
- case VK_F23:
- kn = "F23";
- ks = "F23";
- kc = "";
- break;
- case VK_F24:
- kn = "F24";
- ks = "F24";
- kc = "";
- break;
- default:
- /* other non keystroke characters */
- return 0;
- }
- *keyname = strdup(kn);
- if (!*keyname) return 0;
- *keysymbol = strdup(ks);
- if (!*keysymbol)
- {
- free(*keyname);
- *keyname = NULL;
- return 0;
- }
- *keycompose = strdup(kc);
- if (!*keycompose)
- {
- free(*keyname);
- free(*keysymbol);
- *keyname = NULL;
- *keysymbol = NULL;
- return 0;
- }
-
- return 1;
-}
-
-static int
-_ecore_win32_event_char_get(int key,
- char **keyname,
- char **keysymbol,
- char **keycompose)
-{
- char kn[32];
- char ks[32];
- char *kc;
-
- *keyname = NULL;
- *keysymbol = NULL;
- *keycompose = NULL;
-
- switch (key)
- {
- case VK_BACK:
- strncpy(kn, "Backspace", 32);
- strncpy(ks, "Backspace", 32);
- kc = "";
- break;
- case VK_TAB:
- strncpy(kn, "Tab", 32);
- strncpy(ks, "Tab", 32);
- kc = "";
- break;
- case 0x0a:
- /* Line feed (Shift + Enter) */
- strncpy(kn, "LineFeed", 32);
- strncpy(ks, "LineFeed", 32);
- kc = "";
- break;
- case VK_RETURN:
- strncpy(kn, "Return", 32);
- strncpy(ks, "Return", 32);
- kc = "";
- break;
- case VK_ESCAPE:
- strncpy(kn, "Escape", 32);
- strncpy(ks, "Escape", 32);
- kc = "";
- break;
- default:
- /* displayable characters */
- printf (" * key : %d\n", key);
- kn[0] = (TCHAR)key;
- kn[1] = '\0';
- ks[0] = (TCHAR)key;
- ks[1] = '\0';
- kc = "";
- break;
- }
- *keyname = strdup(kn);
- if (!*keyname) return 0;
- *keysymbol = strdup(ks);
- if (!*keysymbol)
- {
- free(*keyname);
- *keyname = NULL;
- return 0;
- }
- *keycompose = strdup(kc);
- if (!*keycompose)
- {
- free(*keyname);
- free(*keysymbol);
- *keyname = NULL;
- *keysymbol = NULL;
- return 0;
- }
-
- return 1;
-}
-
-void
-_ecore_win32_event_handle_key_press(Ecore_Win32_Callback_Data *msg,
- int is_keystroke)
-{
- Ecore_Win32_Event_Key_Down *e;
-
- e = (Ecore_Win32_Event_Key_Down
*)malloc(sizeof(Ecore_Win32_Event_Key_Down));
- if (!e) return;
-
- if (is_keystroke)
- {
- if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param),
- &e->keyname,
- &e->keysymbol,
- &e->keycompose))
- {
- free(e);
- return;
- }
- goto store_key;
- }
- else
- {
- if (!_ecore_win32_event_char_get(LOWORD(msg->window_param),
- &e->keyname,
- &e->keysymbol,
- &e->keycompose))
- {
- free(e);
- return;
- }
- }
-
- store_key:
- e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
- if (!e->window)
- {
- free(e);
- return;
- }
- e->time = (double)msg->time / 1000.0;
-
- _ecore_win32_event_last_time = e->time;
-
- ecore_event_add(ECORE_WIN32_EVENT_KEY_DOWN, e,
_ecore_win32_event_free_key_down, NULL);
-}
-
-void
-_ecore_win32_event_handle_key_release(Ecore_Win32_Callback_Data *msg,
- int is_keystroke)
-{
- Ecore_Win32_Event_Key_Up *e;
-
- e = (Ecore_Win32_Event_Key_Up *)calloc(1, sizeof(Ecore_Win32_Event_Key_Up));
- if (!e) return;
-
- if (is_keystroke)
- {
- if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param),
- &e->keyname,
- &e->keysymbol,
- &e->keycompose))
- {
- free(e);
- return;
- }
- goto store_key;
- }
- else
- {
- if (!_ecore_win32_event_char_get(LOWORD(msg->window_param),
- &e->keyname,
- &e->keysymbol,
- &e->keycompose))
- {
- free(e);
- return;
- }
- }
-
- store_key:
- e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
- if (!e->window)
- {
- free(e);
- return;
- }
- e->time = (double)msg->time / 1000.0;
-
- _ecore_win32_event_last_time = e->time;
-
- ecore_event_add(ECORE_WIN32_EVENT_KEY_UP, e,
_ecore_win32_event_free_key_up, NULL);
-}
-
-void
-_ecore_win32_event_handle_button_press(Ecore_Win32_Callback_Data *msg,
- int button)
-{
- Ecore_Win32_Window *window;
-
- window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
-
- if (button > 3)
+ if (button > 3)
{
Ecore_Win32_Event_Mouse_Wheel *e;
@@ -850,4 +569,320 @@
e->time = _ecore_win32_event_last_time;
ecore_event_add(ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST, e, NULL, NULL);
+}
+
+
+/***** Private functions definitions *****/
+
+static void
+_ecore_win32_event_free_key_down(void *data,
+ void *ev)
+{
+ Ecore_Win32_Event_Key_Down *e;
+
+ e = ev;
+ if (e->keyname) free(e->keyname);
+ if (e->keysymbol) free(e->keysymbol);
+ if (e->keycompose) free(e->keycompose);
+ free(e);
+}
+
+static void
+_ecore_win32_event_free_key_up(void *data,
+ void *ev)
+{
+ Ecore_Win32_Event_Key_Up *e;
+
+ e = ev;
+ if (e->keyname) free(e->keyname);
+ if (e->keysymbol) free(e->keysymbol);
+ if (e->keycompose) free(e->keycompose);
+ free(e);
+}
+
+static int
+_ecore_win32_event_keystroke_get(int key,
+ char **keyname,
+ char **keysymbol,
+ char **keycompose)
+{
+ char *kn;
+ char *ks;
+ char *kc;
+
+ *keyname = NULL;
+ *keysymbol = NULL;
+ *keycompose = NULL;
+
+ switch (key)
+ {
+ /* Keystroke */
+ case VK_PRIOR:
+ kn = "KP_Prior";
+ ks = "KP_Prior";
+ kc = "";
+ break;
+ case VK_NEXT:
+ kn = "KP_Next";
+ ks = "KP_Next";
+ kc = "";
+ break;
+ case VK_END:
+ kn = "KP_End";
+ ks = "KP_End";
+ kc = "";
+ break;
+ case VK_HOME:
+ kn = "KP_Home";
+ ks = "KP_Home";
+ kc = "";
+ break;
+ case VK_LEFT:
+ kn = "KP_Left";
+ ks = "KP_Left";
+ kc = "";
+ break;
+ case VK_UP:
+ kn = "KP_Up";
+ ks = "KP_Up";
+ kc = "";
+ break;
+ case VK_RIGHT:
+ kn = "KP_Right";
+ ks = "KP_Right";
+ kc = "";
+ break;
+ case VK_DOWN:
+ kn = "KP_Down";
+ ks = "KP_Down";
+ kc = "";
+ break;
+ case VK_INSERT:
+ kn = "KP_Insert";
+ ks = "KP_Insert";
+ kc = "";
+ break;
+ case VK_DELETE:
+ kn = "KP_Delete";
+ ks = "KP_Delete";
+ kc = "";
+ break;
+ case VK_F1:
+ kn = "F1";
+ ks = "F1";
+ kc = "";
+ break;
+ case VK_F2:
+ kn = "F2";
+ ks = "F2";
+ kc = "";
+ break;
+ case VK_F3:
+ kn = "F3";
+ ks = "F3";
+ kc = "";
+ break;
+ case VK_F4:
+ kn = "F4";
+ ks = "F4";
+ kc = "";
+ break;
+ case VK_F5:
+ kn = "F5";
+ ks = "F5";
+ kc = "";
+ break;
+ case VK_F6:
+ kn = "F6";
+ ks = "F6";
+ kc = "";
+ break;
+ case VK_F7:
+ kn = "F7";
+ ks = "F7";
+ kc = "";
+ break;
+ case VK_F8:
+ kn = "F8";
+ ks = "F8";
+ kc = "";
+ break;
+ case VK_F9:
+ kn = "F9";
+ ks = "F9";
+ kc = "";
+ break;
+ case VK_F10:
+ kn = "F10";
+ ks = "F10";
+ kc = "";
+ break;
+ case VK_F11:
+ kn = "F11";
+ ks = "F11";
+ kc = "";
+ break;
+ case VK_F12:
+ kn = "F12";
+ ks = "F12";
+ kc = "";
+ break;
+ case VK_F13:
+ kn = "F13";
+ ks = "F13";
+ kc = "";
+ break;
+ case VK_F14:
+ kn = "F14";
+ ks = "F14";
+ kc = "";
+ break;
+ case VK_F15:
+ kn = "F15";
+ ks = "F15";
+ kc = "";
+ break;
+ case VK_F16:
+ kn = "F16";
+ ks = "F16";
+ kc = "";
+ break;
+ case VK_F17:
+ kn = "F17";
+ ks = "F17";
+ kc = "";
+ break;
+ case VK_F18:
+ kn = "F18";
+ ks = "F18";
+ kc = "";
+ break;
+ case VK_F19:
+ kn = "F19";
+ ks = "F19";
+ kc = "";
+ break;
+ case VK_F20:
+ kn = "F20";
+ ks = "F20";
+ kc = "";
+ break;
+ case VK_F21:
+ kn = "F21";
+ ks = "F21";
+ kc = "";
+ break;
+ case VK_F22:
+ kn = "F22";
+ ks = "F22";
+ kc = "";
+ break;
+ case VK_F23:
+ kn = "F23";
+ ks = "F23";
+ kc = "";
+ break;
+ case VK_F24:
+ kn = "F24";
+ ks = "F24";
+ kc = "";
+ break;
+ default:
+ /* other non keystroke characters */
+ return 0;
+ }
+ *keyname = strdup(kn);
+ if (!*keyname) return 0;
+ *keysymbol = strdup(ks);
+ if (!*keysymbol)
+ {
+ free(*keyname);
+ *keyname = NULL;
+ return 0;
+ }
+ *keycompose = strdup(kc);
+ if (!*keycompose)
+ {
+ free(*keyname);
+ free(*keysymbol);
+ *keyname = NULL;
+ *keysymbol = NULL;
+ return 0;
+ }
+
+ return 1;
+}
+
+static int
+_ecore_win32_event_char_get(int key,
+ char **keyname,
+ char **keysymbol,
+ char **keycompose)
+{
+ char kn[32];
+ char ks[32];
+ char *kc;
+
+ *keyname = NULL;
+ *keysymbol = NULL;
+ *keycompose = NULL;
+
+ switch (key)
+ {
+ case VK_BACK:
+ strncpy(kn, "Backspace", 32);
+ strncpy(ks, "Backspace", 32);
+ kc = "";
+ break;
+ case VK_TAB:
+ strncpy(kn, "Tab", 32);
+ strncpy(ks, "Tab", 32);
+ kc = "";
+ break;
+ case 0x0a:
+ /* Line feed (Shift + Enter) */
+ strncpy(kn, "LineFeed", 32);
+ strncpy(ks, "LineFeed", 32);
+ kc = "";
+ break;
+ case VK_RETURN:
+ strncpy(kn, "Return", 32);
+ strncpy(ks, "Return", 32);
+ kc = "";
+ break;
+ case VK_ESCAPE:
+ strncpy(kn, "Escape", 32);
+ strncpy(ks, "Escape", 32);
+ kc = "";
+ break;
+ default:
+ /* displayable characters */
+ printf (" * key : %d\n", key);
+ kn[0] = (TCHAR)key;
+ kn[1] = '\0';
+ ks[0] = (TCHAR)key;
+ ks[1] = '\0';
+ kc = "";
+ break;
+ }
+ *keyname = strdup(kn);
+ if (!*keyname) return 0;
+ *keysymbol = strdup(ks);
+ if (!*keysymbol)
+ {
+ free(*keyname);
+ *keyname = NULL;
+ return 0;
+ }
+ *keycompose = strdup(kc);
+ if (!*keycompose)
+ {
+ free(*keyname);
+ free(*keysymbol);
+ *keyname = NULL;
+ *keysymbol = NULL;
+ return 0;
+ }
+
+ return 1;
}
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_win32/ecore_win32_glew.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- ecore_win32_glew.c 16 Nov 2007 19:32:25 -0000 1.1
+++ ecore_win32_glew.c 26 Jun 2008 05:11:16 -0000 1.2
@@ -2,11 +2,20 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h> /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
#include <GL/glew.h>
-#include "ecore_win32_private.h"
+
#include "Ecore_Win32.h"
-#include <stdio.h>
+#include "ecore_win32_private.h"
static int _ecore_win32_glew_init = 0;
@@ -18,9 +27,7 @@
PIXELFORMATDESCRIPTOR pfd;
int format;
- RECT rect;
struct _Ecore_Win32_Window *w;
- DWORD flag;
if (!window)
return 0;
@@ -85,7 +92,6 @@
return 1;
no_glew_2_0:
- no_glew_init:
no_format:
ReleaseDC (w->window, w->glew.dc);
no_dc:
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_win32/ecore_win32_private.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- ecore_win32_private.h 26 Jun 2008 04:30:29 -0000 1.5
+++ ecore_win32_private.h 26 Jun 2008 05:11:16 -0000 1.6
@@ -6,23 +6,6 @@
#define __ECORE_WIN32_PRIVATE_H__
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#undef WIN32_LEAN_AND_MEAN
-#ifdef HAVE_OPENGL_GLEW
-# include <GL/glew.h>
-#endif /* HAVE_OPENGL_GLEW */
-
-#include <Ecore.h>
-#include <Ecore_Data.h>
-
-#include "Ecore_Win32.h"
-
-
#define ECORE_WIN32_WINDOW_CLASS "Ecore_Win32_Window_Class"
@@ -104,7 +87,6 @@
};
-extern Ecore_List *_ecore_win32_windows_list;
extern HINSTANCE _ecore_win32_instance;
extern double _ecore_win32_double_click_time;
extern double _ecore_win32_event_last_time;
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_win32/ecore_win32_window.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ecore_win32_window.c 26 Jun 2008 04:30:29 -0000 1.6
+++ ecore_win32_window.c 26 Jun 2008 05:11:16 -0000 1.7
@@ -2,13 +2,24 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
-#include <stdio.h>
-
-#include <Ecore.h>
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h> /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+#include "Ecore_Win32.h"
#include "ecore_win32_private.h"
+/***** Private declarations *****/
+
+
typedef enum _Ecore_Win32_Window_Z_Order Ecore_Win32_Window_Z_Order;
enum _Ecore_Win32_Window_Z_Order
{
@@ -18,122 +29,17 @@
ECORE_WIN32_WINDOW_Z_ORDER_TOPMOST
};
+static Ecore_Win32_Window *ecore_win32_window_internal_new(Ecore_Win32_Window
*parent,
+ int
x,
+ int
y,
+ int
width,
+ int
height,
+ DWORD
style);
-static Ecore_Win32_Window *
-ecore_win32_window_internal_new(Ecore_Win32_Window *parent,
- int x,
- int y,
- int width,
- int height,
- DWORD style)
-{
- RECT rect;
- struct _Ecore_Win32_Window *w;
- int minimal_width;
- int minimal_height;
-
- w = (struct _Ecore_Win32_Window *)calloc(1, sizeof(struct
_Ecore_Win32_Window));
- if (!w)
- return NULL;
-
- printf (" *** ecore_win32_window_new : %p %d %d %d\n",
- w,
- width, height, GetSystemMetrics(SM_CXMIN));
- rect.left = 0;
- rect.top = 0;
- rect.right = width;
- rect.bottom = height;
- if (!AdjustWindowRect(&rect, style, FALSE))
- {
- free(w);
- return NULL;
- }
- printf (" * ecore : new debut : %ld %d %d\n",
- rect.right - rect.left, GetSystemMetrics(SM_CXMIN),
GetSystemMetrics(SM_CYMIN));
-
- minimal_width = GetSystemMetrics(SM_CXMIN);
- minimal_height = GetSystemMetrics(SM_CYMIN);
-/* if (((rect.right - rect.left) < minimal_width) || */
-/* ((rect.bottom - rect.top) < minimal_height)) */
-/* { */
-/* fprintf (stderr, "[Ecore] [Win32] ERROR !!\n"); */
-/* fprintf (stderr, " Wrong size %ld\n", rect.right -
rect.left); */
-/* free(w); */
-/* return NULL; */
-/* } */
- if ((rect.right - rect.left) < minimal_width)
- {
- rect.right = rect.left + minimal_width;
- }
-
- w->window = CreateWindow(ECORE_WIN32_WINDOW_CLASS, "",
- style,
- x, y,
- rect.right - rect.left,
- rect.bottom - rect.top,
- parent ? ((struct _Ecore_Win32_Window
*)parent)->window : NULL,
- NULL, _ecore_win32_instance, NULL);
- if (!w->window)
- {
- free(w);
- return NULL;
- }
-
- SetLastError(0);
- if (!SetWindowLong(w->window, GWL_USERDATA, (LONG)w) && (GetLastError() !=
0))
- {
- DestroyWindow(w->window);
- free(w);
- return NULL;
- }
-
- w->backend = ECORE_WIN32_BACKEND_NONE;
-
- w->min_width = 0;
- w->min_height = 0;
- w->max_width = 32767;
- w->max_height = 32767;
- w->base_width = -1;
- w->base_height = -1;
- w->step_width = -1;
- w->step_height = -1;
-
- w->state.iconified = 0;
- w->state.modal = 0;
- w->state.sticky = 0;
- w->state.maximized_vert = 0;
- w->state.maximized_horz = 0;
- w->state.shaded = 0;
- w->state.hidden = 0;
- w->state.fullscreen = 0;
- w->state.above = 0;
- w->state.below = 0;
- w->state.demands_attention = 0;
-
- w->type.desktop = 0;
- w->type.dock = 0;
- w->type.toolbar = 0;
- w->type.menu = 0;
- w->type.utility = 0;
- w->type.splash = 0;
- w->type.dialog = 0;
- w->type.normal = 0;
-
- w->pointer_is_in = 0;
- w->borderless = 0;
- w->iconified = 0;
- w->fullscreen = 0;
-
- printf (" *** ecore_win32_window_new fin : (%d %d) (%d %d)\n",
- w->min_width,
- w->min_height,
- w->max_width,
- w->max_height);
- return w;
-}
+/***** API *****/
-EAPI Ecore_Win32_Window *
+Ecore_Win32_Window *
ecore_win32_window_new(Ecore_Win32_Window *parent,
int x,
int y,
@@ -147,7 +53,7 @@
}
/* simulate X11 override windows */
-EAPI Ecore_Win32_Window *
+Ecore_Win32_Window *
ecore_win32_window_override_new(Ecore_Win32_Window *parent,
int x,
int y,
@@ -160,11 +66,9 @@
WS_POPUP);
}
-EAPI void
+void
ecore_win32_window_del(Ecore_Win32_Window *window)
{
- Ecore_Win32_Window *w;
-
if (!window) return;
switch (((struct _Ecore_Win32_Window *)window)->backend)
@@ -189,7 +93,7 @@
}
/*
-EAPI void
+void
ecore_win32_window_configure(Ecore_Win32_Window *window,
Ecore_Win32_Window_Z_Order order,
int x,
@@ -220,7 +124,7 @@
}
*/
-EAPI void
+void
ecore_win32_window_move(Ecore_Win32_Window *window,
int x,
int y)
@@ -241,7 +145,7 @@
TRUE);
}
-EAPI void
+void
ecore_win32_window_resize(Ecore_Win32_Window *window,
int width,
int height)
@@ -293,7 +197,7 @@
printf ("ecore_win32_window_resize 4 : %d %d\n", width, height);
}
-EAPI void
+void
ecore_win32_window_move_resize(Ecore_Win32_Window *window,
int x,
int y,
@@ -310,10 +214,10 @@
w = ((struct _Ecore_Win32_Window *)window);
rect.left = 0;
rect.top = 0;
- if (width < w->min_width) width = w->min_width;
- if (width > w->max_width) width = w->max_width;
- if (height < w->min_height) height = w->min_height;
- if (height > w->max_height) height = w->max_height;
+ if ((unsigned int)width < w->min_width) width = w->min_width;
+ if ((unsigned int)width > w->max_width) width = w->max_width;
+ if ((unsigned int)height < w->min_height) height = w->min_height;
+ if ((unsigned int)height > w->max_height) height = w->max_height;
printf ("ecore_win32_window_move_resize 1 : %d %d\n", width, height);
rect.right = width;
rect.bottom = height;
@@ -327,7 +231,7 @@
TRUE);
}
-EAPI void
+void
ecore_win32_window_geometry_get(Ecore_Win32_Window *window,
int *x,
int *y,
@@ -380,7 +284,7 @@
if (height) *height = h;
}
-EAPI void
+void
ecore_win32_window_size_get(Ecore_Win32_Window *window,
int *width,
int *height)
@@ -407,7 +311,7 @@
if (height) *height = rect.bottom - rect.top;
}
-EAPI void
+void
ecore_win32_window_size_min_set(Ecore_Win32_Window *window,
unsigned int min_width,
unsigned int min_height)
@@ -422,7 +326,7 @@
w->min_height = min_height;
}
-EAPI void
+void
ecore_win32_window_size_min_get(Ecore_Win32_Window *window,
unsigned int *min_width,
unsigned int *min_height)
@@ -437,7 +341,7 @@
if (min_height) *min_height = w->min_height;
}
-EAPI void
+void
ecore_win32_window_size_max_set(Ecore_Win32_Window *window,
unsigned int max_width,
unsigned int max_height)
@@ -452,7 +356,7 @@
w->max_height = max_height;
}
-EAPI void
+void
ecore_win32_window_size_max_get(Ecore_Win32_Window *window,
unsigned int *max_width,
unsigned int *max_height)
@@ -467,7 +371,7 @@
if (max_height) *max_height = w->max_height;
}
-EAPI void
+void
ecore_win32_window_size_base_set(Ecore_Win32_Window *window,
unsigned int base_width,
unsigned int base_height)
@@ -482,7 +386,7 @@
w->base_height = base_height;
}
-EAPI void
+void
ecore_win32_window_size_base_get(Ecore_Win32_Window *window,
unsigned int *base_width,
unsigned int *base_height)
@@ -497,7 +401,7 @@
if (base_height) *base_height = w->base_height;
}
-EAPI void
+void
ecore_win32_window_size_step_set(Ecore_Win32_Window *window,
unsigned int step_width,
unsigned int step_height)
@@ -512,7 +416,7 @@
w->step_height = step_height;
}
-EAPI void
+void
ecore_win32_window_size_step_get(Ecore_Win32_Window *window,
unsigned int *step_width,
unsigned int *step_height)
@@ -529,7 +433,7 @@
/* TODO: ecore_win32_window_shaped_set */
-EAPI void
+void
ecore_win32_window_show(Ecore_Win32_Window *window)
{
if (!window) return;
@@ -540,7 +444,7 @@
}
/* FIXME: seems to block the taskbar */
-EAPI void
+void
ecore_win32_window_hide(Ecore_Win32_Window *window)
{
if (!window) return;
@@ -549,7 +453,7 @@
ShowWindow(((struct _Ecore_Win32_Window *)window)->window, SW_HIDE);
}
-EAPI void
+void
ecore_win32_window_raise(Ecore_Win32_Window *window)
{
if (!window) return;
@@ -560,7 +464,7 @@
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
}
-EAPI void
+void
ecore_win32_window_lower(Ecore_Win32_Window *window)
{
if (!window) return;
@@ -571,7 +475,7 @@
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
}
-EAPI void
+void
ecore_win32_window_title_set(Ecore_Win32_Window *window,
const char *title)
{
@@ -582,7 +486,7 @@
SetWindowText(((struct _Ecore_Win32_Window *)window)->window, title);
}
-EAPI void
+void
ecore_win32_window_focus_set(Ecore_Win32_Window *window)
{
if (!window) return;
@@ -590,7 +494,7 @@
SetFocus(((struct _Ecore_Win32_Window *)window)->window);
}
-EAPI void
+void
ecore_win32_window_iconified_set(Ecore_Win32_Window *window,
int on)
{
@@ -616,7 +520,7 @@
ew->iconified = on;
}
-EAPI void
+void
ecore_win32_window_borderless_set(Ecore_Win32_Window *window,
int on)
{
@@ -655,7 +559,7 @@
ew->borderless = on;
}
-EAPI void
+void
ecore_win32_window_fullscreen_set(Ecore_Win32_Window *window,
int on)
{
@@ -699,7 +603,7 @@
}
}
-EAPI void
+void
ecore_win32_window_cursor_set(Ecore_Win32_Window *window,
Ecore_Win32_Cursor *cursor)
{
@@ -707,7 +611,7 @@
GCL_HCURSOR, (LONG)cursor);
}
-EAPI void
+void
ecore_win32_window_state_set(Ecore_Win32_Window *window,
Ecore_Win32_Window_State *state,
unsigned int num)
@@ -765,7 +669,7 @@
}
}
-EAPI void
+void
ecore_win32_window_state_request_send(Ecore_Win32_Window *window,
Ecore_Win32_Window_State state,
unsigned int set)
@@ -874,7 +778,7 @@
}
}
-EAPI void
+void
ecore_win32_window_type_set(Ecore_Win32_Window *window,
Ecore_Win32_Window_Type type)
{
@@ -908,4 +812,121 @@
((struct _Ecore_Win32_Window *)window)->type.normal = 1;
break;
}
+}
+
+
+/***** Private functions definitions *****/
+
+static Ecore_Win32_Window *
+ecore_win32_window_internal_new(Ecore_Win32_Window *parent,
+ int x,
+ int y,
+ int width,
+ int height,
+ DWORD style)
+{
+ RECT rect;
+ struct _Ecore_Win32_Window *w;
+ int minimal_width;
+ int minimal_height;
+
+ w = (struct _Ecore_Win32_Window *)calloc(1, sizeof(struct
_Ecore_Win32_Window));
+ if (!w)
+ return NULL;
+
+ printf (" *** ecore_win32_window_new : %p %d %d %d\n",
+ w,
+ width, height, GetSystemMetrics(SM_CXMIN));
+ rect.left = 0;
+ rect.top = 0;
+ rect.right = width;
+ rect.bottom = height;
+ if (!AdjustWindowRect(&rect, style, FALSE))
+ {
+ free(w);
+ return NULL;
+ }
+ printf (" * ecore : new debut : %ld %d %d\n",
+ rect.right - rect.left, GetSystemMetrics(SM_CXMIN),
GetSystemMetrics(SM_CYMIN));
+
+ minimal_width = GetSystemMetrics(SM_CXMIN);
+ minimal_height = GetSystemMetrics(SM_CYMIN);
+/* if (((rect.right - rect.left) < minimal_width) || */
+/* ((rect.bottom - rect.top) < minimal_height)) */
+/* { */
+/* fprintf (stderr, "[Ecore] [Win32] ERROR !!\n"); */
+/* fprintf (stderr, " Wrong size %ld\n", rect.right -
rect.left); */
+/* free(w); */
+/* return NULL; */
+/* } */
+ if ((rect.right - rect.left) < minimal_width)
+ {
+ rect.right = rect.left + minimal_width;
+ }
+
+ w->window = CreateWindow(ECORE_WIN32_WINDOW_CLASS, "",
+ style,
+ x, y,
+ rect.right - rect.left,
+ rect.bottom - rect.top,
+ parent ? ((struct _Ecore_Win32_Window
*)parent)->window : NULL,
+ NULL, _ecore_win32_instance, NULL);
+ if (!w->window)
+ {
+ free(w);
+ return NULL;
+ }
+
+ SetLastError(0);
+ if (!SetWindowLong(w->window, GWL_USERDATA, (LONG)w) && (GetLastError() !=
0))
+ {
+ DestroyWindow(w->window);
+ free(w);
+ return NULL;
+ }
+
+ w->backend = ECORE_WIN32_BACKEND_NONE;
+
+ w->min_width = 0;
+ w->min_height = 0;
+ w->max_width = 32767;
+ w->max_height = 32767;
+ w->base_width = -1;
+ w->base_height = -1;
+ w->step_width = -1;
+ w->step_height = -1;
+
+ w->state.iconified = 0;
+ w->state.modal = 0;
+ w->state.sticky = 0;
+ w->state.maximized_vert = 0;
+ w->state.maximized_horz = 0;
+ w->state.shaded = 0;
+ w->state.hidden = 0;
+ w->state.fullscreen = 0;
+ w->state.above = 0;
+ w->state.below = 0;
+ w->state.demands_attention = 0;
+
+ w->type.desktop = 0;
+ w->type.dock = 0;
+ w->type.toolbar = 0;
+ w->type.menu = 0;
+ w->type.utility = 0;
+ w->type.splash = 0;
+ w->type.dialog = 0;
+ w->type.normal = 0;
+
+ w->pointer_is_in = 0;
+ w->borderless = 0;
+ w->iconified = 0;
+ w->fullscreen = 0;
+
+ printf (" *** ecore_win32_window_new fin : (%d %d) (%d %d)\n",
+ w->min_width,
+ w->min_height,
+ w->max_width,
+ w->max_height);
+
+ return w;
}
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs