def blit(self, x1=0, y1=0, x2=None, y2=None, port=None): """Draw this pixmap into the given (default current) grafport.""" src = self.bounds dest = [x1, y1, x2, y2] if x2 == None: dest[2] = x1 + src[2] - src[0] if y2 == None: dest[3] = y1 + src[3] - src[1] if not port: port = Qd.GetPort() Qd.CopyBits(self.PixMap(), port.GetPortBitMapForCopyBits(), src, tuple(dest), QuickDraw.srcCopy, None)
def blit(self, x1=0, y1=0, x2=None, y2=None, port=None): src = self.bounds dest = [x1, y1, x2, y2] if x2 is None: dest[2] = x1 + src[2] - src[0] if y2 is None: dest[3] = y1 + src[3] - src[1] if not port: port = Qd.GetPort() Qd.CopyBits(self.PixMap(), port.GetPortBitMapForCopyBits(), src, tuple(dest), QuickDraw.srcCopy, None) return
def setitem(self, item, value, clear=0): oldport = Qd.GetPort() if item >= self.itemcount: self._listwidget.insert(-1, ['[untraced]'] * (item - self.itemcount + 1)) self.itemcount = item + 1 self._listwidget.replace(item, value) if clear: for i in range(item + 1, self.itemcount): self._listwidget.replace(i, '') self._listwidget.select(item, autoscroll=1) if Evt.TickCount() / 5 != self.lasttime: self.lasttime = Evt.TickCount() / 5 self._dlg.DrawDialog() Qd.SetPort(oldport)
def listDefHighlight(self, selected, cellRect, theCell, dataOffset, dataLen, theList): savedPort = Qd.GetPort() Qd.SetPort(theList.GetListPort()) savedClip = Qd.NewRgn() Qd.GetClip(savedClip) Qd.ClipRect(cellRect) savedPenState = Qd.GetPenState() Qd.PenNormal() Qd.PenMode(hilitetransfermode) Qd.PaintRect(cellRect) #restore graphics environment Qd.SetPort(savedPort) Qd.SetClip(savedClip) Qd.DisposeRgn(savedClip) Qd.SetPenState(savedPenState)
def listDefDraw(self, selected, cellRect, theCell, dataOffset, dataLen, theList): savedPort = Qd.GetPort() Qd.SetPort(theList.GetListPort()) savedClip = Qd.NewRgn() Qd.GetClip(savedClip) Qd.ClipRect(cellRect) savedPenState = Qd.GetPenState() Qd.PenNormal() Qd.EraseRect(cellRect) #draw the cell if it contains data ascent, descent, leading, size, hm = Fm.FontMetrics() linefeed = ascent + descent + leading if dataLen: left, top, right, bottom = cellRect data = theList.LGetCell(dataLen, theCell) lines = data.split("\r") line1 = lines[0] if len(lines) > 1: line2 = lines[1] else: line2 = "" Qd.MoveTo(int(left + 4), int(top + ascent)) Qd.DrawText(line1, 0, len(line1)) if line2: Qd.MoveTo(int(left + 4), int(top + ascent + linefeed)) Qd.DrawText(line2, 0, len(line2)) Qd.PenPat("\x11\x11\x11\x11\x11\x11\x11\x11") bottom = top + theList.cellSize[1] Qd.MoveTo(left, bottom - 1) Qd.LineTo(right, bottom - 1) if selected: self.listDefHighlight(selected, cellRect, theCell, dataOffset, dataLen, theList) #restore graphics environment Qd.SetPort(savedPort) Qd.SetClip(savedClip) Qd.DisposeRgn(savedClip) Qd.SetPenState(savedPenState)
def myDrawCell(self, onlyHilite, selected, cellRect, theCell, dataOffset, dataLen, theList): savedPort = Qd.GetPort() Qd.SetPort(theList.GetListPort()) savedClip = Qd.NewRgn() Qd.GetClip(savedClip) Qd.ClipRect(cellRect) savedPenState = Qd.GetPenState() Qd.PenNormal() l, t, r, b = cellRect if not onlyHilite: Qd.EraseRect(cellRect) ascent, descent, leading, size, hm = Fm.FontMetrics() linefeed = ascent + descent + leading if dataLen >= 6: data = theList.LGetCell(dataLen, theCell) iconId, indent, tab = struct.unpack("hhh", data[:6]) try: key, value = data[6:].split("\t", 1) except ValueError: # bogus data, at least don't crash. indent = 0 tab = 0 iconId = 0 key = "" value = data[6:] if iconId: try: theIcon = Icn.GetCIcon(iconId) except Icn.Error: pass else: rect = (0, 0, 16, 16) rect = Qd.OffsetRect(rect, l, t) rect = Qd.OffsetRect(rect, 0, (theList.cellSize[1] - (rect[3] - rect[1])) / 2) Icn.PlotCIcon(rect, theIcon) if len(key) >= 0: cl, ct, cr, cb = cellRect vl, vt, vr, vb = self._viewbounds cl = vl + PICTWIDTH + indent cr = vl + tab if cr > vr: cr = vr if cl < cr: drawTextCell(key, (cl, ct, cr, cb), ascent, theList) cl = vl + tab cr = vr if cl < cr: drawTextCell(value, (cl, ct, cr, cb), ascent, theList) #elif dataLen != 0: # drawTextCell("???", 3, cellRect, ascent, theList) else: return # we have bogus data # draw nice dotted line l, t, r, b = cellRect l = self._viewbounds[0] + tab r = l + 1; if not (theList.cellSize[1] & 0x01) or (t & 0x01): myPat = "\xff\x00\xff\x00\xff\x00\xff\x00" else: myPat = "\x00\xff\x00\xff\x00\xff\x00\xff" Qd.PenPat(myPat) Qd.PenMode(QuickDraw.srcCopy) Qd.PaintRect((l, t, r, b)) Qd.PenNormal() if selected or onlyHilite: l, t, r, b = cellRect l = self._viewbounds[0] + PICTWIDTH r = self._viewbounds[2] Qd.PenMode(hilitetransfermode) Qd.PaintRect((l, t, r, b)) # restore graphics environment Qd.SetPort(savedPort) Qd.SetClip(savedClip) Qd.DisposeRgn(savedClip) Qd.SetPenState(savedPenState)
return viewrect, destrect def GetFNum(fontname): """Same as Fm.GetFNum(), but maps a missing font to Monaco instead of the system font.""" if fontname <> Fm.GetFontName(0): fontid = Fm.GetFNum(fontname) if fontid == 0: fontid = Fonts.monaco else: fontid = 0 return fontid # b/w compat. Anyone using this? GetFName = Fm.GetFontName def GetPortFontSettings(port): return Fm.GetFontName(port.GetPortTextFont()), port.GetPortTextFace( ), port.GetPortTextSize() def SetPortFontSettings(port, (font, face, size)): saveport = Qd.GetPort() Qd.SetPort(port) Qd.TextFont(GetFNum(font)) Qd.TextFace(face) Qd.TextSize(size) Qd.SetPort(saveport)
from Carbon import Qt
def freeRuler(*args): return 0 def newGIF(obj): handle = obj.WEGetObjectDataHandle() width, height, pixmap = _gifkeeper.get(handle.data) return width + 2 * IMAGEBORDER, height + 2 * IMAGEBORDER def drawGIF((l, t, r, b), obj): handle = obj.WEGetObjectDataHandle() width, height, pixmap = _gifkeeper.get(handle.data) srcrect = 0, 0, width, height dstrect = l + IMAGEBORDER, t + IMAGEBORDER, r - IMAGEBORDER, b - IMAGEBORDER port = Qd.GetPort() bg = port.rgbBkColor fg = port.rgbFgColor Qd.RGBBackColor((0xffff, 0xffff, 0xffff)) Qd.RGBForeColor((0, 0, 0)) ## Qd.CopyBits(pixmap, port.GetPortBitMapForCopyBits(), srcrect, dstrect, ## QuickDraw.srcCopy+QuickDraw.ditherCopy, None) Qd.CopyBits(pixmap, port.GetPortBitMapForCopyBits(), srcrect, dstrect, QuickDraw.srcCopy, None) Qd.RGBBackColor(bg) Qd.RGBForeColor(fg) # XXXX paste pixmap on screen return 0 def freeGIF(obj):
"""PixMapWrapper - defines the PixMapWrapper class, which wraps an opaque
return finfo <> curfinfo def _savefontinfo(port): """Return all font-pertaining info for a macos window""" if not port: return () return port.GetPortTextFont(), port.GetPortTextFace(), port.GetPortTextMode(), \ port.GetPortTextSize(), port.GetPortSpExtra() def _restorefontinfo(port, (font, face, mode, size, spextra)): """Set all font-pertaining info for a macos window""" if not port: return old = Qd.GetPort() Qd.SetPort(port) Qd.TextFont(font) Qd.TextFace(face) Qd.TextMode(mode) Qd.TextSize(size) Qd.SpaceExtra(spextra) Qd.SetPort(old) _pt2mm = 25.4 / 72 # 1 inch == 72 points == 25.4 mm _POINTSIZEOFFSET = +1 _fontmap = { ## 'Times-Roman': ('Times', 0), ## 'Times-Italic': ('Times', _qd_italic), ## 'Times-Bold': ('Times', _qd_bold),