class RtMeter PtBasic { meter_color; // color (Rt_ARG_METER_COLOR) meter_flags; // flag (Rt_ARG_METER_FLAGS) meter_font_color; // color (Rt_ARG_METER_FONT_COLOR) meter_increment; // integer (Rt_ARG_METER_INCREMENT) meter_key_left; // integer (Rt_ARG_METER_KEY_LEFT) meter_key_right; // integer (Rt_ARG_METER_KEY_RIGHT) meter_level1_color; // color (Rt_ARG_METER_LEVEL1_COLOR) meter_level1_pos; // short (Rt_ARG_METER_LEVEL1_POS) meter_level2_color; // color (Rt_ARG_METER_LEVEL2_COLOR) meter_level2_pos; // short (Rt_ARG_METER_LEVEL2_POS) meter_level3_color; // color (Rt_ARG_METER_LEVEL3_COLOR) meter_max_needle_position; // short (Rt_ARG_METER_MAX_NEEDLE_POSITION) meter_min_needle_position; // short (Rt_ARG_METER_MIN_NEEDLE_POSITION) meter_needle_color; // color (Rt_ARG_METER_NEEDLE_COLOR) meter_needle_position; // short (Rt_ARG_METER_NEEDLE_POSITION) meter_num_severity_levels; // short (Rt_ARG_METER_NUM_SEVERITY_LEVELS) meter_text_font; // string (Rt_ARG_METER_TEXT_FONT) }
This widget is a half-circle meter with an indicator needle and up to three different-colored pie-shaped arcs that mark three chosen ranges on the meter. The QNX 6 version of this widget is PtMeter.
![]() | For detailed information, please refer to RtMeter in the Photon documentation. |
| Constant | Description |
|---|---|
| RtM_NON_SELECTABLE | The meter is non-interactive. |
| RtM_SELECTABLE | The meter is interactive. Default is ON. |
| RtM_NO_TEXT | The minimum and maximum values are not displayed. |
This example, ex_Meter.g, is included in the product distribution.
#!/usr/cogent/bin/phgamma
/*
* This example demonstrates an RtMeter in QNX 4, or a
* PtMeter in QNX 6.
*/
require_lisp("PhotonWidgets.lsp");
PtInit(nil);
function display_value(wnum, wmet)
{
wmet.meter_needle_position = wnum.numeric_value;
}
function reset_num(wnum, wmet)
{
wnum.numeric_value = wmet.meter_needle_position;
}
win = new(PtWindow);
win.SetArea(100, 100, 250, 250);
if (_os_ == "QNX4")
meter = new(RtMeter);
else if (_os_ == "QNX6")
meter = new(PtMeter);
meter.SetArea(20, 40, 200, 200);
meter.meter_color = 0xccddff;
meter.meter_max_needle_position = 150;
meter.meter_min_needle_position = 0;
meter.meter_level1_color = 0x00ff00;
meter.meter_level1_pos = 50;
meter.meter_level2_color = 0xffff00;
meter.meter_level2_pos = 100;
meter.meter_level3_color = 0xff0000;
meter.meter_needle_position = 70;
meter.meter_needle_color = 0x000000;
num = new(PtNumericInteger);
num.SetArea(100, 150, 50, 20);
num.numeric_increment = 10;
num.numeric_min = 0;
num.numeric_max = 150;
num.numeric_value = 70;
num.numeric_flags = cons(Pt_NUMERIC_WRAP, nil);
num.numeric_flags = cons(Pt_NUMERIC_AUTO_HIGHLIGHT, nil);
label = new(PtLabel);
label.SetPos(10, 190);
label.text_font = "helv09";
label.text_string = string("Adjust the meter by clicking anywhere,\n",
"by dragging the needle, or by changing \n",
"the value in the PtNumeric widget.");
if (_os_ == "QNX4")
PtAttachCallback(meter, Rt_CB_METER_MOVED, `reset_num(@num, @meter));
else if (_os_ == "QNX6")
PtAttachCallback(meter, Pt_CB_METER_MOVED, `reset_num(@num, @meter));
PtAttachCallback(num, Pt_CB_NUMERIC_CHANGED, `display_value(@num, @meter));
display_value(num, meter);
PtRealizeWidget(win);
PtMainLoop();
Copyright © 1995-2006 by Cogent Real-Time Systems, Inc. All rights reserved.