ChartObject WebFAQ - Q12
#include <Xint/Box.h>
#include <Xint/Chart.h>
#include <Xint/EditObject.h>
#include <Xm/Xm.h>
#include <Xm/Text.h>
#include <Xm/Form.h>
static String x_labels[] = {"Houston", "Dallas", "Austin", "San Antonio"};
Widget top_level;
Widget edit;
Widget text;
static float d1992[] = { 00.0, 30.0, 20.0, 20.0};
static float d1993[] = { 10.0, 45.0, 32.0, 30.0};
static float d1994[] = { 15.0, 25.0, 27.0, 35.0};
static void LocCallback(widget, data, cb)
Widget widget;
XtPointer data;
XintEditObjectLocatorCallbackStruct *cb;
{
char s[300];
int x, y;
float user_x,user_y ;
if (cb->event) {
x = cb->event->xbutton.x;
y = cb->event->xbutton.y;
}
XintHorizontalPixelToUser(widget, x, &user_x);
XintVerticalPixelToUser(widget, y, &user_y);
sprintf(s, "The x_y pixel coordinate in the event window is \n
(%d, %d).\n
After converted into the user coordinate, it is\n
(%f, %f),\n
which is identical to the coordinate in the callback structure \n (%f, %f)",
x, y, user_x, user_y, cb->user_x, cb->user_y);
XmTextSetString(text, s);
}
main(argc, argv)
int argc;
char *argv[];
{
XtAppContext app_context;
Object data_group;
Object chart;
Widget container;
XintGeometry chart_geometry;
Arg al[10];
int ac = 0;
top_level = XtAppInitialize(&app_context, "test",
(XrmOptionDescList)NULL, 0,
&argc, argv, NULL, NULL, 0);
ac = 0;
container = XtCreateManagedWidget("container", xmFormWidgetClass,
top_level, al, ac);
/* Create an EditObject widget*/
edit = XtVaCreateManagedWidget("edit_object",
xintEditObjectWidgetClass,container,
XmNtopAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNwidth, 600, XmNheight, 600,
XmNobjectEditMode, XintEDIT_ADJUST,
NULL);
XtAddCallback(edit, XmNlocatorCallback,
(XtCallbackProc) LocCallback, NULL);
XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg(al[ac], XmNheight, 150); ac++;
XtSetArg(al[ac], XmNhorizontalStretch, XintFILL); ac++;
XtSetArg(al[ac], XmNhorizontalShrink, XintFILL); ac++;
XtSetArg(al[ac], XmNeditable, False); ac++;
XtSetArg(al[ac], XmNautoShowCursorPosition, False); ac++;
XtSetArg(al[ac], XmNeditMode, XmMULTI_LINE_EDIT); ac++;
XtSetArg(al[ac], XmNtraversalOn, False); ac++;
XtSetArg(al[ac], XmNsensitive, False); ac++;
text = XmCreateText(container,"text", al, ac);
XtManageChild(text);
XtVaSetValues(edit, XmNbottomAttachment, XmATTACH_WIDGET,
XmNbottomWidget, text,
NULL);
/* Create Chart object */
chart_geometry.x1 = 0;
chart_geometry.y1 = 0;
chart_geometry.x2 = 100;
chart_geometry.y2 = 100;
chart = (Object) XtVaCreateWidget("BarPlot",
(WidgetClass)xintChartObjectClass, edit,
XmNgeometry, &chart_geometry,
XmNchartType, XintCHART_TYPE_BAR,
XmNchartTitle, "Yearly Sales",
XmNshowLegend, True,
NULL);
/* Create a data group */
data_group = XintCreateDataGroup(edit, "Yearly Sales", NULL, 0);
XtVaCreateWidget("Cities", (WidgetClass)xintDataLabelObjectClass,
edit,
XmNlabelStrings, x_labels,
XmNlabelCount, sizeof(x_labels)/sizeof(String),
XmNlabelOrientation, XintLABEL_X,
XmNdataGroup, data_group, NULL);
XtVaCreateWidget("1992", (WidgetClass)xintDataSampledObjectClass,
edit,
XmNdataArray, d1992,
XmNcount, sizeof(d1992)/sizeof(float),
XmNdataType, XintDATA_TYPE_FLOAT,
XmNdataGroup, data_group, NULL);
XtVaCreateWidget("1993", (WidgetClass)xintDataSampledObjectClass,
edit,
XmNdataArray, d1993,
XmNcount, sizeof(d1993)/sizeof(float),
XmNdataType, XintDATA_TYPE_FLOAT,
XmNdataGroup, data_group, NULL);
XtVaCreateWidget("1994", (WidgetClass)xintDataSampledObjectClass,
edit,
XmNdataArray, d1994,
XmNcount, sizeof(d1994)/sizeof(float),
XmNdataType, XintDATA_TYPE_FLOAT,
XmNdataGroup, data_group, NULL);
/* Associate the data group with the chart object */
XintChartAssociateData(chart, data_group);
/* Loop forever */
XtRealizeWidget(top_level);
XtAppMainLoop(app_context);
}
Click here for the Image
Back to ChartObject FAQ
© INT 1996.