summaryrefslogtreecommitdiff
path: root/support/fancyhdrBoxed/Header.py
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/fancyhdrBoxed/Header.py
Initial commit
Diffstat (limited to 'support/fancyhdrBoxed/Header.py')
-rw-r--r--support/fancyhdrBoxed/Header.py114
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()
+