00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef GUI_GUIOPTS_C_DEFINED
00039 #define GUI_GUIOPTS_C_DEFINED
00040
00041 #include "GUI/GUIOpts.H"
00042
00043 #include "Component/ModelOptionDef.H"
00044 #include "Image/Dims.H"
00045 #include "Image/Rectangle.H"
00046
00047 const ModelOptionCateg MOC_SDLDISP = {
00048 MOC_SORTPRI_2, "SDLdisplay-Related Options" };
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 const ModelOptionDef OPT_SDLdisplayDims =
00073 { MODOPT_ARG(Dims), "SDLdisplayDims", &MOC_SDLDISP, OPTEXP_CORE,
00074 "SDL display screen dimensions",
00075 "sdl-dims", '\0', "<width>x<height>", "640x480" };
00076
00077
00078 const ModelOptionDef OPT_SDLdisplayPriority =
00079 { MODOPT_ARG(int), "SDLdisplayPriority", &MOC_SDLDISP, OPTEXP_CORE,
00080 "Priority to run at in SCHED_FIFO mode (need to run as root), or 0 for "
00081 "normal process scheduling and normal priority. Note that in priority 0 "
00082 "display timing is in no way guaranteed, and timestamps for display "
00083 "events are unreliable by up to +/- 50ms.",
00084 "sdl-priority", '\0', "<int>", "80" };
00085
00086
00087 const ModelOptionDef OPT_SDLdisplayRefreshUsec =
00088 { MODOPT_ARG(float), "SDLdisplayRefreshUsec", &MOC_SDLDISP, OPTEXP_CORE,
00089 "Desired refresh delay in microseconds. All screen refresh operations "
00090 "will enforce that at least 90% of this delay has occurred, but it "
00091 "could be more depending on the refresh rate of the video mode used.",
00092 "sdl-refresh", '\0', "<float>", "33333.3333" };
00093
00094
00095 const ModelOptionDef OPT_SDLdisplayFullscreen =
00096 { MODOPT_FLAG, "SDLdisplayFullscreen", &MOC_SDLDISP, OPTEXP_CORE,
00097 "Whether to run the SDLdisplay in a fullscreen window.",
00098 "fs", '\0', "<bool>", "true" };
00099
00100
00101 const ModelOptionDef OPT_SDLdisplayVBlankKludge =
00102 { MODOPT_ARG(uint), "SDLdisplayVBlankKludge", &MOC_SDLDISP, OPTEXP_CORE,
00103 "On some hardware, waiting for the vertical retrace by polling the "
00104 "VGA registers just does not work (especially in dual-screen setups). "
00105 "If non-zero, this parameter will enable a workaround, whereby we just "
00106 "hard-wait for the exact desired framerate, and just send images "
00107 "asynchronously to the display at that rate. On nVidia boards this "
00108 "yields good results where movies play at the exact desired framerate "
00109 "with no tearing, just we are not guaranteed that each frame will be "
00110 "exactly synchronized to the vertical refresh. The non-zero value is the "
00111 "number of microseconds that our busy-waiting code takes to run on your "
00112 "machine, and has to be adjusted on a case-by-case basis until you obtain "
00113 "your exact desired framerate. For example, on a 2.26GHz Macbook a "
00114 "value of 37 yields a solid 30.000 frames/s in the psycho-movie "
00115 "application displaying 1280x1024 movies. "
00116 "Larger values will decrease your framerate and vice-versa.",
00117 "sdl-vblank-kludge", '\0', "<uint>", "0" };
00118
00119
00120
00121 const ModelOptionDef OPT_SDLdisplaySyncRect =
00122 { MODOPT_ARG(Rectangle), "SDLdisplaySyncRect", &MOC_SDLDISP, OPTEXP_CORE,
00123 "Place a small patch of alternating black and white pixels over the "
00124 "video frame. This used for syncing with an external system using a "
00125 "photodiode. Rectangle coordinates define the pixel positions for left, "
00126 "top, right and bottom corners.", "sdl-sync-rect", '\0', "<Rectangle>",
00127 "0,0,0,0"};
00128
00129
00130
00131
00132
00133
00134
00135 #endif // GUI_GUIOPTS_C_DEFINED