/* voc 2.1.0 [2025/05/18] for gcc LP64 on slackware xtspaF */

#ifndef ulmPlotters__h
#define ulmPlotters__h

#include "SYSTEM.h"
#include "ulmObjects.h"
#include "ulmServices.h"

typedef
	struct ulmPlotters_PlotterRec *ulmPlotters_Plotter;

typedef
	void (*ulmPlotters_ArcProc)(ulmPlotters_Plotter, INT32, INT32, INT32, INT32, INT32, INT32);

typedef
	void (*ulmPlotters_CircleProc)(ulmPlotters_Plotter, INT32, INT32, INT32);

typedef
	void (*ulmPlotters_CloseProc)(ulmPlotters_Plotter);

typedef
	struct ulmPlotters_DescriptionRec *ulmPlotters_Description;

typedef
	struct ulmPlotters_DescriptionRec { /* ulmObjects_ObjectRec */
		INT32 xmin;
		char _prvt0[12];
	} ulmPlotters_DescriptionRec;

typedef
	void (*ulmPlotters_EraseProc)(ulmPlotters_Plotter);

typedef
	void (*ulmPlotters_GetSpaceProc)(ulmPlotters_Plotter, INT32*, INT32*, INT32*, INT32*);

typedef
	struct ulmPlotters_InterfaceRec *ulmPlotters_Interface;

typedef
	void (*ulmPlotters_SetSpaceProc)(ulmPlotters_Plotter, INT32, INT32, INT32, INT32);

typedef
	void (*ulmPlotters_MoveProc)(ulmPlotters_Plotter, INT32, INT32);

typedef
	void (*ulmPlotters_LineProc)(ulmPlotters_Plotter, INT32, INT32, INT32, INT32);

typedef
	void (*ulmPlotters_StringProc)(ulmPlotters_Plotter, CHAR*, ADDRESS );

typedef
	void (*ulmPlotters_SetLineModeProc)(ulmPlotters_Plotter, INT8);

typedef
	void (*ulmPlotters_SetLineWidthProc)(ulmPlotters_Plotter, INT32);

typedef
	struct ulmPlotters_InterfaceRec { /* ulmObjects_ObjectRec */
		ulmPlotters_SetSpaceProc setSpace;
		ulmPlotters_EraseProc erase;
		ulmPlotters_MoveProc move, cont, point;
		ulmPlotters_LineProc line;
		ulmPlotters_ArcProc arc;
		ulmPlotters_CircleProc circle;
		ulmPlotters_StringProc string;
		ulmPlotters_SetLineModeProc setLineMode;
		ulmPlotters_SetLineWidthProc setLineWidth;
		ulmPlotters_CloseProc close;
	} ulmPlotters_InterfaceRec;

typedef
	struct ulmPlotters_PlotterRec { /* ulmServices_ObjectRec */
		INT64 _prvt0;
		char _prvt1[57];
	} ulmPlotters_PlotterRec;



import ADDRESS *ulmPlotters_DescriptionRec__typ;
import ADDRESS *ulmPlotters_InterfaceRec__typ;
import ADDRESS *ulmPlotters_PlotterRec__typ;

import void ulmPlotters_Arc (ulmPlotters_Plotter plotter, INT32 xcenter, INT32 ycenter, INT32 xstart, INT32 ystart, INT32 xend, INT32 yend);
import void ulmPlotters_Circle (ulmPlotters_Plotter plotter, INT32 xcenter, INT32 ycenter, INT32 radius);
import void ulmPlotters_Close (ulmPlotters_Plotter plotter);
import void ulmPlotters_Cont (ulmPlotters_Plotter plotter, INT32 xto, INT32 yto);
import void ulmPlotters_Erase (ulmPlotters_Plotter plotter);
import UINT32 ulmPlotters_GetCapabilities (ulmPlotters_Plotter plotter);
import void ulmPlotters_GetMaxSpace (ulmPlotters_Plotter plotter, INT32 *xmin, INT32 *ymin, INT32 *xmax, INT32 *ymax);
import void ulmPlotters_GetSpace (ulmPlotters_Plotter plotter, INT32 *xmin, INT32 *ymin, INT32 *xmax, INT32 *ymax);
import void ulmPlotters_Init (ulmPlotters_Plotter plotter, ulmPlotters_Interface if_, UINT32 caps, ulmPlotters_Description desc);
import void ulmPlotters_Line (ulmPlotters_Plotter plotter, INT32 xfrom, INT32 yfrom, INT32 xto, INT32 yto);
import void ulmPlotters_Move (ulmPlotters_Plotter plotter, INT32 xto, INT32 yto);
import void ulmPlotters_Point (ulmPlotters_Plotter plotter, INT32 xpoint, INT32 ypoint);
import void ulmPlotters_SetLineMode (ulmPlotters_Plotter plotter, INT8 mode);
import void ulmPlotters_SetLineWidth (ulmPlotters_Plotter plotter, INT32 width);
import void ulmPlotters_SetSpace (ulmPlotters_Plotter plotter, INT32 xmin, INT32 ymin, INT32 xmax, INT32 ymax);
import void ulmPlotters_String (ulmPlotters_Plotter plotter, CHAR *str, ADDRESS str__len);
import void *ulmPlotters__init(void);


#endif // ulmPlotters
