def _update_bbox(self, minx, miny, maxx, maxy): assert type(minx) == type(maxx) == type(miny) == type(maxy) == type(1) if minx > maxx: minx, maxx = maxx, minx if miny > maxy: miny, maxy = maxy, miny self._clonebboxes.append((minx, miny, maxx, maxy)) if not self._win32rgn: self._win32rgn=win32ui.CreateRgn() self._win32rgn.CreateRectRgn((minx, miny, maxx, maxy)) else: addrgn=win32ui.CreateRgn() addrgn.CreateRectRgn((minx, miny, maxx, maxy)) self._win32rgn.CombineRgn(self._win32rgn,addrgn,win32con.RGN_OR) addrgn.DeleteObject() del addrgn
def getClipRgn(self, rel=None): x, y, w, h = self.LRtoDR(self.getwindowpos(), round=1) rgn = win32ui.CreateRgn() rgn.CreateRectRgn((x, y, x + w, y + h)) if rel == self: return rgn prgn = self._parent.getClipRgn(rel) rgn.CombineRgn(rgn, prgn, win32con.RGN_AND) prgn.DeleteObject() return rgn
def clone(self): w = self._window new = _DisplayList(w, self._bgcolor, units=self.__units) # copy all instance variables new._list = self._list[:] new._font = self._font new.__cmddict = self.__cmddict new.__butdict = self.__butdict if self._win32rgn: new._win32rgn=win32ui.CreateRgn() new._win32rgn.CopyRgn(self._win32rgn) if self._rendered: new._cloneof = self new._clonestart = len(self._list) for key, val in self._optimdict.items(): new._optimdict[key] = val return new
def createRegion(self, pointlist): npl = [] for p in pointlist: x = int(p[0] + 0.5) y = int(p[1] + 0.5) npl.append((x, y)) rgn = win32ui.CreateRgn() try: succeeded = rgn.CreatePolygonRgn(npl) except: print 'CreatePolygonRgn exception:', npl succeeded = 0 rgn = None else: if not succeeded: print 'CreatePolygonRgn failed:', npl rgn = None return rgn
def getCanvasClipRgn(self, rel=None): rgn = win32ui.CreateRgn() rgn.CreateRectRgn(self._canvas) return rgn
def getClipRgn(self, rel=None): x, y, w, h = self._canvas rgn = win32ui.CreateRgn() rgn.CreateRectRgn((x, y, x + w, y + h)) return rgn