ChartObject WebFAQ - Q12



#include &ltXint/Box.h>
#include &ltXint/Chart.h>
#include &ltXint/EditObject.h>
#include &ltXm/Xm.h>
#include &ltXm/Text.h>
#include &ltXm/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-&gtevent) {
      x = cb-&gtevent-&gtxbutton.x;
      y = cb-&gtevent-&gtxbutton.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-&gtuser_x, cb-&gtuser_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.
@ ³4 XmNdataArray, d1994, XmNcount, sizeof(d1994)/sizeof(float),