[Rdkit-devel] [PATCH 16/17] Move image type code into spingCanvas
Open-Source Cheminformatics and Machine Learning
Brought to you by:
glandrum
|
From: Gianluca S. <gi...@gm...> - 2011-03-19 09:44:46
|
---
rdkit/Chem/Draw/__init__.py | 13 ++-----------
rdkit/Chem/Draw/spingCanvas.py | 25 ++++++++++++++++++++-----
2 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/rdkit/Chem/Draw/__init__.py b/rdkit/Chem/Draw/__init__.py
index e1ec134..e42eb64 100644
--- a/rdkit/Chem/Draw/__init__.py
+++ b/rdkit/Chem/Draw/__init__.py
@@ -72,18 +72,9 @@ def MolToFile(mol,fileName,size=(300,300),kekulize=True, wedgeBonds=True,
fileName=fileName)
useCAIRO=True
except ImportError:
- # TODO Fix sping usage, probably needs to extend CanvasBase API
- # to support other formats
useCAIRO=False
- if imageType=="pdf":
- from rdkit.sping.PDF.pidPDF import PDFCanvas as Canvas
- elif imageType=="ps":
- from rdkit.sping.PS.pidPS import PSCanvas as Canvas
- elif imageType=="svg":
- from rdkit.sping.SVG.pidSVG import SVGCanvas as Canvas
- elif imageType=="png":
- from rdkit.sping.PIL.pidPIL import PILCanvas as Canvas
- canvas = Canvas(size=size,name=fileName)
+ from spingCanvas import Canvas
+ canvas = Canvas(size=size,name=fileName,imageType=imageType)
drawer = MolDrawing(canvas)
if kekulize:
from rdkit import Chem
diff --git a/rdkit/Chem/Draw/spingCanvas.py b/rdkit/Chem/Draw/spingCanvas.py
index e656fd8..c6260f6 100644
--- a/rdkit/Chem/Draw/spingCanvas.py
+++ b/rdkit/Chem/Draw/spingCanvas.py
@@ -23,11 +23,23 @@ def convertColor(color):
class Canvas(CanvasBase):
-
- def __init__(self, size, name):
- self.canvas = PILCanvas(size=size, name=name)
- self._image = self.canvas._image
- self.size = self._image.size
+ def __init__(self, size, name, imageType='png'):
+ if imageType=="pdf":
+ from rdkit.sping.PDF.pidPDF import PDFCanvas as Canvas
+ elif imageType=="ps":
+ from rdkit.sping.PS.pidPS import PSCanvas as Canvas
+ elif imageType=="svg":
+ from rdkit.sping.SVG.pidSVG import SVGCanvas as Canvas
+ elif imageType=="png":
+ from rdkit.sping.PIL.pidPIL import PILCanvas as Canvas
+ else:
+ raise ValueError,'unrecognized format: %s'%imageType
+ self.canvas = Canvas(size=size, name=name)
+ if hasattr(self.canvas,'_image'):
+ self._image = self.canvas._image
+ else:
+ self._image = None
+ self.size = size
def addCanvasLine(self, p1,p2,color=(0,0,0),color2=None,**kwargs):
if color2 and color2!=color:
@@ -100,3 +112,6 @@ class Canvas(CanvasBase):
def flush(self):
self.canvas.flush()
+
+ def save(self):
+ self.canvas.save()
--
1.7.4
|