DO NOT REPLY TO THIS MESSAGE. INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.
[STR New]
Link: http://www.fltk.org/str.php?L1924
Version: 2.0-current
Link: http://www.fltk.org/str.php?L1924
Version: 2.0-current
//////////////////////////////////////////////////////////////
///
/// This program shows tablet message statistics,
/// using the FLTK2 tablet support.
///
///
///
//////////////////////////////////////////////////////////////
#include <fltk/Window.h>
#include <fltk/Widget.h>
#include <fltk/Group.h>
#include <fltk/run.h>
#include <fltk/events.h>
#include <fltk/Color.h>
#include <fltk/Output.h>
#include <fltk/ValueOutput.h>
using namespace fltk;
const float MESSAGE_FREQ_CHECK_TIME = 1.;
class MyWindow;
class TabletWidget: public Widget
{
public:
TabletWidget(int x, int y, int w, int h, MyWindow *parent);
virtual int handle ( int event );
private:
MyWindow *parent_;
int msgCount_;
};
class MyWindow : public Window
{
private:
TabletWidget *tablInputWidget;
Output *enabled_out;
Group *outGroup;
public:
Output *deviceName_out;
ValueOutput *posX_out, *posXmax_out;
ValueOutput *posY_out, *posYmax_out;
ValueOutput *posXabs_out, *posXabsMax_out;
ValueOutput *posYabs_out, *posYabsMax_out;
ValueOutput *pressure_out;
ValueOutput *tiltX_out;
ValueOutput *tiltY_out;
ValueOutput *msgFrequency_out;
MyWindow(int w, int h, const char* name, bool tabletEnabled)
: Window(w, h, name) {
enabled_out = new Output(10, 10, w-20, 20);
if (tabletEnabled) {
enabled_out->value("Tablet device enabled");
enabled_out->color(GREEN);
}
else {
enabled_out->value("Can't enable tablet device - check your drivers");
enabled_out->color(RED);
}
add( enabled_out );
tablInputWidget = new TabletWidget(10, 35, w-20, 280, this);
add( tablInputWidget );
outGroup = new Group(10, 325, 380, 500-300);
add( outGroup );
int x_margin = 130;
int length = 100;
int skip_x = 110;
int y_pos = 0;
int widg_h = 20;
int skip_h = 10;
deviceName_out = new Output(x_margin, y_pos, length, widg_h, "current
device");
y_pos += widg_h+skip_h;
posX_out = new ValueOutput(x_margin, y_pos, length, widg_h, "position X");
posXmax_out = new ValueOutput(x_margin+length+skip_x, y_pos, length,
widg_h, "max X");
y_pos += widg_h+skip_h;
posY_out = new ValueOutput(x_margin, y_pos, length, widg_h, "position Y");
posYmax_out = new ValueOutput(x_margin+length+skip_x, y_pos, length,
widg_h, "max Y");
y_pos += widg_h+skip_h;
posXabs_out = new ValueOutput(x_margin, y_pos, length, widg_h, "absolute
position X");
posXabsMax_out = new ValueOutput(x_margin+length+skip_x, y_pos, length,
widg_h, "max absolute X");
y_pos += widg_h+skip_h;
posYabs_out = new ValueOutput(x_margin, y_pos, length, widg_h, "absolute
position Y");
posYabsMax_out = new ValueOutput(x_margin+length+skip_x , y_pos, length,
widg_h, "max absolute Y");
y_pos += widg_h+skip_h;
pressure_out = new ValueOutput(x_margin, y_pos, length, widg_h, "pressure");
y_pos += widg_h+skip_h;
tiltX_out = new ValueOutput(x_margin, y_pos, length, widg_h, "tilt X");
y_pos += widg_h+skip_h;
tiltY_out = new ValueOutput(x_margin, y_pos, length, widg_h, "tilt Y");
y_pos += widg_h+skip_h;
y_pos += widg_h+skip_h;
msgFrequency_out = new ValueOutput(x_margin+210, y_pos, length, widg_h,
"tablet messages per second (1 sec update time):");
y_pos += widg_h+skip_h;
outGroup->add(deviceName_out);
outGroup->add(posX_out);
outGroup->add(posY_out);
outGroup->add(posXmax_out);
outGroup->add(posYmax_out);
outGroup->add(posXabs_out);
outGroup->add(posYabs_out);
outGroup->add(posXabsMax_out);
outGroup->add(posYabsMax_out);
outGroup->add(pressure_out);
outGroup->add(tiltX_out);
outGroup->add(tiltY_out);
outGroup->add(msgFrequency_out);
tablInputWidget->add_timeout(MESSAGE_FREQ_CHECK_TIME);
}
};
int main(int argc, char *argv[])
{
bool tabletEnabled = enable_tablet_events();
MyWindow wnd(470, 650, "tablet test", tabletEnabled);
wnd.show();
return run();
}
TabletWidget::TabletWidget(int x, int y, int w, int h, MyWindow *parent)
: Widget(x, y, w, h, "Place your stylus here")
, parent_(parent)
{
}
int TabletWidget::handle ( int event )
{
if (event == TIMEOUT) {
parent_->msgFrequency_out->value(
((float)msgCount_)/MESSAGE_FREQ_CHECK_TIME );
msgCount_ = 0;
repeat_timeout(MESSAGE_FREQ_CHECK_TIME);
}
if (event == TABLET || event == MOVE) {
switch( event_device() ) {
case DEVICE_MOUSE:
parent_->deviceName_out->value("MOUSE");
break;
case DEVICE_STYLUS:
parent_->deviceName_out->value("STYLUS");
break;
case DEVICE_ERASER:
parent_->deviceName_out->value("ERASER");
break;
case DEVICE_CURSOR:
parent_->deviceName_out->value("CURSOR");
break;
case DEVICE_AIRBRUSH:
parent_->deviceName_out->value("AIRBRUSH");
break;
default:
parent_->deviceName_out->value("unknown device");
}
parent_->posX_out->value(event_x_tablet());
parent_->posXmax_out->value(tablet_x_max());
parent_->posY_out->value(event_y_tablet());
parent_->posYmax_out->value(tablet_y_max());
parent_->posXabs_out->value(event_x_root_tablet());
parent_->posXabsMax_out->value(tablet_root_x_max());
parent_->posYabs_out->value(event_y_root_tablet());
parent_->posYabsMax_out->value(tablet_root_y_max());
parent_->pressure_out->value(event_pressure());
parent_->tiltX_out->value(event_x_tilt());
parent_->tiltY_out->value(event_y_tilt());
if (event == TABLET)
msgCount_++;
}
return Widget::handle(event);
}
_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs