From a6163888f3c56123b1db313743c6147ba498732c Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Fri, 8 Aug 2014 14:42:07 +0300 Subject: Add third_party libs --- third_party/windows/fltk-1.1.10/src/forms_free.cxx | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 third_party/windows/fltk-1.1.10/src/forms_free.cxx (limited to 'third_party/windows/fltk-1.1.10/src/forms_free.cxx') diff --git a/third_party/windows/fltk-1.1.10/src/forms_free.cxx b/third_party/windows/fltk-1.1.10/src/forms_free.cxx new file mode 100644 index 0000000..7b589e5 --- /dev/null +++ b/third_party/windows/fltk-1.1.10/src/forms_free.cxx @@ -0,0 +1,81 @@ +// +// "$Id: forms_free.cxx 5190 2006-06-09 16:16:34Z mike $" +// +// Forms free widget routines for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2005 by Bill Spitzak and others. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems on the following page: +// +// http://www.fltk.org/str.php +// + +// Emulation of the Forms "free" widget. +// This emulation allows the free demo to run, and has allowed +// me to port several other programs, but it is in no way +// complete. + +#include +#include + +void Fl_Free::step(void *v) { + Fl_Free *f = (Fl_Free *)v; + int old_event = Fl::e_number; + f->handle(Fl::e_number == FL_STEP); + Fl::e_number = old_event; + Fl::add_timeout(.01,step,v); +} + +Fl_Free::Fl_Free(uchar t,int X, int Y, int W, int H,const char *l, + FL_HANDLEPTR hdl) : +Fl_Widget(X,Y,W,H,l) { + type(t); + hfunc = hdl; + if (t == FL_SLEEPING_FREE) set_flag(INACTIVE); + if (t == FL_CONTINUOUS_FREE || t == FL_ALL_FREE) + Fl::add_timeout(.01,step,this); +} + +Fl_Free::~Fl_Free() { + Fl::remove_timeout(step,this); + hfunc(this,FL_FREEMEM,0,0,0); +} + +void Fl_Free::draw() {hfunc(this,FL_DRAW,0,0,0);} + +int Fl_Free::handle(int e) { + char key = Fl::event_key(); + switch (e) { + case FL_FOCUS: + if (type()!=FL_INPUT_FREE && type()!=FL_ALL_FREE) return 0; + break; + case FL_PUSH: + case FL_DRAG: + case FL_RELEASE: + key = 4-Fl::event_button(); + break; + case FL_SHORTCUT: + return 0; + } + if (hfunc(this, e, float(Fl::event_x()), float(Fl::event_y()), key)) do_callback(); + return 1; +} + +// +// End of "$Id: forms_free.cxx 5190 2006-06-09 16:16:34Z mike $". +// -- cgit v1.3.1