Exemplo n.º 1
0
int main(int argc, char **argv) {
  window = new Fl_Double_Window(400,400);

  input = new Fl_Input(25,375,350,25);
  input->static_value("The quick brown fox jumps over the lazy dog.");
  input->when(FL_WHEN_CHANGED);
  input->callback(input_cb);

  sizes= new Fl_Value_Slider(50,350,350,25,"Size:");
  sizes->type(Fl_Slider::HORIZONTAL);
  sizes->clear_flag(FL_ALIGN_MASK);
  sizes->set_flag(FL_ALIGN_LEFT);
  sizes->range(1,64);
  sizes->step(1);
  sizes->value(14);
  sizes->callback(size_cb);

  fonts=new Fl_Value_Slider(50,325,350,25,"Font:");
  fonts->type(Fl_Slider::HORIZONTAL);
  fonts->clear_flag(FL_ALIGN_MASK);
  fonts->set_flag(FL_ALIGN_LEFT);
  fonts->range(0,15);
  fonts->step(1);
  fonts->value(0);
  fonts->callback(font_cb);

  Fl_Group *g = new Fl_Group(25,300,350,25);

  leftb = new Fl_Toggle_Button(0,0,50,25,"left");
  leftb->callback(button_cb);
  rightb = new Fl_Toggle_Button(50,0,50,25,"right");
  rightb->callback(button_cb);
  topb = new Fl_Toggle_Button(100,0,50,25,"top");
  topb->callback(button_cb);
  bottomb = new Fl_Toggle_Button(150,0,50,25,"bottom");
  bottomb->callback(button_cb);
  insideb = new Fl_Toggle_Button(200,0,50,25,"inside");
  insideb->callback(button_cb);
  wrapb = new Fl_Toggle_Button(250,0,50,25,"wrap");
  wrapb->callback(button_cb);
  clipb = new Fl_Toggle_Button(300,0,50,25,"clip");
  clipb->callback(button_cb);
  g->end();

  Fl_Choice *c = new Fl_Choice(100,250,200,25);
  c->menu(choices);

  text= new Fl_Box(100,75,200,100,input->value());
  text->box(FL_ENGRAVED_BOX);
  text->clear_flag(FL_ALIGN_MASK);
  text->set_flag(FL_ALIGN_CENTER);
  window->resizable(text);
  window->end();
  window->show(argc,argv);
  return Fl::run();
}
//----------------------------------------------------
// Constructor.  Creates all of the widgets.
// Add new widgets here
//----------------------------------------------------
ImpressionistUI::ImpressionistUI() {
	// Create the main window
	m_mainWindow = new Fl_Window(600, 300, "Impressionist");
		m_mainWindow->user_data((void*)(this));	// record self to be used by static callback functions
		// install menu bar
		m_menubar = new Fl_Menu_Bar(0, 0, 600, 25);
		m_menubar->menu(menuitems);

		// Create a group that will hold two sub windows inside the main
		// window
		Fl_Group* group = new Fl_Group(0, 25, 600, 275);

			// install paint view window
			m_paintView = new PaintView(300, 25, 300, 275, "This is the paint view");//0jon
			m_paintView->box(FL_DOWN_FRAME);

			// install original view window
			m_origView = new OriginalView(0, 25, 300, 275, "This is the orig view");//300jon
			m_origView->box(FL_DOWN_FRAME);
			// m_origView->deactivate();

		group->end();
		Fl_Group::current()->resizable(group);
    m_mainWindow->end();

	// init values

	m_nSize = 10;
	m_nAngle = 45;
	m_nAlpha = 255;
	m_nBackgroundAlpha = 100;

	// brush dialog definition
	m_brushDialog = new Fl_Window(400, 325, "Brush Dialog");
		// Add a brush type choice to the dialog
		m_BrushTypeChoice = new Fl_Choice(50,10,150,25,"&Brush");
		m_BrushTypeChoice->user_data((void*)(this));	// record self to be used by static callback functions
		m_BrushTypeChoice->menu(brushTypeMenu);
		m_BrushTypeChoice->callback(cb_brushChoice);

		m_ClearCanvasButton = new Fl_Button(240,10,150,25,"&Clear Canvas");
		m_ClearCanvasButton->user_data((void*)(this));
		m_ClearCanvasButton->callback(cb_clear_canvas_button);

		m_transparentBackgroundButton = new Fl_Button(130,280,150,25,"&Show Background");
		m_transparentBackgroundButton->user_data((void*)(this));
		m_transparentBackgroundButton->callback(cb_transparentBackground);

		m_edgeImageButton = new Fl_Button(130,180,150,25,"&Toggle Edge Image");
		m_edgeImageButton->user_data((void*)(this));
		m_edgeImageButton->callback(cb_edgeImage);

		//Add angle choice menu
		Fl_Choice * myChoice = new Fl_Choice(95,60,150,25,"&Angle Choice");
		myChoice->user_data((void*)(this));	 // record self to be used by static callback functions
		myChoice->menu(angleChoiceMenu);
		myChoice->callback(cb_angleChoice);

		// Add brush size slider to the dialog 
		m_BrushSizeSlider = new Fl_Value_Slider(10, 100, 300, 20, "Size");
		m_BrushSizeSlider->user_data((void*)(this));	// record self to be used by static callback functions
		m_BrushSizeSlider->type(FL_HOR_NICE_SLIDER);
        m_BrushSizeSlider->labelfont(FL_COURIER);
        m_BrushSizeSlider->labelsize(12);
		m_BrushSizeSlider->minimum(1);
		m_BrushSizeSlider->maximum(40);
		m_BrushSizeSlider->step(1);
		m_BrushSizeSlider->value(m_nSize);
		m_BrushSizeSlider->align(FL_ALIGN_RIGHT);
		m_BrushSizeSlider->callback(cb_sizeSlides);

		// Add brush angle slider to the dialog 
		m_BrushSizeSlider = new Fl_Value_Slider(10, 120, 300, 20, "Angle");
		m_BrushSizeSlider->user_data((void*)(this));	// record self to be used by static callback functions
		m_BrushSizeSlider->type(FL_HOR_NICE_SLIDER);
        m_BrushSizeSlider->labelfont(FL_COURIER);
        m_BrushSizeSlider->labelsize(12);
		m_BrushSizeSlider->minimum(0);
		m_BrushSizeSlider->maximum(180);
		m_BrushSizeSlider->step(1);
		m_BrushSizeSlider->value(m_nAngle);
		m_BrushSizeSlider->align(FL_ALIGN_RIGHT);
		m_BrushSizeSlider->callback(cb_angleSlides);

		// Add brush angle slider to the dialog 
		m_BrushSizeSlider = new Fl_Value_Slider(10, 140, 300, 20, "Opacity");
		m_BrushSizeSlider->user_data((void*)(this));	// record self to be used by static callback functions
		m_BrushSizeSlider->type(FL_HOR_NICE_SLIDER);
        m_BrushSizeSlider->labelfont(FL_COURIER);
        m_BrushSizeSlider->labelsize(12);
		m_BrushSizeSlider->minimum(0);
		m_BrushSizeSlider->maximum(255);
		m_BrushSizeSlider->step(1);
		m_BrushSizeSlider->value(m_nAlpha);
		m_BrushSizeSlider->align(FL_ALIGN_RIGHT);
		m_BrushSizeSlider->callback(cb_alphaSlides);

		// Add brush angle slider to the dialog 
		m_BrushSizeSlider = new Fl_Value_Slider(10, 250, 300, 20, "Background\nOpacity");
		m_BrushSizeSlider->user_data((void*)(this));	// record self to be used by static callback functions
		m_BrushSizeSlider->type(FL_HOR_NICE_SLIDER);
        m_BrushSizeSlider->labelfont(FL_COURIER);
        m_BrushSizeSlider->labelsize(12);
		m_BrushSizeSlider->minimum(0);
		m_BrushSizeSlider->maximum(255);
		m_BrushSizeSlider->step(1);
		m_BrushSizeSlider->value(m_nBackgroundAlpha);
		m_BrushSizeSlider->align(FL_ALIGN_RIGHT);
		m_BrushSizeSlider->callback(cb_backgroundAlphaSlides);

    m_brushDialog->end();	

    // filter dialog definition 
    std::fill(fltKernel,fltKernel+(FLT_WIDTH*FLT_HEIGHT)-1,0.0f);
    // m_nScale = 1.0f;
    // m_nOffset = 0.0f;
    m_filterDialog = new Fl_Window(400, 200, "Filter Dialog");

    	m_BrushTypeChoice = new Fl_Choice(150,10,150,25,"&Select Source");
		m_BrushTypeChoice->user_data((void*)(this));	// record self to be used by static callback functions
		m_BrushTypeChoice->menu(filterChoiceMenu);
		m_BrushTypeChoice->callback(cb_filterChoice);

    	m_ApplyFilterButton = new Fl_Button(30,170,100,25,"&Apply Filter");
		m_ApplyFilterButton->user_data((void*)(this));
		m_ApplyFilterButton->callback(cb_apply_filter_button);

		m_PreviewFilterButton = new Fl_Button(150,170,100,25,"&Preview Filter");
		m_PreviewFilterButton->user_data((void*)(this));
		m_PreviewFilterButton->callback(cb_preview_filter_button);

		m_CancelFilterButton = new Fl_Button(270,170,100,25,"&Cancel");
		m_CancelFilterButton->user_data((void*)(this));
		m_CancelFilterButton->callback(cb_cancel_filter_button);

		Fl_Float_Input* scaleInput = new Fl_Float_Input(50, 80, 40, 20,"&Scale");
		scaleInput->user_data((void*)(this)); 
		scaleInput->callback(cb_scaleInput);
		
		Fl_Float_Input* offsetInput = new Fl_Float_Input(50, 100, 40, 20,"&Offset");
		offsetInput->user_data((void*)(this)); 
		offsetInput->callback(cb_offsetInput);

    	Fl_Float_Input* filterInput_00 = new Fl_Float_Input(100, 50, 50, 20);
		filterInput_00->user_data((void*)(this)); 
		filterInput_00->callback(cb_filterInput_00);

		Fl_Float_Input* filterInput_01 = new Fl_Float_Input(150, 50, 50, 20);
		filterInput_01->user_data((void*)(this)); 
		filterInput_01->callback(cb_filterInput_01);

		Fl_Float_Input* filterInput_02 = new Fl_Float_Input(200, 50, 50, 20);
		filterInput_02->user_data((void*)(this)); 
		filterInput_02->callback(cb_filterInput_02);

		Fl_Float_Input* filterInput_03 = new Fl_Float_Input(250, 50, 50, 20);
		filterInput_03->user_data((void*)(this)); 
		filterInput_03->callback(cb_filterInput_03);

		Fl_Float_Input* filterInput_04 = new Fl_Float_Input(300, 50, 50, 20);
		filterInput_04->user_data((void*)(this)); 
		filterInput_04->callback(cb_filterInput_04);

		Fl_Float_Input* filterInput_10 = new Fl_Float_Input(100, 70, 50, 20);
		filterInput_10->user_data((void*)(this)); 
		filterInput_10->callback(cb_filterInput_10);

		Fl_Float_Input* filterInput_11 = new Fl_Float_Input(150, 70, 50, 20);
		filterInput_11->user_data((void*)(this)); 
		filterInput_11->callback(cb_filterInput_11);

		Fl_Float_Input* filterInput_12 = new Fl_Float_Input(200, 70, 50, 20);
		filterInput_12->user_data((void*)(this)); 
		filterInput_12->callback(cb_filterInput_12);

		Fl_Float_Input* filterInput_13 = new Fl_Float_Input(250, 70, 50, 20);
		filterInput_13->user_data((void*)(this)); 
		filterInput_13->callback(cb_filterInput_13);

		Fl_Float_Input* filterInput_14 = new Fl_Float_Input(300, 70, 50, 20);
		filterInput_14->user_data((void*)(this)); 
		filterInput_14->callback(cb_filterInput_14);

		Fl_Float_Input* filterInput_20 = new Fl_Float_Input(100, 90, 50, 20);
		filterInput_20->user_data((void*)(this)); 
		filterInput_20->callback(cb_filterInput_20);

		Fl_Float_Input* filterInput_21 = new Fl_Float_Input(150, 90, 50, 20);
		filterInput_21->user_data((void*)(this)); 
		filterInput_21->callback(cb_filterInput_21);

		Fl_Float_Input* filterInput_22 = new Fl_Float_Input(200, 90, 50, 20);
		filterInput_22->user_data((void*)(this)); 
		filterInput_22->callback(cb_filterInput_22);

		Fl_Float_Input* filterInput_23 = new Fl_Float_Input(250, 90, 50, 20);
		filterInput_23->user_data((void*)(this)); 
		filterInput_23->callback(cb_filterInput_23);

		Fl_Float_Input* filterInput_24 = new Fl_Float_Input(300, 90, 50, 20);
		filterInput_24->user_data((void*)(this)); 
		filterInput_24->callback(cb_filterInput_24);

		Fl_Float_Input* filterInput_30 = new Fl_Float_Input(100, 110, 50, 20);
		filterInput_30->user_data((void*)(this)); 
		filterInput_30->callback(cb_filterInput_30);

		Fl_Float_Input* filterInput_31 = new Fl_Float_Input(150, 110, 50, 20);
		filterInput_31->user_data((void*)(this)); 
		filterInput_31->callback(cb_filterInput_31);

		Fl_Float_Input* filterInput_32 = new Fl_Float_Input(200, 110, 50, 20);
		filterInput_32->user_data((void*)(this)); 
		filterInput_32->callback(cb_filterInput_32);

		Fl_Float_Input* filterInput_33 = new Fl_Float_Input(250, 110, 50, 20);
		filterInput_33->user_data((void*)(this)); 
		filterInput_33->callback(cb_filterInput_33);

		Fl_Float_Input* filterInput_34 = new Fl_Float_Input(300, 110, 50, 20);
		filterInput_34->user_data((void*)(this)); 
		filterInput_34->callback(cb_filterInput_34);

		Fl_Float_Input* filterInput_40 = new Fl_Float_Input(100, 130, 50, 20);
		filterInput_40->user_data((void*)(this)); 
		filterInput_40->callback(cb_filterInput_40);

		Fl_Float_Input* filterInput_41 = new Fl_Float_Input(150, 130, 50, 20);
		filterInput_41->user_data((void*)(this)); 
		filterInput_41->callback(cb_filterInput_41);

		Fl_Float_Input* filterInput_42 = new Fl_Float_Input(200, 130, 50, 20);
		filterInput_42->user_data((void*)(this)); 
		filterInput_42->callback(cb_filterInput_42);

		Fl_Float_Input* filterInput_43 = new Fl_Float_Input(250, 130, 50, 20);
		filterInput_43->user_data((void*)(this)); 
		filterInput_43->callback(cb_filterInput_43);

		Fl_Float_Input* filterInput_44 = new Fl_Float_Input(300, 130, 50, 20);
		filterInput_44->user_data((void*)(this)); 
		filterInput_44->callback(cb_filterInput_44);


    m_filterDialog->end();	


}
Fl_Double_Window* IntersectionInterface::make_window() {
  Fl_Double_Window* w;
  { Fl_Double_Window* o = m_intersectionWindow = new Fl_Double_Window(420, 265, "Intersection UI");
    w = o;
    o->user_data((void*)(this));
    { Fl_Group* o = new Fl_Group(5, 25, 145, 30);
      o->end();
    }
    { Fl_Choice* o = m_iShapeType = new Fl_Choice(5, 25, 145, 30, "Object type");
      o->down_box(FL_BORDER_BOX);
      o->align(FL_ALIGN_TOP_LEFT);
      o->menu(menu_m_iShapeType);
    }
    { Fl_Value_Slider* o = m_dXAt = new Fl_Value_Slider(5, 75, 200, 25, "At x pos");
      o->type(5);
      o->minimum(-1.5);
      o->maximum(1.5);
      o->callback((Fl_Callback*)cb_m_dXAt);
      o->align(FL_ALIGN_TOP_LEFT);
    }
    { Fl_Value_Slider* o = m_dYAt = new Fl_Value_Slider(5, 115, 200, 25, "At y pos");
      o->type(5);
      o->minimum(-1.5);
      o->maximum(1.5);
      o->callback((Fl_Callback*)cb_m_dYAt);
      o->align(FL_ALIGN_TOP_LEFT);
    }
    { Fl_Value_Slider* o = m_dZAt = new Fl_Value_Slider(5, 155, 200, 25, "At z pos");
      o->type(5);
      o->minimum(-1.5);
      o->maximum(1.5);
      o->callback((Fl_Callback*)cb_m_dZAt);
      o->align(FL_ALIGN_TOP_LEFT);
    }
    { Fl_Value_Slider* o = m_dTheta = new Fl_Value_Slider(5, 195, 200, 25, "Vec theta");
      o->type(5);
      o->maximum(360);
      o->step(1);
      o->callback((Fl_Callback*)cb_m_dTheta);
      o->align(FL_ALIGN_TOP_LEFT);
    }
    { Fl_Value_Slider* o = m_dPhi = new Fl_Value_Slider(5, 235, 200, 25, "Vec phi");
      o->type(5);
      o->minimum(-90);
      o->maximum(90);
      o->step(1);
      o->value(45);
      o->callback((Fl_Callback*)cb_m_dPhi);
      o->align(FL_ALIGN_TOP_LEFT);
    }
    { Fl_Button* o = new Fl_Button(330, 25, 85, 25, "Write test");
      o->callback((Fl_Callback*)cb_Write);
    }
    { Fl_Value_Slider* o = m_dXRot = new Fl_Value_Slider(215, 75, 200, 25, "View rotation");
      o->type(5);
      o->maximum(360);
      o->step(1);
      o->callback((Fl_Callback*)cb_m_dXRot);
      o->align(FL_ALIGN_TOP_LEFT);
    }
    { Fl_Value_Slider* o = m_dYRot = new Fl_Value_Slider(215, 115, 200, 25, "View height");
      o->type(5);
      o->minimum(-90);
      o->maximum(90);
      o->step(1);
      o->callback((Fl_Callback*)cb_m_dYRot);
      o->align(FL_ALIGN_TOP_LEFT);
    }
    { Fl_Check_Button* o = m_bGrid = new Fl_Check_Button(215, 155, 25, 25, "Show grid");
      o->down_box(FL_DOWN_BOX);
      o->value(1);
      o->callback((Fl_Callback*)cb_m_bGrid);
    }
    { Fl_Check_Button* o = m_bRay = new Fl_Check_Button(215, 195, 25, 25, "Show ray");
      o->down_box(FL_DOWN_BOX);
      o->value(1);
      o->callback((Fl_Callback*)cb_m_bRay);
    }
    { Fl_Check_Button* o = m_bRayShadow = new Fl_Check_Button(215, 235, 25, 25, "Show ray shadow");
      o->down_box(FL_DOWN_BOX);
      o->value(1);
      o->callback((Fl_Callback*)cb_m_bRayShadow);
    }
    m_iSeed = new Fl_Value_Input(240, 30, 85, 20, "Seed");
    o->end();
    o->resizable(o);
  }
  return w;
}