From: andrea v. <va...@di...> - 2006-09-23 23:10:22
|
Thnaks Will. you gave me precious hints. I was pretty sure that there was a way to wrap up pyx code to satisfy =20= my needs. I see that in any case the idea is to subclass a canvas. Best -a- On 22 Sep 2006, at 05:14, William Henney wrote: > Andrea, > > On 9/21/06, andrea valle <va...@di...> wrote: >> So, I try to make an example. >> I'm developing graphical musical notation. >> I need a finite set of symbols, each one having its properties. eg. = a >> red circle in a white rect represents something, a red circle alone >> represents something other, a blue cross a third thing, a little blue >> cross a fourth one and so on. > > Sorry to butt in here, but I think that what you want is quite easy. > You don't really have to worry about the design of PyX - just wrap it > up so it has the design you want! Is the example below anything like > what you are after? Note that in my example a symbol has "fixed > properties", such as shape and fill color, that are set when the > symbol is first defined. These could be extended to include stroke > color, linewidth, etc. Then there are "temporary properties" - size, > position, angle, that can be different each time the symbol is > "painted" > > Cheers > > Will > > = #######################################################################=20= > ### > import pyx > > class Shape: > "Paths for simple shapes of unit size" > circle =3D pyx.path.circle(0, 0, 0.5) > square =3D pyx.path.rect(-0.5, -0.5, 1, 1) > > class Color: > black =3D pyx.color.rgb.black > blue =3D pyx.color.rgb(0.1,0.2,0.8) > pink =3D pyx.color.rgb(0.9,0.5,0.5) > > class Symbol(pyx.canvas.canvas): > "A symbol with properties" > def __init__(self, fillcolor=3DColor.black, alpha=3D0.5, > path=3DShape.circle): > pyx.canvas.canvas.__init__(self) > self.fill(path, [fillcolor, pyx.color.transparency(1.-alpha)]) > > def paint(self, c, pos=3D(0, 0), size=3D1, angle=3D0): > c.insert(self, [pyx.trafo.translate(*pos), > pyx.trafo.scale(size), > pyx.trafo.rotate(angle)]) > > picture =3D pyx.canvas.canvas() > > bluecircle =3D Symbol(fillcolor=3DColor.blue) > pinksquare =3D Symbol(fillcolor=3DColor.pink, path=3DShape.square) > > bluecircle.paint(picture) > bluecircle.paint(picture, pos=3D(1, 1), size=3D2.5) > pinksquare.paint(picture, pos=3D(0, 1), size=3D1.5, angle=3D30) > > picture.writePDFfile("paint") > = #######################################################################=20= > ### > > > --=20 > > Dr William Henney, Centro de Radioastronom=EDa y Astrof=EDsica, > Universidad Nacional Aut=F3noma de M=E9xico, Campus Morelia > > Andrea Valle DAMS - Facolt=E0 di Scienze della Formazione Universit=E0 degli Studi di Torino http://www.semiotiche.it/andrea and...@un... |