
/*
**  This file forms part of the GOBLIN C++ Class Library.
**
**  Written by Christian Fremuth-Paeger, August 2000.
**  
**  Copying, compiling, distribution and modification
**  of this source code is permitted only in accordance
**  with the GOBLIN general licence information.
*/             


#if !defined(_EXP2XFIG_H_)

#define _EXP2XFIG_H_

#include <display.h>
#include <fstream.h>


class exp2xfig : public goblinDisplay
{                                        
private:

    ofstream		expFile;
    unsigned        xfigMaxX;
    unsigned        xfigMaxY;

public:

	exp2xfig(abstractMixedGraph &GG,char *expFileName) throw(ERFile);
	~exp2xfig() throw();

    unsigned long   Size() throw();
    unsigned long   Allocated() throw();
    
	void			DisplayLegenda(long int xm,long int ym,long int radius) throw();
	void			WriteNodeLegenda(int x,int y,char *index) throw();
    
	void			DisplayArc(TArc a) throw();
	void			WriteArc(TArc a,TNode u,TNode v,int lineStyle,
                            int thickness,int colour,int depth) throw();
	void			DisplayArrow(TArc a,TNode u,TNode v) throw();
    void			WriteArrow(int xtop,int ytop,double dx,double dy) throw();
	void			DisplayArcLabel(TArc a,TNode u,TNode v) throw();

	void			DisplayNode(TNode v) throw();
	void			WriteNode0(int x,int y,int fillColour) throw();
	void			WriteNode1(int x,int y,int fillColour) throw();
	void			WriteNode2(int x,int y,int fillColour) throw();
	void			WriteNodeLabel(TNode v,int x,int y) throw();
	
};                             


#endif
