diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/fancyhdrBoxed/Header.py |
Initial commit
Diffstat (limited to 'support/fancyhdrBoxed/Header.py')
-rw-r--r-- | support/fancyhdrBoxed/Header.py | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/support/fancyhdrBoxed/Header.py b/support/fancyhdrBoxed/Header.py new file mode 100644 index 0000000000..6b252392dd --- /dev/null +++ b/support/fancyhdrBoxed/Header.py @@ -0,0 +1,114 @@ +""" +/* + * Header.py 1.0 + * Implementa un mini lenguaje de bloques para crear + * cabeceras con fancyhdr + * + * Copyright (C) Manuel Gutierrez Algaba, 2000 + * + * This program is free software; you can redistribute it and/or modif +y + * it under the terms of the GNU General Public License as published b +y + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * +*/ +""" + +class Bloque: + def __init__(self, y, x, inicio_y = 0, inicio_x = 0): + """ + y : altura + x : anchura + """ + self.y = y + self.x = x + self.inicio_y = inicio_y + self.inicio_x = inicio_x + self.lista_bloques=[] + self.caracteres_anyadidos = [] + + def genera_bloque(self): + print "\\psline{-}" + self.escribe_coordenadas( + (self.inicio_x, self.inicio_y), + (self.inicio_x, self.inicio_y + self.y), + (self.inicio_x+self.x, self.inicio_y+ self.y), + (self.inicio_x+self.x, self.inicio_y), + (self.inicio_x, self.inicio_y) ) + self.genera_escritura() + for i in self.lista_bloques: + i.genera_bloque() + + def escribe_coordenadas(self, *args): + dev = "" + for i in args: + dev = dev + str(i) + " " + return dev + + def anyade(self, un_bloque): + self.lista_bloques.append(un_bloque) + return un_bloque + + def tamanyo_x(self, factor): + return Bloque(self.y, factor * self.x, self.inicio_y, self.inicio_x) + + def tamanyo_y(self, factor): + return Bloque(self.y * factor, self.x, self.inicio_y, self.inicio_x) + + def lado(self, alt, long): + if alt != "inf" and alt!= "sup" and alt!="cent": + raise "Mala 'altitud'" + if long != "izq" and long!= "der" and long!="cent": + raise "Mala 'longitud'" + t = Bloque(self.y, self.x, self.inicio_y, self.inicio_x) + if alt == "sup": + t.inicio_y = self.y + if alt == "cent": + t.inicio_y = self.y / 2 + if long == "der": + t.inicio_x = self.x + if long == "cent": + t.inicio_x = self.x / 2 + return t + + def traslada_x(self, x ): + self.inicio_x = self.inicio_x + x + for i in self.lista_bloques: + i.traslada_x(x) + + def traslada_y(self, y): + self.inicio_y = self.inicio_y + y + for i in self.lista_bloques: + i.traslada_y(y) + + def escribe_hacia(self, pos_x, pos_y, escribir): + """ + pos = numero fraccionario + """ + if pos_x >= 1.0 or pos_x < 0: + raise "Pos_x debe ser fraccionario y positivo" + + if pos_y >= 1.0 or pos_y < 0: + raise "Pos_y debe ser fraccionario y positivo" + + self.caracteres_anyadidos.append((pos_x, pos_y, escribir)) + + def genera_escritura(self): + for i in self.caracteres_anyadidos: + print "\\rput"+ self.escribe_coordenadas(( i[0] *( self.x - self.inicio_x) + self.inicio_x, self.inicio_y + i[1]* (self.y - self.inicio_y))) + "{" + i[2] + "}" + + +if __name__=='__main__': + b = Bloque(3,4) + c= b.anyade(b.lado("inf","der").tamanyo_y(0.5).tamanyo_x(3)) + b.escribe_hacia(0.12, 0.1, "Alphaville") + d = b.anyade(c.lado("sup", "izq")) + b.traslada_x(-3) + b.genera_bloque() + |