	{ Ce schema decrit la presentation d'un arbre qui pousse
	  horizontalement ou verticalement

	  V. Quint	Mai 1994	}

PRESENTATION Arbre2;

DEFAULT

   BEGIN
   HorizRef: * . Bottom;
   VertRef: * . Left;
   Width: Enclosed . Width;
   Height: Enclosed . Height;
   HorizPos: Left = Enclosing . Left;
   VertPos: Top = Enclosing . Top;
   Visibility: Enclosing =;
   Font: Enclosing =;
   Style: Enclosing =;
   Size: Enclosing =;
   LineSpacing: Enclosing =;
   Justify: No;
   Adjust: Enclosing =;
   Indent: Enclosing =;
   Depth: Enclosing =;
   UnderLine: Enclosing =;
   Thickness: Enclosing =;
   Foreground: Enclosing =;
   BackGround: Enclosing =;
   FillPattern: Enclosing =;
   LineWeight: Enclosing =;
   END;
	
BOXES

   LienVert:
	BEGIN
	VertPos: Bottom = Next Sous_arbre . Top + 0.1;
	HorizPos: Left = Next Sous_arbre . VMiddle;
	Height: Top = Enclosing . Top;
	Width: Right = Enclosing . VMiddle;
	Content: Graphics '/';
	END;

   LienHoriz:
	BEGIN
	VertPos: Bottom = Enclosing . HMiddle;
	HorizPos: Left = Enclosing . Left;
	Height: Top = Next Sous_arbre . HMiddle;
	Width: Right = Next Sous_arbre . Left;
	Content: Graphics '/';
	END;

   TraitVertical:
	BEGIN
	Visibility: Enclosing -1 min 5;
	Width: 0.6;
	Height: Previous Descendants . Height;
	VertPos: Top = Previous Descendants . Top;
	HorizPos: Right = Previous Descendants . Left;
	Content: Graphics 'v';
	END;

   BoiteRectangle:
	BEGIN
	Content: Graphics 'R';
	HorizPos: Left = Previous Noeud . Left - 0.3;
	VertPos: Top = Previous Noeud . Top - 0.3;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Enclosing + 1;
	Indent: 0;
	BackGround: Creator =;
	FillPattern: Creator =;
	END;

   RectangleAvecOmbre:
	BEGIN
	Content: Graphics 'R';
	HorizPos: Left = Previous Noeud . Left - 0.3;
	VertPos: Top = Previous Noeud . Top - 0.3;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Creator + 1;
	LineStyle: Solid;
	BackGround: Creator =;
	FillPattern: backgroundcolor;
	Indent: 0;
	END;

   OmbreRectangle:
	BEGIN
	Content: Graphics 'R';
	Background: Black;
	Foreground: Black;
	FillPattern: backgroundcolor;
	HorizPos: Left = Previous Noeud . Left - 0.1;
	VertPos: Top = Previous Noeud . Top - 0.1;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Creator + 3;
	LineStyle: Solid;
	END;

   BoiteArrondie:
	BEGIN
	Content: Graphics 'C';
	HorizPos: Left = Previous Noeud . Left - 0.3;
	VertPos: Top = Previous Noeud . Top - 0.3;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Enclosing + 1;
	Indent: 0;
	BackGround: Creator =;
	FillPattern: Creator =;
	END;

   ArrondiAvecOmbre:
	BEGIN
	Content: Graphics 'C';
	HorizPos: Left = Previous Noeud . Left - 0.3;
	VertPos: Top = Previous Noeud . Top - 0.3;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Creator + 1;
	LineStyle: Solid;
	BackGround: Creator =;
	FillPattern: backgroundcolor;
	Indent: 0;
	END;

   OmbreArrondi:
	BEGIN
	Content: Graphics 'C';
	Background: Black;
	Foreground: Black;
	FillPattern: backgroundcolor;
	HorizPos: Left = Previous Noeud . Left - 0.1;
	VertPos: Top = Previous Noeud . Top - 0.1;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Creator + 3;
	LineStyle: Solid;
	END;

   BoiteEllipse:
	BEGIN
	Content: Graphics 'c';
	HorizPos: Left = Previous Noeud . Left - 0.3;
	VertPos: Top = Previous Noeud . Top - 0.3;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Enclosing + 1;
	Indent: 0;
	BackGround: Creator =;
	FillPattern: Creator =;
	END;

   EllipseAvecOmbre:
	BEGIN
	Content: Graphics 'c';
	HorizPos: Left = Previous Noeud . Left - 0.3;
	VertPos: Top = Previous Noeud . Top - 0.3;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Creator + 1;
	LineStyle: Solid;
	BackGround: Creator =;
	FillPattern: backgroundcolor;
	Indent: 0;
	END;

   OmbreEllipse:
	BEGIN
	Content: Graphics 'c';
	Background: Black;
	Foreground: Black;
	FillPattern: backgroundcolor;
	HorizPos: Left = Previous Noeud . Left - 0.1;
	VertPos: Top = Previous Noeud . Top - 0.1;
	Width: Previous Noeud . Width + 0.6;
	Height: Previous Noeud . Height + 0.6;
	Depth: Creator + 3;
	LineStyle: Solid;
	END;

RULES

   Arbre2:
	BEGIN
	HorizPos: Left = Enclosing . Left;
	VertPos: Top = Previous . Bottom + 1;
	Adjust: VMiddle;
	Indent: 0;
	Gather: Yes;
	PageBreak: No;
	LineBreak: No;
	LineWeight: 1 pt;
	LineStyle: Solid;
	END;

   Sous_arbre:
	BEGIN
	END;

   Noeud:
	BEGIN
	HorizPos: nil;
	VertPos: Top = Enclosing . Top + 0.3;
	END;

   Descendants:
	BEGIN
	VertPos: Top = Previous . Bottom;
	HorizPos: VMiddle = Noeud . VMiddle;
	Visibility: Enclosing -1 min 5;
	END;

ATTRIBUTES

   Disposition =  Liste_indent\351e:
	BEGIN
	Width: Enclosing . Width;
	Adjust: Left;
	Indent: -3;
	END;
   Disposition(Sous_arbre) = Arbre_vertical:
	BEGIN
	HorizPos: Left = Previous Sous_arbre . Right + 1;
	VertPos: Top = Enclosing . Top + 1.1;
	CreateBefore(LienVert);
	END;
   Disposition(Sous_arbre) = Arbre_horizontal:
	BEGIN
	HorizPos: Left = Enclosing . Left + 2;
	VertPos: Top = Previous Sous_arbre . Bottom + 0.5;
	CreateBefore(LienHoriz);
	END;
   Disposition(Sous_arbre) = Liste_indent\351e:
	BEGIN
	HorizPos: Left = Enclosing . Left;
	Width: Enclosing . Width;
	VertPos: Top = Previous . Bottom;
	END;
   Disposition(Noeud) = Arbre_horizontal:
	BEGIN
	HorizPos: Left = Enclosing . Left + 0.3;
	VertPos : nil;
	END;
   Disposition(Noeud) = Liste_indent\351e:
	BEGIN
	HorizPos: Left = Enclosing . Left + 0.3;
	Width: Enclosing . Width - 0.6;
	VertPos: Top = Previous . Bottom;
	Line;
	Adjust: Left;
	Indent: -3;
	END;
   Disposition(Descendants) = Arbre_horizontal:
	BEGIN
	VertPos: HMiddle = Noeud . HMiddle;
	HorizPos : Left = Previous . Right;
	END;
   Disposition(Descendants) = Liste_indent\351e:
	BEGIN
	CreateAfter(TraitVertical);
	Width: Enclosing . Width - 1;
	VertPos: Top = Previous . Bottom;
	HorizPos: Left = Enclosing . Left + 1;
	END;

   Largeur_noeuds(Noeud) = Fixe:
	BEGIN
	Width: 5;
	Line;
	END;
   Largeur_noeuds(Noeud) = Variable:
	Width: Enclosed . Width;

   Cadre_noeuds(Noeud) = Rectangle:
	CreateAfter(BoiteRectangle);
   Cadre_noeuds(Noeud) = Rectangle_ombr\351:
	BEGIN
	CreateAfter(RectangleAvecOmbre);
	CreateAfter(OmbreRectangle);
	END;
   Cadre_noeuds(Noeud) = Arrondi:
	CreateAfter(BoiteArrondie);
   Cadre_noeuds(Noeud) = Arrondi_ombr\351:
	BEGIN
	CreateAfter(ArrondiAvecOmbre);
	CreateAfter(OmbreArrondi);
	END;
   Cadre_noeuds(Noeud) = Ellipse:
	CreateAfter(BoiteEllipse);
   Cadre_noeuds(Noeud) = Ellipse_ombr\351e:
	BEGIN
	CreateAfter(EllipseAvecOmbre);
	CreateAfter(OmbreEllipse);
	END;

END
