From 7553b7f9d4dddc2235c137d41de8ce22547bebe3 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Wed, 1 Jul 2015 17:36:37 +0200 Subject: Initial commit --- Linux_C_12/cCCallWindows_121.c | 182 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 Linux_C_12/cCCallWindows_121.c (limited to 'Linux_C_12/cCCallWindows_121.c') 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(); +} -- cgit v1.2.3