Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

DisplayFltkMenu.C

Go to the documentation of this file.
00001 /***************************************************************************
00002  *cr
00003  *cr            (C) Copyright 1995-2019 The Board of Trustees of the
00004  *cr                        University of Illinois
00005  *cr                         All Rights Reserved
00006  *cr
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  * RCS INFORMATION:
00011  *
00012  *      $RCSfile: DisplayFltkMenu.C,v $
00013  *      $Author: johns $        $Locker:  $             $State: Exp $
00014  *      $Revision: 1.26 $       $Date: 2019/01/17 21:20:59 $
00015  *
00016  ***************************************************************************
00017  * DESCRIPTION:
00018  *   generated by Fast Light User Interface Designer (fluid) version 1.0011
00019  ***************************************************************************/
00020 
00021 #include "DisplayFltkMenu.h"
00022 #include "Command.h"
00023 #include "VMDApp.h"
00024 #include "DisplayDevice.h"
00025 #include "FL/forms.H"
00026 
00027 DisplayFltkMenu::DisplayFltkMenu(VMDApp *anApp)
00028 : VMDFltkMenu("display", "Display Settings", anApp) {
00029   make_window();
00030   update_settings();
00031   command_wanted(Command::DISP_EYESEP);
00032   command_wanted(Command::DISP_FOCALLEN);
00033   command_wanted(Command::DISP_CLIP);
00034   command_wanted(Command::DISP_SCRHEIGHT);
00035   command_wanted(Command::DISP_SCRDIST);
00036   command_wanted(Command::DISP_CUEMODE);
00037   command_wanted(Command::DISP_CUESTART);
00038   command_wanted(Command::DISP_CUEEND);
00039   command_wanted(Command::DISP_CUEDENSITY);
00040   command_wanted(Command::DISP_AO);
00041   command_wanted(Command::DISP_AO_AMBIENT);
00042   command_wanted(Command::DISP_AO_DIRECT);
00043   command_wanted(Command::DISP_DOF);
00044   command_wanted(Command::DISP_DOF_FNUMBER);
00045   command_wanted(Command::DISP_DOF_FOCALDIST);
00046 }
00047 
00048 
00049 static void nearclip_cb(Fl_Widget *w, void *v) {
00050   float value = (float)((Fl_Valuator *)w)->value();
00051   VMDApp *app = (VMDApp *)v;
00052   app->display_set_nearclip(value, 0);
00053 }
00054 static void farclip_cb(Fl_Widget *w, void *v) {
00055   float value = (float)((Fl_Valuator *)w)->value();
00056   VMDApp *app = (VMDApp *)v;
00057   app->display_set_farclip(value, 0);
00058 }
00059 static void eyesep_cb(Fl_Widget *w, void *v) {
00060   float value = (float)((Fl_Valuator *)w)->value();
00061   VMDApp *app = (VMDApp *)v;
00062   app->display_set_eyesep(value);
00063 }
00064 static void focal_cb(Fl_Widget *w, void *v) {
00065   float value = (float)((Fl_Valuator *)w)->value();
00066   VMDApp *app = (VMDApp *)v;
00067   app->display_set_focallen(value);
00068 }
00069 static void screenh_cb(Fl_Widget *w, void *v) {
00070   float value = (float)((Fl_Valuator *)w)->value();
00071   VMDApp *app = (VMDApp *)v;
00072   app->display_set_screen_height(value);
00073 }
00074 static void screend_cb(Fl_Widget *w, void *v) {
00075   float value = (float)((Fl_Valuator *)w)->value();
00076   VMDApp *app = (VMDApp *)v;
00077   app->display_set_screen_distance(value);
00078 }
00079 
00080 
00081 static void cuemode_cb(Fl_Widget *w, void *v) {
00082   const char *mode = ((Fl_Choice *)w)->text();
00083   VMDApp *app = (VMDApp *)v;
00084   app->depthcue_set_mode(mode);
00085 }
00086 static void cuestart_cb(Fl_Widget *w, void *v) {
00087   float value = (float)((Fl_Valuator *)w)->value();
00088   VMDApp *app = (VMDApp *)v;
00089   app->depthcue_set_start(value);
00090 }
00091 static void cueend_cb(Fl_Widget *w, void *v) {
00092   float value = (float)((Fl_Valuator *)w)->value();
00093   VMDApp *app = (VMDApp *)v;
00094   app->depthcue_set_end(value);
00095 }
00096 static void cuedensity_cb(Fl_Widget *w, void *v) {
00097   float value = (float)((Fl_Valuator *)w)->value();
00098   VMDApp *app = (VMDApp *)v;
00099   app->depthcue_set_density(value);
00100 }
00101 
00102 
00103 static void shadowmode_cb(Fl_Widget *w, void *v) {
00104   const char *mode = ((Fl_Choice *)w)->text();
00105   VMDApp *app = (VMDApp *)v;
00106   if (!strcmp(mode, "On")) {
00107     app->display_set_shadows(1);
00108   } else {
00109     app->display_set_shadows(0);
00110   }
00111 }
00112 
00113 
00114 static void aomode_cb(Fl_Widget *w, void *v) {
00115   const char *mode = ((Fl_Choice *)w)->text();
00116   VMDApp *app = (VMDApp *)v;
00117   if (!strcmp(mode, "On")) {
00118     app->display_set_ao(1);
00119   } else {
00120     app->display_set_ao(0);
00121   }
00122 }
00123 static void aoambient_cb(Fl_Widget *w, void *v) {
00124   float value = (float)((Fl_Valuator *)w)->value();
00125   VMDApp *app = (VMDApp *)v;
00126   app->display_set_ao_ambient(value);
00127 }
00128 static void aodirect_cb(Fl_Widget *w, void *v) {
00129   float value = (float)((Fl_Valuator *)w)->value();
00130   VMDApp *app = (VMDApp *)v;
00131   app->display_set_ao_direct(value);
00132 }
00133 
00134 
00135 static void dofmode_cb(Fl_Widget *w, void *v) {
00136   const char *mode = ((Fl_Choice *)w)->text();
00137   VMDApp *app = (VMDApp *)v;
00138   if (!strcmp(mode, "On")) {
00139     app->display_set_dof(1);
00140   } else {
00141     app->display_set_dof(0);
00142   }
00143 }
00144 static void doffnumber_cb(Fl_Widget *w, void *v) {
00145   float value = (float)((Fl_Valuator *)w)->value();
00146   VMDApp *app = (VMDApp *)v;
00147   app->display_set_dof_fnumber(value);
00148 }
00149 static void doffocaldist_cb(Fl_Widget *w, void *v) {
00150   float value = (float)((Fl_Valuator *)w)->value();
00151   VMDApp *app = (VMDApp *)v;
00152   app->display_set_dof_focal_dist(value);
00153 }
00154 
00155 
00156 void DisplayFltkMenu::make_window() {
00157   size(235, 530);
00158   { 
00159     { Fl_Counter* o = nearclip = new Fl_Counter(105, 25, 110, 25, "Near Clip");
00160       o->align(FL_ALIGN_LEFT);
00161       o->range(0.01, 1000.0);
00162       o->step(0.05);
00163       o->lstep(0.5);
00164       o->precision(2);
00165       o->callback(nearclip_cb, app);
00166       VMDFLTKTOOLTIP(o, "Set near clipping plane (OpenGL display only)")
00167     }
00168     { Fl_Counter* o = farclip = new Fl_Counter(105, 50, 110, 25, "Far Clip");
00169       o->align(FL_ALIGN_LEFT);
00170       o->range(0.01, 1000.0);
00171       o->step(0.05);
00172       o->lstep(0.5);
00173       o->precision(2);
00174       o->callback(farclip_cb, app);
00175       VMDFLTKTOOLTIP(o, "Set far clipping plane (OpenGL display only)")
00176     }
00177     { Fl_Counter* o = eyesep = new Fl_Counter(105, 75, 110, 25, "Eye Sep");
00178       o->align(FL_ALIGN_LEFT);
00179       o->range(0.0, 100.0);
00180       o->step(0.01);
00181       o->lstep(0.1);
00182       o->precision(2);
00183       o->callback(eyesep_cb, app);
00184       VMDFLTKTOOLTIP(o, "Set stereo eye separation")
00185     }
00186     { Fl_Counter* o = focal = new Fl_Counter(105, 100, 110, 25, "Focal Length");
00187       o->align(FL_ALIGN_LEFT);
00188       o->range(0.01, 1000.0);
00189       o->step(0.05);
00190       o->lstep(0.5);
00191       o->precision(2);
00192       o->callback(focal_cb, app);
00193       VMDFLTKTOOLTIP(o, "Set stereo focal point")
00194     }
00195     { Fl_Counter* o = screenh = new Fl_Counter(105, 135, 110, 25, "Screen Hgt");
00196       o->align(FL_ALIGN_LEFT);
00197       o->range(0.0, 100000.0);
00198       o->step(0.1);
00199       o->lstep(1.0);
00200       o->precision(1);
00201       o->callback(screenh_cb, app);
00202       VMDFLTKTOOLTIP(o, "Set viewing frustum height")
00203     }
00204     { Fl_Counter* o = screend = new Fl_Counter(105, 160, 110, 25, "Screen Dist");
00205       o->align(FL_ALIGN_LEFT);
00206       o->range(-100000.0, 100000.0);
00207       o->step(0.1);
00208       o->lstep(1.0);
00209       o->precision(1);
00210       o->callback(screend_cb, app);
00211       VMDFLTKTOOLTIP(o, "Set viewing frustum distance")
00212     }
00213 
00214     { Fl_Choice* o = cuemode = new Fl_Choice(105, 195, 110, 25, "Cue Mode");
00215       o->color(VMDMENU_CHOOSER_BG);
00216       o->selection_color(VMDMENU_CHOOSER_SEL);
00217       o->box(FL_THIN_UP_BOX);
00218       o->align(FL_ALIGN_LEFT);
00219       o->callback(cuemode_cb, app);
00220       VMDFLTKTOOLTIP(o, "Set depth cueing mode")
00221       for (int m=0; m<app->display->num_cue_modes(); m++)
00222         cuemode->add(app->display->cue_mode_name(m));
00223     }
00224     { Fl_Counter* o = cuestart = new Fl_Counter(105, 220, 110, 25, "Cue Start");
00225       o->align(FL_ALIGN_LEFT);
00226       o->range(0.001, 1000.0);
00227       o->step(0.05);
00228       o->lstep(0.25);
00229       o->precision(2);
00230       o->callback(cuestart_cb, app);
00231       VMDFLTKTOOLTIP(o, "Set linear depth cueing starting distance")
00232     }
00233     { Fl_Counter* o = cueend = new Fl_Counter(105, 245, 110, 25, "Cue End");
00234       o->align(FL_ALIGN_LEFT);
00235       o->range(0.001, 1000.0);
00236       o->step(0.05);
00237       o->lstep(0.25);
00238       o->precision(2);
00239       o->callback(cueend_cb, app);
00240       VMDFLTKTOOLTIP(o, "Set linear depth cueing end distance")
00241     }
00242     { Fl_Counter* o = cuedensity = new Fl_Counter(105, 270, 110, 25, "Cue Density");
00243       o->align(FL_ALIGN_LEFT);
00244       o->range(0.001, 1000.0);
00245       o->step(0.05);
00246       o->lstep(0.1);
00247       o->precision(2);
00248       o->callback(cuedensity_cb, app);
00249       VMDFLTKTOOLTIP(o, "Set exponential depth cueing density")
00250     }
00251 
00252     new Fl_Box(35, 305, 170, 25, "Ray Tracing Options");
00253     { Fl_Choice* o = shadowmode = new Fl_Choice(105, 330, 110, 25, "Shadows");
00254       o->color(VMDMENU_CHOOSER_BG);
00255       o->selection_color(VMDMENU_CHOOSER_SEL);
00256       o->box(FL_THIN_UP_BOX);
00257       o->align(FL_ALIGN_LEFT);
00258       o->callback(shadowmode_cb, app);
00259       VMDFLTKTOOLTIP(o, "Enable shadows in external renderers")
00260       shadowmode->add("Off");
00261       shadowmode->add("On");
00262     }
00263     { Fl_Choice* o = aomode = new Fl_Choice(105, 355, 110, 25, "Amb. Occl.");
00264       o->color(VMDMENU_CHOOSER_BG);
00265       o->selection_color(VMDMENU_CHOOSER_SEL);
00266       o->box(FL_THIN_UP_BOX);
00267       o->align(FL_ALIGN_LEFT);
00268       o->callback(aomode_cb, app);
00269       VMDFLTKTOOLTIP(o, "Enable ambient occlusion lighting in external renderers")
00270       aomode->add("Off");
00271       aomode->add("On");
00272     }
00273     { Fl_Counter* o = aoambient = new Fl_Counter(105, 380, 110, 25, "AO Ambient");
00274       o->align(FL_ALIGN_LEFT);
00275       o->range(0.0, 1.0);
00276       o->step(0.01);
00277       o->lstep(0.10);
00278       o->precision(2);
00279       o->callback(aoambient_cb, app);
00280       VMDFLTKTOOLTIP(o, "Ambient occlusion lighting coefficient")
00281     }
00282     { Fl_Counter* o = aodirect = new Fl_Counter(105, 405, 110, 25, "AO Direct");
00283       o->align(FL_ALIGN_LEFT);
00284       o->range(0.0, 1.0);
00285       o->step(0.01);
00286       o->lstep(0.10);
00287       o->precision(2);
00288       o->callback(aodirect_cb, app);
00289       VMDFLTKTOOLTIP(o, "Direct lighting rescaling coefficient")
00290     }
00291 
00292 
00293     { Fl_Choice* o = dofmode = new Fl_Choice(105, 430, 110, 25, "DoF");
00294       o->color(VMDMENU_CHOOSER_BG);
00295       o->selection_color(VMDMENU_CHOOSER_SEL);
00296       o->box(FL_THIN_UP_BOX);
00297       o->align(FL_ALIGN_LEFT);
00298       o->callback(dofmode_cb, app);
00299       VMDFLTKTOOLTIP(o, "Enable depth of field focal blur in external renderers")
00300       dofmode->add("Off");
00301       dofmode->add("On");
00302     }
00303     { Fl_Counter* o = doffnumber = new Fl_Counter(105, 455, 110, 25, "DoF f/stop");
00304       o->align(FL_ALIGN_LEFT);
00305       o->range(1.0, 500.0);
00306       o->step(0.05);
00307       o->lstep(1.0);
00308       o->precision(2);
00309       o->callback(doffnumber_cb, app);
00310       VMDFLTKTOOLTIP(o, "Depth of field focal blur aperture")
00311     }
00312     { Fl_Counter* o = doffocaldist = new Fl_Counter(105, 480, 110, 25, "DoF Foc. Dist");
00313       o->align(FL_ALIGN_LEFT);
00314       o->range(0.01, 100.0);
00315       o->step(0.01);
00316       o->lstep(0.2);
00317       o->precision(2);
00318       o->callback(doffocaldist_cb, app);
00319       VMDFLTKTOOLTIP(o, "Depth of field focal plane distance")
00320     }
00321 
00322 
00323     Fl_Box *box1 = new Fl_Box(10, 10, 215, 120);
00324     box1->box(FL_ENGRAVED_FRAME);
00325     Fl_Box *box2 = new Fl_Box(10, 130, 215, 65);
00326     box2->box(FL_ENGRAVED_FRAME);
00327     Fl_Box *box3 = new Fl_Box(10, 190, 215, 110);
00328     box3->box(FL_ENGRAVED_FRAME);
00329     Fl_Box *box4 = new Fl_Box(10, 300, 215, 210);
00330     box4->box(FL_ENGRAVED_FRAME);
00331     end();
00332     end();
00333   }
00334 }
00335 
00336 int DisplayFltkMenu::act_on_command(int, Command *) {
00337   update_settings();
00338   return 0;
00339 }
00340 
00341 void DisplayFltkMenu::update_settings() {
00342   nearclip->value(app->display->near_clip());
00343   farclip->value(app->display->far_clip());
00344   eyesep->value(app->display->eyesep());
00345   focal->value(app->display->eye_dist());
00346   screenh->value(app->display->screen_height());
00347   screend->value(app->display->distance_to_screen());
00348   const char *curmode = app->display->get_cue_mode();
00349   for (int m=0; m<cuemode->size(); m++) {
00350     if (!strcmp(curmode, cuemode->text(m))) {
00351       cuemode->value(m);
00352       if (m==0) { // Linear
00353         cuestart->activate();
00354         cueend->activate();
00355         cuedensity->deactivate();
00356       } else {  // Exp or Exp2
00357         cuestart->deactivate();
00358         cueend->deactivate();
00359         cuedensity->activate();
00360       }
00361       break;
00362     }
00363   }
00364   cuestart->value(app->display->get_cue_start());
00365   cueend->value(app->display->get_cue_end());
00366   cuedensity->value(app->display->get_cue_density());
00367 
00368   shadowmode->value(app->display->shadows_enabled());
00369 
00370   aomode->value(app->display->ao_enabled());
00371   aoambient->value(app->display->get_ao_ambient());
00372   aodirect->value(app->display->get_ao_direct());
00373   if (app->display->ao_enabled()) {
00374     aoambient->activate();
00375     aodirect->activate();
00376   } else {
00377     aoambient->deactivate();
00378     aodirect->deactivate();
00379   }
00380 
00381   dofmode->value(app->display->dof_enabled());
00382   doffnumber->value(app->display->get_dof_fnumber());
00383   doffocaldist->value(app->display->get_dof_focal_dist());
00384   if (app->display->dof_enabled()) {
00385     doffnumber->activate();
00386     doffocaldist->activate();
00387   } else {
00388     doffnumber->deactivate();
00389     doffocaldist->deactivate();
00390   }
00391 
00392 }
00393 
00394 

Generated on Thu Mar 28 02:43:07 2024 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002