[vtkusers] Charting Tool in Fox?

Jean-Dominique Barnichon jeando.barnichon at free.fr
Wed Jun 14 19:01:43 EDT 2006


Dear all,


as far as I understand from the mailing list, there are few people out 
there who are looking for an easy way to draw 2D charts under Fox.
The obvious way should be to use the FXChart base widget that can be 
found under the /chart directory of the Fox installation directory.
But from the mailing list threads, it seems that the FXChart is not 
working yet (Jeroen, could you give up to date information on FXChart, 
and when we could expect it to be working?). Am I wrong or right? Did 
anybody succeed in using it? If yes, I would very much appreciate to 
have a code snippet showing how to use it.


The point is that Fox is really lacking a 2D charting widget.

Actually, there is an existing one called FXPlot 
(http://sourceforge.net/projects/fxplot) that is working and very easy 
to use with Fox. The trouble with FXPlot is that interaction is rather 
limited, e.g. you cannot select objects on the chart.

There is also a C++lib called PPlot (http://pplot.sourceforge.net/) that 
seems rather cool, with most interaction and stuff you would expect. 
Interestingly, this lib claims to be highly portable (for example it has 
been ported to wxWindows, Ruby, Python, Qt). Apparently, all the job 
would consist on implementing an abstract class (Painter, see basic 
class definition below) to link the PPlot library with a Fox widget. I 
have the feeling this should not be that much work, but I am not really 
sure on how to do this and where to start. Any idea/advice/help is welcomed.


Cheers,
Jean-Do


class Painter {
public:
// basic
virtual void DrawLine (int inX1, int inY1, int inX2, int inY2)=0;
virtual void FillRect (int inX, int inY, int inW, int inH)=0;
virtual void SetClipRect (int inX, int inY, int inW, int inH)=0;
// widget geometry
virtual long GetWidth () const=0;
virtual long GetHeight () const=0;
// color
virtual void SetLineColor (int inR, int inG, int inB)=0;
virtual void SetFillColor (int inR, int inG, int inB)=0;
//text
virtual long CalculateTextDrawSize (const char *inString)=0;
virtual long GetFontHeight () const =0;
virtual void DrawText (int inX, int inY, const char *inString)=0;
virtual void DrawRotatedText (int inX, int inY, float inDegrees, const 
char *inString)=0;
};




More information about the vtkusers mailing list