3807 lines
124 KiB
C++
Executable File
3807 lines
124 KiB
C++
Executable File
/*
|
|
* IupPlot element attributes
|
|
*
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
#include <string.h>
|
|
|
|
#include "iupPlot.h"
|
|
|
|
#include "iup_plot.h"
|
|
|
|
#include "iup_class.h"
|
|
#include "iup_register.h"
|
|
#include "iup_object.h"
|
|
#include "iup_attrib.h"
|
|
#include "iup_str.h"
|
|
#include "iup_drv.h"
|
|
#include "iup_drvfont.h"
|
|
#include "iup_stdcontrols.h"
|
|
|
|
#include "iup_plot_ctrl.h"
|
|
|
|
|
|
|
|
#ifndef M_E
|
|
#define M_E 2.71828182846
|
|
#endif
|
|
|
|
|
|
static void iPlotCheckCurrentDataSet(Ihandle* ih)
|
|
{
|
|
int count = ih->data->current_plot->mDataSetListCount;
|
|
if (ih->data->current_plot->mCurrentDataSet == count)
|
|
ih->data->current_plot->mCurrentDataSet--;
|
|
}
|
|
|
|
static void iPlotPlotInsert(Ihandle* ih, int p)
|
|
{
|
|
for (int i = ih->data->plot_list_count; i > p; i--)
|
|
ih->data->plot_list[i] = ih->data->plot_list[i - 1];
|
|
|
|
ih->data->plot_list[p] = new iupPlot(ih, ih->data->default_font_style, ih->data->default_font_size);
|
|
|
|
ih->data->plot_list_count++;
|
|
|
|
if (ih->data->cd_canvas)
|
|
iupPlotUpdateViewports(ih);
|
|
}
|
|
|
|
static void iPlotPlotRemove(Ihandle* ih, int p)
|
|
{
|
|
if (ih->data->current_plot_index == ih->data->plot_list_count - 1)
|
|
ih->data->current_plot_index--;
|
|
|
|
delete ih->data->plot_list[p];
|
|
|
|
for (int i = p; i < ih->data->plot_list_count; i++)
|
|
ih->data->plot_list[i] = ih->data->plot_list[i + 1];
|
|
|
|
ih->data->plot_list[ih->data->plot_list_count - 1] = NULL;
|
|
|
|
ih->data->plot_list_count--;
|
|
|
|
iupPlotSetPlotCurrent(ih, ih->data->current_plot_index);
|
|
|
|
if (ih->data->cd_canvas)
|
|
iupPlotUpdateViewports(ih);
|
|
}
|
|
|
|
static char* iupStrReturnColor(long color)
|
|
{
|
|
unsigned char r, g, b, a;
|
|
cdDecodeColor(color, &r, &g, &b);
|
|
a = cdDecodeAlpha(color);
|
|
return iupStrReturnRGBA(r, g, b, a);
|
|
}
|
|
|
|
int iupStrToColor(const char* str, long *color)
|
|
{
|
|
unsigned char r, g, b, a;
|
|
if (iupStrToRGBA(str, &r, &g, &b, &a))
|
|
{
|
|
*color = cdEncodeColor(r, g, b);
|
|
*color = cdEncodeAlpha(*color, a);
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static long iPlotGetColor(Ihandle* ih, const char* value, const char* default_attrib)
|
|
{
|
|
long color = 0;
|
|
if (iupStrToColor(value, &color))
|
|
return color;
|
|
else
|
|
{
|
|
value = IupGetAttribute(ih, default_attrib);
|
|
iupStrToColor(value, &color);
|
|
return color;
|
|
}
|
|
}
|
|
|
|
static int iPlotGetCDFontStyle(const char* value)
|
|
{
|
|
if (!value)
|
|
return -1;
|
|
if (iupStrEqualNoCase(value, "PLAIN") || value[0] == 0)
|
|
return CD_PLAIN;
|
|
if (iupStrEqualNoCase(value, "BOLD"))
|
|
return CD_BOLD;
|
|
if (iupStrEqualNoCase(value, "ITALIC"))
|
|
return CD_ITALIC;
|
|
if (iupStrEqualNoCase(value, "BOLDITALIC") ||
|
|
iupStrEqualNoCase(value, "BOLD ITALIC") ||
|
|
iupStrEqualNoCase(value, "ITALIC BOLD"))
|
|
return CD_BOLD_ITALIC;
|
|
return -1;
|
|
}
|
|
|
|
static int iPlotGetCDFontSize(const char* value)
|
|
{
|
|
if (!value)
|
|
return 0;
|
|
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
return ii;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetPlotFontSize(Ihandle* ih, int size)
|
|
{
|
|
if (size)
|
|
return iupStrReturnInt(size);
|
|
else
|
|
return IupGetAttribute(ih, "FONTSIZE");
|
|
}
|
|
|
|
static char* iPlotGetPlotFontStyle(Ihandle* ih, int style)
|
|
{
|
|
if (style >= CD_PLAIN && style <= CD_BOLD_ITALIC)
|
|
{
|
|
const char* style_str[4] = { "Plain", "Bold", "Italic", "Bold Italic" };
|
|
return (char*)style_str[style];
|
|
}
|
|
else
|
|
return IupGetAttribute(ih, "FONTSTYLE");
|
|
}
|
|
|
|
static char* iPlotGetPlotPenStyle(int style)
|
|
{
|
|
if (style >= CD_CONTINUOUS && style <= CD_DASH_DOT_DOT)
|
|
{
|
|
const char* style_str[5] = { "CONTINUOUS", "DASHED", "DOTTED", "DASH_DOT", "DASH_DOT_DOT" };
|
|
return (char*)style_str[style];
|
|
}
|
|
else
|
|
return "CONTINUOUS"; /* should never happen */
|
|
}
|
|
|
|
static int iPlotGetCDPenStyle(const char* value)
|
|
{
|
|
if (!value || iupStrEqualNoCase(value, "CONTINUOUS"))
|
|
return CD_CONTINUOUS;
|
|
else if (iupStrEqualNoCase(value, "DASHED"))
|
|
return CD_DASHED;
|
|
else if (iupStrEqualNoCase(value, "DOTTED"))
|
|
return CD_DOTTED;
|
|
else if (iupStrEqualNoCase(value, "DASH_DOT"))
|
|
return CD_DASH_DOT;
|
|
else if (iupStrEqualNoCase(value, "DASH_DOT_DOT"))
|
|
return CD_DASH_DOT_DOT;
|
|
else
|
|
return CD_CONTINUOUS;
|
|
}
|
|
|
|
static char* iPlotGetPlotMarkStyle(int style)
|
|
{
|
|
if (style >= CD_PLUS && style <= CD_HOLLOW_DIAMOND)
|
|
{
|
|
const char* style_str[9] = { "PLUS", "STAR", "CIRCLE", "X", "BOX", "DIAMOND", "HOLLOW_CIRCLE", "HOLLOW_BOX", "HOLLOW_DIAMOND" };
|
|
return (char*)style_str[style];
|
|
}
|
|
else
|
|
return "X"; /* should never happen */
|
|
}
|
|
|
|
static int iPlotGetCDMarkStyle(const char* value)
|
|
{
|
|
if (!value || iupStrEqualNoCase(value, "PLUS"))
|
|
return CD_PLUS;
|
|
else if (iupStrEqualNoCase(value, "STAR"))
|
|
return CD_STAR;
|
|
else if (iupStrEqualNoCase(value, "CIRCLE"))
|
|
return CD_CIRCLE;
|
|
else if (iupStrEqualNoCase(value, "X"))
|
|
return CD_X;
|
|
else if (iupStrEqualNoCase(value, "BOX"))
|
|
return CD_BOX;
|
|
else if (iupStrEqualNoCase(value, "DIAMOND"))
|
|
return CD_DIAMOND;
|
|
else if (iupStrEqualNoCase(value, "HOLLOW_CIRCLE"))
|
|
return CD_HOLLOW_CIRCLE;
|
|
else if (iupStrEqualNoCase(value, "HOLLOW_BOX"))
|
|
return CD_HOLLOW_BOX;
|
|
else if (iupStrEqualNoCase(value, "HOLLOW_DIAMOND"))
|
|
return CD_HOLLOW_DIAMOND;
|
|
else
|
|
return CD_PLUS;
|
|
}
|
|
|
|
|
|
/**************************************************************************************/
|
|
|
|
|
|
static int iPlotSetShowCrossHairAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "HORIZONTAL"))
|
|
ih->data->show_cross_hair = IUP_PLOT_CROSSHAIR_HORIZ;
|
|
else if (iupStrEqualNoCase(value, "VERTICAL"))
|
|
ih->data->show_cross_hair = IUP_PLOT_CROSSHAIR_VERT;
|
|
else
|
|
ih->data->show_cross_hair = IUP_PLOT_CROSSHAIR_NONE;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetShowCrossHairAttrib(Ihandle* ih)
|
|
{
|
|
const char* cross_hair_str[3] = { "NONE", "VERTICAL", "HORIZONTAL" };
|
|
return (char*)cross_hair_str[ih->data->show_cross_hair];
|
|
}
|
|
|
|
|
|
static int iPlotSetAntialiasAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrBoolean(value))
|
|
cdCanvasSetAttribute(ih->data->cd_canvas, "ANTIALIAS", "1");
|
|
else
|
|
cdCanvasSetAttribute(ih->data->cd_canvas, "ANTIALIAS", "0");
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAntialiasAttrib(Ihandle* ih)
|
|
{
|
|
return cdCanvasGetAttribute(ih->data->cd_canvas, "ANTIALIAS");
|
|
}
|
|
|
|
static int iPlotSetRedrawAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
// when REDRAW is set, the default is
|
|
int flush = 1, // always flush
|
|
only_current = 0, // redraw all plots
|
|
reset_redraw = 1; // always render
|
|
|
|
if (iupStrEqualNoCase(value, "NOFLUSH"))
|
|
flush = 0;
|
|
else if (iupStrEqualNoCase(value, "CURRENT"))
|
|
{
|
|
flush = 0; // same as NOFLUSH
|
|
only_current = 1;
|
|
}
|
|
|
|
iupPlotRedraw(ih, flush, only_current, reset_redraw);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetCountAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->current_plot->mDataSetListCount);
|
|
}
|
|
|
|
static int iPlotSetLegendAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrBoolean(value))
|
|
ih->data->current_plot->mLegend.mShow = true;
|
|
else
|
|
ih->data->current_plot->mLegend.mShow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mLegend.mShow);
|
|
}
|
|
|
|
static int iPlotSetLegendPosAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "TOPLEFT"))
|
|
ih->data->current_plot->mLegend.mPosition = IUP_PLOT_TOPLEFT;
|
|
else if (iupStrEqualNoCase(value, "BOTTOMLEFT"))
|
|
ih->data->current_plot->mLegend.mPosition = IUP_PLOT_BOTTOMLEFT;
|
|
else if (iupStrEqualNoCase(value, "BOTTOMRIGHT"))
|
|
ih->data->current_plot->mLegend.mPosition = IUP_PLOT_BOTTOMRIGHT;
|
|
else if (iupStrEqualNoCase(value, "BOTTOMCENTER"))
|
|
ih->data->current_plot->mLegend.mPosition = IUP_PLOT_BOTTOMCENTER;
|
|
else if (iupStrEqualNoCase(value, "TOPRIGHT"))
|
|
ih->data->current_plot->mLegend.mPosition = IUP_PLOT_TOPRIGHT;
|
|
else if (iupStrEqualNoCase(value, "XY"))
|
|
ih->data->current_plot->mLegend.mPosition = IUP_PLOT_XY;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendPosAttrib(Ihandle* ih)
|
|
{
|
|
const char* legendpos_str[] = { "TOPRIGHT", "TOPLEFT", "BOTTOMRIGHT", "BOTTOMLEFT", "BOTTOMCENTER", "XY" };
|
|
return (char*)legendpos_str[ih->data->current_plot->mLegend.mPosition];
|
|
}
|
|
|
|
static int iPlotSetBackImageAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mBack.SetImage(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetBackImageAttrib(Ihandle* ih)
|
|
{
|
|
return (char*)(ih->data->current_plot->mBack.GetImage());
|
|
}
|
|
|
|
static int iPlotSetLegendPosXYAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int x, y;
|
|
if (iupStrToIntInt(value, &x, &y, ',') == 2)
|
|
{
|
|
ih->data->current_plot->mLegend.mPosition = IUP_PLOT_XY;
|
|
ih->data->current_plot->mLegend.mPos.mX = x;
|
|
ih->data->current_plot->mLegend.mPos.mY = y;
|
|
}
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendPosXYAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnIntInt(ih->data->current_plot->mLegend.mPos.mX, ih->data->current_plot->mLegend.mPos.mY, ',');
|
|
}
|
|
|
|
static int iPlotSetBackImageXMinAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
ih->data->current_plot->mBack.mImageMinX = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetBackImageYMinAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
ih->data->current_plot->mBack.mImageMinY = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetBackImageXMinAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnDouble(ih->data->current_plot->mBack.mImageMinX);
|
|
}
|
|
|
|
static char* iPlotGetBackImageYMinAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnDouble(ih->data->current_plot->mBack.mImageMinY);
|
|
}
|
|
|
|
static int iPlotSetBackImageXMaxAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
ih->data->current_plot->mBack.mImageMaxX = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetBackImageYMaxAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
ih->data->current_plot->mBack.mImageMaxY = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetBackImageXMaxAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnDouble(ih->data->current_plot->mBack.mImageMaxX);
|
|
}
|
|
|
|
static char* iPlotGetBackImageYMaxAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnDouble(ih->data->current_plot->mBack.mImageMaxY);
|
|
}
|
|
|
|
static int iPlotSetBackColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mBack.mColor = iPlotGetColor(ih, value, "BGCOLOR");
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetBackColorAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnColor(ih->data->current_plot->mBack.mColor);
|
|
}
|
|
|
|
static int iPlotSetBGColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
long color;
|
|
if (iupStrToColor(value, &color))
|
|
{
|
|
/* must manually reset all colors */
|
|
for (int p = 0; p < ih->data->plot_list_count; p++)
|
|
{
|
|
ih->data->plot_list[p]->mLegend.mBoxBackColor = color;
|
|
ih->data->plot_list[p]->mBack.mColor = color;
|
|
|
|
ih->data->plot_list[p]->mRedraw = true;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
static int iPlotSetFGColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
long color;
|
|
if (iupStrToColor(value, &color))
|
|
{
|
|
/* must manually reset all colors */
|
|
for (int p = 0; p < ih->data->plot_list_count; p++)
|
|
{
|
|
ih->data->plot_list[p]->mBox.mColor = color;
|
|
ih->data->plot_list[p]->mAxisX.mColor = color;
|
|
ih->data->plot_list[p]->mAxisY.mColor = color;
|
|
ih->data->plot_list[p]->mLegend.mBoxColor = color;
|
|
ih->data->plot_list[p]->mTitle.mColor = color;
|
|
|
|
ih->data->plot_list[p]->mRedraw = true;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
static int iPlotSetFontAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (!iupdrvSetFontAttrib(ih, value))
|
|
return 0;
|
|
|
|
int size = 0;
|
|
int is_bold = 0,
|
|
is_italic = 0,
|
|
is_underline = 0,
|
|
is_strikeout = 0;
|
|
char typeface[1024];
|
|
|
|
if (!iupGetFontInfo(value, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout))
|
|
return 0;
|
|
|
|
int style = CD_PLAIN;
|
|
if (is_bold) style |= CD_BOLD;
|
|
if (is_italic) style |= CD_ITALIC;
|
|
if (is_underline) style |= CD_UNDERLINE;
|
|
if (is_strikeout) style |= CD_STRIKEOUT;
|
|
|
|
ih->data->default_font_size = size;
|
|
ih->data->default_font_style = style;
|
|
|
|
for (int p = 0; p < ih->data->plot_list_count; p++)
|
|
{
|
|
/* store the default attributes in local members to speed up */
|
|
ih->data->plot_list[p]->mDefaultFontSize = size;
|
|
ih->data->plot_list[p]->mDefaultFontStyle = style;
|
|
ih->data->plot_list[p]->mAxisX.mDefaultFontSize = size;
|
|
ih->data->plot_list[p]->mAxisX.mDefaultFontStyle = style;
|
|
ih->data->plot_list[p]->mAxisY.mDefaultFontSize = size;
|
|
ih->data->plot_list[p]->mAxisY.mDefaultFontStyle = style;
|
|
|
|
ih->data->plot_list[p]->mRedraw = true;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
static int iPlotSetTitleColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mTitle.mColor = iPlotGetColor(ih, value, "FGCOLOR");
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetTitleColorAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnColor(ih->data->current_plot->mTitle.mColor);
|
|
}
|
|
|
|
static int iPlotSetTitleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mTitle.SetText(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetTitleAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnStr(ih->data->current_plot->mTitle.GetText());
|
|
}
|
|
|
|
static int iPlotSetTitleFontSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mTitle.mFontSize = iPlotGetCDFontSize(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetTitleFontSizeAttrib(Ihandle* ih)
|
|
{
|
|
int theFontSize = ih->data->current_plot->mTitle.mFontSize;
|
|
if (theFontSize == 0)
|
|
{
|
|
int size = IupGetInt(ih, "FONTSIZE");
|
|
if (size > 0) size += 6;
|
|
else size -= 8;
|
|
|
|
theFontSize = size;
|
|
}
|
|
|
|
return iPlotGetPlotFontSize(ih, theFontSize);
|
|
}
|
|
|
|
static int iPlotSetTitleFontStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mTitle.mFontStyle = iPlotGetCDFontStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetTitleFontStyleAttrib(Ihandle* ih)
|
|
{
|
|
return iPlotGetPlotFontStyle(ih, ih->data->current_plot->mTitle.mFontStyle);
|
|
}
|
|
|
|
static int iPlotSetTitlePosAutoAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrBoolean(value))
|
|
ih->data->current_plot->mTitle.mAutoPos = true;
|
|
else
|
|
ih->data->current_plot->mTitle.mAutoPos = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetTitlePosAutoAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mTitle.mAutoPos);
|
|
}
|
|
|
|
static int iPlotSetTitlePosXYAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int x, y;
|
|
if (iupStrToIntInt(value, &x, &y, ',') == 2)
|
|
{
|
|
ih->data->current_plot->mTitle.mAutoPos = false;
|
|
ih->data->current_plot->mTitle.mPosX = x;
|
|
ih->data->current_plot->mTitle.mPosY = y;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetTitlePosXYAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnIntInt(ih->data->current_plot->mTitle.mPosX, ih->data->current_plot->mTitle.mPosY, ',');
|
|
}
|
|
|
|
static int iPlotSetLegendFontSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mLegend.mFontSize = iPlotGetCDFontSize(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetLegendFontStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mLegend.mFontStyle = iPlotGetCDFontStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendFontStyleAttrib(Ihandle* ih)
|
|
{
|
|
return iPlotGetPlotFontStyle(ih, ih->data->current_plot->mLegend.mFontStyle);
|
|
}
|
|
|
|
static char* iPlotGetLegendFontSizeAttrib(Ihandle* ih)
|
|
{
|
|
return iPlotGetPlotFontSize(ih, ih->data->current_plot->mLegend.mFontSize);
|
|
}
|
|
|
|
static int iPlotSetMarginLeftAutoAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mLeft = iupStrBoolean(value);
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetMarginRightAutoAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mRight = iupStrBoolean(value);
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetMarginTopAutoAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mTop = iupStrBoolean(value);
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetMarginBottomAutoAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mBottom = iupStrBoolean(value);
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetMarginLeftAutoAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mBack.mMarginAuto.mLeft);
|
|
}
|
|
|
|
static char* iPlotGetMarginRightAutoAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mBack.mMarginAuto.mRight);
|
|
}
|
|
|
|
static char* iPlotGetMarginTopAutoAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mBack.mMarginAuto.mTop);
|
|
}
|
|
|
|
static char* iPlotGetMarginBottomAutoAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mBack.mMarginAuto.mBottom);
|
|
}
|
|
|
|
static int iPlotSetMarginLeftAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "AUTO"))
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mLeft = 1;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
else
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mLeft = 0;
|
|
ih->data->current_plot->mBack.mMargin.mLeft = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetMarginRightAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "AUTO"))
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mRight = 1;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
else
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mRight = 0;
|
|
ih->data->current_plot->mBack.mMargin.mRight = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetMarginTopAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "AUTO"))
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mTop = 1;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
else
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mTop = 0;
|
|
ih->data->current_plot->mBack.mMargin.mTop = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetMarginBottomAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "AUTO"))
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mBottom = 1;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
else
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mBack.mMarginAuto.mBottom = 0;
|
|
ih->data->current_plot->mBack.mMargin.mBottom = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetMarginLeftAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->current_plot->mBack.mMargin.mLeft);
|
|
}
|
|
|
|
static char* iPlotGetMarginRightAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->current_plot->mBack.mMargin.mRight);
|
|
}
|
|
|
|
static char* iPlotGetMarginTopAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->current_plot->mBack.mMargin.mTop);
|
|
}
|
|
|
|
static char* iPlotGetMarginBottomAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->current_plot->mBack.mMargin.mBottom);
|
|
}
|
|
|
|
static int iPlotSetPaddingAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupStrToIntInt(value, &ih->data->current_plot->mBack.mHorizPadding, &ih->data->current_plot->mBack.mVertPadding, 'x');
|
|
if (ih->handle)
|
|
iupdrvRedrawNow(ih);
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetPaddingAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnIntInt(ih->data->current_plot->mBack.mHorizPadding, ih->data->current_plot->mBack.mVertPadding, 'x');
|
|
}
|
|
|
|
static int iPlotSetGridAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "VERTICAL")) /* vertical grid - X axis */
|
|
{
|
|
ih->data->current_plot->mGrid.mShowX = true;
|
|
ih->data->current_plot->mGrid.mShowY = false;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "HORIZONTAL")) /* horizontal grid - Y axis */
|
|
{
|
|
ih->data->current_plot->mGrid.mShowY = true;
|
|
ih->data->current_plot->mGrid.mShowX = false;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "YES"))
|
|
{
|
|
ih->data->current_plot->mGrid.mShowX = true;
|
|
ih->data->current_plot->mGrid.mShowY = true;
|
|
}
|
|
else
|
|
{
|
|
ih->data->current_plot->mGrid.mShowY = false;
|
|
ih->data->current_plot->mGrid.mShowX = false;
|
|
}
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGridAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mGrid.mShowX && ih->data->current_plot->mGrid.mShowY)
|
|
return "YES";
|
|
else if (ih->data->current_plot->mGrid.mShowY)
|
|
return "HORIZONTAL";
|
|
else if (ih->data->current_plot->mGrid.mShowX)
|
|
return "VERTICAL";
|
|
else
|
|
return "NO";
|
|
}
|
|
|
|
static int iPlotSetGridColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
long color;
|
|
if (iupStrToColor(value, &color))
|
|
{
|
|
ih->data->current_plot->mGrid.mColor = color;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGridColorAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnColor(ih->data->current_plot->mGrid.mColor);
|
|
}
|
|
|
|
static int iPlotSetGridLineStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mGrid.mLineStyle = iPlotGetCDPenStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGridLineStyleAttrib(Ihandle* ih)
|
|
{
|
|
return iPlotGetPlotPenStyle(ih->data->current_plot->mGrid.mLineStyle);
|
|
}
|
|
|
|
static int iPlotSetGridLineWidthAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mGrid.mLineWidth = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGridLineWidthAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
return iupStrReturnInt(ih->data->current_plot->mGrid.mLineWidth);
|
|
}
|
|
|
|
static int iPlotSetGridMinorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "VERTICAL")) /* vertical grid - X axis */
|
|
{
|
|
ih->data->current_plot->mGridMinor.mShowX = true;
|
|
ih->data->current_plot->mGridMinor.mShowY = false;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "HORIZONTAL")) /* horizontal grid - Y axis */
|
|
{
|
|
ih->data->current_plot->mGridMinor.mShowY = true;
|
|
ih->data->current_plot->mGridMinor.mShowX = false;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "YES"))
|
|
{
|
|
ih->data->current_plot->mGridMinor.mShowX = true;
|
|
ih->data->current_plot->mGridMinor.mShowY = true;
|
|
}
|
|
else
|
|
{
|
|
ih->data->current_plot->mGridMinor.mShowY = false;
|
|
ih->data->current_plot->mGridMinor.mShowX = false;
|
|
}
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGridMinorAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mGridMinor.mShowX && ih->data->current_plot->mGridMinor.mShowY)
|
|
return "YES";
|
|
else if (ih->data->current_plot->mGridMinor.mShowY)
|
|
return "HORIZONTAL";
|
|
else if (ih->data->current_plot->mGridMinor.mShowX)
|
|
return "VERTICAL";
|
|
else
|
|
return "NO";
|
|
}
|
|
|
|
static int iPlotSetGridMinorColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
long color;
|
|
if (iupStrToColor(value, &color))
|
|
{
|
|
ih->data->current_plot->mGridMinor.mColor = color;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGridMinorColorAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnColor(ih->data->current_plot->mGridMinor.mColor);
|
|
}
|
|
|
|
static int iPlotSetGridMinorLineStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mGridMinor.mLineStyle = iPlotGetCDPenStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGridMinorLineStyleAttrib(Ihandle* ih)
|
|
{
|
|
return iPlotGetPlotPenStyle(ih->data->current_plot->mGridMinor.mLineStyle);
|
|
}
|
|
|
|
static int iPlotSetGridMinorLineWidthAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mGridMinor.mLineWidth = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGridMinorLineWidthAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
return iupStrReturnInt(ih->data->current_plot->mGridMinor.mLineWidth);
|
|
}
|
|
|
|
static int iPlotSetLegendBoxLineStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mLegend.mBoxLineStyle = iPlotGetCDPenStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendBoxLineStyleAttrib(Ihandle* ih)
|
|
{
|
|
return iPlotGetPlotPenStyle(ih->data->current_plot->mLegend.mBoxLineStyle);
|
|
}
|
|
|
|
static int iPlotSetBoxLineStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mBox.mLineStyle = iPlotGetCDPenStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetBoxColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mBox.mColor = iPlotGetColor(ih, value, "FGCOLOR");
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetBoxColorAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnColor(ih->data->current_plot->mBox.mColor);
|
|
}
|
|
|
|
static int iPlotSetBoxAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrBoolean(value))
|
|
ih->data->current_plot->mBox.mShow = true;
|
|
else
|
|
ih->data->current_plot->mBox.mShow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetBoxAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mBox.mShow);
|
|
}
|
|
|
|
static int iPlotSetLegendBoxAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrBoolean(value))
|
|
ih->data->current_plot->mLegend.mBoxShow = true;
|
|
else
|
|
ih->data->current_plot->mLegend.mBoxShow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendBoxAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mLegend.mBoxShow);
|
|
}
|
|
|
|
static int iPlotSetLegendBoxColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mLegend.mBoxColor = iPlotGetColor(ih, value, "FGCOLOR");
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendBoxBackColorAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnColor(ih->data->current_plot->mLegend.mBoxBackColor);
|
|
}
|
|
|
|
static int iPlotSetLegendBoxBackColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->current_plot->mLegend.mBoxBackColor = iPlotGetColor(ih, value, "BGCOLOR");
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendBoxColorAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnColor(ih->data->current_plot->mLegend.mBoxColor);
|
|
}
|
|
|
|
static int iPlotSetLegendBoxLineWidthAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mLegend.mBoxLineWidth = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetLegendBoxLineWidthAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
return iupStrReturnInt(ih->data->current_plot->mLegend.mBoxLineWidth);
|
|
}
|
|
|
|
static char* iPlotGetBoxLineStyleAttrib(Ihandle* ih)
|
|
{
|
|
return iPlotGetPlotPenStyle(ih->data->current_plot->mBox.mLineStyle);
|
|
}
|
|
|
|
static int iPlotSetBoxLineWidthAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mBox.mLineWidth = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetBoxLineWidthAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
return iupStrReturnInt(ih->data->current_plot->mBox.mLineWidth);
|
|
}
|
|
|
|
static int iPlotSetCurrentAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
int imax = ih->data->current_plot->mDataSetListCount;
|
|
ih->data->current_plot->mCurrentDataSet = ((ii >= 0) && (ii < imax) ? ii : -1);
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
else
|
|
{
|
|
ii = ih->data->current_plot->FindDataSet(value);
|
|
if (ii != -1)
|
|
{
|
|
int imax = ih->data->current_plot->mDataSetListCount;
|
|
ih->data->current_plot->mCurrentDataSet = ((ii >= 0) && (ii < imax) ? ii : -1);
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetCurrentAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->current_plot->mCurrentDataSet);
|
|
}
|
|
|
|
static int iPlotSetPlotCurrentAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int i;
|
|
if (iupStrToInt(value, &i))
|
|
{
|
|
if (i >= 0 && i < ih->data->plot_list_count)
|
|
iupPlotSetPlotCurrent(ih, i);
|
|
}
|
|
else
|
|
{
|
|
for (i = 0; i < ih->data->plot_list_count; i++)
|
|
{
|
|
const char* title = ih->data->plot_list[i]->mTitle.GetText();
|
|
if (iupStrEqual(title, value))
|
|
{
|
|
iupPlotSetPlotCurrent(ih, i);
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetPlotCurrentAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->current_plot_index);
|
|
}
|
|
|
|
static char* iPlotGetPlotCountAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->plot_list_count);
|
|
}
|
|
|
|
static int iPlotSetPlotCountAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int count;
|
|
if (iupStrToInt(value, &count))
|
|
{
|
|
if (count > 0 && count < IUP_PLOT_MAX_PLOTS)
|
|
{
|
|
if (count != ih->data->plot_list_count)
|
|
{
|
|
if (count < ih->data->plot_list_count)
|
|
{
|
|
// Remove at the end
|
|
if (ih->data->current_plot_index >= count)
|
|
iupPlotSetPlotCurrent(ih, count - 1);
|
|
|
|
for (int i = count; i < ih->data->plot_list_count; i++)
|
|
{
|
|
delete ih->data->plot_list[i];
|
|
ih->data->plot_list[i] = NULL;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Add at the end
|
|
for (int i = ih->data->plot_list_count; i < count; i++)
|
|
ih->data->plot_list[i] = new iupPlot(ih, ih->data->default_font_style, ih->data->default_font_size);
|
|
}
|
|
}
|
|
|
|
ih->data->plot_list_count = count;
|
|
|
|
if (ih->data->cd_canvas)
|
|
iupPlotUpdateViewports(ih);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetPlotInsertAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (!value)
|
|
{
|
|
if (ih->data->plot_list_count < IUP_PLOT_MAX_PLOTS)
|
|
{
|
|
// Insert at the end (append)
|
|
iPlotPlotInsert(ih, ih->data->plot_list_count);
|
|
iupPlotSetPlotCurrent(ih, ih->data->plot_list_count - 1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Insert before reference
|
|
int i;
|
|
if (iupStrToInt(value, &i))
|
|
{
|
|
if (i >= 0 && i < ih->data->plot_list_count)
|
|
{
|
|
iPlotPlotInsert(ih, i);
|
|
iupPlotSetPlotCurrent(ih, ih->data->plot_list_count - 1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (i = 0; i < ih->data->plot_list_count; i++)
|
|
{
|
|
const char* title = ih->data->plot_list[i]->mTitle.GetText();
|
|
if (iupStrEqual(title, value))
|
|
{
|
|
iPlotPlotInsert(ih, i);
|
|
iupPlotSetPlotCurrent(ih, ih->data->plot_list_count - 1);
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetPlotNumColAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnInt(ih->data->numcol);
|
|
}
|
|
|
|
static int iPlotSetPlotNumColAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int numcol;
|
|
if (iupStrToInt(value, &numcol))
|
|
{
|
|
if (numcol > 0)
|
|
{
|
|
ih->data->numcol = numcol;
|
|
|
|
if (ih->data->cd_canvas)
|
|
iupPlotUpdateViewports(ih);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetPlotRemoveAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->plot_list_count == 1)
|
|
return 0;
|
|
|
|
if (!value || iupStrEqualNoCase(value, "CURRENT"))
|
|
{
|
|
iPlotPlotRemove(ih, ih->data->current_plot_index);
|
|
return 0;
|
|
}
|
|
|
|
int i;
|
|
if (iupStrToInt(value, &i))
|
|
{
|
|
if (i >= 0 && i < ih->data->plot_list_count)
|
|
iPlotPlotRemove(ih, i);
|
|
}
|
|
else
|
|
{
|
|
for (i = 0; i < ih->data->plot_list_count; i++)
|
|
{
|
|
const char* title = ih->data->plot_list[i]->mTitle.GetText();
|
|
if (iupStrEqual(title, value))
|
|
{
|
|
iPlotPlotRemove(ih, i);
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetSyncViewAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->sync_view = iupStrBoolean(value);
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetSyncViewAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->sync_view);
|
|
}
|
|
|
|
static int iPlotSetMergeViewAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->merge_view = iupStrBoolean(value);
|
|
|
|
if (ih->data->cd_canvas)
|
|
iupPlotUpdateViewports(ih);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetMergeViewAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->merge_view);
|
|
}
|
|
|
|
static int iPlotSetReadOnlyAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
ih->data->read_only = iupStrBoolean(value);
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetReadOnlyAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->read_only);
|
|
}
|
|
|
|
static int iPlotSetGraphicsModeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->handle) // Can be set only before map
|
|
return 0;
|
|
|
|
if (iupStrEqualNoCase(value, "OPENGL"))
|
|
{
|
|
ih->data->graphics_mode = IUP_PLOT_OPENGL;
|
|
IupSetAttribute(ih, "BUFFER", "DOUBLE");
|
|
}
|
|
else if (iupStrEqualNoCase(value, "IMAGERGB"))
|
|
ih->data->graphics_mode = IUP_PLOT_IMAGERGB;
|
|
else if (iupStrEqualNoCase(value, "NATIVEPLUS"))
|
|
ih->data->graphics_mode = IUP_PLOT_NATIVEPLUS;
|
|
else
|
|
ih->data->graphics_mode = IUP_PLOT_NATIVE;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetGraphicsModeAttrib(Ihandle* ih)
|
|
{
|
|
char* graphics_mode_str[] = { "NATIVE", "NATIVEPLUS", "IMAGERGB", "OPENGL" };
|
|
return graphics_mode_str[ih->data->graphics_mode];
|
|
}
|
|
|
|
static int iPlotSetDataSetClippingAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "AREAOFFSET"))
|
|
ih->data->current_plot->mDataSetClipping = IUP_PLOT_CLIPAREAOFFSET;
|
|
else if (iupStrEqualNoCase(value, "NONE"))
|
|
ih->data->current_plot->mDataSetClipping = IUP_PLOT_CLIPNONE;
|
|
else
|
|
ih->data->current_plot->mDataSetClipping = IUP_PLOT_CLIPAREA;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDataSetClippingAttrib(Ihandle* ih)
|
|
{
|
|
char* dataset_clipping_str[] = { "NONE", "AREA", "AREAOFFSET" };
|
|
return dataset_clipping_str[ih->data->current_plot->mDataSetClipping];
|
|
}
|
|
|
|
static int iPlotSetUseImageRGBAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrBoolean(value))
|
|
return iPlotSetGraphicsModeAttrib(ih, "IMAGERGB");
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetUseContextPlusAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrBoolean(value))
|
|
return iPlotSetGraphicsModeAttrib(ih, "NATIVEPLUS");
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetShowMenuContextAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int screen_x = 0, screen_y = 0;
|
|
if (iupStrToIntInt(value, &screen_x, &screen_y, ',') == 2)
|
|
{
|
|
int sx, sy;
|
|
IupGetIntInt(ih, "SCREENPOSITION", &sx, &sy);
|
|
|
|
int x = screen_x - sx;
|
|
int y = screen_y - sy;
|
|
|
|
y = ih->currentheight - 1 - y;
|
|
|
|
x -= ih->data->current_plot->mViewport.mX;
|
|
y -= ih->data->current_plot->mViewport.mY;
|
|
|
|
iupPlotShowMenuContext(ih, screen_x, screen_y, x, y);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetZoomAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "+"))
|
|
iupPlotSetZoom(ih, 1);
|
|
else if (iupStrEqualNoCase(value, "-"))
|
|
iupPlotSetZoom(ih, -1);
|
|
else
|
|
iupPlotSetZoom(ih, 0);
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetCanvasAttrib(Ihandle* ih)
|
|
{
|
|
return (char*)(ih->data->cd_canvas);
|
|
}
|
|
|
|
static int iPlotSetRemoveAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (!value || iupStrEqualNoCase(value, "CURRENT"))
|
|
{
|
|
ih->data->current_plot->RemoveDataSet(ih->data->current_plot->mCurrentDataSet);
|
|
ih->data->current_plot->mRedraw = true;
|
|
iPlotCheckCurrentDataSet(ih);
|
|
return 0;
|
|
}
|
|
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->RemoveDataSet(ii);
|
|
ih->data->current_plot->mRedraw = true;
|
|
iPlotCheckCurrentDataSet(ih);
|
|
}
|
|
else
|
|
{
|
|
ii = ih->data->current_plot->FindDataSet(value);
|
|
if (ii != -1)
|
|
{
|
|
ih->data->current_plot->RemoveDataSet(ii);
|
|
ih->data->current_plot->mRedraw = true;
|
|
iPlotCheckCurrentDataSet(ih);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetClearAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
(void)value;
|
|
ih->data->current_plot->RemoveAllDataSets();
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetDSLineStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mLineStyle = iPlotGetCDPenStyle(value);
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSLineStyleAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
|
|
return iPlotGetPlotPenStyle(dataset->mLineStyle);
|
|
}
|
|
|
|
static int iPlotSetDSLineWidthAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mLineWidth = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSAreaTransparencyAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnInt(dataset->mAreaTransparency);
|
|
}
|
|
|
|
static int iPlotSetDSAreaTransparencyAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mAreaTransparency = (unsigned char)ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSLineWidthAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnInt(dataset->mLineWidth);
|
|
}
|
|
|
|
static int iPlotSetDSMarkStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mMarkStyle = iPlotGetCDMarkStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSMarkStyleAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
|
|
return iPlotGetPlotMarkStyle(dataset->mMarkStyle);
|
|
}
|
|
|
|
static int iPlotSetDSMarkSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mMarkSize = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSMarkSizeAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnInt(dataset->mMarkSize);
|
|
}
|
|
|
|
static int iPlotSetDSNameAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (!value) // can not be NULL
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->SetName(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSNameAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnStr(dataset->GetName());
|
|
}
|
|
|
|
static int iPlotSetDSUserDataAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mUserData = (void*)value;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSUserDataAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return (char*)dataset->mUserData;
|
|
}
|
|
|
|
static int iPlotSetDSColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
long color;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToColor(value, &color))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mColor = color;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSColorAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnColor(dataset->mColor);
|
|
}
|
|
|
|
static void iPlotSetPieDefaults(Ihandle* ih)
|
|
{
|
|
IupSetAttribute(ih, "AXS_XAUTOMIN", "NO");
|
|
IupSetAttribute(ih, "AXS_XAUTOMAX", "NO");
|
|
IupSetAttribute(ih, "AXS_YAUTOMIN", "NO");
|
|
IupSetAttribute(ih, "AXS_YAUTOMAX", "NO");
|
|
IupSetAttribute(ih, "AXS_XMIN", "-1");
|
|
IupSetAttribute(ih, "AXS_XMAX", "1");
|
|
IupSetAttribute(ih, "AXS_YMIN", "-1");
|
|
IupSetAttribute(ih, "AXS_YMAX", "1");
|
|
IupSetAttribute(ih, "AXS_X", "NO");
|
|
IupSetAttribute(ih, "AXS_Y", "NO");
|
|
iupAttribSet(ih, "_IUP_PIE_DEFAULTS", "1");
|
|
}
|
|
|
|
static void iPlotResetPieDefaults(Ihandle* ih)
|
|
{
|
|
IupSetAttribute(ih, "AXS_XAUTOMIN", NULL);
|
|
IupSetAttribute(ih, "AXS_XAUTOMAX", NULL);
|
|
IupSetAttribute(ih, "AXS_YAUTOMIN", NULL);
|
|
IupSetAttribute(ih, "AXS_YAUTOMAX", NULL);
|
|
IupSetAttribute(ih, "AXS_XMIN", NULL);
|
|
IupSetAttribute(ih, "AXS_XMAX", NULL);
|
|
IupSetAttribute(ih, "AXS_YMIN", NULL);
|
|
IupSetAttribute(ih, "AXS_YMAX", NULL);
|
|
IupSetAttribute(ih, "AXS_X", NULL);
|
|
IupSetAttribute(ih, "AXS_Y", NULL);
|
|
iupAttribSet(ih, "_IUP_PIE_DEFAULTS", NULL);
|
|
}
|
|
|
|
static int iPlotSetDSModeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
|
|
if (iupStrEqualNoCase(value, "BAR"))
|
|
{
|
|
dataset->mMode = IUP_PLOT_BAR;
|
|
ih->data->current_plot->mAxisX.mDiscrete = true;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "HORIZONTALBAR"))
|
|
{
|
|
dataset->mMode = IUP_PLOT_HORIZONTALBAR;
|
|
ih->data->current_plot->mAxisY.mDiscrete = true;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "MULTIBAR"))
|
|
{
|
|
dataset->mMode = IUP_PLOT_MULTIBAR;
|
|
ih->data->current_plot->mAxisX.mDiscrete = true;
|
|
ih->data->current_plot->UpdateMultibarCount();
|
|
}
|
|
else if (iupStrEqualNoCase(value, "AREA"))
|
|
dataset->mMode = IUP_PLOT_AREA;
|
|
else if (iupStrEqualNoCase(value, "MARK"))
|
|
dataset->mMode = IUP_PLOT_MARK;
|
|
else if (iupStrEqualNoCase(value, "STEM"))
|
|
dataset->mMode = IUP_PLOT_STEM;
|
|
else if (iupStrEqualNoCase(value, "MARKSTEM"))
|
|
dataset->mMode = IUP_PLOT_MARKSTEM;
|
|
else if (iupStrEqualNoCase(value, "MARKLINE"))
|
|
dataset->mMode = IUP_PLOT_MARKLINE;
|
|
else if (iupStrEqualNoCase(value, "STEP"))
|
|
dataset->mMode = IUP_PLOT_STEP;
|
|
else if (iupStrEqualNoCase(value, "ERRORBAR"))
|
|
dataset->mMode = IUP_PLOT_ERRORBAR;
|
|
else if (iupStrEqualNoCase(value, "PIE"))
|
|
dataset->mMode = IUP_PLOT_PIE;
|
|
else /* LINE */
|
|
dataset->mMode = IUP_PLOT_LINE;
|
|
|
|
if (dataset->mMode == IUP_PLOT_PIE && !iupAttribGet(ih, "_IUP_PIE_DEFAULTS"))
|
|
iPlotSetPieDefaults(ih);
|
|
if (dataset->mMode != IUP_PLOT_PIE && iupAttribGet(ih, "_IUP_PIE_DEFAULTS"))
|
|
iPlotResetPieDefaults(ih);
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSModeAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
const char* mode_str[] = { "LINE", "MARK", "MARKLINE", "AREA", "BAR", "STEM", "MARKSTEM", "HORIZONTALBAR", "MULTIBAR", "STEP", "ERRORBAR", "PIE" };
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return (char*)mode_str[dataset->mMode];
|
|
}
|
|
|
|
static int iPlotSetDSRemoveAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->RemoveSample(ii);
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSCountAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnInt(dataset->GetCount());
|
|
}
|
|
|
|
static int iPlotSetDSBarOutlineColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
long color;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToColor(value, &color))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mBarOutlineColor = color;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSBarOutlineColorAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnColor(dataset->mBarOutlineColor);
|
|
}
|
|
|
|
static int iPlotSetDSBarOutlineAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mBarShowOutline = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSBarOutlineAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnBoolean(dataset->mBarShowOutline ? 1 : 0);
|
|
}
|
|
|
|
static int iPlotSetDSBarMulticolorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mBarMulticolor = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSBarMulticolorAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnBoolean(dataset->mBarMulticolor ? 1 : 0);
|
|
}
|
|
|
|
static int iPlotSetDSBarSpacingAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
if (ii >= 0 && ii <= 100)
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mBarSpacingPercent = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSBarSpacingAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnInt(dataset->mBarSpacingPercent);
|
|
}
|
|
|
|
static int iPlotSetDSPieRadiusAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToDouble(value, &ii))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mPieRadius = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSPieRadiusAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnDouble(dataset->mPieRadius);
|
|
}
|
|
|
|
static int iPlotSetDSPieStartAngleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToDouble(value, &ii))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mPieStartAngle = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSPieStartAngleAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnDouble(dataset->mPieStartAngle);
|
|
}
|
|
|
|
static int iPlotSetDSPieHoleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToDouble(value, &ii))
|
|
{
|
|
if (ii < 0) ii = 0;
|
|
if (ii > 1) ii = 1;
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mPieHole = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSPieHoleAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnDouble(dataset->mPieHole);
|
|
}
|
|
|
|
static int iPlotSetDSPieContourAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mPieContour = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSPieContourAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnBoolean(dataset->mPieContour ? 1 : 0);
|
|
}
|
|
|
|
static int iPlotSetDSPieSliceLabelAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
|
|
if (iupStrEqualNoCase(value, "NONE"))
|
|
dataset->mPieSliceLabel = IUP_PLOT_NONE;
|
|
else if (iupStrEqualNoCase(value, "X"))
|
|
dataset->mPieSliceLabel = IUP_PLOT_X;
|
|
else if (iupStrEqualNoCase(value, "Y"))
|
|
dataset->mPieSliceLabel = IUP_PLOT_Y;
|
|
else if (iupStrEqualNoCase(value, "PERCENT"))
|
|
dataset->mPieSliceLabel = IUP_PLOT_PERCENT;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSPieSliceLabelAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
const char* mode_str[] = { "NONE", "X", "Y", "PERCENT" };
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return (char*)mode_str[dataset->mPieSliceLabel];
|
|
}
|
|
|
|
static char* iPlotGetDSPieSliceLabelPosAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnDouble(dataset->mPieSliceLabelPos);
|
|
}
|
|
|
|
static char* iPlotGetDSStrXDataAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnBoolean(dataset->GetDataX()->IsString() ? 1 : 0);
|
|
}
|
|
|
|
static char* iPlotGetDSExtraAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnBoolean(dataset->GetExtra() ? 1 : 0);
|
|
}
|
|
|
|
static int iPlotSetDSOrderedXAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mOrderedX = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSOrderedXAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnBoolean(dataset->mOrderedX ? 1 : 0);
|
|
}
|
|
|
|
static int iPlotSetDSSelectedAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mSelectedCurve = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetDSSelectedAttrib(Ihandle* ih)
|
|
{
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return NULL;
|
|
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
return iupStrReturnBoolean(dataset->mSelectedCurve ? 1 : 0);
|
|
}
|
|
|
|
static int iPlotSetDSPieSliceLabelPosAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double ii;
|
|
|
|
if (ih->data->current_plot->mCurrentDataSet < 0 ||
|
|
ih->data->current_plot->mCurrentDataSet >= ih->data->current_plot->mDataSetListCount)
|
|
return 0;
|
|
|
|
if (iupStrToDouble(value, &ii))
|
|
{
|
|
iupPlotDataSet* dataset = ih->data->current_plot->mDataSetList[ih->data->current_plot->mCurrentDataSet];
|
|
dataset->mPieSliceLabelPos = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetHighlightModeAttrib(Ihandle* ih)
|
|
{
|
|
const char* mode_str[] = { "NONE", "SAMPLE", "CURVE", "BOTH" };
|
|
return (char*)mode_str[ih->data->current_plot->mHighlightMode];
|
|
}
|
|
|
|
static int iPlotSetHighlightModeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "SAMPLE"))
|
|
ih->data->current_plot->mHighlightMode = IUP_PLOT_HIGHLIGHT_SAMPLE;
|
|
else if (iupStrEqualNoCase(value, "CURVE"))
|
|
ih->data->current_plot->mHighlightMode = IUP_PLOT_HIGHLIGHT_CURVE;
|
|
else if (iupStrEqualNoCase(value, "BOTH"))
|
|
ih->data->current_plot->mHighlightMode = IUP_PLOT_HIGHLIGHT_BOTH;
|
|
else /* NONE */
|
|
ih->data->current_plot->mHighlightMode = IUP_PLOT_HIGHLIGHT_NONE;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetScreenToleranceAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnDouble(ih->data->current_plot->mScreenTolerance);
|
|
}
|
|
|
|
static int iPlotSetScreenToleranceAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
ih->data->current_plot->mScreenTolerance = xx;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* ========== */
|
|
/* axis props */
|
|
/* ========== */
|
|
|
|
static int iPlotSetAxisXDiscreteAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mDiscrete = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXDiscreteAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnBoolean(axis->mDiscrete ? 1 : 0);
|
|
}
|
|
|
|
static int iPlotSetAxisYDiscreteAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mDiscrete = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisYDiscreteAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnBoolean(axis->mDiscrete ? 1 : 0);
|
|
}
|
|
|
|
static int iPlotSetAxisXLabelAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->SetLabel(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYLabelAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->SetLabel(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXLabelAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnStr(axis->GetLabel());
|
|
}
|
|
|
|
static char* iPlotGetAxisYLabelAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnStr(axis->GetLabel());
|
|
}
|
|
|
|
static int iPlotSetAxisXAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mShow = true;
|
|
else
|
|
axis->mShow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mShow = true;
|
|
else
|
|
axis->mShow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mShow);
|
|
}
|
|
|
|
static char* iPlotGetAxisYAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mShow);
|
|
}
|
|
|
|
static int iPlotSetAxisXLabelCenteredAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mLabelCentered = true;
|
|
else
|
|
axis->mLabelCentered = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYLabelCenteredAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mLabelCentered = true;
|
|
else
|
|
axis->mLabelCentered = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXLabelCenteredAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mLabelCentered);
|
|
}
|
|
|
|
static char* iPlotGetAxisYLabelCenteredAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mLabelCentered);
|
|
}
|
|
|
|
static int iPlotSetAxisXColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mColor = iPlotGetColor(ih, value, "FGCOLOR");
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYColorAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mColor = iPlotGetColor(ih, value, "FGCOLOR");
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXColorAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnColor(axis->mColor);
|
|
}
|
|
|
|
static char* iPlotGetAxisYColorAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnColor(axis->mColor);
|
|
}
|
|
|
|
static int iPlotSetAxisXLineWidthAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mAxisX.mLineWidth = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXLineWidthAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnInt(axis->mLineWidth);
|
|
}
|
|
|
|
static int iPlotSetAxisYLineWidthAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mAxisY.mLineWidth = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisYLineWidthAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnInt(axis->mLineWidth);
|
|
}
|
|
|
|
static int iPlotSetAxisXLabelSpacingAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "AUTO"))
|
|
{
|
|
ih->data->current_plot->mAxisX.mLabelSpacing = -1;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
else
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mAxisX.mLabelSpacing = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXLabelSpacingAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
if (axis->mLabelSpacing == -1)
|
|
return "AUTO";
|
|
else
|
|
return iupStrReturnInt(axis->mLabelSpacing);
|
|
}
|
|
|
|
static int iPlotSetAxisYLabelSpacingAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
if (iupStrEqualNoCase(value, "AUTO"))
|
|
{
|
|
ih->data->current_plot->mAxisY.mLabelSpacing = -1;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
else
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
ih->data->current_plot->mAxisY.mLabelSpacing = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisYLabelSpacingAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
if (axis->mLabelSpacing == -1)
|
|
return "AUTO";
|
|
else
|
|
return iupStrReturnInt(axis->mLabelSpacing);
|
|
}
|
|
|
|
static int iPlotSetViewportSquareAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
ih->data->current_plot->mViewportSquare = iupStrBoolean(value) ? true : false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetViewportSquareAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mViewportSquare);
|
|
}
|
|
|
|
static int iPlotSetAxisScaleEqualAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
ih->data->current_plot->mScaleEqual = iupStrBoolean(value) ? true : false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisScaleEqualAttrib(Ihandle* ih)
|
|
{
|
|
return iupStrReturnBoolean(ih->data->current_plot->mScaleEqual);
|
|
}
|
|
|
|
static int iPlotSetAxisXAutoMinAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mAutoScaleMin = true;
|
|
else
|
|
axis->mAutoScaleMin = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYAutoMinAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mAutoScaleMin = true;
|
|
else
|
|
axis->mAutoScaleMin = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXAutoMinAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mAutoScaleMin);
|
|
}
|
|
|
|
static char* iPlotGetAxisYAutoMinAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mAutoScaleMin);
|
|
}
|
|
|
|
static int iPlotSetAxisXAutoMaxAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mAutoScaleMax = true;
|
|
else
|
|
axis->mAutoScaleMax = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYAutoMaxAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mAutoScaleMax = true;
|
|
else
|
|
axis->mAutoScaleMax = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXAutoMaxAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mAutoScaleMax);
|
|
}
|
|
|
|
static char* iPlotGetAxisYAutoMaxAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mAutoScaleMax);
|
|
}
|
|
|
|
static int iPlotSetAxisXMinAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mMin = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYMinAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mMin = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXMinAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnDouble(axis->mMin);
|
|
}
|
|
|
|
static char* iPlotGetAxisYMinAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnDouble(axis->mMin);
|
|
}
|
|
|
|
static int iPlotSetAxisXMaxAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mMax = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYMaxAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
iupPlotResetZoom(ih, 0);
|
|
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mMax = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXMaxAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnDouble(axis->mMax);
|
|
}
|
|
|
|
static char* iPlotGetAxisYMaxAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnDouble(axis->mMax);
|
|
}
|
|
|
|
static int iPlotSetAxisXReverseAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mReverse = true;
|
|
else
|
|
axis->mReverse = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYReverseAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mReverse = true;
|
|
else
|
|
axis->mReverse = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXReverseAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnBoolean(axis->mReverse);
|
|
}
|
|
|
|
static char* iPlotGetAxisYReverseAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnBoolean(axis->mReverse);
|
|
}
|
|
|
|
static int iPlotSetAxisXReverseTicksLabelAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mReverseTicksLabel = true;
|
|
else
|
|
axis->mReverseTicksLabel = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYReverseTicksLabelAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mReverseTicksLabel = true;
|
|
else
|
|
axis->mReverseTicksLabel = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXReverseTicksLabelAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnBoolean(axis->mReverseTicksLabel);
|
|
}
|
|
|
|
static char* iPlotGetAxisYReverseTicksLabelAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnBoolean(axis->mReverseTicksLabel);
|
|
}
|
|
|
|
static int iPlotSetAxisXCrossOriginAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mPosition = IUP_PLOT_CROSSORIGIN;
|
|
else
|
|
axis->mPosition = IUP_PLOT_START;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYCrossOriginAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mPosition = IUP_PLOT_CROSSORIGIN;
|
|
else
|
|
axis->mPosition = IUP_PLOT_START;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXCrossOriginAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mPosition == IUP_PLOT_CROSSORIGIN);
|
|
}
|
|
|
|
static char* iPlotGetAxisYCrossOriginAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mPosition == IUP_PLOT_CROSSORIGIN);
|
|
}
|
|
|
|
static int iPlotSetAxisXPositionAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrEqualNoCase(value, "CROSSORIGIN"))
|
|
axis->mPosition = IUP_PLOT_CROSSORIGIN;
|
|
else if(iupStrEqualNoCase(value, "END"))
|
|
axis->mPosition = IUP_PLOT_END;
|
|
else
|
|
axis->mPosition = IUP_PLOT_START;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYPositionAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrEqualNoCase(value, "CROSSORIGIN"))
|
|
axis->mPosition = IUP_PLOT_CROSSORIGIN;
|
|
else if (iupStrEqualNoCase(value, "END"))
|
|
axis->mPosition = IUP_PLOT_END;
|
|
else
|
|
axis->mPosition = IUP_PLOT_START;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXPositionAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
const char* originpos_str[] = { "START", "CROSSORIGIN", "END" };
|
|
return (char*)originpos_str[axis->mPosition];
|
|
}
|
|
|
|
static char* iPlotGetAxisYPositionAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
const char* originpos_str[] = { "START", "CROSSORIGIN", "END" };
|
|
return (char*)originpos_str[axis->mPosition];
|
|
}
|
|
|
|
static int iPlotSetAxisXScaleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrEqualNoCase(value, "LIN"))
|
|
{
|
|
axis->mLogScale = false;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "LOG10"))
|
|
{
|
|
axis->mLogScale = true;
|
|
axis->mLogBase = 10.0;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "LOG2"))
|
|
{
|
|
axis->mLogScale = true;
|
|
axis->mLogBase = 2.0;
|
|
}
|
|
else
|
|
{
|
|
axis->mLogScale = true;
|
|
axis->mLogBase = (double)M_E;
|
|
}
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYScaleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrEqualNoCase(value, "LIN"))
|
|
{
|
|
axis->mLogScale = false;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "LOG10"))
|
|
{
|
|
axis->mLogScale = true;
|
|
axis->mLogBase = 10.0;
|
|
}
|
|
else if (iupStrEqualNoCase(value, "LOG2"))
|
|
{
|
|
axis->mLogScale = true;
|
|
axis->mLogBase = 2.0;
|
|
}
|
|
else
|
|
{
|
|
axis->mLogScale = true;
|
|
axis->mLogBase = (double)M_E;
|
|
}
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXScaleAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (axis->mLogScale)
|
|
{
|
|
if (axis->mLogBase == 10.0)
|
|
return "LOG10";
|
|
else if (axis->mLogBase == 2.0)
|
|
return "LOG2";
|
|
else
|
|
return "LOGN";
|
|
}
|
|
else
|
|
return "LIN";
|
|
}
|
|
|
|
static char* iPlotGetAxisYScaleAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (axis->mLogScale)
|
|
{
|
|
if (axis->mLogBase == 10.0)
|
|
return "LOG10";
|
|
else if (axis->mLogBase == 2.0)
|
|
return "LOG2";
|
|
else
|
|
return "LOGN";
|
|
}
|
|
else
|
|
return "LIN";
|
|
}
|
|
|
|
static int iPlotSetAxisXFontSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mFontSize = iPlotGetCDFontSize(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYFontSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mFontSize = iPlotGetCDFontSize(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXFontSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iPlotGetPlotFontSize(ih, axis->mFontSize);
|
|
}
|
|
|
|
static char* iPlotGetAxisYFontSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iPlotGetPlotFontSize(ih, axis->mFontSize);
|
|
}
|
|
|
|
static int iPlotSetAxisXFontStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mFontStyle = iPlotGetCDFontStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYFontStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mFontStyle = iPlotGetCDFontStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXFontStyleAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iPlotGetPlotFontStyle(ih, axis->mFontStyle);
|
|
}
|
|
|
|
static char* iPlotGetAxisYFontStyleAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iPlotGetPlotFontStyle(ih, axis->mFontStyle);
|
|
}
|
|
|
|
static int iPlotSetAxisXArrowAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mShowArrow = true;
|
|
else
|
|
axis->mShowArrow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXArrowAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mShowArrow);
|
|
}
|
|
|
|
static int iPlotSetAxisYArrowAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mShowArrow = true;
|
|
else
|
|
axis->mShowArrow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisYArrowAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mShowArrow);
|
|
}
|
|
|
|
static int iPlotSetAxisXAutoTickSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mAutoSize = true;
|
|
else
|
|
axis->mTick.mAutoSize = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYAutoTickSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mAutoSize = true;
|
|
else
|
|
axis->mTick.mAutoSize = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXAutoTickSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mAutoSize);
|
|
}
|
|
|
|
static char* iPlotGetAxisYAutoTickSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mAutoSize);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mTick.mMinorSize = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mTick.mMinorSize = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnInt(axis->mTick.mMinorSize);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnInt(axis->mTick.mMinorSize);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickMajorSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mTick.mMajorSize = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickMajorSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mTick.mMajorSize = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickMajorSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnInt(axis->mTick.mMajorSize);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickMajorSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnInt(axis->mTick.mMajorSize);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickFontSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mTick.mFontSize = iPlotGetCDFontSize(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickFontSizeAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mTick.mFontSize = iPlotGetCDFontSize(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickFontSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iPlotGetPlotFontSize(ih, axis->mTick.mFontSize);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickFontSizeAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iPlotGetPlotFontSize(ih, axis->mTick.mFontSize);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickFontStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mTick.mFontStyle = iPlotGetCDFontStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickFontStyleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mTick.mFontStyle = iPlotGetCDFontStyle(value);
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickFontStyleAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iPlotGetPlotFontStyle(ih, axis->mTick.mFontStyle);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickFontStyleAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iPlotGetPlotFontStyle(ih, axis->mTick.mFontStyle);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickFormatAutoAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mTick.mFormatAuto = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickFormatAutoAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mTick.mFormatAuto = iupStrBoolean(value) ? true : false;
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickFormatAutoAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnBoolean(axis->mTick.mFormatAuto);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickFormatAutoAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnBoolean(axis->mTick.mFormatAuto);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickFormatAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (value && value[0] != 0)
|
|
{
|
|
strcpy(axis->mTick.mFormatString, value);
|
|
axis->mTick.mFormatAuto = false;
|
|
}
|
|
else
|
|
{
|
|
strcpy(axis->mTick.mFormatString, IUP_PLOT_DEF_NUMBERFORMAT);
|
|
axis->mTick.mFormatAuto = true;
|
|
}
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickFormatAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (value && value[0] != 0)
|
|
{
|
|
strcpy(axis->mTick.mFormatString, value);
|
|
axis->mTick.mFormatAuto = false;
|
|
}
|
|
else
|
|
{
|
|
strcpy(axis->mTick.mFormatString, IUP_PLOT_DEF_NUMBERFORMAT);
|
|
axis->mTick.mFormatAuto = true;
|
|
}
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisXTickFormatPrecisionAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
int precision;
|
|
if (iupStrToInt(value, &precision))
|
|
{
|
|
sprintf(axis->mTick.mFormatString, "%%.%df", precision);
|
|
axis->mTick.mFormatAuto = false;
|
|
}
|
|
else
|
|
{
|
|
strcpy(axis->mTick.mFormatString, IUP_PLOT_DEF_NUMBERFORMAT);
|
|
axis->mTick.mFormatAuto = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickFormatPrecisionAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
int precision;
|
|
if (iupStrToInt(value, &precision))
|
|
{
|
|
sprintf(axis->mTick.mFormatString, "%%.%df", precision);
|
|
axis->mTick.mFormatAuto = false;
|
|
}
|
|
else
|
|
{
|
|
strcpy(axis->mTick.mFormatString, IUP_PLOT_DEF_NUMBERFORMAT);
|
|
axis->mTick.mFormatAuto = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickFormatAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnStr(axis->mTick.mFormatString);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickFormatAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnStr(axis->mTick.mFormatString);
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickFormatPrecisionAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
int precision = iupStrGetFormatPrecision(axis->mTick.mFormatString);
|
|
return iupStrReturnInt(precision);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickFormatPrecisionAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
int precision = iupStrGetFormatPrecision(axis->mTick.mFormatString);
|
|
return iupStrReturnInt(precision);
|
|
}
|
|
|
|
static int iPlotSetAxisXTipFormatAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (value && value[0] != 0)
|
|
strcpy(axis->mTipFormatString, value);
|
|
else
|
|
strcpy(axis->mTipFormatString, IUP_PLOT_DEF_TIPFORMAT);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTipFormatAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (value && value[0] != 0)
|
|
strcpy(axis->mTipFormatString, value);
|
|
else
|
|
strcpy(axis->mTipFormatString, IUP_PLOT_DEF_TIPFORMAT);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisXTipFormatPrecisionAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
int precision;
|
|
if (iupStrToInt(value, &precision))
|
|
sprintf(axis->mTipFormatString, "%%.%df", precision);
|
|
else
|
|
strcpy(axis->mTipFormatString, IUP_PLOT_DEF_TIPFORMAT);
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTipFormatPrecisionAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
int precision;
|
|
if (iupStrToInt(value, &precision))
|
|
sprintf(axis->mTipFormatString, "%%.%df", precision);
|
|
else
|
|
strcpy(axis->mTipFormatString, IUP_PLOT_DEF_TIPFORMAT);
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTipFormatAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnStr(axis->mTipFormatString);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTipFormatAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnStr(axis->mTipFormatString);
|
|
}
|
|
|
|
static char* iPlotGetAxisXTipFormatPrecisionAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
int precision = iupStrGetFormatPrecision(axis->mTipFormatString);
|
|
return iupStrReturnInt(precision);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTipFormatPrecisionAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
int precision = iupStrGetFormatPrecision(axis->mTipFormatString);
|
|
return iupStrReturnInt(precision);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mShow = true;
|
|
else
|
|
axis->mTick.mShow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mShow);
|
|
}
|
|
|
|
static int iPlotSetAxisYTickAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mShow = true;
|
|
else
|
|
axis->mTick.mShow = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mShow);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickNumberAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mShowNumber = true;
|
|
else
|
|
axis->mTick.mShowNumber = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickNumberAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mShowNumber = true;
|
|
else
|
|
axis->mTick.mShowNumber = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickNumberAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mShowNumber);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickNumberAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mShowNumber);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickRotateNumberAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mRotateNumber = true;
|
|
else
|
|
axis->mTick.mRotateNumber = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickRotateNumberAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mRotateNumber = true;
|
|
else
|
|
axis->mTick.mRotateNumber = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickRotateNumberAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mRotateNumber);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickRotateNumberAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mRotateNumber);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickRotateNumberAngleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrToDouble(value, &(axis->mTick.mRotateNumberAngle)))
|
|
ih->data->current_plot->mRedraw = true;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickRotateNumberAngleAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrToDouble(value, &(axis->mTick.mRotateNumberAngle)))
|
|
ih->data->current_plot->mRedraw = true;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickRotateNumberAngleAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
return iupStrReturnDouble(axis->mTick.mRotateNumberAngle);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickRotateNumberAngleAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnDouble(axis->mTick.mRotateNumberAngle);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickMajorSpanAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mTick.mMajorSpan = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickMajorSpanAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
double xx;
|
|
if (iupStrToDouble(value, &xx))
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mTick.mMajorSpan = xx;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickMajorSpanAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnDouble(axis->mTick.mMajorSpan);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickMajorSpanAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnDouble(axis->mTick.mMajorSpan);
|
|
}
|
|
|
|
static int iPlotSetAxisXTickDivisionAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
axis->mTick.mMinorDivision = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYTickDivisionAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
int ii;
|
|
if (iupStrToInt(value, &ii))
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
axis->mTick.mMinorDivision = ii;
|
|
ih->data->current_plot->mRedraw = true;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXTickDivisionAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnInt(axis->mTick.mMinorDivision);
|
|
}
|
|
|
|
static char* iPlotGetAxisYTickDivisionAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
return iupStrReturnInt(axis->mTick.mMinorDivision);
|
|
}
|
|
|
|
static int iPlotSetAxisXAutoTickAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mAutoSpacing = true;
|
|
else
|
|
axis->mTick.mAutoSpacing = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static int iPlotSetAxisYAutoTickAttrib(Ihandle* ih, const char* value)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
if (iupStrBoolean(value))
|
|
axis->mTick.mAutoSpacing = true;
|
|
else
|
|
axis->mTick.mAutoSpacing = false;
|
|
|
|
ih->data->current_plot->mRedraw = true;
|
|
return 0;
|
|
}
|
|
|
|
static char* iPlotGetAxisXAutoTickAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisX;
|
|
return iupStrReturnBoolean(axis->mTick.mAutoSpacing);
|
|
}
|
|
|
|
static char* iPlotGetAxisYAutoTickAttrib(Ihandle* ih)
|
|
{
|
|
iupPlotAxis* axis = &ih->data->current_plot->mAxisY;
|
|
|
|
return iupStrReturnBoolean(axis->mTick.mAutoSpacing);
|
|
}
|
|
|
|
void iupPlotRegisterAttributes(Iclass* ic)
|
|
{
|
|
/* Visual */
|
|
iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iPlotSetBGColorAttrib, IUPAF_SAMEASSYSTEM, "255 255 255", IUPAF_NOT_MAPPED);
|
|
iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iPlotSetFGColorAttrib, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED);
|
|
iupClassRegisterAttribute(ic, "FONT", NULL, iPlotSetFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* inherited */
|
|
|
|
/* IupPlot only */
|
|
|
|
iupClassRegisterAttribute(ic, "ANTIALIAS", iPlotGetAntialiasAttrib, iPlotSetAntialiasAttrib, IUPAF_SAMEASSYSTEM, "No", IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "REDRAW", NULL, iPlotSetRedrawAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "SYNCVIEW", iPlotGetSyncViewAttrib, iPlotSetSyncViewAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MERGEVIEW", iPlotGetMergeViewAttrib, iPlotSetMergeViewAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "READONLY", iPlotGetReadOnlyAttrib, iPlotSetReadOnlyAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "CANVAS", iPlotGetCanvasAttrib, NULL, NULL, NULL, IUPAF_READONLY | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "GRAPHICSMODE", iPlotGetGraphicsModeAttrib, iPlotSetGraphicsModeAttrib, IUPAF_SAMEASSYSTEM, "NATIVEPLUS", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "USE_IMAGERGB", NULL, iPlotSetUseImageRGBAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "USE_CONTEXTPLUS", NULL, iPlotSetUseContextPlusAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MENUCONTEXT", NULL, NULL, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MENUITEMPROPERTIES", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MENUITEMVALUES", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "SHOWMENUCONTEXT", NULL, iPlotSetShowMenuContextAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "TIPFORMAT", NULL, NULL, IUPAF_SAMEASSYSTEM, "%s (%s, %s)", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "ZOOM", NULL, iPlotSetZoomAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "EDITABLEVALUES", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DATASETCLIPPING", iPlotGetDataSetClippingAttrib, iPlotSetDataSetClippingAttrib, IUPAF_SAMEASSYSTEM, "AREA", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "SHOWCROSSHAIR", iPlotGetShowCrossHairAttrib, iPlotSetShowCrossHairAttrib, NULL, NULL, IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "MARGINLEFTAUTO", iPlotGetMarginLeftAutoAttrib, iPlotSetMarginLeftAutoAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MARGINRIGHTAUTO", iPlotGetMarginRightAutoAttrib, iPlotSetMarginRightAutoAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MARGINTOPAUTO", iPlotGetMarginTopAutoAttrib, iPlotSetMarginTopAutoAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MARGINBOTTOMAUTO", iPlotGetMarginBottomAutoAttrib, iPlotSetMarginBottomAutoAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MARGINLEFT", iPlotGetMarginLeftAttrib, iPlotSetMarginLeftAttrib, IUPAF_SAMEASSYSTEM, "AUTO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MARGINRIGHT", iPlotGetMarginRightAttrib, iPlotSetMarginRightAttrib, IUPAF_SAMEASSYSTEM, "AUTO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MARGINTOP", iPlotGetMarginTopAttrib, iPlotSetMarginTopAttrib, IUPAF_SAMEASSYSTEM, "AUTO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "MARGINBOTTOM", iPlotGetMarginBottomAttrib, iPlotSetMarginBottomAttrib, IUPAF_SAMEASSYSTEM, "AUTO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "PADDING", iPlotGetPaddingAttrib, iPlotSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "5x5", IUPAF_NOT_MAPPED);
|
|
|
|
iupClassRegisterAttribute(ic, "BACKCOLOR", iPlotGetBackColorAttrib, iPlotSetBackColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "BACKIMAGE", iPlotGetBackImageAttrib, iPlotSetBackImageAttrib, NULL, NULL, IUPAF_IHANDLENAME | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "BACKIMAGE_XMIN", iPlotGetBackImageXMinAttrib, iPlotSetBackImageXMinAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "BACKIMAGE_YMIN", iPlotGetBackImageYMinAttrib, iPlotSetBackImageYMinAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "BACKIMAGE_XMAX", iPlotGetBackImageXMaxAttrib, iPlotSetBackImageXMaxAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "BACKIMAGE_YMAX", iPlotGetBackImageYMaxAttrib, iPlotSetBackImageYMaxAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "HIGHLIGHTMODE", iPlotGetHighlightModeAttrib, iPlotSetHighlightModeAttrib, IUPAF_SAMEASSYSTEM, "NONE", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "SCREENTOLERANCE", iPlotGetScreenToleranceAttrib, iPlotSetScreenToleranceAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "TITLE", iPlotGetTitleAttrib, iPlotSetTitleAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "TITLECOLOR", iPlotGetTitleColorAttrib, iPlotSetTitleColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "TITLEFONTSIZE", iPlotGetTitleFontSizeAttrib, iPlotSetTitleFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "TITLEFONTSTYLE", iPlotGetTitleFontStyleAttrib, iPlotSetTitleFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "TITLEPOSAUTO", iPlotGetTitlePosAutoAttrib, iPlotSetTitlePosAutoAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "TITLEPOSXY", iPlotGetTitlePosXYAttrib, iPlotSetTitlePosXYAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "LEGEND", iPlotGetLegendAttrib, iPlotSetLegendAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "LEGENDSHOW", iPlotGetLegendAttrib, iPlotSetLegendAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDPOS", iPlotGetLegendPosAttrib, iPlotSetLegendPosAttrib, IUPAF_SAMEASSYSTEM, "TOPRIGHT", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDPOSXY", iPlotGetLegendPosXYAttrib, iPlotSetLegendPosXYAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDFONTSIZE", iPlotGetLegendFontSizeAttrib, iPlotSetLegendFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDFONTSTYLE", iPlotGetLegendFontStyleAttrib, iPlotSetLegendFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDBOX", iPlotGetLegendBoxAttrib, iPlotSetLegendBoxAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDBOXCOLOR", iPlotGetLegendBoxColorAttrib, iPlotSetLegendBoxColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDBOXBACKCOLOR", iPlotGetLegendBoxBackColorAttrib, iPlotSetLegendBoxBackColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDBOXLINESTYLE", iPlotGetLegendBoxLineStyleAttrib, iPlotSetLegendBoxLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "LEGENDBOXLINEWIDTH", iPlotGetLegendBoxLineWidthAttrib, iPlotSetLegendBoxLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "GRID", iPlotGetGridAttrib, iPlotSetGridAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "GRIDCOLOR", iPlotGetGridColorAttrib, iPlotSetGridColorAttrib, IUPAF_SAMEASSYSTEM, "200 200 200", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "GRIDLINESTYLE", iPlotGetGridLineStyleAttrib, iPlotSetGridLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "GRIDLINEWIDTH", iPlotGetGridLineWidthAttrib, iPlotSetGridLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "GRIDMINOR", iPlotGetGridMinorAttrib, iPlotSetGridMinorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "GRIDMINORCOLOR", iPlotGetGridMinorColorAttrib, iPlotSetGridMinorColorAttrib, IUPAF_SAMEASSYSTEM, "200 200 200", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "GRIDMINORLINESTYLE", iPlotGetGridMinorLineStyleAttrib, iPlotSetGridMinorLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "GRIDMINORLINEWIDTH", iPlotGetGridMinorLineWidthAttrib, iPlotSetGridMinorLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "BOX", iPlotGetBoxAttrib, iPlotSetBoxAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "BOXCOLOR", iPlotGetBoxColorAttrib, iPlotSetBoxColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "BOXLINESTYLE", iPlotGetBoxLineStyleAttrib, iPlotSetBoxLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "BOXLINEWIDTH", iPlotGetBoxLineWidthAttrib, iPlotSetBoxLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "DS_LINESTYLE", iPlotGetDSLineStyleAttrib, iPlotSetDSLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_LINEWIDTH", iPlotGetDSLineWidthAttrib, iPlotSetDSLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_AREATRANSPARENCY", iPlotGetDSAreaTransparencyAttrib, iPlotSetDSAreaTransparencyAttrib, IUPAF_SAMEASSYSTEM, "255", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_MARKSTYLE", iPlotGetDSMarkStyleAttrib, iPlotSetDSMarkStyleAttrib, IUPAF_SAMEASSYSTEM, "X", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_MARKSIZE", iPlotGetDSMarkSizeAttrib, iPlotSetDSMarkSizeAttrib, IUPAF_SAMEASSYSTEM, "7", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_NAME", iPlotGetDSNameAttrib, iPlotSetDSNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "DS_LEGEND", iPlotGetDSNameAttrib, iPlotSetDSNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_COLOR", iPlotGetDSColorAttrib, iPlotSetDSColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_MODE", iPlotGetDSModeAttrib, iPlotSetDSModeAttrib, IUPAF_SAMEASSYSTEM, "LINE", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_REMOVE", NULL, iPlotSetDSRemoveAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_COUNT", iPlotGetDSCountAttrib, NULL, NULL, NULL, IUPAF_READONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_USERDATA", iPlotGetDSUserDataAttrib, iPlotSetDSUserDataAttrib, NULL, NULL, IUPAF_NO_STRING | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_BAROUTLINE", iPlotGetDSBarOutlineAttrib, iPlotSetDSBarOutlineAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_BAROUTLINECOLOR", iPlotGetDSBarOutlineColorAttrib, iPlotSetDSBarOutlineColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_BARMULTICOLOR", iPlotGetDSBarMulticolorAttrib, iPlotSetDSBarMulticolorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_BARSPACING", iPlotGetDSBarSpacingAttrib, iPlotSetDSBarSpacingAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_PIERADIUS", iPlotGetDSPieRadiusAttrib, iPlotSetDSPieRadiusAttrib, IUPAF_SAMEASSYSTEM, "0.95", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_PIESTARTANGLE", iPlotGetDSPieStartAngleAttrib, iPlotSetDSPieStartAngleAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_PIECONTOUR", iPlotGetDSPieContourAttrib, iPlotSetDSPieContourAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_PIEHOLE", iPlotGetDSPieHoleAttrib, iPlotSetDSPieHoleAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_PIESLICELABEL", iPlotGetDSPieSliceLabelAttrib, iPlotSetDSPieSliceLabelAttrib, IUPAF_SAMEASSYSTEM, "NONE", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_PIESLICELABELPOS", iPlotGetDSPieSliceLabelPosAttrib, iPlotSetDSPieSliceLabelPosAttrib, IUPAF_SAMEASSYSTEM, "0.95", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_STRXDATA", iPlotGetDSStrXDataAttrib, NULL, NULL, NULL, IUPAF_READONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_EXTRA", iPlotGetDSExtraAttrib, NULL, NULL, NULL, IUPAF_READONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_ORDEREDX", iPlotGetDSOrderedXAttrib, iPlotSetDSOrderedXAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "DS_SELECTED", iPlotGetDSSelectedAttrib, iPlotSetDSSelectedAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "VIEWPORTSQUARE", iPlotGetViewportSquareAttrib, iPlotSetViewportSquareAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_SCALEEQUAL", iPlotGetAxisScaleEqualAttrib, iPlotSetAxisScaleEqualAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_AUTOSCALEEQUAL", iPlotGetAxisScaleEqualAttrib, iPlotSetAxisScaleEqualAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "AXS_X", iPlotGetAxisXAttrib, iPlotSetAxisXAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_Y", iPlotGetAxisYAttrib, iPlotSetAxisYAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "AXS_XLABEL", iPlotGetAxisXLabelAttrib, iPlotSetAxisXLabelAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YLABEL", iPlotGetAxisYLabelAttrib, iPlotSetAxisYLabelAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XLABELCENTERED", iPlotGetAxisXLabelCenteredAttrib, iPlotSetAxisXLabelCenteredAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YLABELCENTERED", iPlotGetAxisYLabelCenteredAttrib, iPlotSetAxisYLabelCenteredAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XLABELSPACING", iPlotGetAxisXLabelSpacingAttrib, iPlotSetAxisXLabelSpacingAttrib, IUPAF_SAMEASSYSTEM, "AUTO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YLABELSPACING", iPlotGetAxisYLabelSpacingAttrib, iPlotSetAxisYLabelSpacingAttrib, IUPAF_SAMEASSYSTEM, "AUTO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XFONTSIZE", iPlotGetAxisXFontSizeAttrib, iPlotSetAxisXFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YFONTSIZE", iPlotGetAxisYFontSizeAttrib, iPlotSetAxisYFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XFONTSTYLE", iPlotGetAxisXFontStyleAttrib, iPlotSetAxisXFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YFONTSTYLE", iPlotGetAxisYFontStyleAttrib, iPlotSetAxisYFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XDISCRETE", iPlotGetAxisXDiscreteAttrib, iPlotSetAxisXDiscreteAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YDISCRETE", iPlotGetAxisYDiscreteAttrib, iPlotSetAxisYDiscreteAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "AXS_XLINEWIDTH", iPlotGetAxisXLineWidthAttrib, iPlotSetAxisXLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YLINEWIDTH", iPlotGetAxisYLineWidthAttrib, iPlotSetAxisYLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XCOLOR", iPlotGetAxisXColorAttrib, iPlotSetAxisXColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YCOLOR", iPlotGetAxisYColorAttrib, iPlotSetAxisYColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XAUTOMIN", iPlotGetAxisXAutoMinAttrib, iPlotSetAxisXAutoMinAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YAUTOMIN", iPlotGetAxisYAutoMinAttrib, iPlotSetAxisYAutoMinAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XAUTOMAX", iPlotGetAxisXAutoMaxAttrib, iPlotSetAxisXAutoMaxAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YAUTOMAX", iPlotGetAxisYAutoMaxAttrib, iPlotSetAxisYAutoMaxAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XMIN", iPlotGetAxisXMinAttrib, iPlotSetAxisXMinAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YMIN", iPlotGetAxisYMinAttrib, iPlotSetAxisYMinAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XMAX", iPlotGetAxisXMaxAttrib, iPlotSetAxisXMaxAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YMAX", iPlotGetAxisYMaxAttrib, iPlotSetAxisYMaxAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XREVERSE", iPlotGetAxisXReverseAttrib, iPlotSetAxisXReverseAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YREVERSE", iPlotGetAxisYReverseAttrib, iPlotSetAxisYReverseAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XREVERSETICKSLABEL", iPlotGetAxisXReverseTicksLabelAttrib, iPlotSetAxisXReverseTicksLabelAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YREVERSETICKSLABEL", iPlotGetAxisYReverseTicksLabelAttrib, iPlotSetAxisYReverseTicksLabelAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XCROSSORIGIN", iPlotGetAxisXCrossOriginAttrib, iPlotSetAxisXCrossOriginAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YCROSSORIGIN", iPlotGetAxisYCrossOriginAttrib, iPlotSetAxisYCrossOriginAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XPOSITION", iPlotGetAxisXPositionAttrib, iPlotSetAxisXPositionAttrib, IUPAF_SAMEASSYSTEM, "START", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YPOSITION", iPlotGetAxisYPositionAttrib, iPlotSetAxisYPositionAttrib, IUPAF_SAMEASSYSTEM, "START", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XSCALE", iPlotGetAxisXScaleAttrib, iPlotSetAxisXScaleAttrib, IUPAF_SAMEASSYSTEM, "LIN", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YSCALE", iPlotGetAxisYScaleAttrib, iPlotSetAxisYScaleAttrib, IUPAF_SAMEASSYSTEM, "LIN", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XARROW", iPlotGetAxisXArrowAttrib, iPlotSetAxisXArrowAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YARROW", iPlotGetAxisYArrowAttrib, iPlotSetAxisYArrowAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "AXS_XTICK", iPlotGetAxisXTickAttrib, iPlotSetAxisXTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICK", iPlotGetAxisYTickAttrib, iPlotSetAxisYTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKSIZEAUTO", iPlotGetAxisXAutoTickSizeAttrib, iPlotSetAxisXAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKSIZEAUTO", iPlotGetAxisYAutoTickSizeAttrib, iPlotSetAxisYAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_XAUTOTICKSIZE", iPlotGetAxisXAutoTickSizeAttrib, iPlotSetAxisXAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_YAUTOTICKSIZE", iPlotGetAxisYAutoTickSizeAttrib, iPlotSetAxisYAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKMINORSIZE", iPlotGetAxisXTickSizeAttrib, iPlotSetAxisXTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKMINORSIZE", iPlotGetAxisYTickSizeAttrib, iPlotSetAxisYTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_XTICKSIZE", iPlotGetAxisXTickSizeAttrib, iPlotSetAxisXTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_YTICKSIZE", iPlotGetAxisYTickSizeAttrib, iPlotSetAxisYTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKMAJORSIZE", iPlotGetAxisXTickMajorSizeAttrib, iPlotSetAxisXTickMajorSizeAttrib, IUPAF_SAMEASSYSTEM, "8", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKMAJORSIZE", iPlotGetAxisYTickMajorSizeAttrib, iPlotSetAxisYTickMajorSizeAttrib, IUPAF_SAMEASSYSTEM, "8", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKAUTO", iPlotGetAxisXAutoTickAttrib, iPlotSetAxisXAutoTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKAUTO", iPlotGetAxisYAutoTickAttrib, iPlotSetAxisYAutoTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_XAUTOTICK", iPlotGetAxisXAutoTickAttrib, iPlotSetAxisXAutoTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_YAUTOTICK", iPlotGetAxisYAutoTickAttrib, iPlotSetAxisYAutoTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKMAJORSPAN", iPlotGetAxisXTickMajorSpanAttrib, iPlotSetAxisXTickMajorSpanAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKMAJORSPAN", iPlotGetAxisYTickMajorSpanAttrib, iPlotSetAxisYTickMajorSpanAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKMINORDIVISION", iPlotGetAxisXTickDivisionAttrib, iPlotSetAxisXTickDivisionAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKMINORDIVISION", iPlotGetAxisYTickDivisionAttrib, iPlotSetAxisYTickDivisionAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_XTICKDIVISION", iPlotGetAxisXTickDivisionAttrib, iPlotSetAxisXTickDivisionAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
/*OLD*/iupClassRegisterAttribute(ic, "AXS_YTICKDIVISION", iPlotGetAxisYTickDivisionAttrib, iPlotSetAxisYTickDivisionAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKNUMBER", iPlotGetAxisXTickNumberAttrib, iPlotSetAxisXTickNumberAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKNUMBER", iPlotGetAxisYTickNumberAttrib, iPlotSetAxisYTickNumberAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKROTATENUMBER", iPlotGetAxisXTickRotateNumberAttrib, iPlotSetAxisXTickRotateNumberAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKROTATENUMBER", iPlotGetAxisYTickRotateNumberAttrib, iPlotSetAxisYTickRotateNumberAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKROTATENUMBERANGLE", iPlotGetAxisXTickRotateNumberAngleAttrib, iPlotSetAxisXTickRotateNumberAngleAttrib, IUPAF_SAMEASSYSTEM, "90", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKROTATENUMBERANGLE", iPlotGetAxisYTickRotateNumberAngleAttrib, iPlotSetAxisYTickRotateNumberAngleAttrib, IUPAF_SAMEASSYSTEM, "90", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKFORMATAUTO", iPlotGetAxisXTickFormatAutoAttrib, iPlotSetAxisXTickFormatAutoAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKFORMATAUTO", iPlotGetAxisYTickFormatAutoAttrib, iPlotSetAxisYTickFormatAutoAttrib, IUPAF_SAMEASSYSTEM, "Yes", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKFORMAT", iPlotGetAxisXTickFormatAttrib, iPlotSetAxisXTickFormatAttrib, IUPAF_SAMEASSYSTEM, IUP_PLOT_DEF_NUMBERFORMAT, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKFORMAT", iPlotGetAxisYTickFormatAttrib, iPlotSetAxisYTickFormatAttrib, IUPAF_SAMEASSYSTEM, IUP_PLOT_DEF_NUMBERFORMAT, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKFORMATPRECISION", iPlotGetAxisXTickFormatPrecisionAttrib, iPlotSetAxisXTickFormatPrecisionAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKFORMATPRECISION", iPlotGetAxisYTickFormatPrecisionAttrib, iPlotSetAxisYTickFormatPrecisionAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKFONTSIZE", iPlotGetAxisXTickFontSizeAttrib, iPlotSetAxisXTickFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKFONTSIZE", iPlotGetAxisYTickFontSizeAttrib, iPlotSetAxisYTickFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTICKFONTSTYLE", iPlotGetAxisXTickFontStyleAttrib, iPlotSetAxisXTickFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTICKFONTSTYLE", iPlotGetAxisYTickFontStyleAttrib, iPlotSetAxisYTickFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "AXS_XTIPFORMAT", iPlotGetAxisXTipFormatAttrib, iPlotSetAxisXTipFormatAttrib, IUPAF_SAMEASSYSTEM, IUP_PLOT_DEF_TIPFORMAT, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTIPFORMAT", iPlotGetAxisYTipFormatAttrib, iPlotSetAxisYTipFormatAttrib, IUPAF_SAMEASSYSTEM, IUP_PLOT_DEF_TIPFORMAT, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_XTIPFORMATPRECISION", iPlotGetAxisXTipFormatPrecisionAttrib, iPlotSetAxisXTipFormatPrecisionAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "AXS_YTIPFORMATPRECISION", iPlotGetAxisYTipFormatPrecisionAttrib, iPlotSetAxisYTipFormatPrecisionAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "REMOVE", NULL, iPlotSetRemoveAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "CLEAR", NULL, iPlotSetClearAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "COUNT", iPlotGetCountAttrib, NULL, NULL, NULL, IUPAF_READONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "CURRENT", iPlotGetCurrentAttrib, iPlotSetCurrentAttrib, IUPAF_SAMEASSYSTEM, "-1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "PLOT_NUMCOL", iPlotGetPlotNumColAttrib, iPlotSetPlotNumColAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "PLOT_CURRENT", iPlotGetPlotCurrentAttrib, iPlotSetPlotCurrentAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "PLOT_COUNT", iPlotGetPlotCountAttrib, iPlotSetPlotCountAttrib, NULL, NULL, IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "PLOT_REMOVE", NULL, iPlotSetPlotRemoveAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "PLOT_INSERT", NULL, iPlotSetPlotInsertAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
|
|
iupClassRegisterAttribute(ic, "FORMULA_MIN", NULL, NULL, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "FORMULA_MAX", NULL, NULL, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
iupClassRegisterAttribute(ic, "FORMULA_PARAMETRIC", NULL, NULL, IUPAF_SAMEASSYSTEM, "No", IUPAF_NOT_MAPPED | IUPAF_NO_INHERIT);
|
|
}
|
|
|