Show
Ignore:
Timestamp:
12/04/07 17:02:30 (13 months ago)
Author:
fdb
Message:

Graphics saving moved to canvas.save

Location:
nodebox/branches/try-qt/nodebox
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • nodebox/branches/try-qt/nodebox/graphics/qt.py

    r258 r259  
    33from random import choice, shuffle 
    44 
    5 from PyQt4.QtGui import QPainterPath, QColor, QTransform, QBrush, QPen 
    6 from PyQt4.QtCore import Qt 
     5from PyQt4.QtGui import QPainterPath, QColor, QTransform, QBrush, QPen, QImage, QPrinter, QPainter 
     6from PyQt4.QtCore import Qt, QSize 
     7from PyQt4.QtSvg import QSvgGenerator 
    78 
    89from nodebox.util import _copy_attr, _copy_attrs 
     
    10151016    def draw(self, painter): 
    10161017        if self.background is not None: 
    1017             #self.background._set(painter) 
    10181018            painter.fillRect(0,0, self.width, self.height, self.background._rgb) 
    1019             #NSRectFill(((0,0), (self.width, self.height))) 
    10201019        for grob in self._grobs: 
    10211020            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 data 
    10421021 
    10431022    def save(self, fname, format=None): 
     
    10451024            basename, ext = os.path.splitext(fname) 
    10461025            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) 
    10501051 
    10511052def _test(): 
  • nodebox/branches/try-qt/nodebox/gui/qt/__init__.py

    r258 r259  
    262262        print "save image as ", fileName 
    263263        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 
    291266    @pyqtSignature("") 
    292267    def doRun(self):