From b7abb18cd99e348ab2f9f7ea85d72158684319a7 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Wed, 15 Nov 1995 15:18:47 +0000 Subject: [PATCH] Added support for GrafPort object --- Mac/Modules/win/Winmodule.c | 211 ++++++++++++++++++++++++++++++++++ Mac/Modules/win/winedit.py | 41 ++++--- Mac/Modules/win/wingen.py | 42 +++++++ Mac/Modules/win/winscan.py | 5 +- Mac/Modules/win/winsupport.py | 6 +- 5 files changed, 279 insertions(+), 26 deletions(-) diff --git a/Mac/Modules/win/Winmodule.c b/Mac/Modules/win/Winmodule.c index 61afed4f365..286ef34b128 100644 --- a/Mac/Modules/win/Winmodule.c +++ b/Mac/Modules/win/Winmodule.c @@ -19,6 +19,8 @@ extern int ResObj_Convert(PyObject *, Handle *); extern PyObject *WinObj_New(WindowPtr); extern int WinObj_Convert(PyObject *, WindowPtr *); +extern PyTypeObject Window_Type; +#define WinObj_Check(x) ((x)->ob_type == &Window_Type) extern PyObject *DlgObj_New(DialogPtr); extern int DlgObj_Convert(PyObject *, DialogPtr *); @@ -31,6 +33,9 @@ extern int MenuObj_Convert(PyObject *, MenuHandle *); extern PyObject *CtlObj_New(ControlHandle); extern int CtlObj_Convert(PyObject *, ControlHandle *); +extern PyObject *GrafObj_New(GrafPtr); +extern int GrafObj_Convert(PyObject *, GrafPtr *); + extern PyObject *WinObj_WhichWindow(WindowPtr); #include @@ -412,6 +417,38 @@ static PyObject *WinObj_DrawNew(_self, _args) return _res; } +static PyObject *WinObj_PaintOne(_self, _args) + WindowObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle clobberedRgn; + if (!PyArg_ParseTuple(_args, "O&", + ResObj_Convert, &clobberedRgn)) + return NULL; + PaintOne(_self->ob_itself, + clobberedRgn); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +static PyObject *WinObj_PaintBehind(_self, _args) + WindowObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle clobberedRgn; + if (!PyArg_ParseTuple(_args, "O&", + ResObj_Convert, &clobberedRgn)) + return NULL; + PaintBehind(_self->ob_itself, + clobberedRgn); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + static PyObject *WinObj_CalcVis(_self, _args) WindowObject *_self; PyObject *_args; @@ -425,6 +462,22 @@ static PyObject *WinObj_CalcVis(_self, _args) return _res; } +static PyObject *WinObj_CalcVisBehind(_self, _args) + WindowObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle clobberedRgn; + if (!PyArg_ParseTuple(_args, "O&", + ResObj_Convert, &clobberedRgn)) + return NULL; + CalcVisBehind(_self->ob_itself, + clobberedRgn); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + static PyObject *WinObj_GrowWindow(_self, _args) WindowObject *_self; PyObject *_args; @@ -531,6 +584,20 @@ static PyObject *WinObj_DragWindow(_self, _args) return _res; } +static PyObject *WinObj_GetWindowPort(_self, _args) + WindowObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + CGrafPtr _rv; + if (!PyArg_ParseTuple(_args, "")) + return NULL; + _rv = GetWindowPort(_self->ob_itself); + _res = Py_BuildValue("O&", + GrafObj_New, _rv); + return _res; +} + static PyObject *WinObj_SetPortWindowPort(_self, _args) WindowObject *_self; PyObject *_args; @@ -630,6 +697,54 @@ static PyObject *WinObj_GetWindowZoomFlag(_self, _args) return _res; } +static PyObject *WinObj_GetWindowStructureRgn(_self, _args) + WindowObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle r; + if (!PyArg_ParseTuple(_args, "O&", + ResObj_Convert, &r)) + return NULL; + GetWindowStructureRgn(_self->ob_itself, + r); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +static PyObject *WinObj_GetWindowContentRgn(_self, _args) + WindowObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle r; + if (!PyArg_ParseTuple(_args, "O&", + ResObj_Convert, &r)) + return NULL; + GetWindowContentRgn(_self->ob_itself, + r); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +static PyObject *WinObj_GetWindowUpdateRgn(_self, _args) + WindowObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle r; + if (!PyArg_ParseTuple(_args, "O&", + ResObj_Convert, &r)) + return NULL; + GetWindowUpdateRgn(_self->ob_itself, + r); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + static PyObject *WinObj_GetWindowTitleWidth(_self, _args) WindowObject *_self; PyObject *_args; @@ -763,8 +878,14 @@ static PyMethodDef WinObj_methods[] = { "() -> None"}, {"DrawNew", (PyCFunction)WinObj_DrawNew, 1, "(Boolean update) -> None"}, + {"PaintOne", (PyCFunction)WinObj_PaintOne, 1, + "(RgnHandle clobberedRgn) -> None"}, + {"PaintBehind", (PyCFunction)WinObj_PaintBehind, 1, + "(RgnHandle clobberedRgn) -> None"}, {"CalcVis", (PyCFunction)WinObj_CalcVis, 1, "() -> None"}, + {"CalcVisBehind", (PyCFunction)WinObj_CalcVisBehind, 1, + "(RgnHandle clobberedRgn) -> None"}, {"GrowWindow", (PyCFunction)WinObj_GrowWindow, 1, "(Point startPt, Rect bBox) -> (long _rv)"}, {"TrackBox", (PyCFunction)WinObj_TrackBox, 1, @@ -777,6 +898,8 @@ static PyMethodDef WinObj_methods[] = { "(Point thePt) -> (Boolean _rv)"}, {"DragWindow", (PyCFunction)WinObj_DragWindow, 1, "(Point startPt, Rect boundsRect) -> None"}, + {"GetWindowPort", (PyCFunction)WinObj_GetWindowPort, 1, + "() -> (CGrafPtr _rv)"}, {"SetPortWindowPort", (PyCFunction)WinObj_SetPortWindowPort, 1, "() -> None"}, {"GetWindowKind", (PyCFunction)WinObj_GetWindowKind, 1, @@ -791,6 +914,12 @@ static PyMethodDef WinObj_methods[] = { "() -> (Boolean _rv)"}, {"GetWindowZoomFlag", (PyCFunction)WinObj_GetWindowZoomFlag, 1, "() -> (Boolean _rv)"}, + {"GetWindowStructureRgn", (PyCFunction)WinObj_GetWindowStructureRgn, 1, + "(RgnHandle r) -> None"}, + {"GetWindowContentRgn", (PyCFunction)WinObj_GetWindowContentRgn, 1, + "(RgnHandle r) -> None"}, + {"GetWindowUpdateRgn", (PyCFunction)WinObj_GetWindowUpdateRgn, 1, + "(RgnHandle r) -> None"}, {"GetWindowTitleWidth", (PyCFunction)WinObj_GetWindowTitleWidth, 1, "() -> (short _rv)"}, {"GetNextWindow", (PyCFunction)WinObj_GetNextWindow, 1, @@ -833,6 +962,20 @@ PyTypeObject Window_Type = { /* --------------------- End object type Window --------------------- */ +static PyObject *Win_GetGrayRgn(_self, _args) + PyObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle _rv; + if (!PyArg_ParseTuple(_args, "")) + return NULL; + _rv = GetGrayRgn(); + _res = Py_BuildValue("O&", + ResObj_New, _rv); + return _res; +} + static PyObject *Win_InitWindows(_self, _args) PyObject *_self; PyObject *_args; @@ -846,6 +989,20 @@ static PyObject *Win_InitWindows(_self, _args) return _res; } +static PyObject *Win_GetWMgrPort(_self, _args) + PyObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + GrafPtr wPort; + if (!PyArg_ParseTuple(_args, "")) + return NULL; + GetWMgrPort(&wPort); + _res = Py_BuildValue("O&", + GrafObj_New, wPort); + return _res; +} + static PyObject *Win_NewWindow(_self, _args) PyObject *_self; PyObject *_args; @@ -930,6 +1087,21 @@ static PyObject *Win_InvalRect(_self, _args) return _res; } +static PyObject *Win_InvalRgn(_self, _args) + PyObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle badRgn; + if (!PyArg_ParseTuple(_args, "O&", + ResObj_Convert, &badRgn)) + return NULL; + InvalRgn(badRgn); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + static PyObject *Win_ValidRect(_self, _args) PyObject *_self; PyObject *_args; @@ -945,6 +1117,21 @@ static PyObject *Win_ValidRect(_self, _args) return _res; } +static PyObject *Win_ValidRgn(_self, _args) + PyObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + RgnHandle goodRgn; + if (!PyArg_ParseTuple(_args, "O&", + ResObj_Convert, &goodRgn)) + return NULL; + ValidRgn(goodRgn); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + static PyObject *Win_CheckUpdate(_self, _args) PyObject *_self; PyObject *_args; @@ -999,6 +1186,20 @@ static PyObject *Win_PinRect(_self, _args) return _res; } +static PyObject *Win_GetCWMgrPort(_self, _args) + PyObject *_self; + PyObject *_args; +{ + PyObject *_res = NULL; + CGrafPtr wMgrCPort; + if (!PyArg_ParseTuple(_args, "")) + return NULL; + GetCWMgrPort(&wMgrCPort); + _res = Py_BuildValue("O&", + GrafObj_New, wMgrCPort); + return _res; +} + static PyObject *Win_NewCWindow(_self, _args) PyObject *_self; PyObject *_args; @@ -1069,8 +1270,12 @@ static PyObject *Win_WhichWindow(_self, _args) } static PyMethodDef Win_methods[] = { + {"GetGrayRgn", (PyCFunction)Win_GetGrayRgn, 1, + "() -> (RgnHandle _rv)"}, {"InitWindows", (PyCFunction)Win_InitWindows, 1, "() -> None"}, + {"GetWMgrPort", (PyCFunction)Win_GetWMgrPort, 1, + "() -> (GrafPtr wPort)"}, {"NewWindow", (PyCFunction)Win_NewWindow, 1, "(Rect boundsRect, Str255 title, Boolean visible, short theProc, WindowPtr behind, Boolean goAwayFlag, long refCon) -> (WindowPtr _rv)"}, {"GetNewWindow", (PyCFunction)Win_GetNewWindow, 1, @@ -1079,14 +1284,20 @@ static PyMethodDef Win_methods[] = { "() -> (WindowPtr _rv)"}, {"InvalRect", (PyCFunction)Win_InvalRect, 1, "(Rect badRect) -> None"}, + {"InvalRgn", (PyCFunction)Win_InvalRgn, 1, + "(RgnHandle badRgn) -> None"}, {"ValidRect", (PyCFunction)Win_ValidRect, 1, "(Rect goodRect) -> None"}, + {"ValidRgn", (PyCFunction)Win_ValidRgn, 1, + "(RgnHandle goodRgn) -> None"}, {"CheckUpdate", (PyCFunction)Win_CheckUpdate, 1, "() -> (Boolean _rv, EventRecord theEvent)"}, {"FindWindow", (PyCFunction)Win_FindWindow, 1, "(Point thePoint) -> (short _rv, WindowPtr theWindow)"}, {"PinRect", (PyCFunction)Win_PinRect, 1, "(Rect theRect, Point thePt) -> (long _rv)"}, + {"GetCWMgrPort", (PyCFunction)Win_GetCWMgrPort, 1, + "() -> (CGrafPtr wMgrCPort)"}, {"NewCWindow", (PyCFunction)Win_NewCWindow, 1, "(Rect boundsRect, Str255 title, Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon) -> (WindowPtr _rv)"}, {"GetNewCWindow", (PyCFunction)Win_GetNewCWindow, 1, diff --git a/Mac/Modules/win/winedit.py b/Mac/Modules/win/winedit.py index 08be8bd3576..a5812f13473 100644 --- a/Mac/Modules/win/winedit.py +++ b/Mac/Modules/win/winedit.py @@ -1,6 +1,11 @@ # These are inline-routines/defines, so we do them "by hand" # +f = Method(CGrafPtr, 'GetWindowPort', + (WindowRef, 'theWindow', InMode), +) +methods.append(f) + f = Method(void, 'SetPortWindowPort', (WindowRef, 'theWindow', InMode), ) @@ -38,25 +43,23 @@ f = Method(Boolean, 'GetWindowZoomFlag', ) methods.append(f) -if 0: - # Regions are not implemented yet.. - f = Method(void, 'GetWindowStructureRgn', - (WindowRef, 'theWindow', InMode), - (RgnHandle, 'r', InMode), - ) - methods.append(f) - - f = Method(void, 'GetWindowContentRgn', - (WindowRef, 'theWindow', InMode), - (RgnHandle, 'r', InMode), - ) - methods.append(f) - - f = Method(void, 'GetWindowUpdateRgn', - (WindowRef, 'theWindow', InMode), - (RgnHandle, 'r', InMode), - ) - methods.append(f) +f = Method(void, 'GetWindowStructureRgn', + (WindowRef, 'theWindow', InMode), + (RgnHandle, 'r', InMode), +) +methods.append(f) + +f = Method(void, 'GetWindowContentRgn', + (WindowRef, 'theWindow', InMode), + (RgnHandle, 'r', InMode), +) +methods.append(f) + +f = Method(void, 'GetWindowUpdateRgn', + (WindowRef, 'theWindow', InMode), + (RgnHandle, 'r', InMode), +) +methods.append(f) f = Method(short, 'GetWindowTitleWidth', (WindowRef, 'theWindow', InMode), diff --git a/Mac/Modules/win/wingen.py b/Mac/Modules/win/wingen.py index 1d0a87591f5..8841b1e5e52 100644 --- a/Mac/Modules/win/wingen.py +++ b/Mac/Modules/win/wingen.py @@ -1,9 +1,18 @@ # Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Windows.h' +f = Function(RgnHandle, 'GetGrayRgn', +) +functions.append(f) + f = Function(void, 'InitWindows', ) functions.append(f) +f = Function(void, 'GetWMgrPort', + (GrafPtr, 'wPort', OutMode), +) +functions.append(f) + f = Function(WindowRef, 'NewWindow', (NullStorage, 'wStorage', InMode), (Rect_ptr, 'boundsRect', InMode), @@ -104,11 +113,21 @@ f = Function(void, 'InvalRect', ) functions.append(f) +f = Function(void, 'InvalRgn', + (RgnHandle, 'badRgn', InMode), +) +functions.append(f) + f = Function(void, 'ValidRect', (Rect_ptr, 'goodRect', InMode), ) functions.append(f) +f = Function(void, 'ValidRgn', + (RgnHandle, 'goodRgn', InMode), +) +functions.append(f) + f = Method(void, 'BeginUpdate', (WindowRef, 'theWindow', InMode), ) @@ -162,11 +181,29 @@ f = Method(void, 'DrawNew', ) methods.append(f) +f = Method(void, 'PaintOne', + (WindowRef, 'window', InMode), + (RgnHandle, 'clobberedRgn', InMode), +) +methods.append(f) + +f = Method(void, 'PaintBehind', + (WindowRef, 'startWindow', InMode), + (RgnHandle, 'clobberedRgn', InMode), +) +methods.append(f) + f = Method(void, 'CalcVis', (WindowRef, 'window', InMode), ) methods.append(f) +f = Method(void, 'CalcVisBehind', + (WindowRef, 'startWindow', InMode), + (RgnHandle, 'clobberedRgn', InMode), +) +methods.append(f) + f = Method(long, 'GrowWindow', (WindowRef, 'theWindow', InMode), (Point, 'startPt', InMode), @@ -193,6 +230,11 @@ f = Method(Boolean, 'TrackBox', ) methods.append(f) +f = Function(void, 'GetCWMgrPort', + (CGrafPtr, 'wMgrCPort', OutMode), +) +functions.append(f) + f = Function(WindowRef, 'NewCWindow', (NullStorage, 'wStorage', InMode), (Rect_ptr, 'boundsRect', InMode), diff --git a/Mac/Modules/win/winscan.py b/Mac/Modules/win/winscan.py index dd3319be550..20771b0efef 100644 --- a/Mac/Modules/win/winscan.py +++ b/Mac/Modules/win/winscan.py @@ -36,13 +36,10 @@ class MyScanner(Scanner): def makeblacklisttypes(self): return [ 'ProcPtr', - 'GrafPtr', - 'CGrafPtr', - 'RgnHandle', -## 'PicHandle', 'WCTabHandle', 'AuxWinHandle', 'PixPatHandle', + 'DragGrayRgnUPP', ] def makerepairinstructions(self): diff --git a/Mac/Modules/win/winsupport.py b/Mac/Modules/win/winsupport.py index 39d4b7a900d..9aed179a80a 100644 --- a/Mac/Modules/win/winsupport.py +++ b/Mac/Modules/win/winsupport.py @@ -29,9 +29,10 @@ WindowPtr = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX) WindowRef = WindowPtr WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX) WindowPeek.passInput = lambda name: "(WindowPeek)(%s)" % name -CGrafPtr = WindowPtr +CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") +GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj") -#RgnHandle = OpaqueByValueType("RgnHandle", "RgnObj") +RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") PicHandle = OpaqueByValueType("PicHandle", "ResObj") includestuff = includestuff + """ @@ -83,7 +84,6 @@ class MyObjectDefinition(GlobalObjectDefinition): """) def outputFreeIt(self, itselfname): Output("DisposeWindow(%s);", itselfname) - # From here on it's basically all boiler plate... # Create the generator groups and link them