root / ase / io / png.py @ 14
Historique | Voir | Annoter | Télécharger (1,07 ko)
| 1 | 1 | tkerber | from ase.io.eps import EPS |
|---|---|---|---|
| 2 | 1 | tkerber | |
| 3 | 1 | tkerber | |
| 4 | 1 | tkerber | class PNG(EPS): |
| 5 | 1 | tkerber | def write_header(self): |
| 6 | 1 | tkerber | from matplotlib.backends.backend_agg import RendererAgg |
| 7 | 1 | tkerber | |
| 8 | 1 | tkerber | try:
|
| 9 | 1 | tkerber | from matplotlib.transforms import Value |
| 10 | 1 | tkerber | except ImportError: |
| 11 | 1 | tkerber | dpi = 72
|
| 12 | 1 | tkerber | else:
|
| 13 | 1 | tkerber | dpi = Value(72)
|
| 14 | 1 | tkerber | |
| 15 | 1 | tkerber | self.renderer = RendererAgg(self.w, self.h, dpi) |
| 16 | 1 | tkerber | |
| 17 | 1 | tkerber | #self.gc = GraphicsContextBase()
|
| 18 | 1 | tkerber | #self.gc.set_linewidth(2)
|
| 19 | 1 | tkerber | |
| 20 | 1 | tkerber | def write_trailer(self): |
| 21 | 1 | tkerber | renderer = self.renderer
|
| 22 | 1 | tkerber | if hasattr(renderer._renderer, 'write_png'): |
| 23 | 1 | tkerber | # Old version of matplotlib:
|
| 24 | 1 | tkerber | renderer._renderer.write_png(self.filename)
|
| 25 | 1 | tkerber | else:
|
| 26 | 1 | tkerber | x = renderer._renderer.buffer_rgba(0, 0) |
| 27 | 1 | tkerber | from matplotlib import _png |
| 28 | 1 | tkerber | _png.write_png(renderer._renderer.buffer_rgba(0, 0), |
| 29 | 1 | tkerber | renderer.width, renderer.height, |
| 30 | 1 | tkerber | self.filename, 72) |
| 31 | 1 | tkerber | |
| 32 | 1 | tkerber | |
| 33 | 1 | tkerber | def write_png(filename, atoms, **parameters): |
| 34 | 1 | tkerber | if isinstance(atoms, list): |
| 35 | 1 | tkerber | assert len(atoms) == 1 |
| 36 | 1 | tkerber | atoms = atoms[0]
|
| 37 | 1 | tkerber | PNG(atoms, **parameters).write(filename) |