VkMeter(3x)

VkMeter - Display a layered bar graph

As shipped in IRIX 6.5.15. Unchanged since IRIX 6.5.

NAME
     VkMeter - Display a layered bar graph

INHERITS FROM
     VkDoubleBuffer : VkComponent : VkCallbackObject

HEADER FILE
     #include <Vk/VkMeter.h>

PUBLIC PROTOCOL SUMMARY
   Constructor/Destructor
           VkMeter(const char *name, Widget parent);
           virtual void ~VkMeter(void);


   Adding Data
           void reset(int range = -1, int units = -1);
           void add(int value, char *color, char *label = NULL);
           void add(int value, Pixel pixel, char *label = NULL);
           void add(int value, int thickness, char *color,
                    char *label = NULL);
           void add(int value, int thickness, Pixel pixel,
                    char *label = NULL);
           void add(int start, int size, int sideValue, int thickness,
                    char *color, char *label = NULL);
           void add(int start, int size, int sideValue, int thickness,
                     Pixel color, char *label = NULL);


   Drawing the Meter
           void update();


   Geometry
           void setOrientation();
           void setResizePolicy( unsigned char policy);


X RESOURCES ASSOCIATED WITH THIS CLASS
           orientation,
           colorList,
           autoScale


CLASS DESCRIPTION
          The VkMeter class supports simple compound bar charts. Single or
          multiple data items can be displayed in a double-buffered window.
          The meter can be displayed in vertical or horizontal mode.

          The VkMeter class allows one or more integer values to be displayed
          graphically.  Values are added one at a time, and displayed by
          calling an update() member function. The range of values displayed
          can be specified by calling the reset() member function with a new
          value.  See examples below.



FUNCTION DESCRIPTIONS
   VkMeter()
          VkMeter(const char *name, Widget parent);


          Initialize an instance of VkMeter.

   ~VkMeter()
          virtual void ~VkMeter(void);


          Free all memory allocated by an VkMeter object.

   reset()
          void reset(int peak = -1, int units = -1);


          This function clears the values of all currently displayed data and
          optionally sets the peak value to be displayed by the meter. The
          second argument can be used to specify a scale factor to be applied
          to the "width" of the data displayed by the meter. If no values are
          specified, the peak value defaults to 100, and the unit size
          defaults to 1.

   add()
           void add(int value, char *color, char *label = NULL);
           void add(int value, Pixel pixel, char *label = NULL);
           void add(int value, int thickness,
                    char *color, char *label = NULL);
           void add(int value, int thickness,
                     Pixel pixel, char *label = NULL);

           void add(int start, int size, int sideValue,
                    int thickness, char *color, char *label = NULL);
           void add(int start, int size, int sideValue,
                    int thickness, Pixel color, char *label = NULL);


          All forms of this overloaded function add a data item to be
          displayed by the meter. The value argument indicates a value to be
          displayed in the graph. When one of the first four forms of this
          function are used, multiple data items are displayed sequentially.
          For example, if the range is set to 100 (the default) and value of
          10, 20, and 30 are added, the meter will display a bar from 0-10,
          10-30, and 30-60.

          All data items must have an associated color. The color can be
          specified as a pixel value, or as a string. When a string is
          provided, the string is first treated as the name of a resource to
          be looked up and converted to the desired color. If no such resource
          is found, the string is taken to be the name of a color. For
          example, items might be added as follows:


           add(10, "red")
           add(20, "DataTwoColor");



          The second and third forms of the add() function allow a thickness
          to be specified as well. This value controls the width of each item
          in the bar when the bar is vertical and the height when the bar is
          horizontal.

          The final two forms of the add() function provide the most control
          over the data displayed in the meter. The first and second arguments
          specify the starting point of the data (the bottom, when the meter
          is vertical) and the size. The third and fourth arguments specify a
          starting point and size in the opposite dimension. For example:


           add(0, 10, 0, 1, "red");
           add(0, 10, 1, 1, "blue");
           add(0, 10, 2, 1, "green");
           add(20, 10, 0, 3, "yellow");



          When the graph is vertical, this produces a display with three
          vertical lines from 0-10, side by side, in red, yellow and green.
          Above these three lines is a space, and a yellow bar starts at 20
          and extends to thirty. This yellow strip is as wide as all three of
          the previous lines. The total width of the displayed graph is equal
          to the sum of the widths times the scale factor specified in the
          call to reset.

   update()
           void update();


          This function causes all values added with the add() member function
          to be displayed.

   setResizePolicy()
           void setResizePolicy( unsigned char policy )

          This function allows applications to determine the dynamic resize
          policy followed by the meter. Possible values are XmRESIZE_NONE,
          XmRESIZE_GROW, or XmRESIZE_ANY. If the policy is set to
          XmRESIZE_NONE, the meter will never attempt to resize itself. The
          application, or managing widget is in complete control. If the value
          is set to XmRESIZE_GROW, the meter will call XtSetValues() on the
          widget used to display the meter to attempt to grow as needed. The
          success of the call to XtSetValues() depends, of course, on the
          parent widget's policy. If The resize policy is set to XmRESIZE_ANY,
          the meter will attempt to resize itself to grow or shrink as needed.

          This function is not currently used by the VkMeter class, but is
          used by derived classes.

   setTitle()
           void setTitle( const char *title )


          Specifies a title to be displayed by the meter.  This function is
          not currently used by the VkMeter class, but is used by derived
          classes.

EXAMPLE
     The following example creates a meter component that displays four
     values.


           #include <Vk/VkApp.h>
           #include <Vk/VkSimpleWindow.h>
           #include <Vk/VkMeter.h>
           #include <math.h>

           class MeterWindow: public VkSimpleWindow {

            public:

              MeterWindow ( const char *name );
              ~MeterWindow ();
              virtual const char* className();
           };

           MeterWindow::~MeterWindow ()
           {
               // Empty
           }

           const char* MeterWindow::className()
           {
                 return "MeterWindow";
            }

           MeterWindow::MeterWindow(const char *name) :
                    VkSimpleWindow(name)
           {
              VkMeter *meter = new VkMeter("meter",
                                           mainWindowWidget());

              meter->reset(100);
              meter->add ((int) (10.0 ), 20, "red"  );
              meter->add( (int) (20.0),  20, "green" );
              meter->add( (int) (30.0 ), 20, "blue" );
              meter->add( (int) (40.0),  20, "orange");

              meter->update( );

              meter->show();

              addView( meter);
           }

           void main ( int argc, char **argv )
           {
              VkApp   *meterApp = new VkApp("MeterApp",
                                             &argc, argv);

              MeterWindow  *meterWin = new MeterWindow("meter");
              meterWin->show();
              meterApp->run();
           }



INHERITED MEMBER FUNCTIONS
   Inherited from VkDoubleBuffer
          _canvas, _width,  _height


   Inherited from VkComponent
          installDestroyHandler(), removeDestroyHandler(), widgetDestroyed(),
          setDefaultResources(), getResources(), manage(), unmanage(),
          baseWidget(), okToQuit(), _name, _baseWidget, _w, deleteCallback


   Inherited from VkCallbackObject
          callCallbacks(), addCallback(), removeCallback(),
          removeAllCallbacks()


KNOWN DERIVED CLASSES
     VkPie

CLASSES USED BY THIS CLASS
     VkApp

SEE ALSO
     VkDoubleBuffer, VkComponent, VkApp, VkPie
     ViewKit Programmer's Guide
     The X Window System, DEC Press, Bob Sheifler and Jim Gettys
     The X Window System Toolkit, DEC Press, Paul Asente and Ralph Swick
     The OSF/Motif Programmers Reference, Prentice Hall, OSF