summaryrefslogtreecommitdiff
path: root/graphics/tpx/Scripts/Old_TpXpy/TpXpy.py
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/tpx/Scripts/Old_TpXpy/TpXpy.py')
-rw-r--r--graphics/tpx/Scripts/Old_TpXpy/TpXpy.py212
1 files changed, 212 insertions, 0 deletions
diff --git a/graphics/tpx/Scripts/Old_TpXpy/TpXpy.py b/graphics/tpx/Scripts/Old_TpXpy/TpXpy.py
new file mode 100644
index 0000000000..46e070a87e
--- /dev/null
+++ b/graphics/tpx/Scripts/Old_TpXpy/TpXpy.py
@@ -0,0 +1,212 @@
+import xml.dom.minidom
+class TpXpic:
+ "Python module to generate TpX drawings"
+ def __init__(self):
+ self.aXML = xml.dom.minidom.getDOMImplementation().createDocument(None, "TpX", None)
+ self.XMLtop = self.aXML.documentElement
+ self.XMLtop.setAttribute('v', '4')
+ def __del__(self):
+ self.aXML.unlink()
+ def as_text(self):
+ t = self.aXML.toprettyxml(' ', '\n')
+ t = t.replace('<caption>\n ','<caption>')
+ t = t.replace('\n </caption>','</caption>')
+ t = t.replace('<comment>\n ','<comment>')
+ t = t.replace('\n </comment>','</comment>')
+ t = t.replace('">\n ','">')
+ t = t.replace('\n','\n%')
+ j = t.find('\n')
+ t = t[j+1:]
+ j = t.rfind('\n')
+ t = t[:j]
+ return t
+ def setRootAttribute(self, elID, s):
+ self.XMLtop.setAttribute(elID, str(s))
+ def setEl(self, elID):
+ el = self.XMLtop.getElementsByTagName(elID)
+ if len(el)>0:
+ self.last = self.aXML.createElement(elID)
+ self.XMLtop.removeChild(el[0]).unlink()
+ else:
+ self.last = self.aXML.createElement(elID)
+ self.XMLtop.appendChild(self.last)
+ return self.last
+ def setCaption(self, s, label=None):
+ self.setEl('caption').appendChild(self.aXML.createTextNode(s))
+ if label!=None:
+ self.a('label', label)
+ def setComment(self, s):
+ self.setEl('comment').appendChild(self.aXML.createTextNode(s))
+ def addEl(self, elID):
+ self.last = self.aXML.createElement(elID)
+ self.XMLtop.appendChild(self.last)
+ return self.last
+ def a(self, elID, elValue, el=None):
+ if el==None:
+ self.last.setAttribute(elID, str(elValue))
+ else:
+ el.setAttribute(elID, str(elValue))
+ def lc(self, cl, el=None):
+ "set line color"
+ self.a('lc', cl, el)
+ def lw(self, w, el=None):
+ "set line width"
+ self.a('lw', w, el)
+ def li(self, li, el=None):
+ "set line style: none, dot, dash or solid (default)"
+ self.a('li', li, el)
+ def ha(self, ha, el=None):
+ "set hatching: 1,...,6"
+ self.a('ha', ha, el)
+ def hc(self, cl, el=None):
+ "set hatching color"
+ self.a('hc', cl, el)
+ def fill(self, cl, el=None):
+ "set fill color"
+ self.a('fill', cl, el)
+ def addLine(self, x1, y1, x2, y2):
+ "add line"
+ self.last = self.addEl('line')
+ self.a('x1', str(x1))
+ self.a('y1', str(y1))
+ self.a('x2', str(x2))
+ self.a('y2', str(y2))
+ return self.last
+ def arr(self, arr1=None, arr2=None, arrs=None, el=None):
+ "add arrow-heads; arr1,arr2: none, h40, h41, h42, h43, h44, h45, h46, h47, h48, t40, t43, t44, t45, h20, h21, h22, h23, h24, t20, t21, t22, t23, hr10, hr11, hr12, tr10, h10, h11, h12, h12c, t10, r0, r10, r11, r12, r20, r20c, r21, r33, ts10, ts11, ts12, hs10, hs12, ts20, ts21, ts23, hs20, hs23, o, oc, qq;"
+ "arrs is arrow-head size factor"
+ if arr1!=None:
+ self.a('arr1', arr1, el)
+ if arr2!=None:
+ self.a('arr2', arr2, el)
+ if arrs!=None:
+ self.a('arrs', str(arrs), el)
+ def addRect(self, x, y, w, h):
+ "add rectangle"
+ self.last = self.addEl('rect')
+ self.a('x', str(x))
+ self.a('y', str(y))
+ self.a('w', str(w))
+ self.a('h', str(h))
+ return self.last
+ def rotdeg(self, rotdeg, el=None):
+ self.a('rotdeg', rotdeg, el)
+ def addCircle(self, x, y, d):
+ "add circle"
+ self.last = self.addEl('circle')
+ self.a('x', str(x))
+ self.a('y', str(y))
+ self.a('d', str(d))
+ return self.last
+ def addEllipse(self, x, y, dx, dy):
+ "add ellipse"
+ self.last = self.addEl('ellipse')
+ self.a('x', str(x))
+ self.a('y', str(y))
+ self.a('dx', str(dx))
+ self.a('dy', str(dy))
+ return self.last
+ def points_str(self, pp):
+ s = ''
+ for i in range(len(pp)):
+ s = s + str(pp[i][0]) + ',' + str(pp[i][1]) + ' '
+ return s
+ def addPolyline(self, pp):
+ "add polyline"
+ self.last = self.addEl('polyline')
+ self.last.appendChild(self.aXML.createTextNode(self.points_str(pp)))
+ return self.last
+ def addPolygon(self, pp):
+ "add polygon"
+ self.last = self.addEl('polygon')
+ self.last.appendChild(self.aXML.createTextNode(self.points_str(pp)))
+ return self.last
+ def addCircular(self, aID, x, y, d, a1, a2):
+ "add circular object"
+ self.last = self.addEl(aID)
+ self.a('x', str(x))
+ self.a('y', str(y))
+ self.a('d', str(d))
+ self.a('a1', str(a1))
+ self.a('a2', str(a2))
+ return self.last
+ def addArc(self, x, y, d, a1, a2):
+ "add arc"
+ return self.addCircular('arc', x, y, d, a1, a2)
+ def addSegment(self, x, y, d, a1, a2):
+ "add segment"
+ return self.addCircular('segment', x, y, d, a1, a2)
+ def addSector(self, x, y, d, a1, a2):
+ "add sector"
+ return self.addCircular('sector', x, y, d, a1, a2)
+ def addCurve(self, pp):
+ "add curve"
+ self.last = self.addEl('curve')
+ self.last.appendChild(self.aXML.createTextNode(self.points_str(pp)))
+ return self.last
+ def closed(self, el=None):
+ "make a curve closed"
+ self.a('closed', 1, el)
+ def addBezier(self, pp):
+ "add Bezier path"
+ self.last = self.addEl('bezier')
+ self.last.appendChild(self.aXML.createTextNode(self.points_str(pp)))
+ return self.last
+ def addText(self, x, y, h, t, tex=None):
+ "add text label"
+ self.last = self.addEl('text')
+ self.a('x', str(x))
+ self.a('y', str(y))
+ self.a('h', str(h))
+ self.a('t', t)
+ if tex!=None:
+ self.a('tex', tex)
+ return self.last
+ def jh(self, j, el=None):
+ "set text horizontal justification: l (left, default), c (center) or r (right)"
+ self.a('jh', j, el)
+ def jv(self, j, el=None):
+ "set text vertical justification: 0 (baseline, default), b (bottom), c (center) or t (top)"
+ self.a('jv', j, el)
+ def addStar(self, x, y, s=None):
+ "add star"
+ self.last = self.addEl('star')
+ self.a('x', str(x))
+ self.a('y', str(y))
+ if s!=None:
+ self.a('s', s)
+ return self.last
+ def starShape(self, s, el=None):
+ "set star shape: circle (default), square, diamond, triup, tridown, penta, star4, star5, star6, cross, dcross, flower5, flower4, star4arc, maltese"
+ self.a('s', s, el)
+ def starD(self, d, el=None):
+ "set star size factor"
+ self.a('d', str(d), el)
+ def addSymbol(self, x, y, d, s=None):
+ "add symbol"
+ self.last = self.addEl('symbol')
+ self.a('x', str(x))
+ self.a('y', str(y))
+ self.a('d', str(d))
+ if s!=None:
+ self.a('s', s)
+ return self.last
+ def symbShape(self, s, el=None):
+ "set symbol shape: process, decision, input-output, preparation, punch-card, manual-op, keyboard, punch-tape, document, documents, display, terminal, keying, alt-process, online-storage, magnetic-drum, magnetic-tape, hoarrow1, hoarrow1v, hoarrow2, hoarrow3, hoarrow4, star5, diamond8, baloon1, baloon2, cloud1, splash1, snowflake1"
+ self.a('s', s, el)
+ def SaveToFile(self, FileName):
+ f = file(FileName, 'w')
+ f.write(self.as_text())
+ f.close()
+
+def HTML_color(r,g,b):
+ "Make HTML color from RGB levels"
+ r=round(r);g=round(g);b=round(b)
+ if r<0:r=0
+ if r>255:r=255
+ if g<0:g=0
+ if g>255:g=255
+ if b<0:b=0
+ if b>255:b=255
+ return '#%02X%02X%02X'%(r,g,b)
+