/*******************************************************************************
Funplot
Comfortable 2D display library for screen graphics with Windows.
Friend of the class 'Fun' this facade class provides a fast way to display
2-dimensional graphics online (during simulation) or for post-processing
on screen. Multiple graphs (lines) within one window are foreseen, multiple
instantiations of windows are the big advantage.
$Name: Funplot_v10 $
$Revision: 1.6 $
$Date: 2006/03/23 11:05:26 $
Copyright © 1998-2006 Domenico Reggio, Software-Engineering
*******************************************************************************/
#ifndef FUNPLOT_H
#define FUNPLOT_H
#include <windows.h>
#include "FunplotDef.h"
class Funplot
{
friend class Fun;
Fun *fun;
public:
// Constructors, Destructor, Assign Operator
Funplot(char *funTitle="Funplot");
Funplot(Funplot&);
Funplot& operator=(Funplot&);
~Funplot(void);
// Initialisation and Set Functions for
// ... Plot Window
void SetWindowPos(short xWinPos, short yWinPos);
void SetAutoWindow(short numRows, short numCols, short element);
void SetWindowSize(short xWinSize, short yWinSize);
void SetWindowTitle(char *windowTitle);
void SetFullScreen(void);
void SetZoomMode(short zoomMode);
void SetColorScheme(short colorScheme);
void SetUserFile(short userFile);
void SetFocus(void);
void Rise(void);
// ... Axes System
void SetRange(double xMin, double xMax, double yMin, double yMax,
bool storeLast=true);
void SetTicks(double xTick, double yTick);
void SetTicks(double xTick, double yTick, double xSubTick, double ySubTick);
void SetXTicks(double xTick);
void SetXTicks(double xTick, double xSubTick);
void SetYTicks(double yTick);
void SetYTicks(double yTick, double ySubTick);
void SetLables(char* xLable, char* yLable, char* axesTitle="");
void SetUserInterface(short userInterface);
void ShowCoorSystem(short showCoorSystem);
void ShowLegend(short showLegend);
void ShowGrid(short showGrid);
void SetAspectRatio(short aspectRatio);
void SetOriginalRange(void);
void SetColorSet(short colorPalette, short numColors=16);
// ... Graphs
void SetGraphsReadMode(short readMode);
void SetGraphLinesDrawRate(short linesDrawRate, short graphNum=0);
void SetGraphPointsDrawRate(short pointsDrawRate, short graphNum=0);
void SetGraphMarkerDrawRate(short markerDrawRate, short graphNum=0);
void SetGraphFixDrawRate(bool fixDrawRate, short graphNum=0);
void SetGraphLineWidth(short lineWidth, short graphNum=0);
void SetGraphColorNum(short colorNum, short graphNum=0);
void SetGraphMarkerType(short markerType, short graphNum=0);
void SetGraphType(short type, short graphNum=0);
void SetGraphLable(char* lable, short graphNum=0);
void SetGraphPointsSize(short pointsSize, short graphNum=0);
void SetGraphMarkerSize(short markerSize, short graphNum=0);
void ShowGraphLines(short showLines, short graphNum=0);
void ShowGraphPoints(short showPoints, short graphNum=0);
void ShowGraphMarker(short showMarker, short graphNum=0);
// Graphs Output
void LineTo(double x, double y, short graphNum=1);
void LineOut(double x1, double y1, double x2, double y2,
short graphNum=1);
void PixelOut(double x, double y, short graphNum=1);
void CircleOut(double x, double y, double r, short numPoints,
short graphNum=1);
void RectangleOut(double x, double y, double dx, double dy,
short graphNum=1);
void PolylineOut(double *x, double *y, long numPoints,
double factorX, double factorY, short graphNum=1);
void ClosedPolylineOut(double *x, double *y, long numPoints,
double factorX, double factorY, short graphNum=1);
void AddLineTo(double x, double y, short graphNum=1);
void AddPixel(double x, double y, short graphNum=1);
void NewLine(short graphNum=1);
// Graph Handling
void SetNumGraphs(short numGraphs);
short GetNumGraphs(void);
long GetGraphNumPoints(short graphNum=1);
void GetGraphData(double* x, double* y, long pointNum, short graphNum=1);
void GetGraphDataAtt(short* att, long pointNum, short graphNum=1);
short NewGraph(void);
void DeleteGraph(short graphNum);
void DeleteAllGraphs(void);
// Autorange features
void AutoRange(void);
void AutoRangeX(void);
void AutoRangeY(void);
void AutoTicks(void);
void AutoXTicks(void);
void AutoYTicks(void);
// Copy, Print or Save Figure
void CopyToClipboard(short colorMode, short resolution=0);
void SaveFigure(short colorMode, short resolution, char* fileName);
void Print(short colorMode, double printFactor=1);
void PrintSession(short colorMode, double printFactor=1);
// File Opening, Adding and Save
bool FileOpen(short openInfo);
void FileAutoOpen(char* fileName, short openInfo);
bool FileOpenDirect(char* fileName, short openInfo);
bool FileSave(short saveInfo);
bool FileSaveDirect(char* fileName, short saveInfo);
bool FileOpenDialogBox(char* filePathAndName, char* boxTitle="Open",
char* filterDisplay="", char* filterPattern="");
bool FileSaveDialogBox(char* filePathAndName, char* boxTitle="Save",
char* filterDisplay="", char* filterPattern="");
short CheckUserFileRequest(void);
// Uncategorised
void Update(void);
void MessageBoxExclamation(char *messageText);
void MessageBoxInformation(char *messageText);
// Class Register
static void ClassRegister(HINSTANCE hInstance, HINSTANCE hPrevInstance,
int nCmdShow);
// Messages Control
static void MessageCheck(void);
static int MessageLoop(void);
static short CheckUserBreak(void);
// Instances Control
static void CloseAllWindows(void);
static void MinimizeAllWindows(void);
static void MaximizeAllWindows(void);
static void ShowNormalAllWindows(void);
void ShowWindow(void);
void HideWindow(void);
// Default Settings for Session
static void SetDefValue(char* paramStr, double value);
};
#endif