diff options
Diffstat (limited to 'documentation/src/examples.dox')
| -rw-r--r-- | documentation/src/examples.dox | 651 |
1 files changed, 651 insertions, 0 deletions
diff --git a/documentation/src/examples.dox b/documentation/src/examples.dox new file mode 100644 index 000000000..8780aadb9 --- /dev/null +++ b/documentation/src/examples.dox @@ -0,0 +1,651 @@ +/** + + \page examples K - Example Source Code + +\par March 19, 2005 + +The FLTK distribution contains over 60 sample applications written +in, or ported to, FLTK. If the FLTK archive you received does not +contain a 'test' directory, you can download the complete FLTK +distribution from \b http://fltk.org/software.php . + +Most of the example programs were created while testing a group of widgets. +They are not meant to be great achievements in clean C++ programming, but +merely a test platform to verify the functionality of the FLTK library. + +\section example_applications Example Applications + +<table width=100% border=0> +<tr> +<td> \ref examples_adjuster </td> +<td> \ref examples_arc </td> +<td> \ref examples_ask </td> +<td> \ref examples_bitmap </td> +<td> \ref examples_blocks </td> +<td> \ref examples_boxtype </td> +</tr> +<tr> +<td> \ref examples_browser </td> +<td> \ref examples_button </td> +<td> \ref examples_buttons </td> +<td> \ref examples_checkers </td> +<td> \ref examples_clock </td> +<td> \ref examples_colbrowser </td> +</tr> +<tr> +<td> \ref examples_color_chooser </td> +<td> \ref examples_cube </td> +<td> \ref examples_CubeView </td> +<td> \ref examples_cursor </td> +<td> \ref examples_curve </td> +<td> \ref examples_demo </td> +</tr> +<tr> +<td> \ref examples_doublebuffer </td> +<td> \ref examples_editor </td> +<td> \ref examples_fast_slow </td> +<td> \ref examples_file_chooser </td> +<td> \ref examples_fluid </td> +<td> \ref examples_fonts </td> +</tr> +<tr> +<td> \ref examples_forms </td> +<td> \ref examples_fractals </td> +<td> \ref examples_fullscreen </td> +<td> \ref examples_gl_overlay </td> +<td> \ref examples_glpuzzle </td> +<td> \ref examples_hello </td> +</tr> +<tr> +<td> \ref examples_help </td> +<td> \ref examples_iconize </td> +<td> \ref examples_image </td> +<td> \ref examples_inactive </td> +<td> \ref examples_input </td> +<td> \ref examples_input_choice </td> +</tr> +<tr> +<td> \ref examples_keyboard </td> +<td> \ref examples_label </td> +<td> \ref examples_line_style </td> +<td> \ref examples_list_visuals </td> +<td> \ref examples_mandelbrot </td> +<td> \ref examples_menubar </td> +</tr> +<tr> +<td> \ref examples_message </td> +<td> \ref examples_minimum </td> +<td> \ref examples_navigation </td> +<td> \ref examples_output </td> +<td> \ref examples_overlay </td> +<td> \ref examples_pack </td> +</tr> +<tr> +<td> \ref examples_pixmap_browser </td> +<td> \ref examples_pixmap </td> +<td> \ref examples_preferences </td> +<td> \ref examples_radio </td> +<td> \ref examples_resizebox </td> +<td> \ref examples_resize </td> +</tr> +<tr> +<td> \ref examples_scroll </td> +<td> \ref examples_shape </td> +<td> \ref examples_subwindow </td> +<td> \ref examples_sudoku </td> +<td> \ref examples_symbols </td> +<td> \ref examples_tabs </td> +</tr> +<tr> +<td> \ref examples_threads </td> +<td> \ref examples_tile </td> +<td> \ref examples_tiled_image </td> +<td> \ref examples_valuators </td> +<td> </td> +<td> </td> +</tr> +</table> + +<a name="adjuster"></a> <!-- For old HTML links only ! --> +\subsection examples_adjuster adjuster + +\par +\c adjuster shows a nifty little widget for quickly +setting values in a great range. + +<a name="arc"></a> <!-- For old HTML links only ! --> +\subsection examples_arc arc + +\par +The \c arc demo explains how to derive your own widget to +generate some custom drawings. The sample drawings use the matrix +based arc drawing for some fun effects. + +<a name="ask"></a> <!-- For old HTML links only ! --> +\subsection examples_ask ask + +\par +\c ask shows some of FLTK's standard dialog boxes. Click +the correct answers or you may end up in a loop, or you may end +up in a loop, or you... . + +<a name="bitmap"></a> <!-- For old HTML links only ! --> +\subsection examples_bitmap bitmap + +\par +This simple test shows the use of a single color bitmap as a +label for a box widget. Bitmaps are stored in the X11 '.bmp' +file format and can be part of the source code. + +<a name="blocks"></a> <!-- For old HTML links only ! --> +\subsection examples_blocks blocks + +\par +A wonderful and addictive game that shows the usage of FLTK +timers, graphics, and how to implement sound on all platforms. +\c blocks is also a good example for the Mac OS X specific +bundle format. + +<a name="boxtype"></a> <!-- For old HTML links only ! --> +\subsection examples_boxtype boxtype + +\par +\c boxtype gives an overview of readily available boxes and +frames in FLTK. More types can be added by the application programmer. +When using themes, FLTK shuffles boxtypes around to give your program +a new look. + +<a name="browser"></a> <!-- For old HTML links only ! --> +\subsection examples_browser browser + +\par +\c browser shows the capabilities of the Fl_Browser widget. +Important features tested are loading of files, line formatting, and +correct positioning of the browser data window. + +<a name="button"></a> <!-- For old HTML links only ! --> +\subsection examples_button button + +\par +The \c button test is a simple demo of push-buttons and callbacks. + +<a name="buttons"></a> <!-- For old HTML links only ! --> +\subsection examples_buttons buttons + +\par +\c buttons shows a sample of FLTK button types. + +<a name="checkers"></a> <!-- For old HTML links only ! --> +\subsection examples_checkers checkers + +\par +Written by Steve Poulsen in early 1979, \c checkers shows +how to convert a VT100 text-terminal based program into a neat +application with a graphical UI. Check out the code that drags the +pieces, and how the pieces are drawn by layering. Then tell me +how to beat the computer at Checkers. + +<a name="clock"></a> <!-- For old HTML links only ! --> +\subsection examples_clock clock + +\par +The \c clock demo shows two analog clocks. The innards of +the Fl_Clock widget are pretty interesting, explaining +the use of timeouts and matrix based drawing. + +<a name="colbrowser"></a> <!-- For old HTML links only ! --> +\subsection examples_colbrowser colbrowser + +\par +\c colbrowser runs only on X11 systems. It reads +<i>/usr/lib/X11/rgb.txt</i> to show the color representation +of every text entry in the file. This is beautiful, but +only moderatly useful unless your UI is written in <i>Motif</i>. + +<a name="color_chooser"></a> <!-- For old HTML links only ! --> +\subsection examples_color_chooser color_chooser + +\par +The \c color_chooser gives a short demo of FLTK's palette based +color chooser and of the RGB based color wheel. + +<a name="cube"></a> <!-- For old HTML links only ! --> +\subsection examples_cube cube + +\par +The \c cube demo shows the speed of OpenGL. It also tests +the ability to render two OpenGL buffers into a single window, +and shows OpenGL text. + +<a name="CubeView"></a> <!-- For old HTML links only ! --> +\subsection examples_CubeView CubeView + +\par +\c CubeView shows how to create a UI containing OpenGL with Fluid. + +<a name="cursor"></a> <!-- For old HTML links only ! --> +\subsection examples_cursor cursor + +\par +The \c cursor demo shows all mouse cursor shapes that come standard +with FLTK. The <i>fgcolor</i> and <i>bgcolor</i> sliders work only +on few systems (some version of Irix for example). + +<a name="curve"></a> <!-- For old HTML links only ! --> +\subsection examples_curve curve + +\par +\c curve draws a nice Bezier curve into a custom widget. The +<i>points</i> option for splines is not supported on all platforms. + +<a name="demo"></a> <!-- For old HTML links only ! --> +\subsection examples_demo demo + +\par +This tool allows quick access to all programs in the \c test directory. +\c demo is based on the visuals of the IrixGL demo program. The menu +tree can be changed by editing <tt>test/demo.menu</tt>. + +<a name="doublebuffer"></a> <!-- For old HTML links only ! --> +\subsection examples_doublebuffer doublebuffer + +\par +The \c doublebuffer demo show the difference between a single +buffered window, which may flicker during a slow redraw, and a +double buffered window, which never flickers, but uses twice the +amount of RAM. Some modern OS's double buffer all windows automatically +to allow transparency and shadows on the desktop. FLTK is smart enough +to not tripple buffer a window in that case. + +<a name="editor"></a> <!-- For old HTML links only ! --> +\subsection examples_editor editor + +\par +FLTK has two very different text input widgets. Fl_Input +and derived classes are rather light weight, however +Fl_Text_Editor is a complete port of <i>nedit</i> (with permission). +The \c editor test is almost a full application, showing custom +syntax highlighting and dialog creation. + +<a name="fast_slow"></a> <!-- For old HTML links only ! --> +\subsection examples_fast_slow fast_slow + +\par +\c fast_slow shows how an application can use the Fl_Widget::when() +setting to receive different kinds of callbacks. + +<a name="file_chooser"></a> <!-- For old HTML links only ! --> +\subsection examples_file_chooser file_chooser + +\par +The standard FLTK \c file_chooser is the result of many +iterations, trying to find a middle ground between a complex +browser and a fast light implementation. + +<a name="fonts"></a> <!-- For old HTML links only ! --> +\subsection examples_fonts fonts + +\par +\c fonts shows all available text fonts on the host system. +If your machine still has some pixmap based fonts, the supported +sizes will be shown in bold face. Only the first 256 fonts will +be listed. + +<a name="forms"></a> <!-- For old HTML links only ! --> +\subsection examples_forms forms + +\par +\c forms is an XForms program with very few changes. +Search for "fltk" to find all changes necessary to port to fltk. +This demo shows the different boxtypes. Note that some +boxtypes are not appropriate for some objects. + +<a name="fractals"></a> <!-- For old HTML links only ! --> +\subsection examples_fractals fractals + +\par +\c fractals shows how to mix OpenGL, Glut and FLTK code. +FLTK supports a rather large subset of Glut, so that many Glut +applications compile just fine. + +<a name="fullscreen"></a> <!-- For old HTML links only ! --> +\subsection examples_fullscreen fullscreen + +\par +This demo shows how to do many of the window manipulations that +are popular for games. +You can toggle the border on/off, switch between single- +and double-buffered rendering, and take over the entire +screen. More information in the source code. + +<a name="gl_overlay"></a> <!-- For old HTML links only ! --> +\subsection examples_gl_overlay gl_overlay + +\par +\c gl_overlay shows OpenGL overlay plane rendering. If no +hardware overlay plane is available, FLTK will simulate it +for you. + +<a name="glpuzzle"></a> <!-- For old HTML links only ! --> +\subsection examples_glpuzzle glpuzzle + +\par +The \c glpuzzle test shows how most Glut source code compiles +easily under FLTK. + +<a name="hello"></a> <!-- For old HTML links only ! --> +\subsection examples_hello hello + +\par +\c hello: Hello, World. Need I say more? Well, maybe. This +tiny demo shows how little is needed to get a functioning application +running with FLTK. Quite impressive, I'd say. + +<a name="help"></a> <!-- For old HTML links only ! --> +\subsection examples_help help + +\par +\c help displays the built-in FLTK help browser. The +Fl_Help_Dialog understands a subset of html and renders +various image formats. This widget makes it easy to provide help +pages to the user without depending on the operating system's +html browser. + +<a name="iconize"></a> <!-- For old HTML links only ! --> +\subsection examples_iconize iconize + +\par +\c iconize demonstrates the effect of the window functions +hide(), iconize(), and show(). + +<a name="image"></a> <!-- For old HTML links only ! --> +\subsection examples_image image + +\par +The \c image demo shows how an image can be created on the fly. +This generated image contains an alpha (transparency) channel which +lets previous renderings 'shine through', either via true +transparency or by using screen door transparency (pixelation). + +<a name="inactive"></a> <!-- For old HTML links only ! --> +\subsection examples_inactive inactive + +\par +\c inactive tests the correct rendering of inactive widgets. +To see the inactive version of images, you can check out the pixmap +or image test. + +<a name="input"></a> <!-- For old HTML links only ! --> +\subsection examples_input input + +\par +This tool shows and tests different types of text input fields based on +Fl_Input_. The \c input program also tests various +settings of Fl_Input::when(). + +<a name="input_choice"></a> <!-- For old HTML links only ! --> +\subsection examples_input_choice input_choice + +\par +\c input_choice tests the latest addition to FLTK1, a text input +field with an attached pulldown menu. Windows users will recognize +similarities to the 'ComboBox'. \c input_choice starts up in +'plastic' scheme, but the traditional scheme is also supported. + +<a name="keyboard"></a> <!-- For old HTML links only ! --> +\subsection examples_keyboard keyboard + +\par +FLTK unifies keyboard events for all platforms. The \c keyboard +test can be used to check the return values of Fl::event_key() +and Fl::event_text(). It is also great to see the modifier +buttons and the scroll wheel at work. Quit this application by closing +the window. The ESC key will not work. + +<a name="label"></a> <!-- For old HTML links only ! --> +\subsection examples_label label + +\par +Every FLTK widget can have a label attached to it. The \c label +demo shows alignment, clipping and wrapping of text labels. Labels +can contain symbols at the start and end of the text, like <i>\@FLTK</i> +or <i>\@circle uh-huh \@square</i>. + +<a name="line_style"></a> <!-- For old HTML links only ! --> +\subsection examples_line_style line_style + +\par +Advanced line drawing can be tested with \c line_style. +Not all platforms support all line styles. + +<a name="list_visuals"></a> <!-- For old HTML links only ! --> +\subsection examples_list_visuals list_visuals + +\par +This little app finds all available pixel formats for the current X11 +screen. But since you are now an FLTK user, you don't have to worry +about any of this. + +<a name="mandelbrot"></a> <!-- For old HTML links only ! --> +\subsection examples_mandelbrot mandelbrot + +\par +\c mandelbrot shows two advanced topics in one test. It creates +grayscale images on the fly, updating them via the <i>idle</i> callback +system. This is one of the few occasions where the <i>idle</i> callback +is very useful by giving all available processor time to the application +without blocking the UI or other apps. + +<a name="menubar"></a> <!-- For old HTML links only ! --> +\subsection examples_menubar menubar + +\par +The \c menubar tests many aspects of FLTK's popup menu system. +Among the features are radio buttons, menus taller than the screen, +arbitrary sub menu depth, and global shortcuts. + +<a name="message"></a> <!-- For old HTML links only ! --> +\subsection examples_message message + +\par +\c message pops up a few of FLTK's standard message boxes. + +<a name="minimum"></a> <!-- For old HTML links only ! --> +\subsection examples_minimum minimum + +\par +The \c minimum test program verifies that the update regions +are set correctly. In a real life application, the trail would +be avoided by choosing a smaller label or by setting label clipping +differently. + +<a name="navigation"></a> <!-- For old HTML links only ! --> +\subsection examples_navigation navigation + +\par +\c navigation demonstrates how the text cursor moves from +text field to text field when using the arrow keys, tab, and shift-tab. + +<a name="output"></a> <!-- For old HTML links only ! --> +\subsection examples_output output + +\par +\c output shows the difference between the single line and +multi line mode of the Fl_Output widget. Fonts can be +selected from the FLTK standard list of fonts. + +<a name="overlay"></a> <!-- For old HTML links only ! --> +\subsection examples_overlay overlay + +\par +The \c overlay test app show how easy an FLTK window can +be layered to display cursor and manipulator style elements. This +example derives a new class from Fl_Overlay_Window and +provides a new function to draw custom overlays. + +<a name="pack"></a> <!-- For old HTML links only ! --> +\subsection examples_pack pack + +\par +The \c pack test program demonstrates the resizing +and repositioning of children of the Fl_Pack group. +Putting an Fl_Pack into an Fl_Scroll is +a useful way to create a browser for large sets of data. + +<a name="pixmap_browser"></a> <!-- For old HTML links only ! --> +\subsection examples_pixmap_browser pixmap_browser + +\par +\c pixmap_browser tests the shared-image interface. When using +the same image multiple times, Fl_Shared_Image will keep it +only once in memory. + +<a name="pixmap"></a> <!-- For old HTML links only ! --> +\subsection examples_pixmap pixmap + +\par +This simple test shows the use of a LUT based pixmap as a +label for a box widget. Pixmaps are stored in the X11 '.xpm' +file format and can be part of the source code. Pixmaps support +one transparent color. + +<a name="preferences"></a> <!-- For old HTML links only ! --> +\subsection examples_preferences preferences + +\par +I do have my \c preferences in the morning, but sometimes I +just can't remember a thing. This is where the Fl_Preferences +come in handy. They remember any kind of data between program launches. + +<a name="radio"></a> <!-- For old HTML links only ! --> +\subsection examples_radio radio + +\par +The \c radio tool was created entirely with <i>fluid</i>. It +shows some of the available button types and tests radio +button behavior. + +<a name="resizebox"></a> <!-- For old HTML links only ! --> +\subsection examples_resizebox resizebox + +\par +\c resizebox shows some possible ways of FLTK's automatic +resize bahavior.. + +<a name="resize"></a> <!-- For old HTML links only ! --> +\subsection examples_resize resize + +\par +The \c resize demo tests size and position functions with +the given window manager. + +<a name="scroll"></a> <!-- For old HTML links only ! --> +\subsection examples_scroll scroll + +\par +\c scroll shows how to scroll an area of widgets, one of +them beeing a slow custom drawing. Fl_Scroll uses +clipping and smart window area copying to improve redraw speed. +The buttons at the bottom of the window control decoration rendering +and updates. + +<a name="shape"></a> <!-- For old HTML links only ! --> +\subsection examples_shape shape + +\par +\c shape is a very minimal demo that shows how to create +your own OpenGL rendering widget. Now that you know that, go ahead +and write that flight simulator you always dreamt of. + +<a name="subwindow"></a> <!-- For old HTML links only ! --> +\subsection examples_subwindow subwindow + +\par +The \c subwindow demo tests messaging and drawing between +the main window and 'true' sub windows. A sub window is different +to a group by resetting the FLTK coordinate system to 0, 0 in the +top left corner. On Win32 and X11, subwindows have their own +operating system specific handle. + +<a name="sudoku"></a> <!-- For old HTML links only ! --> +\subsection examples_sudoku sudoku + +\par +Another highly addictive game - don't play it, I warned you. +The implementation shows how to create application icons, +how to deal with OS specifics, and how to generate sound. + +<a name="symbols"></a> <!-- For old HTML links only ! --> +\subsection examples_symbols symbols + +\par +\c symbols are a speciality of FLTK. These little vector +drawings can be integrated into labels. They scale and rotate, +and with a little patience, you can define your own. The rotation +number refers to 45 degree rotations if you were looking at a +numeric keypad (2 is down, 6 is right, etc.). + +<a name="tabs"></a> <!-- For old HTML links only ! --> +\subsection examples_tabs tabs + +\par +The \c tabs tool was created with <i>fluid</i>. It tests +correct hiding and redisplaying of tabs, navigation across tabs, +resize behavior, and no unneeded redrawing of invisible widgets. + +\par +The \c tabs application shows the Fl_Tabs widget +on the left and the Fl_Wizard widget on the right side +for direct comparison of these two panel management widgets. + +<a name="threads"></a> <!-- For old HTML links only ! --> +\subsection examples_threads threads + +\par +FLTK can be used in a multithreading environment. There are some +limitations, mostly due to the underlying operating system. +\c threads shows how to use Fl::lock(), +Fl::unlock(), and Fl::awake() in secondary threads +to keep FLTK happy. Although locking works on all platforms, +this demo is not available on every machine. + +<a name="tile"></a> <!-- For old HTML links only ! --> +\subsection examples_tile tile + +\par +The \c tile tool shows a nice way of using Fl_Tile. +To test correct resizing of subwindows, the widget for region +1 is created from an Fl_Window class. + +<a name="tiled_image"></a> <!-- For old HTML links only ! --> +\subsection examples_tiled_image tiled_image + +\par +The \c tiled_image demo uses an image as the background +for a window by repeating it over the full size of the widget. +The window is resizable and shows how the image gets repeated. + +<a name="valuators"></a> <!-- For old HTML links only ! --> +\subsection examples_valuators valuators + +\par +\c valuators shows all of FLTK's nifty widgets to change +numeric values. + +<a name="fluid"></a> <!-- For old HTML links only ! --> +\subsection examples_fluid fluid + +\par +\c fluid is not only a big test program, but also a very +useful visual UI designer. Many parts of \c fluid were +created using \c fluid. See the \link fluid Fluid Tutorial \endlink +for more details. + +\htmlonly +<hr> +<a class="el" href="index.html">[Index]</a> +<a class="el" href="license.html">[Previous] J - Software License</a> + \ref license + +\endhtmlonly +*/ |
