Changeset 259 for nodebox/branches/try-qt/nodebox
- Timestamp:
- 12/04/07 17:02:30 (13 months ago)
- Location:
- nodebox/branches/try-qt/nodebox
- Files:
-
- 2 modified
-
graphics/qt.py (modified) (3 diffs)
-
gui/qt/__init__.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
nodebox/branches/try-qt/nodebox/graphics/qt.py
r258 r259 3 3 from random import choice, shuffle 4 4 5 from PyQt4.QtGui import QPainterPath, QColor, QTransform, QBrush, QPen 6 from PyQt4.QtCore import Qt 5 from PyQt4.QtGui import QPainterPath, QColor, QTransform, QBrush, QPen, QImage, QPrinter, QPainter 6 from PyQt4.QtCore import Qt, QSize 7 from PyQt4.QtSvg import QSvgGenerator 7 8 8 9 from nodebox.util import _copy_attr, _copy_attrs … … 1015 1016 def draw(self, painter): 1016 1017 if self.background is not None: 1017 #self.background._set(painter)1018 1018 painter.fillRect(0,0, self.width, self.height, self.background._rgb) 1019 #NSRectFill(((0,0), (self.width, self.height)))1020 1019 for grob in self._grobs: 1021 1020 grob._draw(painter) 1022 1023 def _getImageData(self, format):1024 if format == 'pdf':1025 view = _PDFRenderView.alloc().initWithCanvas_(self)1026 return view.dataWithPDFInsideRect_(view.bounds())1027 else:1028 imgTypes = {"gif": NSGIFFileType,1029 "jpg": NSJPEGFileType,1030 "jpeg": NSJPEGFileType,1031 "png": NSPNGFileType,1032 "tiff": NSTIFFFileType}1033 if format not in imgTypes:1034 raise NodeBoxError, "Filename should end in .pdf, .tiff, .gif, .jpg or .png"1035 data = self._nsImage.TIFFRepresentation()1036 if format != 'tiff':1037 imgType = imgTypes[format]1038 rep = NSBitmapImageRep.imageRepWithData_(data)1039 return rep.representationUsingType_properties_(imgType, None)1040 else:1041 return data1042 1021 1043 1022 def save(self, fname, format=None): … … 1045 1024 basename, ext = os.path.splitext(fname) 1046 1025 format = ext[1:].lower() # Skip the dot 1047 data = self._getImageData(format) 1048 fname = NSString.stringByExpandingTildeInPath(fname) 1049 data.writeToFile_atomically_(fname, False) 1026 if format == "svg": 1027 svgGen = QSvgGenerator() 1028 svgGen.setFileName(fname) 1029 svgGen.setSize(QSize(self.width, self.height)) 1030 painter = QPainter(svgGen) 1031 self.draw(painter) 1032 painter.end() 1033 elif format == "pdf": 1034 printer = QPrinter(QPrinter.HighResolution) 1035 printer.setOutputFormat(QPrinter.PdfFormat) 1036 printer.setOutputFileName(fname) 1037 printer.setFullPage(True) 1038 #printer.setPageSize(QPrinter.Custom) 1039 painter = QPainter(printer) 1040 self.draw(painter) 1041 painter.end() 1042 elif format in ("png", "tiff", "jpg", "jpeg", "gif"): 1043 img = QImage(self.width, self.height, QImage.Format_ARGB32) 1044 painter = QPainter(img) 1045 painter.setRenderHints(QPainter.Antialiasing | QPainter.TextAntialiasing) 1046 self.draw(painter) 1047 painter.end() 1048 img.save(fname, None, 100) 1049 else: 1050 raise NodeBoxError("Unkown format", format) 1050 1051 1051 1052 def _test(): -
nodebox/branches/try-qt/nodebox/gui/qt/__init__.py
r258 r259 262 262 print "save image as ", fileName 263 263 if fileName is not None and len(fileName) > 0: 264 fileName = str(fileName) 265 ext = os.path.splitext(fileName)[1].lower() 266 if ext == ".svg": 267 gen = QSvgGenerator() 268 gen.setFileName(fileName) 269 gen.setSize(QSize(self.canvas.width, self.canvas.height)) 270 painter = QPainter() 271 painter.begin(gen) 272 self.canvas.draw(painter) 273 painter.end() 274 elif ext == ".pdf": 275 printer = QPrinter(QPrinter.HighResolution) 276 printer.setOutputFormat(QPrinter.PdfFormat) 277 printer.setOutputFileName(fileName) 278 printer.setFullPage(True) 279 #printer.setPageSize(QPrinter.Custom) 280 painter = QPainter(printer) 281 self.canvas.draw(painter) 282 painter.end() 283 elif ext in (".png", ".tiff", ".jpg", ".jpeg", ".gif"): 284 img = QImage(self.canvas.width, self.canvas.height, QImage.Format_ARGB32) 285 painter = QPainter(img) 286 painter.setRenderHints(QPainter.Antialiasing | QPainter.TextAntialiasing) 287 self.canvas.draw(painter) 288 painter.end() 289 img.save(fileName, None, 100) 290 264 self.canvas.save(str(fileName)) 265 291 266 @pyqtSignature("") 292 267 def doRun(self):
