/** \file
 * \brief Canvas Draw API
 *
 * See Copyright Notice in "iup.h"
 */

module iup.iupdraw;

import iup.iup : Ihandle;

//version(DigitalMars) version(Windows) { pragma(lib, "iup.lib"); } // import iup.iup required anyway, that comes with this pragma

extern(C) @nogc nothrow :

/* all functions can be used only in IUP canvas and inside the ACTION callback */

void IupDrawBegin(Ihandle* ih); /// See_Also: https://webserver2.tecgraf.puc-rio.br/iup/en/func/iupdraw.html
void IupDrawEnd(Ihandle* ih); /// See_Also: https://webserver2.tecgraf.puc-rio.br/iup/en/func/iupdraw.html

/* all primitives can be called only between calls to Begin and End */

void IupDrawSetClipRect(Ihandle* ih, int x1, int y1, int x2, int y2);
void IupDrawResetClip(Ihandle* ih);

/* color controlled by the attribute DRAWCOLOR */
/* line style or fill controlled by the attribute DRAWSTYLE */

void IupDrawParentBackground(Ihandle* ih);
void IupDrawLine(Ihandle* ih, int x1, int y1, int x2, int y2);
void IupDrawRectangle(Ihandle* ih, int x1, int y1, int x2, int y2);
void IupDrawArc(Ihandle* ih, int x1, int y1, int x2, int y2, double a1, double a2);
void IupDrawPolygon(Ihandle* ih, int* points, int count);
void IupDrawText(Ihandle* ih, const(char)* text, int len, int x, int y);
void IupDrawImage(Ihandle* ih, const(char)* name, int make_inactive, int x, int y);
void IupDrawSelectRect(Ihandle* ih, int x1, int y1, int x2, int y2);
void IupDrawFocusRect(Ihandle* ih, int x1, int y1, int x2, int y2);

void IupDrawGetSize(Ihandle* ih, int *w, int *h);
void IupDrawGetTextSize(Ihandle* ih, const(char)* str, int *w, int *h);
void IupDrawGetImageInfo(const(char)* name, int *w, int *h, int *bpp);