diff options
Diffstat (limited to 'flogo.cpp')
-rw-r--r-- | flogo.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/flogo.cpp b/flogo.cpp new file mode 100644 index 0000000..96ba34d --- /dev/null +++ b/flogo.cpp @@ -0,0 +1,75 @@ +#include <iostream> +#include <cmath> +#include <FL/Fl.H> +#include <FL/Fl_Window.H> +#include <FL/Fl_Box.H> +#include <FL/Fl_Input.H> +#include <FL/Fl_Multiline_Input.H> +#include <FL/Fl_Scroll.H> +#include <FL/Fl_Image.H> +#include <FL/Fl_draw.H> + +using namespace std; + +const int WIDTH=1000,HEIGHT=1000; + + +Fl_Window *window; +Fl_Scroll *drawscroll; +Fl_Box *drawimagebox; +Fl_RGB_Image *drawimage; +Fl_Input *cmdinput; +uchar *imagebuf; + + +const uchar* someimg(void){ + uchar *buf=new uchar[3*WIDTH*HEIGHT]; + int x,y; + for(y=0;y<HEIGHT;y++){ + for(x=0;x<WIDTH;x++){ + buf[(WIDTH*y+x)*3+0]=(int)sqrt((999-x)*(999-x)+y*y)/100*20; + buf[(WIDTH*y+x)*3+1]=(int)sqrt(x*x+y*y)/100*20; + buf[(WIDTH*y+x)*3+2]=(int)sqrt((500-x)*(500-x)+(0-y)*(0-y))/100*20; + } + } + return buf; +} + +void maincallback(Fl_Widget*,void*){ + if(Fl::event()==FL_SHORTCUT&&Fl::event_key()==FL_Escape)return; + exit(0); +} + +void cmdinputcallback(Fl_Widget *wid){ + Fl_Input *inp=(Fl_Input*)wid; + cout<<inp->value()<<endl; + inp->value(NULL); +} + +int main(int argc,char **argv){ + window=new Fl_Window(1016,700); + Fl_Group::current(0); + + imagebuf=new uchar[WIDTH*HEIGHT*3]; + memset(imagebuf,255,WIDTH*HEIGHT*3*sizeof(uchar)); + + drawscroll=new Fl_Scroll(0,0,window->w(),window->h()-150); + drawimagebox=new Fl_Box(0,0,WIDTH,HEIGHT); + drawimage=new Fl_RGB_Image(imagebuf,WIDTH,HEIGHT); + drawimagebox->image(drawimage); + drawscroll->add(drawimagebox); + window->add(drawscroll); + + cmdinput=new Fl_Input(0,window->h()-25,window->w()-150,25); + cmdinput->when(FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED); + cmdinput->callback(cmdinputcallback); + window->add(cmdinput); + + window->resizable(drawscroll); + + window->end(); + Fl::visual(FL_RGB); + //window->callback(maincallback); //disable esc window closing + window->show(argc,argv); + return Fl::run(); +} |