#ifndef __IUP_PLOT_CTRL_H__
#define __IUP_PLOT_CTRL_H__


#define IUP_PLOT_MAX_PLOTS 20

enum { IUP_PLOT_NATIVE, IUP_PLOT_NATIVEPLUS, IUP_PLOT_IMAGERGB, IUP_PLOT_OPENGL };
enum { IUP_PLOT_CROSSHAIR_NONE, IUP_PLOT_CROSSHAIR_VERT, IUP_PLOT_CROSSHAIR_HORIZ };

struct _IcontrolData
{
  iupCanvas canvas;  /* from IupCanvas (must reserve it) */

  iupPlot* plot_list[IUP_PLOT_MAX_PLOTS];
  int plot_list_count;

  iupPlot* current_plot;
  int current_plot_index;

  int numcol;
  int sync_view;
  int merge_view;
  int read_only;

  cdCanvas* cd_canvas;
  int graphics_mode;
  int default_font_size;
  int default_font_style;

  int last_click_x,
      last_click_y,
      last_click_plot;
  int show_cross_hair;

  int last_pos_x,
      last_pos_y,
      last_pos_moving;

  int last_cursor_plot,
      last_cursor_ds,
      last_cursor_sample;
};

void iupPlotRegisterAttributes(Iclass* ic);

void iupPlotUpdateViewports(Ihandle* ih);
void iupPlotRedraw(Ihandle* ih, int flush, int only_current, int reset_redraw);
void iupPlotResetZoom(Ihandle *ih, int redraw);
void iupPlotSetZoom(Ihandle *ih, int dir);

void iupPlotSetPlotCurrent(Ihandle* ih, int p);
void iupPlotShowMenuContext(Ihandle* ih, int screen_x, int screen_y, int x, int y);

int iupStrToColor(const char* str, long *color);

#endif
