diff options
author | Camil Staps | 2015-07-01 17:36:37 +0200 |
---|---|---|
committer | Camil Staps | 2015-07-01 17:36:37 +0200 |
commit | 7553b7f9d4dddc2235c137d41de8ce22547bebe3 (patch) | |
tree | 34f8fb4b36640317d728a60586424f67f9befbe7 /Linux_C_12/cCCallWindows_121.c | |
parent | gitignore (diff) |
Initial commit
Diffstat (limited to 'Linux_C_12/cCCallWindows_121.c')
-rw-r--r-- | Linux_C_12/cCCallWindows_121.c | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/Linux_C_12/cCCallWindows_121.c b/Linux_C_12/cCCallWindows_121.c new file mode 100644 index 0000000..b6d521e --- /dev/null +++ b/Linux_C_12/cCCallWindows_121.c @@ -0,0 +1,182 @@ +/********************************************************************************************
+ Clean OS Windows library module version 1.2.1.
+ This module is part of the Clean Object I/O library, version 1.2.1,
+ for the Windows platform.
+********************************************************************************************/
+
+/********************************************************************************************
+ About this module:
+ Routines related to window/dialog handling.
+********************************************************************************************/
+#include "cCCallWindows_121.h"
+#include "cCrossCallWindows_121.h"
+
+OS WinInvalidateWindow (GtkWidget *widget, OS ios)
+{
+ rprintf("WinInvalidateWindow\n");
+ gtk_widget_queue_draw(widget);
+ return ios;
+}
+
+OS WinInvalidateRect (GtkWidget *widget, int left, int top, int right,
+ int bottom, OS ios)
+{
+ /* rprintf("WinInvalidateRect\n"); */
+ gint temp;
+ GdkRectangle* rect = g_new(GdkRectangle,1);
+ if (top > bottom) {
+ temp = top;
+ top = bottom;
+ bottom = top;
+ }
+ rect->x = (gint)left;
+ rect->y = (gint)top;
+ rect->width = (gint)(right - left);
+ rect->height = (gint)(bottom - top);
+ gdk_window_invalidate_rect(GDK_WINDOW(widget),rect, 1);
+ /* FIXME: destroy the Rectangle here? */
+ return ios;
+}
+
+OS WinValidateRect (GtkWidget *widget, int left, int top, int right, int bottom,
+ OS ios)
+{
+ /* GTK Automatically calculates valid regions. */
+ return ios;
+}
+
+OS WinValidateRgn (GtkWidget *widget, GdkRegion *region, OS ios)
+{
+ /* GTK Automatically calculates valid regions. */
+ return ios;
+}
+
+/* Win(M/S)DIClientToOuterSizeDims returns the width and height needed to add/subtract
+ from the client/outer size to obtain the outer/client size.
+ These values must be the same as used by W95AdjustClean(M/S)DIWindowDimensions!
+*/
+void WinMDIClientToOuterSizeDims (int styleFlags, OS ios, int *dw, int *dh, OS* oos)
+{
+/* if ((styleFlags&WS_THICKFRAME) != 0)
+ { // resizable window
+ *dw = 2 * GetSystemMetrics (SM_CXSIZEFRAME);
+ *dh = 2 * GetSystemMetrics (SM_CYSIZEFRAME) + GetSystemMetrics (SM_CYCAPTION);
+ } else
+ { // fixed size window
+ *dw = 2 * GetSystemMetrics (SM_CXFIXEDFRAME);
+ *dh = 2 * GetSystemMetrics (SM_CYFIXEDFRAME) + GetSystemMetrics (SM_CYCAPTION);
+ }
+*/
+ *dw = 0;
+ *dh = 0;
+ printf("WinMDIClientOuterSizeDims -> not implemented\n");
+ *oos = ios;
+}
+
+void WinSDIClientToOuterSizeDims (int styleFlags, OS ios, int *dw, int *dh, OS *oos)
+{
+ *dw = 0; //2 * GetSystemMetrics (SM_CXSIZEFRAME);
+ *dh = 0; //2 * GetSystemMetrics (SM_CYSIZEFRAME) + GetSystemMetrics (SM_CYCAPTION);
+ printf("WinSDIClientOuterSizeDims -> not implemented\n");
+ *oos = ios;
+}
+
+
+/* UpdateWindowScrollbars updates any window scrollbars and non-client area if present.
+ Uses the following access procedures to the GWL_STYLE of a windowhandle:
+ GetGWL_STYLE (hwnd) returns the GWL_STYLE value of hwnd;
+ WindowHasHScroll (hwnd) returns TRUE iff hwnd has a horizontal scrollbar;
+ WindowHasVScroll (hwnd) returns TRUE iff hwnd has a vertical scrollbar;
+*/
+
+void UpdateWindowScrollbars (GtkWidget *widget)
+{
+/* int w,h;
+ RECT rect;
+
+ GetWindowRect (hwnd, &rect);
+ w = rect.right -rect.left;
+ h = rect.bottom-rect.top;
+
+ if (WindowHasHScroll (hwnd))
+ {
+ rect.left = 0;
+ rect.top = h-GetSystemMetrics (SM_CYHSCROLL);
+ rect.right = w;
+ rect.bottom = h;
+ InvalidateRect (hwnd,&rect,FALSE);
+ RedrawWindow (hwnd,&rect,NULL,RDW_FRAME | RDW_VALIDATE | RDW_UPDATENOW | RDW_NOCHILDREN);
+ ValidateRect (hwnd,&rect);
+ }
+ if (WindowHasVScroll (hwnd))
+ {
+ rect.left = w-GetSystemMetrics (SM_CXVSCROLL);
+ rect.top = 0;
+ rect.right = w;
+ rect.bottom = h;
+ InvalidateRect (hwnd,&rect,FALSE);
+ RedrawWindow (hwnd,&rect,NULL,RDW_FRAME | RDW_VALIDATE | RDW_UPDATENOW | RDW_NOCHILDREN);
+ ValidateRect (hwnd,&rect);
+ }
+*/
+ printf("UpdateWindowScrollbars -> not implemented\n");
+}
+
+
+void WinScreenYSize (OS ios, int *py, OS *oos)
+{
+ rprintf("WinScreenYSize\n");
+ *py = gdk_screen_height();
+ *oos = ios;
+}
+
+void WinScreenXSize (OS ios, int *px, OS *oos)
+{
+ rprintf("WinScreenXSize\n");
+ *px = gdk_screen_width();
+ *oos = ios;
+}
+
+void WinMinimumWinSize (int *mx, int *my)
+{
+ rprintf("WinMinimumWinSize\n");
+ *mx = 48;
+ *my = 0;
+}
+
+/* WinScrollbarSize determines system metrics of width and height of scrollbars.
+*/
+void WinScrollbarSize (OS ios, int *width, int *height, OS *oos)
+{
+ GtkRequisition req;
+ GtkWidget *vbar, *hbar;
+ printf ("WinScrollbarSize\n");
+
+ vbar = gtk_vscrollbar_new(NULL);
+ hbar = gtk_hscrollbar_new(NULL);
+
+
+ gtk_widget_size_request(vbar, &req);
+ *width = req.width; /* Width of the vertical arrow */
+ gtk_widget_size_request(hbar, &req);
+ *height = req.height; /* Height of the horizontal bar */
+
+ gtk_widget_destroy(vbar);
+ gtk_widget_destroy(hbar);
+
+ *oos = ios;
+}
+
+void WinMaxFixedWindowSize (int *mx, int *my)
+{
+ rprintf("WinMaxFixedWindowSize\n");
+ *mx = gdk_screen_width();
+ *my = gdk_screen_height();
+}
+
+void WinMaxScrollWindowSize (int *mx, int *my)
+{
+ rprintf("WinMaxScrollWindowSize\n");
+ *mx = gdk_screen_width();
+ *my = gdk_screen_height();
+}
|