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 *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, 380, 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, 380, 280, this);
add( tablInputWidget );
outGroup = new Group(10, 325, 380, 500-300);
add( outGroup );
int x_margin = 130;
int length = 100;
deviceName_out = new Output(x_margin, 0, length, 20, "current device");
posX_out = new ValueOutput(x_margin, 30, length, 20, "absolute position X");
posY_out = new ValueOutput(x_margin, 55, length, 20, "absolute position Y");
posXmax_out = new ValueOutput(x_margin+length+45, 30, length, 20, "max X");
posYmax_out = new ValueOutput(x_margin+length+45 , 55, length, 20, "max Y");
pressure_out = new ValueOutput(x_margin, 80, length, 20, "pressure");
tiltX_out = new ValueOutput(x_margin, 105, length, 20, "tilt X");
tiltY_out = new ValueOutput(x_margin, 130, length, 20, "tilt Y");
msgFrequency_out = new ValueOutput(x_margin+150, 160, length, 20, "tablet
messages per second (1 sec update time):");
outGroup->add(deviceName_out);
outGroup->add(posX_out);
outGroup->add(posY_out);
outGroup->add(posXmax_out);
outGroup->add(posYmax_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(400, 520, "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_->posY_out->value(event_y_tablet());
parent_->posXmax_out->value(tablet_x_max());
parent_->posYmax_out->value(tablet_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