Definicin del formato de grfico de Aerotri. 15 de octubre de 2009, versin 03.
Esta versin es provisional. Vase abajo "Extensiones futuras"

    La unidad bsica es el 4-byte, o sea, 4 bytes. Dentro de este, b0, b1, b2, b3 indican los bytes
que lo componen, comenzando en el ms bajo, y b01 y b23 los 2-bytes bajo y alto. Dentro
de un fichero deben aparecer siempre en el orden b0,b1,b2,b3, e.d., Little-Endian.

	4-byte 0:
		b0: xxx000yy
			yy: Tipo de coordenadas
					0 Aproximadas
					1 Ajuste parcial
					2 Ajuste completo
			xxx: Nmero de decimales con que se deben dar las coordenadas, en la unidad de la coordenada Z
					(X,Y pueden tener un factor de escala que modifique este valor). 111 (7) indica 7 o mayor.
		b1: Libre
		b2: 02  03		Versin
		b3: BA	(Si no es as se supone que no es un fichero de grfico de Aerotri)
	4-bytes 1-12: Xmin Xmax Ymin Ymax Zmin Zmax

	    Si un visor de grfico encuentra un fichero con un nmero de versin mayor que el ltimo
	que conoce, el fichero se cerrar sin llegarse a leer. Por ello, aunque un fichero incorpore carac-
	tersticas de versiones posteriores, debe almacenar la versin ms baja que pueda leer el fichero
	sin omisiones graves.
	    Las versiones 00 y 01 no se deben leer ni generar (las generaban versiones de Aerotri antiguas).
	La versin 02 tuvo carcter provisional y no se debe generar ni leer directamente, sino que se ha
	de transformar el fichero a la versin 03.

	4-bytes 13- : Elementos


ELEMENTOS:

    Los primeros bytes son comunes a todos los elementos:

	4-byte 0:
		b0: Tipo
		b1: Subtipo
		b23: 4-byte que siguen, a partir del 4-byte 1
	4-byte 1:
		b01: 4-byte que siguen hasta la informacin adicional.
		b23: Flags (la mayora todava sin definir, reservados para futuras versiones)

    Los elementos CCL: tipos 251-254, solo pueden aparecer tras la cabecera o al final
del fichero. Cuando aparezca el primer elemento con un tipo distinto de estos se entiende
que ya no queda ninguno hasta los del final del fichero. 
El tipo 255 indica el final del fichero.

    La informacin adicional puede no existir, en cuyo caso el contenido de los bytes 4-5 ser
el mismo que el de los bytes 2-3.
    Los campos numricos que ocupan 8 bytes son double y los que ocupan 4 float.


--- Representacin de los textos

    Los textos, ya sean nombres de elementos, parte de un bloque de informacin adicional o el
texto de un elemento texto, comienzan en el bit ms bajo de un 4-byte y ocupan un nmero
exacto de 4-byte, para lo que se rellenar con bytes 0 si es necesario. Adems, los 2 bytes ms
altos del ltimo 4-byte deben ser 0, de manera que el final de una cadena de texto se pueda
encontrar fcilmente con independencia de la codificacin, para lo cual se aadir un 4-byte
entero a 0 si fuese necesario. A continuacin se muestran varios ejemplos de la longitudes de
cadenas de texto, sin incluir ningn byte 0 de terminacin, y el nmero de bytes que ocupa
en el fichero, indicando entre parntesis el nmero de 4-bytes:

	5 --> 8 (2)
	6 --> 8 (2)
	7 --> 12 (3)
	8 --> 12 (3)


--- Elementos 254, 253, 252 y 251:

//254 Sistema de coordenadas

//253 y 252. Las combinaciones de tipo y subtipo para estos elementos que no se describan a continuacin
	estn reservadas para futuras versiones y no debern aparecer nunca en un fichero.
//253
	Subtipo 0: Se definir para la versin 04
	Subtipo 1: Fichero de configuracin insertado
	Subtipo 2: Pares de clave/valor. Cada clave y cada valor ocupan un 4-byte.
	Subtipo 5: Orden de los elementos

//251. Elemento CCL de la aplicacin. Este elemento nunca ser asignado y ser ignorado siempre por el visor
	de Aerotri, pero est sujeto a las mismas restricciones que los otros elementos CCL; es decir, solamente
	puede aparecer al principio o al final del fichero.

    El sistema de coordenadas no afecta a las elipses y segmentos de precisin, residuos, y en general
a todos los valores que se almacenan en simple precisin, que se muestran en la unidad de la coordenada Z.

-- Codificaciones de las informaciones textuales:
	-Nombres de elemento
	-Descripciones u otras informaciones textuales que pudiera haber en los bloques de informacin adicional
	-Elementos texto

    Un cdigo de codificacin ocupa 1 byte, que ser el b3 del 4-byte que antecede al texto.
    Los elementos texto son elementos grficos en los cuales lo que hay almacenado son nmeros
de caracteres para tomar de una fuente, sin importar cul sea el significado de los mismos. Por ello,
para los elementos texto la codificacin nada ms que indica cmo transformar la secuencia de bytes
de entrada en nmeros. Por ejemplo, una codificacin UTF-8 significa que la secuencia de bytes
E2 87 B3 representa el nmero 28F3. Las codificaciones permitidas para elementos texto son
 
	FF: 1 byte (e.d., 8 bits), sin transformacin
	FE: 2 bytes, sin transformacin. 
	FD: UTF-16
	FC: UTF-8

    Todos los caracteres de la fuente tienen que poder ser accesibles, lo que choca con el uso de
algunos nmeros como cdigos de control. Por ejemplo, el 0 para indicar el final de cadena.
Por ello se emplean los nmeros 0 y 1 como cdigos de control. Ambos nmeros se representan
por s mismos en todas las codificaciones anteriores. El uso del 0 para indicar el final de la cadena
ya se explic. Por lo que respecta al numero 1, ese nmero y el que le siga representan una
nica cosa; un 1 nunca podr ir seguido de 0 o de otro 1. Ntese que se habla de nmeros
y no de bytes; segn la codificacin empleada tanto el nmero 1 como el que le siga, como
cualquier otro nmero, estarn representados por uno o ms bytes. Se muestran los comandos
reconocidos en la descripcin del elemento "texto plano".

    Los nombres y descripciones, por el contrario, tienen un significado, y bien no se representan,
como es el caso de las descripciones, o bien, para los nombres de elementos, se representan
pero en el espacio pxel y sin permitir opciones complicadas como en el caso de los elementos
texto, y su significado es ms importante que su representacin. La codificacin en estos casos
tiene que dar cuenta, adems de la transformacin de los bytes de entrada a nmeros, qu
significa cada nmero. Se permiten los siguientes valores
 
	FF: Codificacin de 8-bits por defecto de la mquina, sin transformacin. Para trabajar dentro
		de un entorno en el que se emplea siempre la codificacin por defecto del sistema operativo,
		despreocupndose de asuntos de codificacin. Cuando el fichero se lleve a otra mquina la
		interpretacin 	de los textos puede no ser correcta.
	FE: Unicode, 2 bytes, sin transformacin
	FD: Unicode, UTF-16
	FC: Unicode, UTF-8
	01: Windows occidental (cp 1252)
	02: Windows, Europa central (cp 1250)
	03: Macintosh estndar
	04: Macintosh, Europa central
	
		Las posiciones siguientes estn an sin definir pero los candidatos son Windows cirlico, turco
	y bltico e ISO latin1, latin 2, latin 5 y latin 9. Las serie de codificaciones que comienza en 01 son
	valores informativos. Un visor/editor puede no implementarlas y tratarlas como la codificacin FF.

    En nombres y descripciones el 1 no acta como cdigo de control.

//253, sub. 1
	4-byte 2:	b0: 4-bytes que ocupa el nombre, incluyendo todos los bytes 0 del final (v. arriba "Representacin de textos")
			b1: libre
			b2: libre
			b3: Codificacin _del resto del elemento, no del nombre_. Se permiten los mismos valores
					que para nombres y descripciones.
	4-byte 3-... : El nombre. Los b23 del ltimo 4-byte han de ser obligatoriamente 0
	4-byte x-...: El elemento. Los b23 del ltimo 4-byte han de ser obligatoriamente 0

	Este elemento es un fichero de configuracin, que es un fichero de texto, insertado en un elemento 253-1. La
	codificacin es la indicada en el 4-byte 2, b3. En cuanto al nombre, es una cadena que identifica el fichero
	de configuracin de que se trata, de manera que pueden aparecer varios elementos 253-1. Los que tengan nombres
	iguales acumulan su contenido como si se tratase de un nico fichero. El nombre no necesita ser un nombre de
	fichero vlido, y cada visor lo interpretar segn la codificacin que prefiera, si es que lo llega a interpretar.

//253, sub. 2
	4-byte 1, b01= 2n+1
	4-bytes 2, 3: Clave, valor.
	4-bytes 4, 5: Clave, valor.
	...
	4-bytes 2n, 2n+1: 0, 0.

	Estn definidas las siguientes claves:
	0: Fin de las claves. Como el nmero de claves se deduce del 4-byte 1, b01 la aparicin de esta clave es redundante,
	    pero tiene que estar.
	FFFFFFFF: Clave sin usar (por si se quiere borrar un par sin tener que cambiar nada ms en el elemento).

//253, sub. 5
	4-byte 1, b01= 2n+1
	4-bytes 2, 3: Posicin, resumen.
	4-bytes 4, 5: Posicin, resumen.
	...
	4-bytes 2n, 2n+1: 0, 0.

	Este elemento indica el orden en que se han de dibujar los elementos del fichero, de manera que los ltimos
	se dibujan por encima de los primeros. Si este elemento no aparece en el fichero los elementos se dibujarn
	en el orden en que estn almacenados en el fichero.
	La posicin de cada elemento se indica en 4-bytes, a contar desde el comienzo del fichero. El 4-byte resumen
	se estructura as:
	resumen, 01: b01 del propio elemento, es decir, tipo y subtipo.
	resumen, 23: b23 del 4-byte 1 del elemento. Se describe ms abajo. En particular, si el bit ms alto esto est
	    a 1 el elemento se ignora, y los 4 bits ms bajos indican la clase geomtrica del elemento.

	No existe en este elemento la posicin FFFFFFFF, como en elemento anterior. Si se quiere ignorar un elemento
	se pondr el bit ms alto del resumen a 1.

//254
	byte 1: Subtipo
		0: Rectangular
		1: Otro Conforme
		2: Lambert (y Mercator)
		3: UTM
		4: Estereogrfica
		5-9: Reservado para otras proyecciones conformes
		10: Geogrificas
		11: Otro Ortogonal (meridianos y paralelos son ortogonales en la proyeccin, pero la proyeccin no es conforme)
		12-19: Reservado para proyecciones ortogonales

	0 Rectangular:
		Nada ms (el ltimo 4-byte, si no hay informacin adicional, es el 1, y por tanto los bytes 2-3 y 4-5 estarn a 1)

	1 Otro Conforme:
		4-byte 1, b01= 22 si hay dos coef. de k.
		2-3: X0
		4-5: Y0
		6-7: Ondulacin del geoide: Altura de los puntos con Z=0 en relacin a la superficie de referencia para las coordenadas planimtricas
		8-9: Radio de curvatura mayor N
		10-11: Radio de curvatura menor rho
		12-13: cos(conv0) conv0="Convergencia de meridianos", ngulo que forma el eje Y del sistema en el punto (X0,Y0) con
		14-15: sin(conv0)					el Norte geogrfico. Positivo si el eje est hacia el Este. En radianes
							La comprobacin para ver si conv!=0 tiene que ser sin(conv0)!=0; no debe ser cos(conv0)!=1.
		16-17: k0. Factor de escala por el que estn afectadas las coordeandas planimtricas en relacin a las altimtricas, en el punto (X0,Y0)
		18:	b01: Nmero de coeficientes que siguen en el desarrollo de k. (No tiene sentido ms de 5, pues no se da el desarrollo en serie de la superficie ms all de la curvatura)
				b23: Libres
		19 - 19+2n-1: Coeficientes de k: k=k0+a1(X-X0)+a2(Y-Y0)+a3(X-X0)^2+a4(X-X0)(Y-Y0)+a5(Y-Y0)^2+...

	2 Lambert:		La proyeccin Mercator es una Lambert con phi0=0
		 4-byte 1, b01= 15  16
		2-3: a (radio equatorial)
		4-5: e^2 (1 excent. al cuadrado)
		6-7: Ondulacin
		8-9: Latitud central (latitud de escala mnima). En grados sexagesimales
		10-11: k0. Factor de escala en el paralelo central
		12-13: Desplazamiento X
		14-15: Desplazamiento Y
		(16): Meridiano central, en grados sexagesimales. Este campo es opcional

	3 UTM:
		4-byte 1, b01= 13  14
		2-3: a
		4-5: e^2
		6-7: Ondulacin
		8-9: k0. Factor de escala en el meridiano central
		10-11: Desplazamiento X
		12-13: Desplazamiento Y
		(14): Meridiano central, en grados sexagesimales. Este campo es opcional

	4 Estereogrfica:
		4-byte 1, b01= 13  14
		2-3: Radio polar (=a^2/b)
		4-5: e^2
		6-7: Ondulacin
		8-9: k0. Factor de escala en el polo de la proyeccin
		10-11: Desplazamiento X
		12-13: Desplazamiento Y
		(14): Meridiano seguido por el sentido positivo del eje Y, en grados sexagesimales.
					Este campo es opcional. Debe ser negativo si estamos en el Polo Norte (-0 - -360) y positivo en el Sur (0-360)

	10: Geogrficas: Las coordenadas han de ser grados sexagesimales
		4-byte 1, b01= 7
				b23. Si el bit ms bajo est a 1 las coordenadas X son latitud y las Y longitud. Si est a 0, al revs.
		2-3: a
		4-5: e^2
		6-7: Ondulacin

	11: Otro ortogonal
		4-byte 1, b01= 26 si hay dos coef. de k.
		2-3: X0
		4-5: Y0
		6-7: Ondulacin
		8-9: phi0
		10-11: Radio N
		12-13: Radio rho
		14-15: cos(conv0)
		16-17: sin(conv0)
		18-19: kx0. Factor de escala de las coordenadas X en el punto (X0,Y0), en relacin a la Z
		20-21: ky0. Idem de las Y.
		22:	b01: Nmero de coeficientes que siguen en el desarrollo de k
				b23: Libres
		23 - 23+2n-1: Coeficientes de k: kx=kx0+a1(Y-Y0)+a3(Y-Y0)^2+...  ky=ky0+a2(Y-Y0)+a4(Y-Y0)^2+...


--- Estructura de elementos normales (tipo<250):

//Tipo=250.
	Elemento grfico de la aplicacin. Se trata de un elemento grfico cuyo significado nunca ser definido
	por Aerotri. Su formato debe coincidir con el de los elementos normales en el 4-byte 0, los bytes 01
	as como el bit ms alto del 4-byte 1, los 4-bytes 2-14 y el nombre. Ntese no obstante que el nombre,
	como en cualquier otro elemento, puede ser una cadena vaca.

//Tipos <=249

	0:	b0: Tipo, b1: Subtipo
		b23: 4-byte que siguen, a partir del 4-byte 1
	1:	b01: 4-byte que siguen hasta la informacin adicional.
		b23: Un bit 1 en la posicin ms alta significa que el elemento se ignora. El siguiente
		bit indica si ciertos campos estn almacenados con simple o doble precisin,
		y adems si se representan segn la proyeccin o en la unidad de la coordenada Z:
			0: simple precisin, unidad de Z
			1: doble precisin, proyeccin
		Los 4 bits ms bajos indican el tipo de informacin geomtrica almacenada, a lo que
		se llamar clase de elemento, y se dir indistintamente "clase polgono" o "clase 2",
		por ejemplo. Para todos los elementos de un mismo tipo debe tener el mismo valor:
			0: punto
			1: lnea poligonal
			2: polgono
			3: segmento escalable (origen y vector)
			4: lnea poligonal escalable (sucesin de pares origen-vector)
			5: elipse en uno de los planos coordenados
			6: elipse siguiendo otra orientacin
			7: giro
			8: elipsoide
			9: spline plana
			10: spline tridimensional
			11: texto plano
			12: texto tridimensional
			Para las clases de la 3 a la 8 el bit de simple/doble precisin arriba mencionado se refiere
			a los desplazamientos, sx, giros, etc. (todo menos las coordenadas del origen).
		El resto, reservado para futuras versiones

	2-13: Xmin Xmax Ymin Ymax Zmin Zmax
	14:	b0: 4-bytes que ocupa el nombre, incluyendo todos los bytes 0 del final (v. arriba "Representacin de textos")
				Como excepcin, un 0 indica una cadena vaca, cuya representacin consiste en un 4-byte a cero.
			b1: libre
			b2: libre
			b3 : Codificacin.
	15-... : El nombre. Los b23 del ltimo 4-byte han de ser obligatoriamente 0

	Resto del elemento.

	Tras los elementos normales pueden volver a aparecer elementos CCL. En particular, es comn situar
	el elemento 253, 5 al final del fichero, tras los elementos normales.
	Al final del fichero se pone FFFF FFFF (por lo tanto el primer FF est en la posicin del tipo de elemento)

    Ntese que un elemento de clase 11 o 12 tambin tiene un nombre.
    El signficado de los tipos y subtipos estar descrito en el fichero .cfg a asociado a cada grfico.
    La estructura de cada elemento tras el nombre segn su clase es la siguiente:

//0: punto. No hay nada tras el nombre (los propios valores mximo y mnimo hacen de coordenadas).
	0-: Info. adic.

//1: lnea poligonal
	0: b01: Nmero de vrtices
		b23: libres
	1-6: primer punto
	...
	6(n-1)+1 a 6n: ltimo punto
	6n+1 - : Info. adic.

//2: polgono
	0-5: X,Y,Z del centro
	6:	b01: Nmero de vrtices
		b23: libres
	7-12: primer punto
	...
	6(n-1)+7 a 6n+6: ltimo punto
	6n+7 - : Info. adic.

	    El ltimo punto podr o no ser igual que el primero; es decir, el primer punto podr
	    o no estar repetido al final. Ntese que el centro puede ser cualquier punto, por lo
	    que se puede emplear este elemento para representar pirmides o, como en el caso
	    de los fotogramas, un haz de rayos proyectivos.

//3: segmento escalable
	0-5: X,Y,Z del origen
	6-8: dx,dy,dz
	9-: Info. adic.

//3a (con bit de doble prec. a 1): Igual que 3, pero los valores dx,dy,dz son double:
	0-5: X,Y,Z del origen
	6-11: dx,dy,dz
	12-: Info. adic.

//4: lnea poligonal escalable
	0:	b01: Nmero de vrtices
		b23: libres
	1-6: X,Y,Z primer punto origen
	7-9: dx,dy,dz del primer punto
	...
	9(n-1)+1 a 9n: X,Y,Z, dx,dy,dz del ltimo punto
	9n+1 - : Info. adic.

	    Se puede emplear este elemento para crear un polgono escalable cuya representacin
	sea indipendiente de la proyeccin, sin ms que indicar como puntos origen siempre
	el mismo punto.

//4a (con bit de doble prec. a 1): Igual que 4, pero los valores dx,dy,dz son double:
	1-6: X,Y,Z primer punto origen
	7-12: dx,dy,dz del primer punto
	...
	12(n-1)+1 a 12n: X,Y,Z, dx,dy,dz del ltimo punto
	12n+1 - : Info. adic.

//5: elipse contenida en algn plano coordenado
	0-5: Coordenadas del centro
	6:	b0: Orientacin:	0, x,y;	1, y,z;	2, z,x.
		b1, b23: libres
	7: s^2x	( y,  z)
	8: sxy
	9: s^2y	( z,  x)
	10-: Info. adic.

//5a (con bit de doble prec. a 1): Igual que 5, pero a partir del 4-byte 7 los datos son double:
	7-8: s^2x	( y,  z)
	9-10: sxy
	11-12: s^2y	( z,  x)
	13-: Info. adic.

//6: elipse contenida en otro plano
	0-5: Coordenadas del centro
	6-8: Coordenadas de un extremo del eje mayor respecto al centro
	9-1: Coordenadas de un extremo del eje menor respecto al centro
	12-: Info. adic.

//6a (con bit de doble prec. a 1): Igual que 6, pero a partir del 4-byte 6 los datos son double:
	0-5: Coordenadas del centro
	6-11: Coordenadas de un extremo del eje mayor respecto al centro
	12-17: Coordenadas de un extremo del eje menor respecto al centro
	18-: Info. adic.

//7: giro
	0-5: Coordenadas del punto
	6:	b0: Parametrizacin. Vase el fichero rotacionDocum.pdf
		b1, b23: libres
	7-9: Los tres parmetros
	10-: Info. adic.

//7a (con bit de doble prec. a 1): Igual que 7, pero a partir del 4-byte 7 los datos son double:
	7-12: Los tres parmetros
	13-: Info. adic.

//8: Elipsoide
	0-5: Coordenadas del centro
	Media-Matriz
	6:sxx
	7:sxy	8:syy
	9:sxz	10:syz		11:szz
	12-: Info. adic.

//8a (con bit de doble prec. a 1): Igual que 8, pero a partir del 4-byte 6 los datos son double
	0-5: Coordenadas del centro
	Media-Matriz
	6-7:sxx
	8-9:sxy		10-11:syy
	12-13:sxz	14-15:syz		16-17:szz
	18-: Info. adic.

    Para las clases 9 y 11 es necesaria la definicin de un plano, que se lleva a cabo mediante tres puntos.
Hay dos maneras de tratar la  proyeccin. En la primera se transforman las coordenadas del espacio
a coordenadas del plano y viceversa como si nada pasase; es decir, se trabaja _en_ la proyeccin.
En la segunda se opera en principio igual que en la enterior pero los ejes X e Y del plano se reescalan
de manera que sus unidades midan lo mismo que la del eje Z. Se aplican los factores de escala en el
punto de referencia (el primer punto indicado para definir el plano). Por lo tanto tambin en este
caso se trata de un plano en la proyeccin pero corregido de los factores de escala escala locales. Se
explica con ms detalle al describir el elemento 9a. En el primer caso el bit de doble precisin estar
a 1 y en segundo a 0.

//9a: Spline plana con bit de doble prec. a 1.
	0-5: X,Y,Z del primer punto del plano, p1, que se toma como punto de referencia, PR.
	6-11: dX,dY,dZ de otro punto del plano, p2, respecto al anterior. Un vector unitario (sin aplicar
		ningn tipo de correccin a las coordenadas) en la direccin y sentido de (dX,dY,dZ) define
		el eje X del plano.
	12-17: dX,dY,dZ de otro punto del plano, p3, tambin respecto a p1. El eje Y del plano
		es perpendicular al eje X y se dirige hacia la parte del plano en la que queda p3.
	El resto, por definir

//9: Spline plana con bit de doble prec. a 0.
	0-5: X,Y,Z de p1 o sea PR.
	6-8: dX,dY,dZ de p2; los tres valores en las unidades del eje Z, de manera que las coordenadas
		de p2 en la proyeccin son PR + (kx*dX, ky*dY, dZ), en donde kx y ky son los factores de escala
		de la proyeccin en el punto PR segn la direccin de los ejex X e Y respectivamente.
	9-11: dX,dY,dZ de p3; los tres valores en las unidades del eje Z, igual que para p2.

	Si el mdulo del vector (dX,dY,dZ) de los valores indicados para p2 es 'a', las coordenadas de
	p2 en el plano son (a,0), y sea (x2,y2,z2)=(dX,dY,dZ)/a. Sea (x3,y3,z3) el vector (dX,dY,dZ)
	de los valores indicados para p3 y 'b' su mdulo. Las coordenadas en el plano de p3 son (c,d)
	con c=x3*x2+y3*y2+z3*z2  y  c*c+d*d=b*b. Esto define la transformacin de coordenadas
	del plano a la proyeccin y viceversa. En concreto, si llamamos (x4,y4,z4) al vector
	(x3,y3,z3)-c*(x2,y2,z2) dividido por su mdulo, las coordenadas en la proyeccin de un punto
	(x,y) del plano son PR + (X,Y,Z), con
		X=kx*(x*x2+y*x4),  Y=ky*(x*y2+y*y4),  Z=x*z2+y*z4.

	El resto, por definir
	
	Las frmulas para un plano con valores (dX,dY,dZ) en doble precisin son iguales que estas pero
	tomando kx=ky=1.

//10: Spline tridimensional
	Por definir

//11: Texto plano. El bit de doble precisin est obligatoriamente a 1.
	0-5: X,Y,Z del primer punto del plano, p1, que se toma como punto de referencia, PR.
	6-11: dX,dY,dZ de p2, igual que para el elemento 9a.
	12-17: dX,dY,dZ de p3, igual que para el elemento 9a.
	18: b0: Modo de posicin:
			0- Punto, incremento y justificacin
			1- Lnea poligonal y distancia
			2- Punto, radio y ngulos inicial y final
		   b1: Flags que indican el modo de situar los caracteres:
			bit 0: Un 0 indica que se sita el texto segn el rectngulo contenedor y un 1 segn el
				rectngulo de alineacin. Ambos conceptos se explican ms abajo.
			bit 1: Se aplica al modo "Lnea poligonal y distancia". Un 0 signfica que primero se sitan
				los caracteres sobre la lnea y luego se desplazan la distancia indicada; un 1 significa que
				primero se calcula la lnea desplazada y a continuacin se sitan los caracteres sobre ella.
	19: b01: libres
		   b2: Longitud en 4-bytes del texto, igual que en los textos del elemento 253-4.
		   b3: Codificacin
	20-?: El texto. Todos los caracteres se representan a s mismos e indican una posicin en la fuente,
			excepto los siguientes:
			
			0: Un 0 indica el final de cadena. Vase al respecto "Representacin de los textos" ms arriba.
			1: Carcter de control. Forma una pareja con el nmero siguiente, que nunca ser 0 o 1,
				ni siquiera en futuras versiones del formato de grfico. Las siguientes parejas son vlidas
				en la versin actual:
			1, 2: Carcter 0 de la fuente
			1, 3: Carcter 1
			1, 4: El espacio normal entre palabras. Existe este comando porque algunas fuentes no
				incluyen el espacio entre sus caractres, pues al fin y al cabo no lo es, pero definen
				la longitud del mismo. En las que s lo incluyan, este comando es lo mismo que haber
				escrito el nmero del carcter espacio.
			1, '66 hasta 1, '77 (octal): Comandos de direccin. Se explican un poco ms abajo.

	    El significado de los bytes que restan depende de lo indicado en el byte 18-b0. La razn de incluir
	esta informacin tras el texto y no antes es que su longitud depende del valor del byte 18-b0, lo que,
	si se aaden nuevos modos de posicin en el futuro, hara el texto inalcanzable para visores anteriores.
	    Antes de describir los 4-bytes que restan para cada modo de posicin conviene definir algunos
	trminos. Este es el objeto de la siguiente seccin. La descripcin de este tipo de elemento se comple-
	tar una seccin ms adelante:


--- Presentacin grfica de los textos

    Bajo el nombre textos se agrupan los elementos texto, o sea clases 11 y 12, los nombres de
elemento y las descripciones en la informacin adicional. Esta seccin se ocupar de los dos primeros
ya que las descripciones no se representan en el grfico.

Tipos de letra:

	    El fichero de configuracin puede definir fuentes virtuales basadas en fuentes reales, llevando
	a cabo ciertas modificadiones. Desde el momento en que est definida se trata de una fuente
	distinta ms, que de cara al dibujo de un texto no se distingue en nada de una fuente original.

Definiciones:

	    Cada carcter de una fuente tiene asociada una "caja" que lo contiene. Los bordes de las cajas
	son siempre horizontales y verticales, aunque los caracteres no sigan esa direccin (p.e., un tipo de
	letra cursiva o inclinada). La forma real de un carcter puede salirse fuera de la caja, pero esto es
	irrelevante para lo que sigue. De hecho, la forma real del carcter no se emplea hasta la hora de
	imprimirlo (mostrarlo), en ningn momento se emplea en el clculo de su posicin.
	    Los caracteres se situan uno a continuacin de otro sin ms que situar adyacentes sus cajas corres-
	pondientes. Esta separacin entre cajas podr estar modificada por informacin de la fuente, el llamado
	"kerning". El fichero de grfico no es un "cdigo fuente" ni las aplicaciones que lo leen son procesadores
	de texto, de manera que no se lleva a cabo ninguna lgica de reemplazo de unos caracteres por otros.
	Si se quieren emplear ligaduras o las varias formas de una letra han de aparecer explcitamente en la
	cadena de texto.
	    La caja tiene definido un sistema de coordenadas con el eje X horizontal y hacia la derecha y el eje Y
	vertical y hacia arriba. Si la fuente no indica nada al respecto el origen de este sistema de coordenadas
	ha de tomarse en la esquina inferior izquierda de la caja. En una fuente que incluya letras latinas
	minsculas, por ejemplo, el origen que la fuente indique para la letra q estar en el borde izquierdo
	de la caja pero no en la parte inferior, sino a la altura de la parte inferior del "ojo", de manea que los
	puntos de palo que sobresale hacia abajo tienen coordenadas Y negativas. Aems del origen habr otro
	punto de referencia opuesto, que si la fuente no indica nada se tomar en el extremo superior derecho
	de la caja. Las lneas paralelas a los ejes que pasan por ese punto junto con los propios ejes constituyen
	las alineaciones de la caja: dos alineaciones horizontales, una superior y una inferior, y dos alineaciones
	verticales, una izquierda y una derecha. Las cuatro intersecciones de estas lneas son los cuatro puntos
	de alineacin: inferior izquierda, ii, es el origen de coordenadas; inferior derecha, id, el otro punto sobre
	el eje X; superior izquierda, si, el otro punto sobre el eje Y, y superior derecha, sd, el punto de alineacin
	opuesto al origen. Ntese que no se obliga a que la caja del carcter contenga el origen de coordenadas
	ni el punto sd, ni a que las coordenadas del punto sd sean positivas, no obstante lo cual se emplear siempre
	la terminologa derecha, izquierda, arriba, abajo como se ha hecho en este prrafo.
	    Hay un total de ocho posibilidades para la direccin de escritura y alineacin de caracteres. En primer
	lugar hay cuatro direcciones posibles de escritura, segn la caja de cada carcter se site a la izquierda,
	a la derecha debajo o encima de la anterior. Las dos primeras son escrituras "horizontales" y las dos
	segundas "verticales". En segundo lugar hay dos posibilidades para la alineacin de las cajas: para las
	escrituras horizontales pueden situarse las cajas de manera que queden alineadas segn la alineacin
	inferior (el eje X) o bien segn la superior, mientras que para las verticales pueden situarse de manera
	que queden alineadas segn la alineacin izquierda o la derecha.
	    Ntese que en ningn momento se habla de girar o reflejar el carcter. Las cajas se situarn siempre
	con el eje Y apuntando hacia arriba y el eje X hacia la derecha, salvo por caracteres que necesiten
	ser reflejados, como un parntesis de apertura. Cmo situar estos caracteres se explicar ms abajo.

Direccin de escritura para un elemento texto:

	    Los comandos de direccin se dividen en cuatro comandos de alineacin, 1, '71 -- 1, '74, tres
	comandos de sentido, 1, '75 -- 1, '77, y tres comandos de reflejo, 1, '66 -- 1, '70. Los comandos
	de sentido se dividen a su vez en comandos de sentido fuerte, los 1, '75 y 1, '76, y un comando
	de sentido dbil: 1, '77. Un comando de alineacin solamente puede aparecer como primer nmero
	de la cadena (por tanto slo puede haber uno) y debe ir inmediatemante seguido por uno de los
	comandos 1, '75 o 1, '76, como se explica a continuacin. Los otros comandos pueden aparecer
	en cualquier parte de la cadena.
	    Un texto puede comenzar con comandos que indiquen explcitamente la direccin y alineacin
	de escritura. Para ello se emplean dos comandos. En primer lugar debe aparecer un comando
	de alineacin que indica segn cul de las cuatro alineaciones se alinean las cajas, y a continuacin
	uno de los dos comandos 1, '75 y 1,'76, que indica el sentido de escritura:

		1, '71: Alineacin inferior (eje X)
		1, '72: Alineacin superior
		1, '73: Alineacin izquierda (eje Y)
		1, '74: Alineacin derecha
	    Por tanto los dos primeros implican una escritura horizontal mientras que los dos siguientes suponen
	una escritura vertical.

		1, '75: Para escritura horizontal significa que a partir de este punto todos los caracteres se han de
			escribir de izquierda a derecha; para escritura vertical, de arriba a abajo.
		1, '76: Para escritura horizontal  significa que a partir de este punto todos los caracteres se han de
			escribir de derecha a izquierda; para escritura vertical, de abajo a arriba.

	    Los comandos 1, '77, 1, '66 -- 1, '70 se explican ms abajo.

	    La direccin y alineacin en la que ha de comenzar a escribirse un texto se determina por los
	siguientes puntos, de mayor a menor prioridad:
		1. Si el texto empieza con un cdigo de alineacin, la direccin ser la definida por ese comando
		y el siguiente.
		2. La direccin indicada para este elemento en el fichero de configuracin, de acuerdo a su tipo,
		subtipo y otros parmetros, como se explicar al describir ese fichero.
		3. La direccin indicada para esa fuente en el fichero de configuracin.
		4. Si la fuente indica una direccin para cada carcter, o bien si no lo hace pero se conoce la codifi-
		cacin de la fuente, ser la direccin inherente al carcter. Por ejemplo, una letra griega impilca
		una direccin de izquireda a derecha y alineacin inferior. El primer carcter anterior a un comando
		de sentido fuerte que implique (el carcter) una direccin define la direccin del texto desde el
		principio. Este criterio no se puede aplicar por tanto si el texto consta nicamente de carateres
		neutros, por ejemplo asteriscos, o si tales caracteres son los nicos antes del primer comando de
		sentido fuerte.
		5. La direccin por defecto que emplee el sistema operativo, cuando este dato est disponible. As,
		en un sistema operativo en hebreo, se escribir de derecha a izquierda con alineacin inferior.
		6. Si todo lo anterior falla se comenzar a escribir de izquierda a derecha con alineacin inferior.

	    En caso de que uno de estos puntos permita decidir el sentido pero se desconozca la alineacin
	se emplear alineacin inferior para direcciones horizontales e izquierda para verticales.
	    Una vez definida la direccin y alineacin de comienzo para el texto, esta ltima permanece fija
	y solamente se permite cambiar la direccin. La direccin de comienzo se llamar la direccin
	"original" del texto.
	    Adems de la direccin de escritura hay en cada momento un "modo", que puede ser fuerte o dbil.
	En el modo fuerte el sentido de escritura solamente se puede cambiar mediante un comando. En el
	modo dbil el sentido de escritura de cada carcter es el que defina la fuente o en su defecto la codificacin
	de la fuente. Si ninguna de esta informacin est disponible no hay diferencia entre modo fuerte y dbil.
	En modo dbil, la aparicin de un carcter que deba escribirse en el sentido contrario al que se est siguiendo
	cambia el sentido de escritura para ese caracter y los que siguan hasta que otro caracter o un comando
	vuelva a cambiar el sentido (por lo tanto, caracteres verticales en una escritura horizontal o viceversa
	no cambian el sentido).
	    Si el criterio que permiti definir el sentido inicial fue alguno de los tres primeros se comienza en modo
	fuerte y nunca se abandonar este modo; si fue alguno de los siguientes se comienza en modo dbil.
	    Para cambiar la direccin se pueden emplear los comandos 1, '75, 1, '76, cuyo significado
	ya se explic, y a lo que slo cabe aadir que adems hacen que se entre en modo fuerte si es que no se
	estaba ya, o el comando 1, '77:
	
		1, '77: Si la direccin inicial se decidi por alguno de los tres primeros criterios este comando
			hace que se vuelva al sentido original y se contina en modo fuerte.
			    En caso contrario: a) En modo dbil es ignorado. b) En modo fuerte hace que se entre en modo
			dbil y se vuelva a la orientacin de la ltima vez que se estuvo en modo dbil.

	    Ntese que la presencia del comando 1, '77 exactamente al comienzo del texto est bien definida. Se
	comenzar el proceso de decisin de la direccin de escritura y el modo inicial tal como se defini.
	Cualquiera que sea el criterio que finalmente permita decidir la direccin y el modo, tras haber definido
	ambos se comenzar la lectura de los caracteres, y el comando 1, '77, que ser el primero en leerse,
	se interpretar normalmente y no producir ningn cambio. Por supuesto, se obtiene el mismo efecto
	si el comando es ignorado.

	    Los comandos de reflejo indican si los caracteres que, segn la fuente, deben mostrarse reflejados, se
	reflejan o no. En algn caso puede que haya que aplicar un giro en lugar de un reflejo. Por ejemplo,
	un parntesis de apertura en una escritura vertical. Salvo que se haya indicado lo contrario en el fichero
	de configuracin, en un principio los caracteres que deben reflejarse se reflejan. Si de un carcter la fuente
	indica que debe reflejarse, pero no dice nada de qu hacer cuando se escribe en una direccin perpedicular
	a su direccin propia, y si esto no supone una indicacin implcita de que no debe hacerse nada, en esos
	casos el caracter se girar 90 grados en el mismo sentido en que la direccin de escritura se encuentra girada
	respecto a la direccin propia del carcter. Ntese que es necesario saber la direccin para la que est
	diseado un carcter para poder reflejarlo o girarlo. As, si una fuente indica que un carcter debe ser
	reflejado pero no se sabe cul es la direccin de escritura en la que se escribe sin reflejar, ni se reflejar
	ni se girar.
	    Los comandos de reflejo fuerzan uno u otro comportamiento:

		1, '70: No reflejar ni girar ningn carcter
		1, '67: Reflejar o girar los caracteres convenientes
		1, '66: Reflejar todos los caracteres

	    El comando 1, '66 significa, obviamente, reflejar segn el sentido de escritura. Cuando se refleja o gira
	un carcter lo hace su caja y las lneas de alineacin. stas y los puntos de alineacin se renombran en la
	manera obvia. Por ejemplo, en caso de una reflexin sobre una lnea vertical la imagen del punto id pasa
	a ser el ii (el origen). El eje X siempre se dirigir hacia la derecha, el eje Y hacia arriba y si las coordenadas
	originales del punto sd son (x,y) las del nuevo sd sern (x,y) o (y,x).
	    Si la fuente no permite deducir la necesidad de reflejar o girar un carcter entonces no se reflejar
	ni girar ninguno, y no hay diferencia entre el comportamiento 1, '70 y el 1, '67.

	    Una vez que est decidida la orientacin de cada carcter del texto se calcula la posicin de cada
	caja. Todas las cajas comparten alineacin (inferior, superior, izquierda o derecha), por lo que lo nico
	que hay que decidir es la posicin de la caja en una dimensin. Para ello se tendr en cuenta las
	indicaciones de kerning especificadas por la fuente para cada pareja de caracteres, atendiendo a
	las reflexiones. Los nmeros que aparezcan en el texo que no se correspondan en la fuente con caracteres
	(comandos, saltos de lnea, tabulaciones ...) sern ignorados. Los distintos espacios se tratan como
	caracteres. Si la fuente no define para un espacio una caja sino solamente su longitud, se tomar para l
	una caja cuadrada de lado la medida del espacio. Esta operacin se lleva a cabo en la fuente real, no en la
	virtual, de manera que en la fuente virtual se tratar la caja as definida como si ya estuviese en la
	fuente real. El concepto de la caja cuadrada asegura que el espacio siempre acta igual (para una
	fuente real) se trate de modo vertical u horizontal, se gire o no se gire.
	    Los distintos tramos del texto en un sentido y en otro no estn encajados segn una lgica sino
	que se suceden unos a continuacin de otros. Cada tramo se imprime segn su direccin y unos
	tramos se colocan a continuacin de otros siguiendo el sentido original. Por ejemplo, en un texto
	que comienza escribindose de izquierda a derecha cada tramo aparecer a la derecha del anterior.
	    A la hora de aplicar el kerning hay que tener en cuenta los pares de caracteres adyacentes en
	la posicin final.

Ms definiciones:

	    Una vez situado cada carcter a lo largo de la alineacin como se explic en la seccin anterior
	se definen los rectngulos contenedor y de alineacin y algn otro concepto.
	    El rectngulo contenedor es el mnimo rectngulo de lados horizontales y verticales que contiene
	a todas las cajas, salvo que haya cajas de dimensiones negativas, en cuyo caso puede no coincidir.
	La definicin rigurosa se muestra ms abajo para que los casos extremos no compliquen la explicacin
	de los casos normales.
	    El rectngulo de alineacin se obtiene desplazando en paralelo dos lados adyacentes del rectngulo
	 contenedor de manera que pasen a coincidir con sendas alineaciones de la primera caja. Los lados
	 que se desplazan son los siguientes: Por una parte el correspondiente a la alineacin del texto, que se
	 lleva a dicha alineacin. Por ejemplo, si el texto se escribi con alineacin inferior, el lado inferior
	 del rectngulo contenedor se sustituye por la lnea de alineacin del texto. Por otra el opuesto al sentido
	 de escritura original se hace coincidir con la alineacin de la primera caja opuesta a dicho sentido de
	 escritura. Por ejemplo, si la escritura es hacia la derecha se reemplaza el lado izquierdo del rectngulo
	 contenedor por la alineacin izquierda de la primera caja.
	    Para situar el texto puede emplearse bien el rectngulo contenedor bien el de alineacin. El que
	se vaya a emplear ser llamado rectngulo de referencia, y la esquina "desplazable", es decir, la
	opuesta a aqulla en la que ambos rectngulos son coincidentes por definicin, se llamar punto
	de referencia del rectngulo. De los dos lados que convergen en el punto de referencia, el que
	corresponde a la alineacin del texto se llama lnea base, y se le da el mismo sentido que el sentido
	original del texto; el perpendicular se llama lnea de apoyo y se le asigna el sentido opuesto a la
	alineacin del texto, es decir, "hacia arriba" en caso de alineacin inferior, etc. 
	    Es posible que en el rectngulo de alineacin uno de los lados desplazados respecto al rectngulo
	contenedor (o los dos) pase al otro lado del lado paralelo que se mantiene fijo. En ese caso se
	considera para los clculos siguientes que la dimensin correspondiente es negativa y las calificaciones
	de inferior/superior o izquierdo/derecho se mantienen como si eso no hubiese sucedido. Esto se da,
	por ejemplo, si el sentido principal de escritura es de iquierde a derecha y la lnea de apoyo del
	rectngulo de alineacin (el borde que se corresponde con el lado izquierdo del rectngulo conte-
	nedor) queda ms a la derecha que el lado derecho, comn a ambos rectngulos. En este caso la
	anchura sera negativa y "lado derecho" hace referencia al mismo lado tanto en rectngulo contenedor
	como en el de alineacin, aunque en este ltimo se encuentre ms a la izquierda que el lado izquierdo.
	Como se seguir de la definicin rigurosa, tambin el rectngulo contenedor puede tener una o ambas
	dimensiones negativas.
	    La definicin rigurosa del rectngulo contenedor es como sigue: Los lados perpendiculares al
	sentido de escritura coincidirn, si todas las cajas tienen dimensiones positivas, con sendos lados de
	la primera y ltima cajas. Pues bien, dicha coincidencia se toma por definicin, de modo que, por
	ejemplo, en una escritura de izquierda a derecha el lado izquierdo del rectngulo contenedor se toma
	coincidente con el lado izquierdo de la primera caja (que no tiene por qu ser la caja de ms a la
	izquierda si hay cajas de anchura negativa) y el lado derecho se toma coincidente con el lado derecho
	de la tlima caja; es decir, del ltimo carcter de la cadena de texto o bien, si el ltimo tramo sigue el
	sentido opuesto al sentido principal del texto, del primer carcter ledo para ese tramo. Los lados para-
	lelos al sentido de escritura se definen como coincidente cada uno con un lado anlogo de una caja,
	y de entre todas las cajas el que se encuentre ms "hacia esa direccin"; por ejemplo, el lado superior
	en una escritura horizontal se toma coincidente con el ms alto de los lados superiores de las cajas. Una
	vez mas, en teora es posible que el lado superior est por debajo del lado inferior.
	    Aunque no es necesario para lo que sigue se pueden definir las cuatro alineaciones del rectngulo
	contenedor, de la misma manera que como se define el rectngulo contenedor sin ms que cambiar
	en la definicin la palabra "lado" por "alineacin" all donde aparece.

Clases 11 y 12:

	    Se describe ya la estructura completa tras el nombre de los elementos 11 y 12. La parte ya descrita
	anteriormente se muestra de manera resumida. El nmero de los 4-bytes que siguen al texto se indica
	de la forma +0, +1... , dando a entender que se cuentan a partir del final del texto. Las coordenadas X e Y
	a que se haga referencia estarn todas en el sistema de coordenadas del plano, definido por los puntos
	p1,p2,p3 como se explic.

//11: Texto plano
	0-17: X,Y,Z  dX,dY,dZ de los tres puntos que definen el plano y su sistema de coordenadas.
	18: b0: Modo de posicin.
		   b1: Flags que indican el modo de situar los caracteres:
			bit 0: Se emplea el rectngulo contenedor (0) o el rectngulo de alineacin (1).
			bit 1: Se situn los caracteres y luego se desplazan (0) o lo contrario (1).
	19: b01: Libres
		   b23: Longitud y codificacin del texto.
	20-?: El texto.

	Resto del elemento segn el byte 18-b0

	18-b0=0: Punto, incremento y justificacin
		+0 - +1: dX,dY respecto a PR (primer punto en la definicin del plano) del punto de alineacin
		+2 - +3: ax,ay que definen la alineacin. Sea PR+(dX,dY)=PA=(x,y), y w,h el ancho y el alto del
			rectngulo de referencia del texto, que segn el bit 0 del byte 18-b1 ser ora el rectngulo
			contenedor, ora el de alineacin. La esquina inferior izquierda del rectngulo de referencia
			tiene por coordenadas (x-ax*w, y-ay*h).

	18-b0=1: Lnea poligonal y distancia
		+0: distancia, 'd'
		+1: b01: Nmero de vrtices de la lnea poligonal, =n
			   b23: Libres
		+2 - +4n+1: X,Y de los sucesivos vrtices (double)

		    La distancia se aplica en perpendicular a cada punto de la lnea definida, de manera que si se hace
		coincidir la lnea base del rectngulo de referencia con un segmento de la lnea, en direccin y sentido,
		el sentido de la lnea de apoyo marca el desplazamiento para valores de 'd' positivos.
		    Si el bit 1 del byte 18-b1 est a 0, se calcula la posicin de los caracteres sobre la lnea
		y posteriormente se desplazan stos en perpendicular. Si por el contrario est a 1, primero
		se calcula la lnea deplazada y a continuacin se sitan sobre ella los caracteres. En este ltimo
		caso la lnea desplazada se define como el lugar geomtrico de los puntos a distancia 'd' de la
		lnea indicada, limitada por las pependiculares a la misma en su primer y ltimo puntos,
		situada del lado que se sigue de lo explicado en el prrafo anterior.
		    En cualquiera de los dos casos se compara la longitud 'w' del rectngulo de referencia con la
		longitud 'l' de la lnea sobre la cual se van a situar los caracteres. Se define el exceso 'e' como e=l-w.
		'e' puede ser positivo o negativo. Si 'e' es igual a cero no hay que hacer nada. En caso contrario el
		espaciado entre palabras y letras debe aumentarse o reducirse para cubrir exactamente la lnea. La
		razn 'r' de aumento o disminucin del espacio entre palabras y el espacio entre carateres se toma
		de la fuente y si esta informacin no est disponible se aplicacar la razn 4:1.
		    Una fuente puede incluir espacios de distinta longitud pero tendr en cualquier caso un espacio
		de referencia, la separacin normal entre palabras. A cada uno de ellos se aplica una razn que
		est en relacin lineal con su longitud, de manera que es 1 para una longitud igual a 0 y r para una
		longitud igual al espacio de referencia.
		    Dado que en este punto los espacios tambin son cajas, esto puede entenderse como que el
		espacio a insertar entre dos cajas consecutivas ser  0.5(r'+r'')f, en donde r' y r'' son las razones que
		corresponden a una y otra caja, y junto a las cajas de los extremos no se inserta nada si no son
		cajas de espacio, y si lo son se inserta  0.5rf.
		    Sea kf la suma de todos los espacios a insertar, en donde 'k' es conocido. Se plantea kf=e. Si k es
		cero la posicin de cada caja no se modifica, y por tanto en este caso el texto no cubrir exactamente
		la lnea. Si es distinto de cero se obtiene f=e/k y se calcula la nueva posicin de cada caja; es decir,
		su distancia al punto de referencia a lo largo de la lnea base.
		    Ahora se sitan los caracteres a lo largo de la lnea sobre la que hay que colocarlos situando cada
		carcter a la distancia que le corresponde del inicio de la lnea, y la base de la caja del carcter
		se orienta segn el segmento o arco a donde haya ido a parar el carcter. En concreto, para definir
		la orientacin de la caja se toma el punto de la lnea que corresponde al centro del carcter. Si fuese
		exactamente un vrtice se aplicar la del segmento o arco ms avanzado. Si algunas cajas (centros
		de caja) estn situadas respecto al punto de referencia a una distancia mayor que 'l' o menor que
		cero se prolongarn los segmentos ltimo y primero respectivamente de la lnea indicada cuanto
		fuese necesario.

	8-b0=2: Punto, radio y ngulos inicial y final
		+0: radio, 'r'
		+1: ngulo inicial, en grados sexagesimales (float)
		+2; Arco abarcado, en grados sexagesimales

		    Estos tres valores definen un arco de crculo. El centro es el punto PR del plano, los ngulos
		se cuentan en sentido horario y para el ngulo inicial el origen es el punto superior (de mayor Y)
		del crculo.
		    El texto se sita igual que en el modo anterior, con el arco como lnea y 'd'=0. Por lo tanto,
		para cualquier tipo de escritura el texto avanzar en sentido horario si el arco abarcado es
		positivo y en sentido antihorario si es negativo. Por ejemplo, si el arco abarcado es positivo
		el texto se sita en la parte exterior del arco para una escritura de izquierda a derecha con
		alineacin inferior as como para una escritura de arriba a abajo con alineacin izquierda, 
		en el primer caso con la parte de arriba de los caracteres apuntando hacia afuera del arco y en
		el segundo hacia el sendio contrario de avance del arco, mientras que si es negativo se sita
		en la parte interior y en ambos casos con los caracteres apuntando en sentido opuesto al caso
		anterior; exactamente lo contrario sucede para escrituras de derecha a izquierda a derecha con
		alineacin inferior y escrituras de abajo a arriba con alineacin izquierda, respectivamente.

	    El tamao del texto, que se indica en el fichero de configuracin, se muestra en las unidades
	del plano, sin ms que sustitur la palabra punto por la perfrasis "unidad del plano".

//12: Texto tridimensional
	Por definir

Nombres de elementos:

	    Los nmeros almacenados en un nombre de elemento, tras decodificarlo si es necesario (p.e. UTF-8)
	no son simples posiciones de una fuente sino entidades con significado de acuerdo a una pgina de
	cdigos: Unicode, Windows cp1252... y ha de tenerse en cuenta las distintas codificaciones a la hora
	de compararlos entre s o de escribirlos a otro fichero con una determinada codificacin. No se permite
	que incluyan cdigos que representen comandos, como indicadiones de direccin, "escapes", etc., ni
	otros espacios que el normal de la codificacin. Si apareciese alguno de los primeros debe ser ignorado
	a la hora de representar el texto, mientras que uno de los segundos debe representarse como si fuese
	un espacio normal. Se recomienda que no incluya ligaduras ni formas finales, etc. La razn de ello
	es que el nombre almacena conceptualmente el nombre del elemento, no la representacin grfica
	del mismo, y el empleo de estas formas podra llevar a no reconocer como iguales nombres que s lo son,
	o a escribirlos incorrectamente en ficheros de texto u otros ficheros. Por ltimo, a diferencia de un texto
	de un elemento texto, el 1 no es acta de comando.
	    El fichero de configuracin no puede incluir indicaciones de direccin para los nombres. S que
	define una fuente en funcin del tipo, subtipo, etc., y a la hora de mostrar el texto se ha de seleccionar
	cada carcter adecuado de la fuente teniendo en cuenta las codificaciones del nombre en el fichero
	de grfico y de la fuente. Si el fichero de configuracin no define la fuente a emplear el visor escoger
	la que mejor le parezca, pudiendo depender la eleccin de la codificacin del nombre o los caracteres
	en l empleados.
	    La determinacin de la direccin a emplear sigue el mismo principio que para los elementos
	texto pero es ms sencilla porque algunos puntos no se aplican por imposibles o no permitidos.
	As, los puntos 1 y 2 no son aplicables y se comienza directamente en el 3. La aplicacin del punto
	4 es ms simple y queda como sigue:

	    4. La direccin definida por el primer carcter que implique una direccin. Si el nombre consta
	    solamente de caracteres neutros pero la codificacin tiene una direccin principal (por ejemplo,
	    una codificacin para un idioma en el que los textos se escriben de derecha a izquierda, con
	    independencia de que los nmeros se escriban en sentido contrario y de que la fuente contenga
	    las letras latinas en las posiciones indicadas por la codificacin ASCII) o bien si no la tiene (p.e.
	    Unicode) pero es la codificacin de la fuente la que tiene una direccin principal, ser esa direccin.

	    Todo el nombre se representa siguiendo una nica direccin. Se debe aplicar el kerning entre
	caracteres y se recomienda reemplazar las secuencias de caracteres por sus ligaduras corres-
	pondientes (siempre que no se haya indicado lo contrario para esa fuente en el fichero de
	configuracin).
		El nombre se representa en unidades pxel, de manera que los parmetros tamao y grosor
	as como los que definen la posicin del texto, todos ellos definidos en el fichero de configuracin,
	se interpretan en pxeles.
		El nombre se representa en el modo "punto, incremento y justificacin". El punto de referencia
	es el centro o punto origen del elemento, que est definido para todos los elementos excepto
	2,4,9,10,11 y 12. Para estos elementos, el visor tomar como punto de referencia el que quiera.
	Los parmetros: dx,dy,ax y ay, as como la eleccin entre rectngulo contenedor/de alineacin,
	no se indican para cada elemento sino que se especifican en el fichero de configuracin. Si no se
	especifican el visor emplear los valores que quiera.


--- Informacin adicional

La informacin adicional deber estar formada por bloques estructurados del siguiente modo:
	4-byte0:
		b0: Cdigo que indica el tipo de informacin almacenada en el bloque.
		b1: El bit alto indica, si est a 1, que el bloque ha de ser ignorado.
				El segundo bit ms alto indica que el bloque no almacena toda la informacin, sino
				que incluye un enlace a informacin fuera del fichero de grfico (as, por ejemplo,
				una aplicacin puede saltar rpidamente este bloque si sabe que la informacin enlazada
				no va a estar disponible).
		b23: 4-byte que ocupa el bloque (por lo tanto empieza a contar en el 4-byte 0).
	4-bytes 1 a n-1: La informacin

Los cdigos 250-255 estn reservados para su definicin presente o futura. Los dems nunca sern definidos.

//255: conjuntos de elementos a los que pertenece el elemento. Cada elemento puede tener solamente
			un bloque de inf. adic. con cdigo=255
	1: b01; b23: n de agrupacin; conjunto al que pertenece dentro de esa agrupacin
	2: b01; b23: n de agrupacin; conjunto al que pertenece dentro de esa agrupacin
	etc.

		Cada agrupacin es, como su nombre indica, una agrupacin de los elementos en conjuntos,
	de manera que los conjuntos de una agrupacin son independientes de los de otra.
		En caso de que unas agrupaciones contengan superconjuntos de otras se recomienda que los
	nmeros de las agrupaciones vayan ascendiendo a medida que los conjuntos son ms grandes.
		Cuando en un conjunto hay un elemento, y solo uno, con nombre (es decir, que para los dems
	es una cadena vaca) puede interpretarse como un elemento compuesto. No obstante, esta
	posibilidad as como su interpretacin se deja a la libre eleccin de cada visor. Se puede por ejemplo
	ofrecer la posibilidad de interpretar como elementos compuestos los de unas agrupaciones pero
	no los de otras.
		La representacin de cada elemento se define en el fichero de configuracin en funcin de
	los tipos, subtipos y conjuntos. Por ello, si se quiere que un elemento tenga una representacin nica,
	distinta de las de otros similares, es necesario incluirlo en un conjunto a l solo. Se recomienda
	emplear para ello las agrupaciones 0 y 255.

//254. Descripcin o comentario
	1: Tipo de informacin almacenada. Se emplear un nmero par cuando se trate de una descripcin
		y un nmero impar si se trata de un comentario.
	2:	b01: 4-bytes que ocupa el texto, igual que en los textos del elemento 253-4
		b2: libre
		b3 : Codificacin.
	3-...: El texto


--- Coordenadas indefinidas

Todos los bits a 1 en una coordenada indica que no existe. Solamente es posible en aqullas coordenadas
que indican incrementos respecto a otra coordenada o bien para los giros en la clase 7. Los valores en
los que esto es posible coinciden exactamente con los que son float o double segn lo indicado en el bit
de doble precisin. A la hora de representarse se har igual que si fuese 0 salvo que el visor sepa que
para esos elementos debe aplicar una representacin especial.


-- Extensiones futuras

Se quitar el 4-byte 1 de los elementos CCL
El elemento 253-0 ser obligatoriamente el primero tras la cabecera, y contendr pares de elemento-posicin.
En elemento se almacenar el tipo-subtipo. Deber incluir obligatoriamente los elementos 253-4 y 253-5.
Se cambiar el nombre del elemento por un puntero al nombre, es decir: su posicin en 4-bytes
desde el comienzo del elemento "nombres", que ser el 253-4. El primer 4-byte para cada nombre
01:ref-count, 2: 4-bytes que ocupa, 3:codif
Se modificar la definicin del elemento 253-2 (pares clave-valor) para que las claves sean cadeanas de
texto (en unicode puro) y los valores tengan extensin variable. Los valores sern arrays de nmeros
enteros, float, double o caracteres.
Se emplear uno de los cdigos reservados de la informacin adicional para permitir una simbologa
particular para cada elemento.



FICHERO DE CONFIGURACIN, .cfg

    El carcter % en este fichero indica el comienzo de un comentario y todo lo que aparezca a partir
de ese carcter y hasta el final de la lnea es ignorado, salvo situaciones excepcionales en las que se
indicar claramente.
    A parte de los comentarios este fichero est estructurado en unidades delimitadas por \begin y \end,
o por comandos de una nica lnea, siempre comenzando por \ (de momento solamente uno: \input).
Los bloques pueden contener otros bloques.

    El primer bloque, antes incluso que cualquier comando \input, ha de ser el siguiente:

\begin Info
Version 00
%Otra informacin
\end

    El formato de este fichero todava es inestable y podr cambiar sin que se modifique el nmero de versin.
El bloque Info consta de varios pares nombre/valor, entre los cuales ha de aparecer obligatoriamente Versin.
Se recomienda que sea el primero de los pares. De momento estn definidos adems los elementos Formas,
Fondo y Resalte:

Formas "misformas.fdf"
Fondo DDDDDD
Resalte FFFFFF

Fondo es el color de fondo, en hexadecimal, como se explica ms abajo, y Resalte el color de los elementos reslatados,
por ejemplo los seleccionados.
Formas indica el fichero de definicin de formas para los elementos puntuales. El nombre del fichero se extiende desde
el segundo carcter distinto de espacio (en este caso la 'm') hasta el que preceda a la ltima aparicin en la lnea
del primer carcter, en este caso una comilla "; es decir, hasta la 'f' que precede a la segunda y ltima ".
Por ejemplo

Formas .misformas.ldf.
Formas .misformas.ldf.xxxx

ambas lneas indican el fichero misformas.ldf
El nombre puede por tanto contener el carcter %, que en ese caso no se interpreta como comentario.
El carcter delimitador no puede ser % (pues sera interpretado como comentario).

    De esta manera el nombre del fichero puede contener cualquier combiancin de caracteres excepto
saltos de lnea. Si el fichero no es una ruta absoluta se buscar primero tomando como directorio base
el directorio en el que se encuentra el fichero de grfico, a continuacin tomando como base uno o ms
directorios fijos que cada visor/editor definir (por ejemplo, C:\programas\Visor\configraciones\formas\ );
el visor/editor puede no definir ningn directorio para este paso. Por ltimo se buscar en uno o ms
directorios fijos que cada visor/editor ha de definir obligatoriamente. Por ejemplo,

Formas  .\puntos\parcela.fdf

hara que se buscase el fichero parcela.fdf en los siguientes directorios, por ejemplo:
1.  .\puntos\   en relacin al fichero de grfico
2. 1. C:\usuarios\Javier\programas\Visor\formas\puntos\
      2. C:\programas\Visor\configraciones\formas\puntos\
3.  C:\programas\Visor\configraciones\formas\

Si el fichero no se encuentra o si no se indica un fichero deber emplearse el fichero por defecto formas.fdf

    El comando \input va seguido de un nombre de fichero exactamente igual que el nombre "Formas" dentro
del bloque \Info. Si el fichero no es una ruta absoluta se buscar igual que en el caso anterior segn los
criterios 1 y 2, en orden, pero no el tercero. Los directorios empleados como base en este caso pueden
ser distintos de los empleados para las formas.
    Si el fichero se encuentra y se puede leer, se lee el fichero y cuando se termine se contina con el fichero
actual. Los ficheros abiertos por \input pueden contener a su vez este comando, sin lmite o hasta un lmite
que imponga la aplicacin. Deben permitise al menos 8 ficheros abiertos a la vez, contando con el fichero
inicial.
    El comando \input es til para que las partes ms estables de un fichero --definicin de tipos y subtipos,
agrupaciones, etc.-- se lea de un fichero fijo.
    Un fichero abierto por \input no debe obligatoriamente contener el bloque Info, y si lo contiene ste
 no tiene por qu especificar el nmero de versin. En ese caso el fichero se lee de acuerdo al nmero
 de versin del fichero desde el que se abri. Los otros elementos del bloque Info sern ignorados en caso
 de que ya hayan sido ledos en algn otro fichero (es decir, tiene preferencia la primera aparicin).
 
 --- Fuentes
 
    Un bloque Fuente define una fuente virtual, basada en una fuente real o en otra virtual:

\begin Fuente
Nombre CMR vertical
Font .cmr10.
\begin Transformacion
Trans O 1.2 0 0 0.8
\end
Direccion  ga
RazonEspacio 10:1
\end

    Nombre es el nombre que se la dar a la fuente. Consta de todos los caracteres que siguen hasta el final de lnea o carcter
% de comentario. Font es la fuente de la que deriva. Puede ser una fuente real o una viritual que se encuentre ya definida.
Se escribe de la misma forma que los nombres de fichero, como se explica arriba. Los dems campos son opcionales:

Direccin	La direccin en la que se ha de mostrar el texto cuando se emplee esta fuente (salvo indicacin contraria en
				algn sitio de mayor preferencia). Se indica mediante dos caracteres consecutivos en minscula. El primero indica
				la alineacin a emplear:  s: arriba, i: abajo, g: izquierda, d: derecha. El segundo indica el sentido de escritura. Una 'a'
				indica escritura hacia la derecha si la alineacin es ariba o abajo y hacia abajo si es izquierda o derecha, y una 'b'
				el sentido contrario.
Ligaduras	Puede ir seguida de Si o bien de No. Indica si se aplican o no para los nombres de elemento (en los elementos
				texto no tiene sentido).
Transformacin	La transformacin a aplicar a cada carcter, junto con su caja y alineaciones. El origen de coordenadas
				para la transformacin se toma en el punto de alineacin ii.
	Trans			La transformacin del carcter propiamente. La letra que viene a continuacin es el tipo de transformacin, que
					va seguida de los parmetros separados por espacio. Una O significa ortogonal, y va seguida de cuatro parmetos
					a, b, c, d, de manera que si las coordenadas originales de un punto son (x,y) las transformadas son (ax+by,cx+dy).
					Adems tienen que ser cero b y d o bien c y d, y los otros no pueden ser cero. Los puntos de alineacin y las alinea-
					ciones se renombran de manera que siguan manteniendo la misma posicin relativa que en la caja original. El
					eje X siempre apuntar hacia la derecha y el eje Y hacia arriba.
					No hay ms elementos dentro de Transformacin. Seran necesarios para transformaciones ms complicadas, pero
				seguramente nunca se definan. Si se quiere llevar a cabo modificaciones ms complicada ser necesario aplicarlas
				a la fuente real mediante otra herramienta.
				    La caja del espacio se transforma como cualquier otra. El kerning debe tambin ser transformado, y ser necesario
				tener en cuenta los cambios de orientacin de los caracteres. Por ejemplo, si se aplica la transformacin
				O -1.2 0 0 1, a parte de multiplicar por 1.2 todos los valores de kerning horizontales, el que antes exista entre
				la k y la o para una escritura de izquierda a derecha es ahora el kerning entre la o y la k para ese mismo sentido
				de escritura.
				    La transformacin no cambia la direccin de escritura asociada a cada carcter.
RazonEspacio	La razn entre los espacios a insertar (ya sean positivos o negativos) entre palabras y entre caracteres
				cuando haya que separar o juntar los caracteres para ajustar la longitud del texto a un valor determinado.
				Puede indicarse mediante un nmero decimal normal, como 3 o 2.5, o mediante una razn de dos enteros
				como en el ejemplo. Esta ltima es la nica manera de indicar que las letras de una palabra no se separen ni
				se junten, mediante N:0, para cualquier N (p.e., 1:0).

    Puede existir un bloque Fuente especial, cuyos parmetros se aplican a todas las fuentes salvo en lo que indique cada
una en su bloque Fuente.

\begin Fuente General
\begin Transformacion
Trans O 1.2 0 0 0.8
\end
Direccion  ga
RazonEspacio 10:1
\end

Contiene los mismos datos que un bloque Fuente normal salvo por los campo Nombre y Font que no pueden aparecer


--- Tipos y subtipos

    Esta es normalmente la informacin que forma la mayor parte del fichero. Para los tipos, su representacin y significado
viene indicado como sigue, en donde se ejemplifica con el tipo 32. La explicacin se desarrolla a continuacin.

\begin Tipo 32

Significado Vrtices de la red Regente
\begin Representacion		%Opcional
Forma 0424
Color B060D8
\end Representacion		%Opcional

\begin Texto
Color A0A0A0
Alineacion l 3 4 0 0
\end Texto

\begin Subtipo criterio 1 1 2
Significado Empleado
\begin Representacion		%Opcional
Color 8800DD
\end Representacion		%Opcional
\end Subtipo

\end Tipo

    Las especificaciones que pueden aparecer en Representacion dependen del tipo geomtrico de elemento:
el valor de los bits bajos del byte 6. Los que no sean de aplicacin sern ignorados. De momento Grfico tiene
definidos los siguientes para todos los elementos a excepcin de las clases 11 y 12:

Color		En hexadecimal, en formato RRGGBB (RojoVerdeAzul)
Forma	Para los puntos. Un nmero de forma, expresado en base 10, 8 o 16 con la notacin del lenguaje C.
				Las formas se encuentran definidas en el fichero de formas. La forma 0200 es vaca (no se representa el punto).
				La forma por defecto para todos los elementos excepto puntos y centros de polgono es 0200 (no representar el punto).
				Para puntos y polgonos (byte6 bajo  igual a 0 o 2) cada visor tendr sendas formas por defecto.
Escala		aplicada para representarlo, para elementos (byte 6 bajo) entre 2 y 10.
				En el elemento 2 (polgono) se aplica respecto al punto indicado como centro. En los giros se multiplican
				los tres valores; tiene sentido para giros pequeos. En los dems elementos su aplicacin es obvia.
Grosor	En pxeles. Valor con decimales, p. e., 0.8, 2.25, etc.
GrosorT	Grosor en unidades terreno (por lo tanto aumenta al aumentar el zoom).
Estilol		Estilo de lnea. Todava no estn definidos.
Estilo		Modo de representar el elemento. Su significado depende del tipo de elemento.
				Para los elipsoides: 0: elipse xy ( yz  zx) y segmento z ( x  y); no hay implementados ms. Para los
				giros todava no est definido.
Color2, Color3, Grosor2, GrosorT2, Tamanno,... 	Para los elipsoides y giros. Los distintos parmetros que puedan
			aparecer dependen del Estilo.
			En los elipsoides con Estilo 0, los parmetros Color, Estilol, Grosor y GrosorT son los de la elipse, mientras
			que Color2, etc. son los del segmento. Si no aparecen estos ltimos se tomarn iguales a los de la elipse.
FormaP, ColorP	Para el centro de los polgonos.

    Las clases 11 y 12 pueden incluir los siguientes:

Grosorb	Grosor del borde. Por defecto es 0, salvo que la fuente defina lo contrario.
Colorb	Color del borde.
Colorf		Color de relleno del carcter. Si el grosor del borde es 0, es el color en el que se mostrarn los caracteres.
Modo		Puede ser 00, 01, 10 o 11. El primer valor indica si se dibuja el borde y el segundo si se pinta el relleno.
				Por tanto, si se indica 00 o bien 01 con grosor de borde 0, no se mostrar nada.
Color		Equivale a Colorb ms Colorf.

    Las lneas "\begin Representacion" y el "\end" correspondiente son opcionales.

Dentro del bloque Texto pueden aparecer los siguientes campos

Font	Por defecto en el visor de Aerotri es Times new Roman, pero cada visor puede definir una fuente por defecto. Va desde el primer
			caracter distinto de espacio tras la palabra Font hasta el final de lnea o un carcter %. Por tanto, _no_ se escribe como un nombre
			de fichero.
Size		El valor por defecto es 14
Color	Por defecto se emplea el mismo que para el elemento
Alineacin Va seguida de una letra que indica la lnea de referencia y cuatro valores que son los parmetros dx,dy,ax y ay
			para su posicionamiento respecto al punto de referencia del elemento. Vase su descripcin en el modo "Punto,
			incremento y justificacin" de los elementos texto (11). La letra indica si se emplea el rectngulo contenedor o
			el de alineacin. Se indica mediante las letras c y l respectivamente.

Tras cada cualidad (Color, Forma, etc.) puede aparecer la palabra from, en cuyo caso el valor de esa cualidad
se toma de otro tipo/subtipo segn las siguientes opciones:
from subtipo m					Igual que la especificada para el subtipo m de este mismo tipo
from tipo n						Igual que la especificada para el tipo n
from tipo n subtipo m		Igual que la especificada para el tipo n, subtipo m

Si tras la especificacin de tipo/subtipo se encuentra la palabra texto, la cualidad de toma del texto
del tipo/subtipo en cuestin:

Color from tipo 3 texto

Si lo que aparece es el nombre de una cualidad se tomar de esa cualidad en lugar de la del mismo nombre,
siempre que tenga sentido. Pueden combinarse ambas indicaciones:

Color from tipo 2 Color2
Color3 from tipo 2 texto Color

Aunque en este ltimo caso, si se omitiese la palabra "Color", un programa visor de grficos
podra deducir que dado que el texto no tiene definido Color3 el valor se ha de tomar de Color.

"from ." siginifica tomar la cualidad igual que la del elemento. Se usa normalmente para el texto o para
propiedades secundarias:

Grosor2 from . Grosor
\begin Texto
Color from .
\end

El tipo indicado tras from puede ser el propio tipo en el que estamos, si el resultado no es una referencia a la
cualidad que se est definiendo. Es vlido por ejemplo dentro de un bloque \begin Subtipo ... \end,
o \begin Texto ... \end, o indicando otra cualidad al final (Color2 from tipo 13 Color3, por ejemplo). Fuera de
bloques \begin Subtipo ... \end indicar el tipo corriente es lo mismo que "from .".

La especificacin from puede ir precedida de la "cualidad" All, con el significado obvio. Si All aparece
fuera de \begin Representacion ... \end tambin copia Significado, la representacin del Texto y, en un tipo,
los subtipos. Pero si ese tipo incluye subtipos estos no se ven afectados por la indicacin All. Por ejemplo

\begin Tipo 21
All from tipo 20
\begin Subtipo 1
Color FF0000
\end
\end Tipo

Si el tipo 20 incluye un subtipo 1, no se copiar nada de ste al subtipo 1 del tipo 21.

Si aparece una cualidad dos veces, una con la especificacin from y otra con un valor concreto, la especificacin from
tiene preferencia. Si embargo la indicacin All from es la que menos preferencia tiene de todas, de modo que
cualquiera otra la reemplaza. Ejemplo:
\begin Tipo 35
Significado Lmite de parcela
All from tipo 34
\end Tipo

Con lo cual el tipo 35 toma todo del 34 excepto Significado, que es reemplazado por Lmite de parcela.
Los Significados de los subtipos del tipo 34 se aaden a "Lmite de parcela" para el tipo 35.

De cara a la indicacin All from, Significado y SignificadoR (que se explica ms abajo) funcionan como una unidad,
de manera que si existe cualquiera de ellos en el tipo que se est definiendo o en uno de sus subtipos, no se copiara
ninguna de las dos del tipo al que se hace referencia.

All from .	%no es vlido, ni siquiera dentro de Texto.

Dentro de Texto, la indicacin from que sigue a All se sobreentiende que se refiere al texto,
y fuera de l no est permitida una referencia All a un texto:

\begin Texto
	All from tipo 2			%es lo mismo que: All from tipo 2 texto
\end
All from tipo 3 texto	%no es vlido
\begin Representacion
	All from tipo 3 texto	%no es vlido
\end

En un tipo una clsula All from que apunte a un subtipo, o viceversa, es vlida pero se recomienda
no emplearla. Copia las cualidades y el bloque Texto, pero no el Significado. Pero en un tipo no puede
apuntar a un subtipo de ese mismo tipo y viceversa.
Una referencia from copia las cualidades literalmente, lo que significa que si el tipo/subtipo al que se apunta
tiene una cualidad para la cual se indica from ., from . es lo que debe entenderse para esa cualidad, y no
el resultado de resolver eso para el tipo/subtipo al cual se apunta.

La informacin especfica para subtipos puede darse individualmente o por grupos. Si lo que viene a continuacin
de la palabra Subtipo es un nmero, se entiende que la informacin se refiere a ese subtipo, mientras que si es
criterio entonces se est especificando un conjunto de subtipos. Hay varias maneras o criterios de indicar el conjunto.
El criterio, que se expresa mediante un nmero, aparece tras la palabra criterio, y tras l la infomacin necesaria
para definir el conjunto. El nmero que indica el criterio puede estar entre 0 y 255. Cada bit se corresponde con un
criterio atmico, de manera que el criterio est compuesto de varios criterios atmicos, cada uno de los cuales ha
de cumplirse. El significado para cada bit se indica a continuacin.

1: Entre un valor mnimo y uno mximo. Por ejemplo,
criterio 1 10 200

2: Que no tenga ningn bit de la mscara a 1.
criterio 2 0x0F	%Los ltimos cuatro bits a 0

4: Que tenga todos los bits de la mscara a 1.
criterio 4 0x10

La combinacin de los tres criterios anteriores se escribira
criterio 7 10 200 0x0F 0x10

Como puede verse, los parmetros de cada criterio atmico se escriben empezando por los
de los bits ms bajos.

Para los tres bits ms bajos el que uno de ellos est a 1 tiene el significado que se acaba de explicar,
y el que est a 0 indica la ausencia de ese criterio. Para los 5 bits restantes la oposicin 0/1 indica
uno o el otro de los dos criterios siguientes:

1: Que tenga algn bit de la mscara a 1
0: Que no tenga todos los bits de la mscara a 1

Los bits '1' tienen que aparecer antes que los bits '0'; es decir, si n>=4 y el bit n est a 1 entonces los bits
4, 5, ... n tienen que estar todos a 1. Cuando ya se hayan indicado parmetros suficientes para los criterios
de los 3 bits ms bajos, si es que aparece alguno, y para los n-3 1's entre el bit 4 y el n, si aparece alguno,
los nmeros restantes sern mscaras para el criterio "Que no tenga todos los bits de la mscara a 1". Por ejemplo:

criterio 8 0xcc				%Alguno de los bits de 0xcc a 1
criterio 10 07 070		%Ninguno de los ltimos 3 bits a 1 pero alguno de los 3 siguientes s.
criterio 0 255				%Cualquier subtipo excepto 255
criterio 24 0xF 0xF0	%Alguno de los cuatro primeros y alguno de los cuatro ltimos
criterio 8 7 7					%Que tenga alguno, pero no todos, de los ltimos 3 bits a 1

Las mscaras y el nmero tras la palabra criterio se pueden escribir en base 10, 8 y 16, con la notacin del
lenguaje C, como se muestra en los ejemplos.

Aunque a partir de un cierto punto todos los nmeros que aparezcan son mscaras para el criterio
"que no tenga todos los bits de la mscara a 1", se entiende que cada mscara se corresponde con un
bit 0 del nmero indicado como criterio, de modo que el nmero de mscaras total para los criterios
1 o 0 de los bits >=4 no pueden ser en total ms de 5.
El final de las mscaras puede venir indicado bien porque ya no aparezcan ms, como en todos los
ejemplos anteriores, bien porque se hayan agotado los 8 bits, bien con la mscara 0 para un bit 0 de los
>=4. Por ejemplo:

criterio 2 07 070 0     2 criterios, el dos de "2 criterios" ya se ignora
criterio 4 0x88 0		%estas dos lneas indican
criterio 4 0x88			%el mismo criterio

criterio 0 0		%criterio vaco, es decir, satisfecho por todos los subtipos.

Si tras la palabra criterio sigue un parntesis de apertura entonces se trata de una expresin lgica que se evala.
El subtipo se representa mediante la letra s. Si el resultado de la expresin es un 1 lgico (true) o un nmero
distinto de cero el elemento con subtipo s satisface el criterio. En caso de que sea 0 lgico, 0 o la expresin
no est bien formada se considera que el elemento no satisface el criterio. Por ejemplo

Subtipo ( (s&07==07) || (s&070==070) )

Una vez ms, los nmeros se pueden escribir base 10, 8 o 16.

La sintaxis es la del leguaje C. Se pueden emplear los operadores de bit &, |, ^ y ~, as como << y >>;
los operadores numricos de relacin ==, !=, >, <, >= y <=, y los operadores booleanos && y ||.
El resultado de los operadores de relacin y booleanos no podr ser un operando de un operador
que no sea && o ||, pero el recproco no es cierto. Es decir, se puede escribir

(s&0xF && s&0x70)

sin necesidad de escribir los !=0.

El orden de prioridad de los operadores es
~
<< >>
&  |  ^
==  !=  >  <  >=  <=
&&  ||

los operadores mostrados en una misma lnea tienen la misma prioridad y las expresiones se
evalan de izquierda a derecha.

La informacin de Significado para los subtipos se aade a la del tipo, y la de Representacin y Texto la sustituye
en los campos que se especifiquen. Si se quiere que el significado no se aplique tambin al subtipo se emplear
la palabra clave SignficadoR en lugar de Significado. Pueden emplearse ambas; solamente se heredar la de
Significado, mientras que el significado para el tipo se formar con Significado + SignificadoR.
Los subtipos pueden anidarse, heredndose el significado igual que de un tipo al subtipo. Ejemplo:

\begin Tipo 1
\begin Subtipo criterio 8 07
	Significado Punto de Apoyo
	SignificadoR incompleto
	Forma 740
	Color 88FF88
	\begin Subtipo criterio 4 07
		Significado completo
		Color 0000FF
	\end
\end
\begin Subtipo criterio 10 07 070
	Significado Punto de Control
	SignificadoR incompleto
	Forma 116
	Color 88FF88
	\begin Subtipo criterio 4 07
		Significado completo
		Color 7700DD
	\end
\end
\end

El visor de grficos de Aerori no implementa subtipos anidados.

El tipo 255 no puede aparecer en un fichero cfg. No obstante s que pueden aparecer los elementos
252-254. Dado que estos elementos no se representan pueden emplearse en un fichero cfg para almacenar
valores de cualidades a los que hacer referencia mediante indicaciones from.


--	 Agrupaciones y conjuntos

Se muestra a continuacin un ejemplo:

\begin Agrupacion 5
Significado Elementos agrupados por fecha de creacin

\begin Conjunto 0
Significado Elementos que estaban en el mapa base
...
\end Conjunto

\begin Conjunto 1
Significado Elementos creados en el mapa original
...
\end Conjunto

\begin Conjunto 2
Significado Elementos incorporados en la primera revisin
...
\end Conjunto

etc.

\end Agrupacion

Ni que decir tiene que las agrupaciones y conjuntos no tienen por qu aparecer en orden ascendente ni existir
exactamente en un intervalo 0-N.

Dentro de cada \begin Conjunto \end Conjunto pueden aparecer  cualidades, p.e. Color 80FF80, que afectan
a todos los elementos de ese conjunto, as como bloques \begin Tipo n ... \end Tipo,  en cuyo caso las indicaciones
de representacin en l contenidas afectan solamente a los elementos del tipo y en su caso subtipo en cuestin.

La jerarqua entre la representacin indicada para cada tipo fuera de los conjuntos y lo indicado en los conjuntos
se establece como sigue

\begin Jerarquia
<seleccin 1>
<seleccin 2>
etc.
\end Jerarquia

Cada seleccin es una lnea indicando un criterio de seleccin en funcin de Agrupacin, Conjunto, Tipo y Subtipo.
Para cada elemento, la primeria lnea que se satisfaga para ese elemento indica de dnde se toman los parmetros
de su representacin. Si  el elemento no satisface ningn criterio de seleccin se representar de acuerdo
a lo indicado para su tipo y subtipo. Por lo tanto si el bloque Jerarquia no existe todos los elementos se representan
segn su tipo y subtipo sin que la informacin de los conjuntos afecte para nada.
Cada lnea seleccin comienza bien por Agrupacion bien por Tipo. En el primer caso, si el elemento satisface el
criterio de seleccin se emplear la simbologa del conjunto al que pertenece para la agrupacin indicada, en lo
que reemplace a la del tipo/subtipo (si no la reemplaza en nada ser igual que la del tipo/subtipo),
en el segundo caso se emplear la del tipo/subtipo.

Agrupacion a	%Para todos los elementos que pertenezcan a algn conjunto de la agrupacin 'a' se emplear
								la simbologa del Conjunto

Agrupacion a Conjunto c1 Conjunto c2 ... Conjunto cn	%Los elementos que pertenecen a alguno de los conjuntos
																										c1,c2... cn de la agrupacin a.

Agrupacion a !Conjunto c1 !Conjunto c2 ... !Conjunto cn  %Los elementos que pertenecen a alguno de los conjuntos
																										de la agrupacin a distintos de c1,c2... cn.

No pueden aparecer mezclados Conjunto's y !Conjunto's.
A esta manera de indicar un conjunto de Conjuntos la representar por [Conjunto], incluyendo en ello la indicacin
vaca, e.d., que no aparezca ningn Conjunto ni ningn !Conjunto. Por { !} representar un ! opcional pero que tiene
que ser igual para cada aparicin de { !}.
El formato completo de un criterio que comience por Agrupacion es

Agrupacion a [Conjunto]

Agrupacion a [Conjunto]  { !}Tipo t1 {Subtipo xxx1}  { !}Tipo t2 {Subtipo xxx2} ...

en donde xxx1, xxx2, etc. indica uno o varios subtipos de cualquiera de las maneras que se explic ms arriba
y {Subtipo xxx1} significa que la indicacin de Subtipo es opcional. El ! en los Tipos con indicacin de Subtipo
se ha de interpretar como !(Tipo t Subtipo xxx).

Para cualquier criterio de seleccin ms complicado se ha de emplear el formato

Agrupacion a (<expresin lgica>)

en donde la sintaxis de <expresin lgica> ya se expres ms arriba y en ella el conjunto, tipo, subtipo y clase
se representan por c, t, s y b respectivamente (la b es de "byte 6").

Un criterio de seleccin que comience por Tipo puede ser de dos maneras:
a) Una indicacin de tipo nica, con o sin subtipo:
Tipo t {Subtipo xxx}

b) Exactamente igual que los de Agrupacin pero con la palabra Tipo delante:
Tipo Agrupacion a ...


-- Visibilidad de elementos

\begin Ver
00100111101011...
Textos 0001100000...
<seleccin 1>
<seleccin 2>
etc.
\end Ver

El primer elemento en el bloque Ver es una serie de 252 ceros y unos, indicando la visibilidad de los elementos
de cada tipo, para los tipos 0-251. Si la serie se detiene antes de completar los 252 elementos se entiende
que el resto son uno.
El segundo elemento es una serie como la anterior prececida de la palabra Textos, que hace referencia
a los nombres de los elementos. En este caso si la serie se detiene se entiende que los restantes elementos son 0.
Esta definicin por tipo podr estar modificada por sucesivas selecciones. El formato de cada seleccin
es igual que el de una seleccin de jerarqua que empiece por Agrupacion, pero la indicacin de agrupacin
es opcional. Los elementos que satisfagan el criterio se mostrarn, pero si la lnea comienza por !, no
se mostrarn. As pues el formato de una seleccin dentro de Ver, en donde el significado de { !}
se explic ms arriba y el resto de llaves {} indican opcionalidad, es

{!}{Agrupacion a [Conjunto]} {{ !}Tipo t1 {Subtipo xxx1}  { !}Tipo t2 {Subtipo xxx2} ... }

o bien

{!}{Agrupacion a} (<expresin lgica>)

Por ejemplo los siguientes:

!Tipo 3 Subtipo criterio 4 0x33
Agrupacion 3
Agrupacion 0 Tipo 8 Tipo 1 Tipo 2
! (b==0 || (t==2 && s&077==0))

Estos criterios se aplican al elemento, no a su texto. Si se quiere que se apliquen al texto se escribir
al principio o al final de la lnea {texto}; si se quiere que afecte a ambos se escribir {. texto} o bien {texto .}.
Cualquier otra palabra que aparezca entre llaves se ignorar sin constituir un error en el formato (lo que no
excluye que las aplicacones que muestren grficos avisen de una palabra irreconocida).

Al contrario que en el bloque Jerarquia, en donde los parmetros de representacin para un elemento los define
el primer criterio de seleccin que satisfaga el elemento, en el bloque Ver la visibilidad queda definida por el ltimo
criterio de seleccin que el elemento cumple.


-- Varias vistas

Los bloques Ver y Jerarqua pueden indicar, tras la misma palabra, un nmero que especifique
el nmero de vista a la que se aplican, para los programas que permitan varias vistas. Ej.,

\begin Ver 1
...
\end

\begin Ver 2
...
\end

...

Si existe un bloque Ver sin nmero sus indicaciones se aplican a todas las vistas; las de las
dems vistas acumulndose a ellas. Los mismo rige para un bloque Jerarqua sin nmero,
pero en este caso sus indicaciones se acumulan detrs de las de cada bloque numerado.

El resto de la informacin especfica para cada vista se indica en bloques Vista, por ejemplo

\begin Vista 2
...
\end

La transformacin geomtrica que definie la posicin en la vista de cada punto del objeto
se dar en un subbloque Transformacin, siendo su formato especfico para cada aplicacin.
Puede ir desde una matriz de rotacin a una proyeccin cartogrfica completa.
El resto de la informacin en un bloque Vista es especfica para cada aplicacin.


-- Extensiones futuras

Aadir a los criterios de seleccin variables que representen parmetros del elemento. Para permitir
por ejemplo que se vean solamente los elementos con Z mayor que 500, o que los segmentos de
tipo=60 (por ejemplo) se representen ms gruesos si su longitud es mayor que 0.2, etc.


FICHERO DE FORMAS, .fdf

Cada forma es un mapa de bits. El fichero de formas est constitudo por una sucesin de bloques
como el que sigue:

\begin formas
numero 020
limites -3 3 -2 3
centro 0 -0.29
uno #

<formas>

\end

    "nmero" indica el nmero que corresponde a la primera forma tras la cabecera del bloque; las siguientes
tendrn los nmeros sucesivos. Cada forma tiene un pxel con coordenadas (0,0) de cara a la definicin
de la forma. La lnea "limites" indica los valores xmin xmax ymin ymax segn ese sistema de coordenadas.
Ningn pixel puede salirse del recuadro definido por esos valores. Puede existir opcionalmente otra lnea igual que
la de lmites pero encabezada por la palabra "box". Los valores xmin, etc. indicados para box definen otro
rectngulo que puede ser distinto del de lmites. El visor de grficos de Aerotri lo ignora.
    "centro" indica las coordenadas del centro de la figura respecto al centro del pxel 0,0. Es el punto de la forma
que ha de situarse exactamente en las coordenadas del punto que la forma est representando. Se emplea
para dibujar las formas con precisin subpxel. Sus coordenadas deben estar comprendidas en el intervalo
[-0.5,0.5] para que los programas que no empleen esta informacin situen las formas en posicin correcta.
    Tras la cabecera (la lnea "uno" se explica ms adelante) vienen las formas, cada una de las cuales debe constar
exactamente de ymax-ymin+1 lneas con xmax-xmin+1 caracteres cada una. De los caracteres que aparezcan
se interpretan todos como 0, e.d., ausencia de figura, excepto uno que se interpreta como 1, y es el definido
en la lnea "uno". De esta manera cada cual puede emplear para indicar ceros y unos los caracteres que le
permitan ver mejor la forma. Por ejemplo, el autor escribi las formas viendo el fichero con la fuente
Wingdings 2 a tamao 5, y para la combiancin de fuente, tamao y editor de texto consider que como
mejor se vean las formas es empleando para 0 y 1 los caracteres que se pueden ver en el fichero formas.fdf.
Los caracteres nulo (0), espacio (32), tabulacin horizontal (8), as como los finales de lnea 10 y 13 (vara
segn el sistema operativo) no se pueden emplear como uno, pero ntese que el espacio y la tabulacin s
se pueden emplear como cero.

A todas las formas de un bloque son de aplicacin todos los parmetros de la cabecera excepto nmero, que
va aumentando de uno en uno dentro del bloque como se explic. Cada "numero" de un bloque tiene que
ser mayor que el nmero de la ltima figura del bloque anterior, pero no necesariamente una unidad mayor
exactamente. No es necesario que el "numero" del primer bloque sea cero.
Ninguna figura puede tener el nmero 0200 (e.d., 128), porque est reservado para la forma vaca; es decir,
que un punto con ese nmero de forma tiene una representacin vaca (pero existe, en su posicin, y se puede
seleccionar o emplear para cualquier otro fin).


********

La mayor parte de las posibilidades de este formato todava no estn implementadas en el visor de grficos de Aerotri,
pero cualquier persona puede programar un visor/editor ms potente.

Javier Mgica, 2009, 2010, 2011
