summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cvsignore9
-rw-r--r--CHANGES290
-rw-r--r--FL/Enumerations.H38
-rw-r--r--FL/Fl.H29
-rw-r--r--FL/Fl_Browser_.H5
-rw-r--r--FL/Fl_Check_Browser.H8
-rw-r--r--FL/Fl_File_Chooser.H85
-rw-r--r--FL/Fl_Gl_Window.H13
-rw-r--r--FL/Fl_Help_Dialog.H27
-rw-r--r--FL/Fl_Help_View.H31
-rw-r--r--FL/Fl_Input.H5
-rw-r--r--FL/Fl_Input_Choice.H6
-rw-r--r--FL/Fl_Preferences.H6
-rw-r--r--FL/Fl_RGB_Image.H35
-rw-r--r--FL/Fl_Scroll.H6
-rw-r--r--FL/Fl_Spinner.H67
-rw-r--r--FL/Fl_Tabs.H5
-rw-r--r--FL/Makefile.in15
-rw-r--r--FL/filename.H22
-rw-r--r--FL/fl_draw.H11
-rw-r--r--FL/glu.h60
-rw-r--r--FL/glut.H165
-rw-r--r--FL/mac.H13
-rw-r--r--FL/names.h85
-rw-r--r--FL/win32.H5
-rw-r--r--FL/x.H5
-rw-r--r--Makefile25
-rw-r--r--README.mac47
-rw-r--r--README.win32162
-rw-r--r--bc5/config.h153
-rw-r--r--bc5/fltk.idebin0 -> 287438 bytes
-rw-r--r--bc5/opengl32.libbin0 -> 36864 bytes
-rw-r--r--configh.in21
-rwxr-xr-xconfigure777
-rw-r--r--configure.in160
-rw-r--r--documentation/Fl.html129
-rw-r--r--documentation/Fl_Adjuster.html6
-rw-r--r--documentation/Fl_BMP_Image.html3
-rw-r--r--documentation/Fl_Bitmap.html3
-rw-r--r--documentation/Fl_Box.html6
-rw-r--r--documentation/Fl_Browser.html6
-rw-r--r--documentation/Fl_Browser_.html13
-rw-r--r--documentation/Fl_Button.html8
-rw-r--r--documentation/Fl_Chart.html6
-rw-r--r--documentation/Fl_Check_Browser.html6
-rw-r--r--documentation/Fl_Check_Button.html6
-rw-r--r--documentation/Fl_Choice.html6
-rw-r--r--documentation/Fl_Clock.html33
-rw-r--r--documentation/Fl_Clock_Output.html62
-rw-r--r--documentation/Fl_Color_Chooser.html6
-rw-r--r--documentation/Fl_Counter.html6
-rw-r--r--documentation/Fl_Dial.html6
-rw-r--r--documentation/Fl_Double_Window.html6
-rw-r--r--documentation/Fl_End.html6
-rw-r--r--documentation/Fl_File_Browser.html5
-rw-r--r--documentation/Fl_File_Chooser.html7
-rw-r--r--documentation/Fl_File_Icon.html5
-rw-r--r--documentation/Fl_File_Input.html3
-rw-r--r--documentation/Fl_Float_Input.html6
-rw-r--r--documentation/Fl_Free.html6
-rw-r--r--documentation/Fl_GIF_Image.html3
-rw-r--r--documentation/Fl_Gl_Window.html23
-rw-r--r--documentation/Fl_Group.html12
-rw-r--r--documentation/Fl_Help_Dialog.html37
-rw-r--r--documentation/Fl_Help_View.html4
-rw-r--r--documentation/Fl_Hold_Browser.html6
-rw-r--r--documentation/Fl_Image.html3
-rw-r--r--documentation/Fl_Input.html3
-rw-r--r--documentation/Fl_Input_.html3
-rw-r--r--documentation/Fl_Input_Choice.html12
-rw-r--r--documentation/Fl_Int_Input.html6
-rw-r--r--documentation/Fl_JPEG_Image.html3
-rw-r--r--documentation/Fl_Light_Button.html6
-rw-r--r--documentation/Fl_Menu_.html198
-rw-r--r--documentation/Fl_Menu_Bar.html6
-rw-r--r--documentation/Fl_Menu_Button.html6
-rw-r--r--documentation/Fl_Menu_Item.html6
-rw-r--r--documentation/Fl_Menu_Window.html6
-rw-r--r--documentation/Fl_Multi_Browser.html6
-rw-r--r--documentation/Fl_Multiline_Input.html6
-rw-r--r--documentation/Fl_Multiline_Output.html6
-rw-r--r--documentation/Fl_Output.html6
-rw-r--r--documentation/Fl_Overlay_Window.html6
-rw-r--r--documentation/Fl_PNG_Image.html3
-rw-r--r--documentation/Fl_PNM_Image.html3
-rw-r--r--documentation/Fl_Pack.html6
-rw-r--r--documentation/Fl_Pixmap.html3
-rw-r--r--documentation/Fl_Positioner.html6
-rw-r--r--documentation/Fl_Preferences.html29
-rw-r--r--documentation/Fl_Progress.html3
-rw-r--r--documentation/Fl_RGB_Image.html5
-rw-r--r--documentation/Fl_Repeat_Button.html6
-rw-r--r--documentation/Fl_Return_Button.html6
-rw-r--r--documentation/Fl_Roller.html6
-rw-r--r--documentation/Fl_Round_Button.html6
-rw-r--r--documentation/Fl_Scroll.html8
-rw-r--r--documentation/Fl_Scrollbar.html6
-rw-r--r--documentation/Fl_Secret_Input.html6
-rw-r--r--documentation/Fl_Select_Browser.html6
-rw-r--r--documentation/Fl_Shared_Image.html3
-rw-r--r--documentation/Fl_Single_Window.html6
-rw-r--r--documentation/Fl_Slider.html6
-rw-r--r--documentation/Fl_Spinner.html26
-rw-r--r--documentation/Fl_Tabs.html5
-rw-r--r--documentation/Fl_Text_Buffer.html44
-rw-r--r--documentation/Fl_Text_Display.html3
-rw-r--r--documentation/Fl_Text_Editor.html3
-rw-r--r--documentation/Fl_Tile.html32
-rw-r--r--documentation/Fl_Tiled_Image.html3
-rw-r--r--documentation/Fl_Timer.html6
-rw-r--r--documentation/Fl_Toggle_Button.html43
-rw-r--r--documentation/Fl_Tooltip.html3
-rw-r--r--documentation/Fl_Valuator.html30
-rw-r--r--documentation/Fl_Value_Input.html9
-rw-r--r--documentation/Fl_Value_Output.html6
-rw-r--r--documentation/Fl_Value_Slider.html6
-rw-r--r--documentation/Fl_Widget.html36
-rw-r--r--documentation/Fl_Window.html23
-rw-r--r--documentation/Fl_Wizard.html5
-rw-r--r--documentation/Fl_XBM_Image.html3
-rw-r--r--documentation/Fl_XPM_Image.html3
-rw-r--r--documentation/Makefile69
-rw-r--r--documentation/advanced.html95
-rw-r--r--documentation/basics.html5
-rw-r--r--documentation/blocks.man26
-rw-r--r--documentation/common.html71
-rw-r--r--documentation/drawing.html229
-rw-r--r--documentation/editor.html93
-rw-r--r--documentation/enumerations.html8
-rw-r--r--documentation/events.html23
-rw-r--r--documentation/examples.html105
-rw-r--r--documentation/fltk-config.man11
-rw-r--r--documentation/fltk.book8
-rw-r--r--documentation/fluid.html8
-rw-r--r--documentation/forms.html6
-rw-r--r--documentation/functions.html423
-rw-r--r--documentation/glut.html53
-rw-r--r--documentation/index.html20
-rw-r--r--documentation/intro.html7
-rw-r--r--documentation/license.html3
-rw-r--r--documentation/migration.html11
-rw-r--r--documentation/opengl.html3
-rw-r--r--documentation/osissues.html57
-rw-r--r--documentation/preface.html8
-rw-r--r--documentation/subclassing.html6
-rw-r--r--documentation/widgets.html716
-rwxr-xr-xfltk-config.in28
-rw-r--r--fltk.list.in41
-rw-r--r--fltk.spec143
-rw-r--r--fltk.spec.in16
-rw-r--r--fluid/CodeEditor.cxx12
-rw-r--r--fluid/CodeEditor.h15
-rw-r--r--fluid/Fl_Function_Type.cxx76
-rw-r--r--fluid/Fl_Group_Type.cxx33
-rw-r--r--fluid/Fl_Menu_Type.cxx67
-rw-r--r--fluid/Fl_Type.cxx12
-rw-r--r--fluid/Fl_Type.h12
-rw-r--r--fluid/Fl_Widget_Type.cxx342
-rw-r--r--fluid/Fl_Window_Type.cxx46
-rw-r--r--fluid/Fluid_Image.cxx10
-rw-r--r--fluid/Fluid_Image.h6
-rw-r--r--fluid/Makefile50
-rw-r--r--fluid/about_panel.cxx38
-rw-r--r--fluid/about_panel.fl10
-rw-r--r--fluid/about_panel.h8
-rw-r--r--fluid/alignment_panel.cxx483
-rw-r--r--fluid/alignment_panel.fl39
-rw-r--r--fluid/alignment_panel.h19
-rw-r--r--fluid/code.cxx25
-rw-r--r--fluid/factory.cxx20
-rw-r--r--fluid/file.cxx27
-rw-r--r--fluid/fluid.cxx75
-rw-r--r--fluid/function_panel.cxx913
-rw-r--r--fluid/function_panel.fl144
-rw-r--r--fluid/function_panel.h11
-rw-r--r--fluid/makedepend621
-rw-r--r--fluid/makefile.wat21
-rw-r--r--fluid/pixmaps/.cvsignore1
-rw-r--r--fluid/undo.cxx7
-rw-r--r--fluid/widget_panel.cxx513
-rw-r--r--fluid/widget_panel.fl210
-rw-r--r--fluid/widget_panel.h6
-rw-r--r--install-sh2
-rw-r--r--jpeg/Makefile22
-rw-r--r--makeinclude.in43
-rwxr-xr-xmakesrcdist66
-rw-r--r--png/ANNOUNCE66
-rw-r--r--png/CHANGES349
-rw-r--r--png/INSTALL93
-rw-r--r--png/KNOWNBUG14
-rw-r--r--png/LICENSE8
-rw-r--r--png/Makefile24
-rw-r--r--png/README31
-rw-r--r--png/Y2KINFO4
-rw-r--r--png/libpng.3522
-rw-r--r--png/libpng.txt60
-rw-r--r--png/libpngpf.31082
-rw-r--r--png/png.54
-rw-r--r--png/png.c62
-rw-r--r--png/png.h283
-rw-r--r--png/pngconf.h133
-rw-r--r--png/pngerror.c109
-rw-r--r--png/pngget.c37
-rw-r--r--png/pngmem.c19
-rw-r--r--png/pngpread.c23
-rw-r--r--png/pngread.c54
-rw-r--r--png/pngrio.c12
-rw-r--r--png/pngrtran.c490
-rw-r--r--png/pngrutil.c78
-rw-r--r--png/pngset.c90
-rw-r--r--png/pngtrans.c47
-rw-r--r--png/pngwio.c10
-rw-r--r--png/pngwrite.c76
-rw-r--r--png/pngwtran.c21
-rw-r--r--png/pngwutil.c147
-rw-r--r--src/CMakeLists.txt6
-rw-r--r--src/Fl.cxx220
-rw-r--r--src/Fl_Adjuster.cxx4
-rw-r--r--src/Fl_BMP_Image.cxx4
-rw-r--r--src/Fl_Bitmap.cxx6
-rw-r--r--src/Fl_Box.cxx4
-rw-r--r--src/Fl_Browser.cxx8
-rw-r--r--src/Fl_Browser_.cxx39
-rw-r--r--src/Fl_Browser_load.cxx4
-rw-r--r--src/Fl_Button.cxx17
-rw-r--r--src/Fl_Chart.cxx4
-rw-r--r--src/Fl_Check_Browser.cxx9
-rw-r--r--src/Fl_Check_Button.cxx2
-rw-r--r--src/Fl_Choice.cxx42
-rw-r--r--src/Fl_Clock.cxx16
-rw-r--r--src/Fl_Color_Chooser.cxx4
-rw-r--r--src/Fl_Counter.cxx4
-rw-r--r--src/Fl_Dial.cxx27
-rw-r--r--src/Fl_Double_Window.cxx151
-rw-r--r--src/Fl_File_Browser.cxx19
-rw-r--r--src/Fl_File_Chooser.cxx191
-rw-r--r--src/Fl_File_Chooser.fl29
-rw-r--r--src/Fl_File_Chooser2.cxx72
-rw-r--r--src/Fl_File_Icon.cxx4
-rw-r--r--src/Fl_File_Icon2.cxx4
-rw-r--r--src/Fl_File_Input.cxx4
-rw-r--r--src/Fl_Font.H10
-rw-r--r--src/Fl_GIF_Image.cxx4
-rw-r--r--src/Fl_Gl_Choice.cxx4
-rw-r--r--src/Fl_Gl_Overlay.cxx14
-rw-r--r--src/Fl_Gl_Window.cxx21
-rw-r--r--src/Fl_Group.cxx4
-rw-r--r--src/Fl_Help_Dialog.cxx210
-rw-r--r--src/Fl_Help_Dialog.fl122
-rw-r--r--src/Fl_Help_View.cxx952
-rw-r--r--src/Fl_Image.cxx186
-rw-r--r--src/Fl_Input.cxx13
-rw-r--r--src/Fl_Input_.cxx50
-rw-r--r--src/Fl_JPEG_Image.cxx4
-rw-r--r--src/Fl_Light_Button.cxx29
-rw-r--r--src/Fl_Menu.cxx154
-rw-r--r--src/Fl_Menu_.cxx4
-rw-r--r--src/Fl_Menu_Bar.cxx4
-rw-r--r--src/Fl_Menu_Button.cxx9
-rw-r--r--src/Fl_Menu_Window.cxx4
-rw-r--r--src/Fl_Menu_add.cxx4
-rw-r--r--src/Fl_Menu_global.cxx4
-rw-r--r--src/Fl_Multi_Label.cxx4
-rw-r--r--src/Fl_Overlay_Window.cxx4
-rw-r--r--src/Fl_PNG_Image.cxx4
-rw-r--r--src/Fl_PNM_Image.cxx4
-rw-r--r--src/Fl_Pack.cxx8
-rw-r--r--src/Fl_Pixmap.cxx4
-rw-r--r--src/Fl_Positioner.cxx10
-rw-r--r--src/Fl_Preferences.cxx82
-rw-r--r--src/Fl_Progress.cxx18
-rw-r--r--src/Fl_Repeat_Button.cxx6
-rw-r--r--src/Fl_Return_Button.cxx4
-rw-r--r--src/Fl_Roller.cxx4
-rw-r--r--src/Fl_Round_Button.cxx4
-rw-r--r--src/Fl_Scroll.cxx14
-rw-r--r--src/Fl_Scrollbar.cxx32
-rw-r--r--src/Fl_Shared_Image.cxx6
-rw-r--r--src/Fl_Single_Window.cxx4
-rw-r--r--src/Fl_Slider.cxx50
-rw-r--r--src/Fl_Sys_Menu_Bar.cxx25
-rw-r--r--src/Fl_Tabs.cxx80
-rw-r--r--src/Fl_Text_Buffer.cxx6
-rw-r--r--src/Fl_Text_Display.cxx60
-rw-r--r--src/Fl_Text_Editor.cxx31
-rw-r--r--src/Fl_Tile.cxx10
-rw-r--r--src/Fl_Tiled_Image.cxx4
-rw-r--r--src/Fl_Tooltip.cxx10
-rw-r--r--src/Fl_Valuator.cxx4
-rw-r--r--src/Fl_Value_Input.cxx4
-rw-r--r--src/Fl_Value_Output.cxx4
-rw-r--r--src/Fl_Value_Slider.cxx4
-rw-r--r--src/Fl_Widget.cxx5
-rw-r--r--src/Fl_Window.cxx15
-rw-r--r--src/Fl_Window_fullscreen.cxx4
-rw-r--r--src/Fl_Window_hotspot.cxx56
-rw-r--r--src/Fl_Window_iconize.cxx4
-rw-r--r--src/Fl_Wizard.cxx4
-rw-r--r--src/Fl_XBM_Image.cxx4
-rw-r--r--src/Fl_XPM_Image.cxx4
-rw-r--r--src/Fl_abort.cxx4
-rw-r--r--src/Fl_add_idle.cxx4
-rw-r--r--src/Fl_arg.cxx4
-rw-r--r--src/Fl_compose.cxx66
-rw-r--r--src/Fl_display.cxx4
-rw-r--r--src/Fl_get_key.cxx4
-rw-r--r--src/Fl_get_key_mac.cxx10
-rwxr-xr-xsrc/Fl_get_key_win32.cxx4
-rw-r--r--src/Fl_get_system_colors.cxx51
-rw-r--r--src/Fl_grab.cxx4
-rw-r--r--src/Fl_lock.cxx227
-rw-r--r--src/Fl_mac.cxx353
-rw-r--r--src/Fl_own_colormap.cxx4
-rw-r--r--src/Fl_visual.cxx4
-rw-r--r--src/Fl_win32.cxx85
-rw-r--r--src/Fl_x.cxx71
-rw-r--r--src/Makefile203
-rw-r--r--src/cgdebug.h215
-rw-r--r--src/cmap.cxx4
-rw-r--r--src/filename_absolute.cxx4
-rw-r--r--src/filename_expand.cxx4
-rw-r--r--src/filename_ext.cxx4
-rw-r--r--src/filename_isdir.cxx28
-rw-r--r--src/filename_list.cxx4
-rw-r--r--src/filename_match.cxx4
-rw-r--r--src/filename_setext.cxx4
-rw-r--r--src/fl_arc.cxx23
-rw-r--r--src/fl_arci.cxx23
-rw-r--r--src/fl_ask.cxx17
-rw-r--r--src/fl_boxtype.cxx18
-rw-r--r--src/fl_call_main.c6
-rw-r--r--src/fl_color.cxx12
-rw-r--r--src/fl_color_mac.cxx4
-rw-r--r--src/fl_color_win32.cxx4
-rw-r--r--src/fl_cursor.cxx121
-rw-r--r--src/fl_curve.cxx4
-rw-r--r--src/fl_diamond_box.cxx4
-rw-r--r--src/fl_dnd.cxx4
-rw-r--r--src/fl_dnd_mac.cxx4
-rw-r--r--src/fl_dnd_win32.cxx4
-rw-r--r--src/fl_dnd_x.cxx4
-rw-r--r--src/fl_draw.cxx54
-rw-r--r--src/fl_draw_image.cxx4
-rw-r--r--src/fl_draw_image_mac.cxx18
-rw-r--r--src/fl_draw_image_win32.cxx95
-rw-r--r--src/fl_draw_pixmap.cxx6
-rw-r--r--src/fl_encoding_latin1.cxx137
-rw-r--r--src/fl_encoding_mac_roman.cxx134
-rw-r--r--src/fl_engraved_label.cxx4
-rw-r--r--src/fl_file_dir.cxx36
-rw-r--r--src/fl_font.cxx4
-rw-r--r--src/fl_font_mac.cxx243
-rw-r--r--src/fl_font_win32.cxx8
-rw-r--r--src/fl_font_x.cxx9
-rw-r--r--src/fl_font_xft.cxx17
-rw-r--r--src/fl_gtk.cxx304
-rw-r--r--src/fl_images_core.cxx6
-rw-r--r--src/fl_labeltype.cxx4
-rw-r--r--src/fl_line_style.cxx4
-rw-r--r--src/fl_open_uri.cxx370
-rw-r--r--src/fl_oval_box.cxx4
-rw-r--r--src/fl_overlay.cxx62
-rw-r--r--src/fl_overlay_visual.cxx4
-rw-r--r--src/fl_plastic.cxx4
-rw-r--r--src/fl_read_image.cxx4
-rw-r--r--src/fl_read_image_mac.cxx33
-rw-r--r--src/fl_read_image_win32.cxx10
-rw-r--r--src/fl_rect.cxx16
-rw-r--r--src/fl_round_box.cxx4
-rw-r--r--src/fl_rounded_box.cxx4
-rw-r--r--src/fl_scroll_area.cxx86
-rw-r--r--src/fl_set_font.cxx6
-rw-r--r--src/fl_set_fonts.cxx4
-rw-r--r--src/fl_set_fonts_mac.cxx4
-rwxr-xr-xsrc/fl_set_fonts_win32.cxx4
-rw-r--r--src/fl_set_fonts_x.cxx4
-rw-r--r--src/fl_set_fonts_xft.cxx41
-rw-r--r--src/fl_shadow_box.cxx4
-rw-r--r--src/fl_shortcut.cxx17
-rw-r--r--src/fl_show_colormap.cxx4
-rw-r--r--src/fl_symbols.cxx4
-rw-r--r--src/fl_vertex.cxx4
-rw-r--r--src/flstring.h16
-rw-r--r--src/forms_bitmap.cxx4
-rwxr-xr-xsrc/forms_compatability.cxx4
-rw-r--r--src/forms_free.cxx4
-rw-r--r--src/forms_fselect.cxx4
-rw-r--r--src/forms_pixmap.cxx4
-rw-r--r--src/forms_timer.cxx4
-rw-r--r--src/freeglut_geometry.cxx1110
-rw-r--r--src/freeglut_stroke_mono_roman.cxx2848
-rw-r--r--src/freeglut_stroke_roman.cxx2848
-rw-r--r--src/freeglut_teapot.cxx164
-rw-r--r--src/freeglut_teapot_data.h145
-rw-r--r--src/gl_draw.cxx13
-rw-r--r--src/gl_start.cxx4
-rwxr-xr-xsrc/glut_compatability.cxx102
-rw-r--r--src/glut_font.cxx173
-rw-r--r--src/makedepend1145
-rw-r--r--src/makefile.wat13
-rw-r--r--src/screen_xywh.cxx28
-rw-r--r--test/CubeMain.cxx4
-rw-r--r--test/CubeView.cxx8
-rw-r--r--test/CubeView.h4
-rw-r--r--test/CubeViewUI.fl10
-rw-r--r--test/Makefile168
-rw-r--r--test/adjuster.cxx4
-rwxr-xr-xtest/arc.cxx4
-rw-r--r--test/ask.cxx8
-rw-r--r--test/bitmap.cxx4
-rw-r--r--test/blocks.app/Contents/Info.plist44
-rw-r--r--test/blocks.app/Contents/PkgInfo1
-rw-r--r--test/blocks.app/Contents/Resources/blocks.icnsbin0 -> 51049 bytes
-rw-r--r--test/blocks.cxx1007
-rw-r--r--test/boxtype.cxx27
-rw-r--r--test/browser.cxx4
-rw-r--r--test/button.cxx4
-rw-r--r--test/buttons.cxx4
-rw-r--r--test/checkers.cxx38
-rw-r--r--test/clock.cxx4
-rw-r--r--test/colbrowser.cxx4
-rw-r--r--test/color_chooser.cxx4
-rw-r--r--test/connect.cxx4
-rw-r--r--test/cube.cxx4
-rw-r--r--test/cursor.cxx6
-rw-r--r--test/curve.cxx4
-rw-r--r--test/demo.cxx65
-rw-r--r--test/demo.menu1
-rw-r--r--test/desktop/blocks-128.pngbin0 -> 16233 bytes
-rw-r--r--test/desktop/blocks-32.pngbin0 -> 1856 bytes
-rw-r--r--test/desktop/blocks.desktop10
-rw-r--r--test/desktop/checkers-128.png (renamed from test/checkers-128.png)bin23655 -> 23655 bytes
-rw-r--r--test/desktop/checkers-32.png (renamed from test/checkers-32.png)bin1871 -> 1871 bytes
-rw-r--r--test/desktop/checkers.desktop (renamed from test/checkers.desktop)0
-rw-r--r--test/desktop/sudoku-128.png (renamed from test/sudoku-128.png)bin6514 -> 6514 bytes
-rw-r--r--test/desktop/sudoku-32.png (renamed from test/sudoku-32.png)bin295 -> 295 bytes
-rw-r--r--test/desktop/sudoku.desktop (renamed from test/sudoku.desktop)0
-rw-r--r--test/doublebuffer.cxx4
-rw-r--r--test/editor.cxx6
-rw-r--r--test/file_chooser.cxx4
-rw-r--r--test/fl_jpeg_image.cxx4
-rw-r--r--test/fonts.cxx4
-rw-r--r--test/forms.cxx6
-rw-r--r--test/fractals.cxx18
-rw-r--r--test/fracviewer.cxx6
-rw-r--r--test/fullscreen.cxx4
-rw-r--r--test/gl_overlay.cxx4
-rw-r--r--test/glpuzzle.cxx12
-rw-r--r--test/hello.cxx7
-rw-r--r--test/help.cxx4
-rw-r--r--test/iconize.cxx4
-rw-r--r--test/image.cxx4
-rw-r--r--test/input.cxx6
-rw-r--r--test/input_choice.cxx7
-rw-r--r--test/keyboard.cxx29
-rw-r--r--test/keyboard.h4
-rw-r--r--test/label.cxx4
-rw-r--r--test/line_style.cxx12
-rw-r--r--test/list_visuals.cxx4
-rw-r--r--test/makedepend749
-rw-r--r--test/mandelbrot.cxx4
-rw-r--r--test/mandelbrot.h4
-rw-r--r--test/mandelbrot_ui.fl13
-rw-r--r--test/menubar.cxx6
-rw-r--r--test/message.cxx15
-rw-r--r--test/minimum.cxx4
-rw-r--r--test/navigation.cxx4
-rw-r--r--test/output.cxx4
-rw-r--r--test/overlay.cxx4
-rw-r--r--test/pack.cxx4
-rw-r--r--test/pixmap.cxx6
-rw-r--r--test/pixmap_browser.cxx4
-rw-r--r--test/pixmaps/black_1.xbm (renamed from test/black_1.xbm)0
-rw-r--r--test/pixmaps/black_2.xbm (renamed from test/black_2.xbm)0
-rw-r--r--test/pixmaps/black_3.xbm (renamed from test/black_3.xbm)0
-rw-r--r--test/pixmaps/black_4.xbm (renamed from test/black_4.xbm)0
-rw-r--r--test/pixmaps/blackking_1.xbm (renamed from test/blackking_1.xbm)0
-rw-r--r--test/pixmaps/blackking_2.xbm (renamed from test/blackking_2.xbm)0
-rw-r--r--test/pixmaps/blackking_3.xbm (renamed from test/blackking_3.xbm)0
-rw-r--r--test/pixmaps/blackking_4.xbm (renamed from test/blackking_4.xbm)0
-rw-r--r--test/pixmaps/blast.xpm67
-rw-r--r--test/pixmaps/block.xcf.gzbin0 -> 2905 bytes
-rw-r--r--test/pixmaps/blue.xpm67
-rw-r--r--test/pixmaps/blue_bomb.xpm67
-rw-r--r--test/pixmaps/cyan.xpm67
-rw-r--r--test/pixmaps/cyan_bomb.xpm67
-rw-r--r--test/pixmaps/gray.xpm67
-rw-r--r--test/pixmaps/gray_bomb.xpm67
-rw-r--r--test/pixmaps/green.xpm67
-rw-r--r--test/pixmaps/green_bomb.xpm67
-rw-r--r--test/pixmaps/magenta.xpm67
-rw-r--r--test/pixmaps/magenta_bomb.xpm67
-rw-r--r--test/pixmaps/porsche.xpm (renamed from test/porsche.xpm)0
-rw-r--r--test/pixmaps/porsche1.xpm (renamed from test/porsche1.xpm)2
-rw-r--r--test/pixmaps/red.xpm67
-rw-r--r--test/pixmaps/red_bomb.xpm67
-rw-r--r--test/pixmaps/srs.xbm (renamed from test/srs.xbm)0
-rw-r--r--test/pixmaps/sudoku.xbm (renamed from test/sudoku.xbm)0
-rw-r--r--test/pixmaps/tile.xpm (renamed from test/tile.xpm)0
-rw-r--r--test/pixmaps/white_1.xbm (renamed from test/white_1.xbm)0
-rw-r--r--test/pixmaps/white_2.xbm (renamed from test/white_2.xbm)0
-rw-r--r--test/pixmaps/white_3.xbm (renamed from test/white_3.xbm)0
-rw-r--r--test/pixmaps/white_4.xbm (renamed from test/white_4.xbm)0
-rw-r--r--test/pixmaps/whiteking_1.xbm (renamed from test/whiteking_1.xbm)0
-rw-r--r--test/pixmaps/whiteking_2.xbm (renamed from test/whiteking_2.xbm)0
-rw-r--r--test/pixmaps/whiteking_3.xbm (renamed from test/whiteking_3.xbm)0
-rw-r--r--test/pixmaps/whiteking_4.xbm (renamed from test/whiteking_4.xbm)0
-rw-r--r--test/pixmaps/yellow.xpm67
-rw-r--r--test/pixmaps/yellow_bomb.xpm67
-rw-r--r--test/preferences.fl12
-rw-r--r--test/resizebox.cxx4
-rw-r--r--test/scroll.cxx8
-rw-r--r--test/shape.cxx4
-rw-r--r--test/subwindow.cxx4
-rw-r--r--test/sudoku.cxx138
-rw-r--r--test/sudokurc.h32
-rw-r--r--test/symbols.cxx6
-rw-r--r--test/tabs.fl220
-rw-r--r--test/threads.cxx53
-rw-r--r--test/threads.h4
-rwxr-xr-xtest/tile.cxx4
-rw-r--r--test/tiled_image.cxx9
-rw-r--r--test/unittests.cxx4
-rw-r--r--test/valuators.fl144
-rw-r--r--vc2005/fltk.lib.vcproj9
-rw-r--r--vc2005/fltk.sln214
-rw-r--r--vc2005/fltkdll.vcproj25
-rw-r--r--vc2005/fltkgl.vcproj16
-rw-r--r--vcnet/blocks.vcproj167
-rw-r--r--vcnet/fltk.lib.vcproj47
-rw-r--r--vcnet/fltk.sln11
-rw-r--r--vcnet/fltkdll.vcproj115
-rw-r--r--vcnet/fltkgl.vcproj72
-rw-r--r--visualc/.cvsignore1
-rw-r--r--visualc/blocks.dsp97
-rw-r--r--visualc/fltk.dsw18
-rw-r--r--visualc/fltk.lib.dsp20
-rw-r--r--visualc/fltkdll.dsp2701
-rw-r--r--visualc/fltkgl.dsp20
-rw-r--r--watcom.mif4
-rw-r--r--zlib/ChangeLog2
-rw-r--r--zlib/Makefile19
-rw-r--r--zlib/adler32.c113
-rw-r--r--zlib/compress.c4
-rw-r--r--zlib/crc32.c180
-rw-r--r--zlib/deflate.c284
-rw-r--r--zlib/deflate.h13
-rw-r--r--zlib/gzio.c49
-rw-r--r--zlib/inffast.c17
-rw-r--r--zlib/inflate.c130
-rw-r--r--zlib/inflate.h8
-rw-r--r--zlib/inftrees.c20
-rw-r--r--zlib/inftrees.h10
-rw-r--r--zlib/trees.c38
-rw-r--r--zlib/zconf.h95
-rw-r--r--zlib/zlib.h249
-rw-r--r--zlib/zutil.c35
-rw-r--r--zlib/zutil.h31
558 files changed, 28127 insertions, 9905 deletions
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 7b7eb8a..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-config.cache
-config.h
-config.log
-config.status
-configure
-fltk-config
-fltk.list
-makeinclude
-*.bck
diff --git a/CHANGES b/CHANGES
index ed0a33e..ab3c605 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,279 @@
+CHANGES IN FLTK 1.1.8
+
+ - Documentation fixes (STR #1454, STR #1455, STR #1456,
+ STR #1457, STR #1458, STR #1460, STR #1481, STR #1578,
+ STR #1639, STR #1645, STR #1644)
+ - Fixed occasional incomplete refresh (STR #1681)
+ - Improved fl_down, fl_frame, added fl_box (STR #1678)
+ - Fixed selection of submenu items in
+ input_choice (STR #1676)
+ - Fixed calculation of stride for image scaling and
+ color manipulation (STR #1673)
+ - Made -O3 the default optimization on Cygwin/Mingw since
+ -Os currently creates bad code (STR #1656)
+ - OSF/Tru64 now uses 'install-sh' instead of 'install' to
+ accomodate for a missing '-d' option (STR #1632)
+ - New option in Fluid project settings to translate all
+ shortcut modifiers from FL_META or FL_CTRL to FL_COMMAND
+ - Added static icon, text selection, and HTML formatting to
+ fl_message etc. (STR #1626)
+ - Fixed selection of first word in Fl_Help_View
+ - Fixed endless loop in Fl_Text_Display (STR #1655)
+ - Allowing shortcuts in Tabs (STR #1652)
+ - Fixed Makefile "make clean" (STR #1642,
+ STR #1643, STR #1641)
+ - The sample RPM spec file now enables large file support
+ and threading support (STR #1603)
+ - Changed minimum contrast between background and text to
+ 96 and added more weight to the blue component to improve
+ readability for certain color combinations (STR #1625)
+ - Fixed VCNet OpenGL project file (STR #1617)
+ - Fixed scrolling of clipped areas in MSWindows (STR
+ #1601)
+ - Fixed clipping in OS X Quartz offscreen buffers (STR
+ #1595)
+ - Now flush file chooser preferences after every change to
+ avoid data loss (STR #1609)
+ - The Fl_File_Chooser constructor now saves and restores the
+ current group (STR #1611)
+ - Added Fl::awake(fn*,void*) to set a handler for thread
+ messages (STR #1536)
+ - Added "mute sound" option to Sudoku game.
+ - Updated the bundled zlib to v1.2.3.
+ - Updated the bundled libpng to v1.2.16.
+ - "make install" now uses the install command (or the
+ included install-sh script) to copy files to the
+ install directories, to ensure that permissions are
+ correct.
+ - Fixed DLL generation via MingW/Cygwin (STR #1546)
+ - FLUID incorrectly opened the display when generating
+ source code for Fl_Help_View widgets (STR #1318)
+ - Fl_Double_Window did not always show the scheme
+ background image.
+ - Fixed first window behavior in OS X (STR #1548)
+ - Fixed calculation of character widths for OS X
+ Quartz rendering (no STR)
+ - Fixed OS X mouse click handling (STR #1504)
+ - Added missing GLUT functions so that FLTK can be used
+ as a fairly complete C++ replacement for the original
+ GLUT library (STR #1522)
+ - Fl::awake() could block on X11 and OSX (STR #1537)
+ - Updated recursive mutex code to run on platforms other
+ than Linux and to do a run-time check to determine
+ whether they are supported by the kernel (STR #1575)
+ - WIN32 did check callbacks after the event processing instead of
+ before as documented (STR #1535)
+ - Fl_File_Chooser now hides the window before doing a callback
+ when the user clicks on the OK button (STR #1565)
+ - Fixed indentation of nested HTML elements (STR #1549)
+ - Made layout of Fl_Help_Dialog consistent with other
+ help windows and web browsers.
+ - Improved GTK+ schemed round box (STR #1531)
+ - Fluid avoids writing unsupported combinations of the
+ "when()" flags (STR #1501)
+ - Fl_Browser_ would allow keyboard callbacks even though
+ "when()" was set to "never" (STR #1501)
+ - Added automated little helpers to Sudoku
+ - Added example code for Wizard with the
+ Tabs demo (STR #1564)
+ - Optimized Fl_Tabs drawing for speed (STR #1520)
+ - OS X resource fork now obsolete (STR #1453)
+ - Added chapter 10 about multithreading (STR #1532,
+ 1533)
+ - OS X system menu bar itop level attribute support
+ improved (STR #1505)
+ - Fixed Quartz image drawing bug (STR #1438)
+ - Fixed Quartz fl_read_image
+ - Overlay drawing is now avoiding XOR mode (STR #1438)
+ - Fixed Scroll crash in Fluid Live Mode (STR #1524)
+ - Fixed mousewheel event propagation (STR #1521)
+ - Fixed drawing issues of a tile in a scroll (STR #1507)
+ - Fixed dismissing buttons in menu bars (STR #1494)
+ - Making a child group visible in a Fl_Tabs or Fl_Wizard
+ group now shows that tab or pane.
+ - Added fl_open_uri() function as proposed on
+ fltk.development.
+ - Added Fl::has_check() which previously was prototyped
+ and documented, but not implemented (STR #1542)
+ - Enabled Fl::add_check() on OS X (STR #1534)
+ - Documented tooltip inheritance (STR #1467)
+ - Better event mouse handling fixing detached menus and
+ sticky tooltips (STR #1463, STR #449)
+ - Added Fl::scrollbar_size() methods that are used by all
+ of the scrollbar-using widgets (STR #1500)
+ - fl_read_image() was broken on Intel-based Macs (STR
+ #1490)
+ - Fl_Progress was using the wrong width to calculate
+ progress (STR #1492)
+ - Fl::x(), Fl::y(), Fl::w(), and Fl::h() did not report
+ the desktop work area on X11 (STR #1482)
+ - Shortcut events could be sent to the wrong window (STR
+ #1451)
+ - Fl_Spinner did not handle the arrow keys properly (STR
+ #1476)
+ - Fl_File_Browser did not calculate the width of
+ directory items correctly (STR #1469, STR #1470)
+ - Fl_Pack incorrectly started widgets at an offset of 1/2
+ the spacing value.
+ - FLUID did not generate correct window class code if
+ the class name was not a standard FLTK window class.
+ - FLUID incorrectly included <FL/Fl_classname.H> for
+ widget classes that were not subclassed from a standard
+ FLTK widget class.
+ - The demo master test program now supports scheme
+ selection and all demos use it (STR #1459)
+ - fl_arc() and fl_pie() did not draw properly on WIN32
+ when the start and end points were identical (STR
+ #1461)
+ - Fl_Input and Fl_Text_Editor now hide the mouse pointer
+ when typing into them (STR #1466)
+ - Implemented alpha blending for Quartz, WIN32, and X11
+ - Check buttons did not redraw properly with box() set to
+ FL_NO_BOX (STR #1440)
+ - Added the Bluecurve-inspired scheme "gtk+".
+ - Updated documentation (STR #1420, STR #1421)
+ - Fixed font caching issue (STR #1415)
+ - Fixed crash in fl_file_chooser (STR #1410)
+ - Fixed Fluid hotspot bug (STR #1416)
+ - Fixed image copy code (STR #1412)
+ - Fixed latin-to-roman text conversion (STR #1411)
+ - Fixed Cygwin timeout for "select" calls (STR #1151)
+ - Improved Mac OS X subwindow handling (STR #1402)
+ - Fixed more inconsistencies between fl_draw and
+ fl_measure (STR #1408)
+ - Fixed fl_measure which mistook a trailing '@@' for a
+ symbol (STR #1406)
+ - Fixed GLUT behavior on window creation (STR #1403)
+ - Fixed OS X bug that would hide tooltips before they
+ were shown (STR #1392)
+ - Fixed Fl_Tabs tooltip reappearing (STR #1324)
+ - Added a new demo game called "Block Attack!"
+ - Updated the Sudoku game to show a notice about Hard and
+ Impossible puzzles having multiple solutions which are
+ not a bug or error (STR #1361)
+ - Fixed filechooser to behave as documented when file
+ pattern changes (STR #1359)
+ - Completed the global function index and added an
+ alphabetical list of all methods (STR #1319)
+ - Avoiding problems with some platforms that don't
+ implement hypot() (STR #1366)
+ - Fixed floating point value formatting for Fl_Spinner
+ (STR #1331)
+ - Fixed Fl_Positioner callback when released (STR #1387)
+ - Fixed WIN32 zero size window issue (STR #1387)
+ - Fixed Sudoku window positioning (STR #1398)
+ - Fluid Code Declarations can now handle C++ style
+ comments (STR #1383)
+ - Fixed uninitialized data in OS X and WIN32 timeout
+ functions (STR #1374).
+ - Fixed speed issues when measuring text on OS X with
+ Quartz (STR #1386).
+ - Fixed focus issues on OS X (STR #1377)
+ - Optional precission argument when storing floats or
+ doubles in a Preferences file (STR #1381)
+ - Fixed callback not called when using arrow keys in
+ Fl_Slider (STR #1333)
+ - Changing the shorcut of a widget in fluid now marks the
+ document as dirty (STR #1382)
+ - Fl_Text_Editor now correctly handles middle mouse
+ clicks (STR #1384)
+ - Added some GLUT4 functions (STR #1370)
+ - Added "context_changed()" function for OpenGL windows
+ which allows efficent texture loading (STR #1372)
+ - Added missing "const" to GLUT call (STR #1371)
+ - Fixed stray FL_RELEASE events after clicking system
+ areas on OS X (STR #1376)
+ - FLUID now only writes definitions of "o" and "w"
+ variables as needed, reducing the number of "variable
+ is shadowed" warnings from GCC.
+ - Added access to Xft font pointer (STR #1328)
+ - Fixed endianness in OS X mouse cursor graphics (STR
+ #1348)
+ - Fixed crash on mixed use of keyboard and mouse for
+ Fl_Menu_Button (STR #1356)
+ - Fixed Fl_Window::visible() and shown() for OS X
+ (STR #1341)
+ - Fixed Fl_Window::copy_label() losing copy (STR #1332)
+ - Documentation fixes (STR #1336, STR #1329, STR #1339,
+ STR #1340)
+ - Added support for floating point Fl_Spinner in the
+ API, documentation, and Fluid (STR #1331)
+ - Repeat button now cancels timeout if it should get
+ deactivated during a callback (STR #1330)
+ - Added support for assigning Fl_Menu_Items to array
+ variables in Fluid (STR #1280)
+ - Added --with-archflags configure option to allow
+ passing of specific architecture-selection options to
+ the compiler and linker.
+ - Fixed WIN32 window stacking bug (STR #1296)
+ - Fixed wrong code generated by FLUID for Scrollbars (STR
+ #1287)
+ - Loading a file would not update the Widget Properties
+ dialog in FLUID (STR #1326)
+ - Fixed key compose sequences for shifted keys (STR
+ #1194)
+ - Added text selection and copy to Fl_Help_View.
+ - Fixed position of popup menu titles (STR #1322)
+ - Showing any window will disable the current tooltip
+ so it won't pop over menus (STR #1321)
+ - Updated documentation to reflect limitation of
+ Fl::delete_widget() (STR #1306)
+ - Fixed line wrapping in Fl_Text_Display (STR #1227)
+ - New function Fl::event_original_key() returns key code
+ before NumLock handling.
+ - Many OS X Quartz fixes (STR #1310, etc.)
+ - Fixed shortcut and default focus for message dialogs
+ (STR #1298)
+ - Fixed focus issues (STR #1286, STR #1289, STR #1296)
+ - Fixed window resizing in OS X (STR #1297)
+ - In FLUID, declarations starting with the keyword
+ 'typedef', 'class', or 'struct' are now treated
+ correctly if inside a class (STR #1283)
+ - Tabs now show the correct tooltip (STR #1282)
+ - Included fltk.spec in configure.in (STR #1274)
+ - Fixed insufficiently invalidated cache
+ in Fl_Browser (STR #1265)
+ - Attempt to fix multi monitor issues (STR #1153)
+ - Fixed warnings when compiling w/Cygwin (STR #1152)
+ - Fixed missing reset of flag in FLUID (STR #1187)
+ - Fixed maximizing in OS X (STR #1221)
+ - Fixed 'make distclean' to remove binaries inside
+ MacOS app packages (STR #1169)
+ - FLUID Code Viewer is now truly a viewer, not a text
+ editor because edited text can not be saved.
+ - Fl_Spinner is now fully supported by FLUID (STR #1158)
+ - Fixed usage of deleted object after menu pulldown
+ (STR #1162)
+ - Calling fl_font(0, 0) under Xft would access a NULL
+ pointer (STR #1205)
+ - Setting a new value in Fl_Input_ wil now actually move
+ cursor to the end of the input field as documented
+ (STR #1161)
+ - FLUID crashed on WIN32 with international characters
+ (STR #1176)
+ - Fl_Check_Browser did not allow the user to toggle the
+ check boxes (STR #1232)
+ - Fl_Help_View crashed on WIN32 with international
+ characters (STR #1228)
+ - Fl::run() no longer clears resources on WIN32 (STR
+ #1231)
+ - Fl::add_timeout() leaked resources on OSX (STR #1233)
+ - Accented characters could not be entered on OSX (STR
+ #1195)
+ - The caret key lookup was missing for OS X
+ - FLUID didn't handle loading .fl files with
+ international characters properly with all compilers
+ (STR #1150)
+ - Fl_Spinner's minimum() and maximum() "get" methods were
+ misspelled (STR #1146)
+ - The largefile support changes in 1.1.7 broke binary
+ compability for fl_filename_list(); you must now use
+ "--enable-largefile" when configuring to get large file
+ support, and the large file support definitions are
+ added to the output of "fltk-config --cflags" (STR
+ #1159)
+
+
CHANGES IN FLTK 1.1.7
- Documentation fixes (STR #571, STR #648, STR #692, STR
@@ -212,8 +488,8 @@ CHANGES IN FLTK 1.1.7
- Fixed symbol demo label bug (STR #777)
- Fixed position of menu titles (STR #795)
- Added missing Fl_Window::copy_label() method.
- - Fixed wrong tooltip in fluid (STR #784)
- - Added zlib path to fluid (STR #783)
+ - Fixed wrong tooltip in FLUID (STR #784)
+ - Added zlib path to FLUID (STR #783)
- Menus and other pop-up windows now obey screen
boundaries on multi-screen displays (STR #781)
- Fl_Chart would draw outside its bounding box (STR #780)
@@ -771,7 +1047,7 @@ CHANGES IN FLTK 1.1.4rc2
(STR #115)
- The 'Enter' key event on OS X would not set
Fl::e_text.
- - Changed behaviour of fluid to always paste into
+ - Changed behaviour of FLUID to always paste into
a selected group (STR #88)
- Menuitem now changes font, even if fontsize
is not set (STR #110)
@@ -900,7 +1176,7 @@ CHANGES IN FLTK 1.1.4rc1
copying using the wrong string size (STR #14)
- fl_font() and fl_size() were not implemented on MacOS
X.
- - Sorted the icon menu bar in fluid.
+ - Sorted the icon menu bar in FLUID.
- Fixed minor memory access complaints from Valgrind
- Compiling src/flstring.h on OS X with BSD header would
fail.
@@ -1883,7 +2159,7 @@ CHANGES IN FLTK 1.1.0b7
nicer.
- Fixed the drawing of large areas with the new
plastic boxtypes.
- - Updated the Visual C++ demo projects to use fluid
+ - Updated the Visual C++ demo projects to use FLUID
to generate the GUI files as needed.
- The demo program didn't load the right menu file
when compiled for debugging under WIN32.
@@ -2524,7 +2800,7 @@ CHANGES SINCE FLTK 1.0.9
needed (still converts indexed images to full RGB and
dithers, tho...)
- - Fixed .gif files in fluid, they were broken by the fix
+ - Fixed .gif files in FLUID, they were broken by the fix
for large .xpm files in version 1.0.9.
- Fix for OpenGL hardware overlays with the transparent
@@ -3033,7 +3309,7 @@ CHANGES SINCE FLTK 1.0
- Documentation fixes.
- Fl::check() didn't return the correct value, breaking a number
of applications.
- - Fixed fluid bug that caused styles patch to crash when you delete
+ - Fixed FLUID bug that caused styles patch to crash when you delete
a menu item.
- Updated valuators demo to put the values in the gui box.
- Fl_Browser_::item_height() didn't always compute the correct
diff --git a/FL/Enumerations.H b/FL/Enumerations.H
index 4c3337c..90b3354 100644
--- a/FL/Enumerations.H
+++ b/FL/Enumerations.H
@@ -1,5 +1,5 @@
//
-// "$Id: Enumerations.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Enumerations.H 5834 2007-05-16 08:30:48Z matt $"
//
// Enumerations for the Fast Light Tool Kit (FLTK).
//
@@ -47,7 +47,7 @@
#define FL_MAJOR_VERSION 1
#define FL_MINOR_VERSION 1
-#define FL_PATCH_VERSION 7
+#define FL_PATCH_VERSION 8
#define FL_VERSION ((double)FL_MAJOR_VERSION + \
(double)FL_MINOR_VERSION * 0.01 + \
(double)FL_PATCH_VERSION * 0.0001)
@@ -177,6 +177,11 @@ enum Fl_Boxtype { // boxtypes (if you change these you must fix fl_boxtype.C):
_FL_PLASTIC_UP_FRAME, _FL_PLASTIC_DOWN_FRAME,
_FL_PLASTIC_THIN_UP_BOX, _FL_PLASTIC_THIN_DOWN_BOX,
_FL_PLASTIC_ROUND_UP_BOX, _FL_PLASTIC_ROUND_DOWN_BOX,
+ _FL_GTK_UP_BOX, _FL_GTK_DOWN_BOX,
+ _FL_GTK_UP_FRAME, _FL_GTK_DOWN_FRAME,
+ _FL_GTK_THIN_UP_BOX, _FL_GTK_THIN_DOWN_BOX,
+ _FL_GTK_THIN_UP_FRAME, _FL_GTK_THIN_DOWN_FRAME,
+ _FL_GTK_ROUND_UP_BOX, _FL_GTK_ROUND_DOWN_BOX,
FL_FREE_BOXTYPE
};
extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUND_UP_BOX();
@@ -211,9 +216,28 @@ extern FL_EXPORT Fl_Boxtype fl_define_FL_PLASTIC_UP_BOX();
#define FL_PLASTIC_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+6)
#define FL_PLASTIC_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+7)
+extern FL_EXPORT Fl_Boxtype fl_define_FL_GTK_UP_BOX();
+#define FL_GTK_UP_BOX fl_define_FL_GTK_UP_BOX()
+#define FL_GTK_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+1)
+#define FL_GTK_UP_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+2)
+#define FL_GTK_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+3)
+#define FL_GTK_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+4)
+#define FL_GTK_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+5)
+#define FL_GTK_THIN_UP_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+6)
+#define FL_GTK_THIN_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+7)
+#define FL_GTK_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+8)
+#define FL_GTK_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+9)
+
// conversions of box types to other boxtypes:
-inline Fl_Boxtype fl_down(Fl_Boxtype b) {return (Fl_Boxtype)(b|1);}
-inline Fl_Boxtype fl_frame(Fl_Boxtype b) {return (Fl_Boxtype)(b|2);}
+inline Fl_Boxtype fl_box(Fl_Boxtype b) {
+ return (Fl_Boxtype)((b<FL_UP_BOX||b%4>1)?b:(b-2));
+}
+inline Fl_Boxtype fl_down(Fl_Boxtype b) {
+ return (Fl_Boxtype)((b<FL_UP_BOX)?b:(b|1));
+}
+inline Fl_Boxtype fl_frame(Fl_Boxtype b) {
+ return (Fl_Boxtype)((b%4<2)?b:(b+2));
+}
// back-compatability box types:
#define FL_FRAME FL_ENGRAVED_FRAME
@@ -401,6 +425,10 @@ enum Fl_Mode { // visual types and Fl_Gl_Window::mode() (values match Glut)
FL_FAKE_SINGLE = 512 // Fake single buffered windows using double-buffer
};
+// image alpha blending
+
+#define FL_IMAGE_WITH_ALPHA 0x40000000
+
// damage masks
enum Fl_Damage {
@@ -424,5 +452,5 @@ enum Fl_Damage {
#endif
//
-// End of "$Id: Enumerations.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Enumerations.H 5834 2007-05-16 08:30:48Z matt $".
//
diff --git a/FL/Fl.H b/FL/Fl.H
index 455ed42..e352a4d 100644
--- a/FL/Fl.H
+++ b/FL/Fl.H
@@ -1,9 +1,9 @@
//
-// "$Id: Fl.H 4223 2005-03-31 16:01:24Z mike $"
+// "$Id: Fl.H 5749 2007-03-20 10:41:14Z matt $"
//
// Main header file for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -46,6 +46,7 @@ typedef void (Fl_Label_Measure_F)(const Fl_Label*, int&, int&);
typedef void (Fl_Box_Draw_F)(int,int,int,int, Fl_Color);
typedef void (*Fl_Timeout_Handler)(void*);
+typedef void (*Fl_Awake_Handler)(void*);
class FL_EXPORT Fl {
Fl() {}; // no constructor!
@@ -78,10 +79,20 @@ public: // should be private!
static void damage(int d) {damage_ = d;}
static void (*idle)();
+ static Fl_Awake_Handler *awake_ring_;
+ static void **awake_data_;
+ static int awake_ring_size_;
+ static int awake_ring_head_;
+ static int awake_ring_tail_;
+
+ static int add_awake_handler_(Fl_Awake_Handler, void*);
+ static int get_awake_handler_(Fl_Awake_Handler&, void*&);
static const char* scheme_;
static Fl_Image* scheme_bg_;
+ static int e_original_keysym; // late addition
+
public:
// API version number
@@ -107,6 +118,8 @@ public:
static int scheme(const char*);
static const char* scheme() {return scheme_;}
static int reload_scheme();
+ static int scrollbar_size();
+ static void scrollbar_size(int W);
// execution:
static int wait();
@@ -159,6 +172,7 @@ public:
static int event_state() {return e_state;}
static int event_state(int i) {return e_state&i;}
static int event_key() {return e_keysym;}
+ static int event_original_key(){return e_original_keysym;}
static int event_key(int);
static int get_key(int);
static const char* event_text() {return e_text;}
@@ -191,13 +205,8 @@ public:
static void paste(Fl_Widget &receiver);
// screen size:
-#if defined(WIN32) || defined(__APPLE__)
static int x();
static int y();
-#else
- static int x() {return 0;}
- static int y() {return 0;}
-#endif /* WIN32 || __APPLE__ */
static int w();
static int h();
@@ -266,15 +275,19 @@ public:
static void lock();
static void unlock();
static void awake(void* message = 0);
+ static int awake(Fl_Awake_Handler cb, void* message = 0);
static void* thread_message();
// Widget deletion:
static void delete_widget(Fl_Widget *w);
static void do_widget_deletion();
+ static void watch_widget_pointer(Fl_Widget *&w);
+ static void release_widget_pointer(Fl_Widget *&w);
+ static void clear_widget_pointer(Fl_Widget const *w);
};
#endif // !Fl_H
//
-// End of "$Id: Fl.H 4223 2005-03-31 16:01:24Z mike $".
+// End of "$Id: Fl.H 5749 2007-03-20 10:41:14Z matt $".
//
diff --git a/FL/Fl_Browser_.H b/FL/Fl_Browser_.H
index c66d414..3469be4 100644
--- a/FL/Fl_Browser_.H
+++ b/FL/Fl_Browser_.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Browser_.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Browser_.H 4879 2006-03-28 23:27:20Z matt $"
//
// Common browser header file for the Fast Light Tool Kit (FLTK).
//
@@ -88,6 +88,7 @@ protected:
void new_list(); // completely clobber all data, as though list replaced
void deleting(void *a); // get rid of any pointers to a
void replacing(void *a,void *b); // change a pointers to b
+ void swapping(void *a,void *b); // exchange pointers a and b
void inserting(void *a,void *b); // insert b near a
int displayed(void *) const ; // true if this line is visible
void redraw_line(void *); // minimal update, no change in size
@@ -149,5 +150,5 @@ public:
#endif
//
-// End of "$Id: Fl_Browser_.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Browser_.H 4879 2006-03-28 23:27:20Z matt $".
//
diff --git a/FL/Fl_Check_Browser.H b/FL/Fl_Check_Browser.H
index f474a03..3725667 100644
--- a/FL/Fl_Check_Browser.H
+++ b/FL/Fl_Check_Browser.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Check_Browser.H 4461 2005-08-05 13:31:02Z dejan $"
+// "$Id: Fl_Check_Browser.H 5006 2006-04-20 03:53:41Z matt $"
//
// Fl_Check_Browser header file for the Fast Light Tool Kit (FLTK).
//
@@ -88,11 +88,15 @@ class FL_EXPORT Fl_Check_Browser : public Fl_Browser_ {
void check_none();
int value() const; // currently selected item
char *text(int item) const; // returns pointer to internal buffer
+
+ protected:
+
+ int handle(int);
};
#endif // Fl_Check_Browser_H
//
-// End of "$Id: Fl_Check_Browser.H 4461 2005-08-05 13:31:02Z dejan $".
+// End of "$Id: Fl_Check_Browser.H 5006 2006-04-20 03:53:41Z matt $".
//
diff --git a/FL/Fl_File_Chooser.H b/FL/Fl_File_Chooser.H
index 4382698..727c73d 100644
--- a/FL/Fl_File_Chooser.H
+++ b/FL/Fl_File_Chooser.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_File_Chooser.H 4473 2005-08-08 00:50:02Z mike $"
+// "$Id: Fl_File_Chooser.H 5644 2007-01-28 19:41:56Z mike $"
//
// Fl_File_Chooser dialog for the Fast Light Tool Kit (FLTK).
//
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#ifndef Fl_File_Chooser_H
#define Fl_File_Chooser_H
@@ -49,24 +49,24 @@
class FL_EXPORT Fl_File_Chooser {
public:
- enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 };
+ enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 };
private:
- static Fl_Preferences prefs_;
- void (*callback_)(Fl_File_Chooser*, void *);
- void *data_;
- char directory_[1024];
- char pattern_[1024];
- char preview_text_[2048];
- int type_;
- void favoritesButtonCB();
- void favoritesCB(Fl_Widget *w);
- void fileListCB();
- void fileNameCB();
- void newdir();
- static void previewCB(Fl_File_Chooser *fc);
- void showChoiceCB();
- void update_favorites();
- void update_preview();
+ static Fl_Preferences prefs_;
+ void (*callback_)(Fl_File_Chooser*, void *);
+ void *data_;
+ char directory_[1024];
+ char pattern_[1024];
+ char preview_text_[2048];
+ int type_;
+ void favoritesButtonCB();
+ void favoritesCB(Fl_Widget *w);
+ void fileListCB();
+ void fileNameCB();
+ void newdir();
+ static void previewCB(Fl_File_Chooser *fc);
+ void showChoiceCB();
+ void update_favorites();
+ void update_preview();
public:
Fl_File_Chooser(const char *d, const char *p, int t, const char *title);
private:
@@ -128,10 +128,10 @@ public:
void callback(void (*cb)(Fl_File_Chooser *, void *), void *d = 0);
void color(Fl_Color c);
Fl_Color color();
- int count();
- void directory(const char *d);
+ int count();
+ void directory(const char *d);
char * directory();
- void filter(const char *p);
+ void filter(const char *p);
const char * filter();
int filter_value();
void filter_value(int f);
@@ -142,9 +142,10 @@ public:
const char * label();
void ok_label(const char *l);
const char * ok_label();
- void preview(int e);
- int preview() const { return previewButton->value(); };
- void rescan();
+ void preview(int e);
+ int preview() const { return previewButton->value(); };
+ void rescan();
+ void rescan_keep_filename();
void show();
int shown();
void textcolor(Fl_Color c);
@@ -157,23 +158,23 @@ public:
int type();
void * user_data() const;
void user_data(void *d);
- const char *value(int f = 1);
- void value(const char *filename);
+ const char *value(int f = 1);
+ void value(const char *filename);
int visible();
- static const char *add_favorites_label;
- static const char *all_files_label;
- static const char *custom_filter_label;
- static const char *existing_file_label;
- static const char *favorites_label;
- static const char *filename_label;
- static const char *filesystems_label;
- static const char *manage_favorites_label;
- static const char *new_directory_label;
- static const char *new_directory_tooltip;
- static const char *preview_label;
- static const char *save_label;
- static const char *show_label;
- static Fl_File_Sort_F *sort;
+ static const char *add_favorites_label;
+ static const char *all_files_label;
+ static const char *custom_filter_label;
+ static const char *existing_file_label;
+ static const char *favorites_label;
+ static const char *filename_label;
+ static const char *filesystems_label;
+ static const char *manage_favorites_label;
+ static const char *new_directory_label;
+ static const char *new_directory_tooltip;
+ static const char *preview_label;
+ static const char *save_label;
+ static const char *show_label;
+ static Fl_File_Sort_F *sort;
};
FL_EXPORT char *fl_dir_chooser(const char *message,const char *fname,int relative=0);
FL_EXPORT char *fl_file_chooser(const char *message,const char *pat,const char *fname,int relative=0);
@@ -182,5 +183,5 @@ FL_EXPORT void fl_file_chooser_ok_label(const char*l);
#endif
//
-// End of "$Id: Fl_File_Chooser.H 4473 2005-08-08 00:50:02Z mike $".
+// End of "$Id: Fl_File_Chooser.H 5644 2007-01-28 19:41:56Z mike $".
//
diff --git a/FL/Fl_Gl_Window.H b/FL/Fl_Gl_Window.H
index d19e33d..ba5380c 100644
--- a/FL/Fl_Gl_Window.H
+++ b/FL/Fl_Gl_Window.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Gl_Window.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Gl_Window.H 5322 2006-08-17 09:49:43Z matt $"
//
// OpenGL header file for the Fast Light Tool Kit (FLTK).
//
@@ -41,7 +41,7 @@ class FL_EXPORT Fl_Gl_Window : public Fl_Window {
const int *alist;
Fl_Gl_Choice *g;
GLContext context_;
- char valid_;
+ char valid_f_;
char damage1_; // damage() of back buffer
virtual void draw_overlay();
void init();
@@ -61,10 +61,13 @@ public:
void hide();
void resize(int,int,int,int);
- char valid() const {return valid_;}
- void valid(char v) {valid_ = v;}
+ char valid() const {return valid_f_ & 1;}
+ void valid(char v) {if (v) valid_f_ |= 1; else valid_f_ &= 0xfe;}
void invalidate();
+ char context_valid() const {return valid_f_ & 2;}
+ void context_valid(char v) {if (v) valid_f_ |= 2; else valid_f_ &= 0xfd;}
+
static int can_do(int m) {return can_do(m,0);}
static int can_do(const int *m) {return can_do(0, m);}
int can_do() {return can_do(mode_,alist);}
@@ -92,5 +95,5 @@ public:
#endif
//
-// End of "$Id: Fl_Gl_Window.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Gl_Window.H 5322 2006-08-17 09:49:43Z matt $".
//
diff --git a/FL/Fl_Help_Dialog.H b/FL/Fl_Help_Dialog.H
index 198e250..bf86af7 100644
--- a/FL/Fl_Help_Dialog.H
+++ b/FL/Fl_Help_Dialog.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Help_Dialog.H 4582 2005-09-25 16:54:40Z matt $"
+// "$Id: Fl_Help_Dialog.H 5643 2007-01-28 19:36:51Z mike $"
//
// Fl_Help_Dialog dialog for the Fast Light Tool Kit (FLTK).
//
@@ -25,32 +25,28 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#ifndef Fl_Help_Dialog_H
#define Fl_Help_Dialog_H
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
-#include <FL/Fl_Help_View.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Input.H>
+#include <FL/Fl_Box.H>
+#include <FL/Fl_Help_View.H>
class FL_EXPORT Fl_Help_Dialog {
- int index_;
- int max_;
- int line_[100];
- char file_[100][256];
- int find_pos_;
+ int index_;
+ int max_;
+ int line_[100];
+ char file_[100][256];
+ int find_pos_;
public:
Fl_Help_Dialog();
private:
Fl_Double_Window *window_;
- Fl_Help_View *view_;
- void cb_view__i(Fl_Help_View*, void*);
- static void cb_view_(Fl_Help_View*, void*);
- void cb_Close_i(Fl_Button*, void*);
- static void cb_Close(Fl_Button*, void*);
Fl_Button *back_;
void cb_back__i(Fl_Button*, void*);
static void cb_back_(Fl_Button*, void*);
@@ -66,6 +62,9 @@ private:
Fl_Input *find_;
void cb_find__i(Fl_Input*, void*);
static void cb_find_(Fl_Input*, void*);
+ Fl_Help_View *view_;
+ void cb_view__i(Fl_Help_View*, void*);
+ static void cb_view_(Fl_Help_View*, void*);
public:
~Fl_Help_Dialog();
int h();
@@ -89,5 +88,5 @@ public:
#endif
//
-// End of "$Id: Fl_Help_Dialog.H 4582 2005-09-25 16:54:40Z matt $".
+// End of "$Id: Fl_Help_Dialog.H 5643 2007-01-28 19:36:51Z mike $".
//
diff --git a/FL/Fl_Help_View.H b/FL/Fl_Help_View.H
index a0f4fd6..1a9f002 100644
--- a/FL/Fl_Help_View.H
+++ b/FL/Fl_Help_View.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Help_View.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Help_View.H 5207 2006-06-18 15:53:26Z matt $"
//
// Help Viewer widget definitions.
//
@@ -133,6 +133,21 @@ class FL_EXPORT Fl_Help_View : public Fl_Group //// Help viewer widget
Fl_Scrollbar scrollbar_, // Vertical scrollbar for document
hscrollbar_; // Horizontal scrollbar
+ static int selection_first;
+ static int selection_last;
+ static int selection_push_first;
+ static int selection_push_last;
+ static int selection_drag_first;
+ static int selection_drag_last;
+ static int selected;
+ static int draw_mode;
+ static int mouse_x;
+ static int mouse_y;
+ static int current_pos;
+ static Fl_Help_View *current_view;
+ static Fl_Color hv_selection_color;
+ static Fl_Color hv_selection_text_color;
+
Fl_Help_Block *add_block(const char *s, int xx, int yy, int ww, int hh, uchar border = 0);
void add_link(const char *n, int xx, int yy, int ww, int hh);
void add_target(const char *n, int yy);
@@ -158,7 +173,15 @@ class FL_EXPORT Fl_Help_View : public Fl_Group //// Help viewer widget
fl_font(f = fonts_[nfonts_][0],
s = fonts_[nfonts_][1]); }
- public:
+ void hv_draw(const char *t, int x, int y);
+ char begin_selection();
+ char extend_selection();
+ void end_selection(int c=0);
+ void clear_global_selection();
+ Fl_Help_Link *find_link(int, int);
+ void follow_link(Fl_Help_Link*);
+
+public:
Fl_Help_View(int xx, int yy, int ww, int hh, const char *l = 0);
~Fl_Help_View();
@@ -186,10 +209,12 @@ class FL_EXPORT Fl_Help_View : public Fl_Group //// Help viewer widget
int leftline() const { return (leftline_); }
void value(const char *v);
const char *value() const { return (value_); }
+ void clear_selection();
+ void select_all();
};
#endif // !Fl_Help_View_H
//
-// End of "$Id: Fl_Help_View.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Help_View.H 5207 2006-06-18 15:53:26Z matt $".
//
diff --git a/FL/Fl_Input.H b/FL/Fl_Input.H
index 7debfdd..03823fe 100644
--- a/FL/Fl_Input.H
+++ b/FL/Fl_Input.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Input.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Input.H 5300 2006-08-14 07:06:45Z matt $"
//
// Input header file for the Fast Light Tool Kit (FLTK).
//
@@ -34,7 +34,6 @@ class FL_EXPORT Fl_Input : public Fl_Input_ {
int handle_key();
int shift_position(int p);
int shift_up_down_position(int p);
- void handle_mouse(int keepmark=0);
public:
void draw();
int handle(int);
@@ -44,5 +43,5 @@ public:
#endif
//
-// End of "$Id: Fl_Input.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Input.H 5300 2006-08-14 07:06:45Z matt $".
//
diff --git a/FL/Fl_Input_Choice.H b/FL/Fl_Input_Choice.H
index d4acb44..45971bc 100644
--- a/FL/Fl_Input_Choice.H
+++ b/FL/Fl_Input_Choice.H
@@ -34,6 +34,7 @@
#define Fl_Input_Choice_H
#include <FL/Fl.H>
+#include <FL/Fl_Group.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Menu_Button.H>
#include <FL/fl_draw.H>
@@ -58,6 +59,8 @@ class Fl_Input_Choice : public Fl_Group {
static void menu_cb(Fl_Widget*, void *data) {
Fl_Input_Choice *o=(Fl_Input_Choice *)data;
+ const Fl_Menu_Item *item = o->menubutton()->mvalue();
+ if ( item && item->flags & (FL_SUBMENU|FL_SUBMENU_POINTER) ) return; // ignore submenus
o->inp_->value(o->menu_->text());
o->do_callback();
}
@@ -95,6 +98,9 @@ public:
void add(const char *s) {
menu_->add(s);
}
+ int changed() const {
+ return inp_->changed();
+ }
void clear() {
menu_->clear();
}
diff --git a/FL/Fl_Preferences.H b/FL/Fl_Preferences.H
index b583d2e..392ac05 100644
--- a/FL/Fl_Preferences.H
+++ b/FL/Fl_Preferences.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Preferences.H 4458 2005-07-26 07:59:01Z matt $"
+// "$Id: Fl_Preferences.H 5330 2006-08-18 07:29:09Z matt $"
//
// Preferences definitions for the Fast Light Tool Kit (FLTK).
//
@@ -65,7 +65,9 @@ public:
char set( const char *entry, int value );
char set( const char *entry, float value );
+ char set( const char *entry, float value, int precision );
char set( const char *entry, double value );
+ char set( const char *entry, double value, int precision );
char set( const char *entry, const char *value );
char set( const char *entry, const void *value, int size );
@@ -165,5 +167,5 @@ private:
#endif // !Fl_Preferences_H
//
-// End of "$Id: Fl_Preferences.H 4458 2005-07-26 07:59:01Z matt $".
+// End of "$Id: Fl_Preferences.H 5330 2006-08-18 07:29:09Z matt $".
//
diff --git a/FL/Fl_RGB_Image.H b/FL/Fl_RGB_Image.H
new file mode 100644
index 0000000..e8b1be6
--- /dev/null
+++ b/FL/Fl_RGB_Image.H
@@ -0,0 +1,35 @@
+//
+// "$Id:$"
+//
+// RGB Image header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2007 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#ifndef Fl_RGB_Image_H
+# define Fl_RGB_Image_H
+# include "Fl_Image.H"
+#endif // !Fl_RGB_Image_H
+
+//
+// End of "$Id:$".
+//
diff --git a/FL/Fl_Scroll.H b/FL/Fl_Scroll.H
index 0bc3a5b..67c650f 100644
--- a/FL/Fl_Scroll.H
+++ b/FL/Fl_Scroll.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Scroll.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Scroll.H 5618 2007-01-18 19:23:24Z matt $"
//
// Scroll header file for the Fast Light Tool Kit (FLTK).
//
@@ -40,10 +40,10 @@ class FL_EXPORT Fl_Scroll : public Fl_Group {
static void scrollbar_cb(Fl_Widget*, void*);
void fix_scrollbar_order();
static void draw_clip(void*,int,int,int,int);
- void bbox(int&,int&,int&,int&);
protected:
+ void bbox(int&,int&,int&,int&);
void draw();
public:
@@ -75,5 +75,5 @@ public:
#endif
//
-// End of "$Id: Fl_Scroll.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Scroll.H 5618 2007-01-18 19:23:24Z matt $".
//
diff --git a/FL/Fl_Spinner.H b/FL/Fl_Spinner.H
index 35a9bad..9f76ad7 100644
--- a/FL/Fl_Spinner.H
+++ b/FL/Fl_Spinner.H
@@ -3,7 +3,7 @@
//
// Spinner widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -32,6 +32,7 @@
// Include necessary headers...
//
+# include <FL/Enumerations.H>
# include <FL/Fl_Group.H>
# include <FL/Fl_Input.H>
# include <FL/Fl_Repeat_Button.H>
@@ -56,6 +57,7 @@ class Fl_Spinner : public Fl_Group
up_button_, // Up button
down_button_; // Down button
+
static void sb_cb(Fl_Widget *w, Fl_Spinner *sb) {
double v; // New value
@@ -93,7 +95,20 @@ class Fl_Spinner : public Fl_Group
void update() {
char s[255]; // Value string
- sprintf(s, format_, value_);
+ if (format_[0]=='%'&&format_[1]=='.'&&format_[2]=='*') { // precision argument
+ // this code block is a simplified version of
+ // Fl_Valuator::format() and works well (but looks ugly)
+ int c = 0;
+ char temp[64], *sp = temp;
+ sprintf(temp, "%.12f", step_);
+ while (*sp) sp++;
+ sp--;
+ while (sp>temp && *sp=='0') sp--;
+ while (sp>temp && (*sp>='0' && *sp<='9')) { sp--; c++; }
+ sprintf(s, format_, c, value_);
+ } else {
+ sprintf(s, format_, value_);
+ }
input_.value(s);
}
@@ -102,22 +117,22 @@ class Fl_Spinner : public Fl_Group
Fl_Spinner(int X, int Y, int W, int H, const char *L = 0)
: Fl_Group(X, Y, W, H, L),
input_(X, Y, W - H / 2 - 2, H),
- up_button_(X + W - H / 2 - 2, Y, H / 2 + 2, H / 2, "@-22<"),
+ up_button_(X + W - H / 2 - 2, Y, H / 2 + 2, H / 2, "@-42<"),
down_button_(X + W - H / 2 - 2, Y + H - H / 2,
- H / 2 + 2, H / 2, "@-22>") {
+ H / 2 + 2, H / 2, "@-42>") {
end();
value_ = 1.0;
minimum_ = 1.0;
maximum_ = 100.0;
step_ = 1.0;
- format_ = "%.0f";
+ format_ = "%g";
align(FL_ALIGN_LEFT);
input_.value("1");
input_.type(FL_INT_INPUT);
- input_.when(FL_WHEN_CHANGED);
+ input_.when(FL_WHEN_ENTER_KEY | FL_WHEN_RELEASE);
input_.callback((Fl_Callback *)sb_cb, this);
up_button_.callback((Fl_Callback *)sb_cb, this);
@@ -127,9 +142,33 @@ class Fl_Spinner : public Fl_Group
const char *format() { return (format_); }
void format(const char *f) { format_ = f; update(); }
+
+ int handle(int event) {
+ switch (event) {
+ case FL_KEYDOWN :
+ case FL_SHORTCUT :
+ if (Fl::event_key() == FL_Up) {
+ up_button_.do_callback();
+ return 1;
+ } else if (Fl::event_key() == FL_Down) {
+ down_button_.do_callback();
+ return 1;
+ } else return 0;
+
+ case FL_FOCUS :
+ if (input_.take_focus()) return 1;
+ else return 0;
+ }
+
+ return Fl_Group::handle(event);
+ }
+
+ // Speling mistaks retained for source compatibility...
double maxinum() const { return (maximum_); }
+ double maximum() const { return (maximum_); }
void maximum(double m) { maximum_ = m; }
double mininum() const { return (minimum_); }
+ double minimum() const { return (minimum_); }
void minimum(double m) { minimum_ = m; }
void range(double a, double b) { minimum_ = a; maximum_ = b; }
void resize(int X, int Y, int W, int H) {
@@ -141,7 +180,12 @@ class Fl_Spinner : public Fl_Group
H / 2 + 2, H / 2);
}
double step() const { return (step_); }
- void step(double s) { step_ = s; }
+ void step(double s) {
+ step_ = s;
+ if (step_ != (int)step_) input_.type(FL_FLOAT_INPUT);
+ else input_.type(FL_INT_INPUT);
+ update();
+ }
Fl_Color textcolor() const {
return (input_.textcolor());
}
@@ -160,6 +204,15 @@ class Fl_Spinner : public Fl_Group
void textsize(uchar s) {
input_.textsize(s);
}
+ uchar type() const { return (input_.type()); }
+ void type(uchar v) {
+ if (v==FL_FLOAT_INPUT) {
+ format("%.*f");
+ } else {
+ format("%.0f");
+ }
+ input_.type(v);
+ }
double value() const { return (value_); }
void value(double v) { value_ = v; update(); }
};
diff --git a/FL/Fl_Tabs.H b/FL/Fl_Tabs.H
index 3145f20..c46bb2e 100644
--- a/FL/Fl_Tabs.H
+++ b/FL/Fl_Tabs.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Tabs.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Tabs.H 5326 2006-08-17 13:43:07Z matt $"
//
// Tab header file for the Fast Light Tool Kit (FLTK).
//
@@ -37,6 +37,7 @@ class FL_EXPORT Fl_Tabs : public Fl_Group {
int tab_height();
void draw_tab(int x1, int x2, int W, int H, Fl_Widget* o, int sel=0);
protected:
+ void redraw_tabs();
void draw();
public:
@@ -52,5 +53,5 @@ public:
#endif
//
-// End of "$Id: Fl_Tabs.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Tabs.H 5326 2006-08-17 13:43:07Z matt $".
//
diff --git a/FL/Makefile.in b/FL/Makefile.in
index 9fb8fde..adf52c7 100644
--- a/FL/Makefile.in
+++ b/FL/Makefile.in
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile.in 4288 2005-04-16 00:13:17Z mike $"
+# "$Id: Makefile.in 5745 2007-03-15 13:27:41Z mike $"
#
# Header makefile for the Fast Light Tool Kit (FLTK).
#
-# Copyright 1998-2005 by Bill Spitzak and others.
+# Copyright 1998-2007 by Bill Spitzak and others.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -35,12 +35,11 @@ depend:
install:
echo "Installing include files in $(DESTDIR)$(includedir)..."
- -$(MKDIR) -p $(DESTDIR)$(includedir)
$(RMDIR) $(DESTDIR)$(includedir)/FL
- $(MKDIR) $(DESTDIR)$(includedir)/FL
- $(CHMOD) 755 $(DESTDIR)$(includedir)/FL
- $(CP) ../FL/*.[hHr] $(DESTDIR)$(includedir)/FL
- $(CHMOD) 644 $(DESTDIR)$(includedir)/FL/*.[hHr]
+ $(INSTALL_DIR) $(DESTDIR)$(includedir)/FL
+ for file in *.[hrH]; do \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/FL; \
+ done
@HLINKS@ cd $(DESTDIR)$(includedir)/FL;\
@HLINKS@ for file in *.H; do\
@HLINKS@ $(RM) "`basename $$file H`h";\
@@ -60,5 +59,5 @@ uninstall:
#
-# End of "$Id: Makefile.in 4288 2005-04-16 00:13:17Z mike $".
+# End of "$Id: Makefile.in 5745 2007-03-15 13:27:41Z mike $".
#
diff --git a/FL/filename.H b/FL/filename.H
index df7dd87..daf5e32 100644
--- a/FL/filename.H
+++ b/FL/filename.H
@@ -1,5 +1,5 @@
/*
- * "$Id: filename.H 4548 2005-08-29 20:16:36Z matt $"
+ * "$Id: filename.H 5635 2007-01-23 15:02:00Z mike $"
*
* Filename header file for the Fast Light Tool Kit (FLTK).
*
@@ -111,6 +111,24 @@ typedef int (Fl_File_Sort_F)(struct dirent **, struct dirent **);
FL_EXPORT int fl_filename_list(const char *d, struct dirent ***l,
Fl_File_Sort_F *s = fl_numericsort);
+
+/*
+ * Generic function to open a Uniform Resource Identifier (URI) using a
+ * system-defined program (added in FLTK 1.1.8)
+ */
+
+FL_EXPORT int fl_open_uri(const char *uri, char *msg = (char *)0,
+ int msglen = 0);
+
+/*
+ * _fl_filename_isdir_quick() is a private function that checks for a
+ * trailing slash and assumes that the passed name is a directory if
+ * it finds one. This function is used by Fl_File_Browser and
+ * Fl_File_Chooser to avoid extra stat() calls, but is not supported
+ * outside of FLTK...
+ */
+int _fl_filename_isdir_quick(const char *name);
+
# endif /* __cplusplus */
/*
@@ -134,5 +152,5 @@ FL_EXPORT int fl_filename_list(const char *d, struct dirent ***l,
#endif /* FL_FILENAME_H */
/*
- * End of "$Id: filename.H 4548 2005-08-29 20:16:36Z matt $".
+ * End of "$Id: filename.H 5635 2007-01-23 15:02:00Z mike $".
*/
diff --git a/FL/fl_draw.H b/FL/fl_draw.H
index ba5d710..c752795 100644
--- a/FL/fl_draw.H
+++ b/FL/fl_draw.H
@@ -1,5 +1,5 @@
//
-// "$Id: fl_draw.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_draw.H 5430 2006-09-15 15:35:16Z matt $"
//
// Portable drawing function header file for the Fast Light Tool Kit (FLTK).
//
@@ -160,6 +160,12 @@ FL_EXPORT void fl_draw(const char*, int,int,int,int, Fl_Align,
void (*callthis)(const char *, int n, int x, int y),
Fl_Image* img=0, int draw_symbols = 1);
+// font encoding:
+FL_EXPORT const char *fl_latin1_to_local(const char *, int n=-1);
+FL_EXPORT const char *fl_local_to_latin1(const char *, int n=-1);
+FL_EXPORT const char *fl_mac_roman_to_local(const char *, int n=-1);
+FL_EXPORT const char *fl_local_to_mac_roman(const char *, int n=-1);
+
// boxtypes:
FL_EXPORT void fl_frame(const char* s, int x, int y, int w, int h);
FL_EXPORT void fl_frame2(const char* s, int x, int y, int w, int h);
@@ -172,6 +178,7 @@ typedef void (*Fl_Draw_Image_Cb)(void*,int,int,int,uchar*);
FL_EXPORT void fl_draw_image(Fl_Draw_Image_Cb, void*, int,int,int,int, int delta=3);
FL_EXPORT void fl_draw_image_mono(Fl_Draw_Image_Cb, void*, int,int,int,int, int delta=1);
FL_EXPORT void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b);
+FL_EXPORT char fl_can_do_alpha_blending();
FL_EXPORT uchar *fl_read_image(uchar *p, int x,int y, int w, int h, int alpha=0);
@@ -196,5 +203,5 @@ FL_EXPORT int fl_add_symbol(const char* name, void (*drawit)(Fl_Color), int scal
#endif
//
-// End of "$Id: fl_draw.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_draw.H 5430 2006-09-15 15:35:16Z matt $".
//
diff --git a/FL/glu.h b/FL/glu.h
new file mode 100644
index 0000000..b6409ae
--- /dev/null
+++ b/FL/glu.h
@@ -0,0 +1,60 @@
+//
+// "$Id:$"
+//
+// GLu header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// You must include this instead of GL/gl.h to get the Microsoft
+// APIENTRY stuff included (from <windows.h>) prior to the OpenGL
+// header files.
+//
+// This file also provides "missing" OpenGL functions, and
+// gl_start() and gl_finish() to allow OpenGL to be used in any window
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#ifndef FL_glu_H
+# define FL_glu_H
+
+# include "Enumerations.H" // for color names
+# ifdef WIN32
+# include <windows.h>
+# endif
+# ifndef APIENTRY
+# if defined(__CYGWIN__)
+# define APIENTRY __attribute__ ((__stdcall__))
+# else
+# define APIENTRY
+# endif
+# endif
+
+# ifdef __APPLE__
+# include <OpenGL/glu.h>
+# else
+# include <GL/glu.h>
+# endif
+
+#endif // !FL_glu_H
+
+//
+// End of "$Id: $".
+//
diff --git a/FL/glut.H b/FL/glut.H
index f051695..7c8dc47 100644
--- a/FL/glut.H
+++ b/FL/glut.H
@@ -1,9 +1,9 @@
//
-// "$Id: glut.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: glut.H 5715 2007-02-25 00:05:06Z matt $"
//
// GLUT emulation header file for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -43,15 +43,14 @@
// Commented out lines indicate parts of GLUT that are not emulated.
-#ifndef __glut_h__
-# define __glut_h__
+#ifndef Fl_glut_H
+# define Fl_glut_H
# include "gl.h"
-//# include <GL/glu.h>
////////////////////////////////////////////////////////////////
// GLUT is emulated using this window class and these static variables
-// (plus several more static variables hidden in glut.C):
+// (plus several more static variables hidden in glut_compatability.cxx):
# include "Fl.H"
# include "Fl_Gl_Window.H"
@@ -118,6 +117,7 @@ FL_EXPORT void glutInitWindowSize(int w, int h);
FL_EXPORT void glutMainLoop();
FL_EXPORT int glutCreateWindow(char *title);
+FL_EXPORT int glutCreateWindow(const char *title);
FL_EXPORT int glutCreateSubWindow(int win, int x, int y, int width, int height);
@@ -125,6 +125,8 @@ FL_EXPORT void glutDestroyWindow(int win);
inline void glutPostRedisplay() {glut_window->redraw();}
+FL_EXPORT void glutPostWindowRedisplay(int win);
+
FL_EXPORT void glutSwapBuffers();
inline int glutGetWindow() {return glut_window->number;}
@@ -141,7 +143,7 @@ inline void glutReshapeWindow(int w, int h) {glut_window->size(w,h);}
inline void glutPopWindow() {glut_window->show();}
-//inline void glutPushWindow();
+inline void glutPushWindow() { /* do nothing */ }
inline void glutIconifyWindow() {glut_window->iconize();}
@@ -177,7 +179,7 @@ inline void glutSetCursor(Fl_Cursor cursor) {glut_window->cursor(cursor);}
# define GLUT_CURSOR_NONE FL_CURSOR_NONE
# define GLUT_CURSOR_FULL_CROSSHAIR FL_CURSOR_CROSS
-//inline void glutWarpPointer(int x, int y);
+inline void glutWarpPointer(int, int) { /* do nothing */ }
inline void glutEstablishOverlay() {glut_window->make_overlay_current();}
@@ -205,7 +207,7 @@ FL_EXPORT void glutAddMenuEntry(char *label, int value);
FL_EXPORT void glutAddSubMenu(char *label, int submenu);
-FL_EXPORT void glutChangeToMenuEntry(int item, char *label, int value);
+FL_EXPORT void glutChangeToMenuEntry(int item, char *labela, int value);
FL_EXPORT void glutChangeToSubMenu(int item, char *label, int submenu);
@@ -312,7 +314,7 @@ inline void glutOverlayDisplayFunc(void (*f)()) {
// Warning: values are changed from GLUT!
// Also relies on the GL_ symbols having values greater than 100
-int glutGet(GLenum type);
+FL_EXPORT int glutGet(GLenum type);
enum {
GLUT_RETURN_ZERO = 0,
GLUT_WINDOW_X,
@@ -320,12 +322,8 @@ enum {
GLUT_WINDOW_WIDTH,
GLUT_WINDOW_HEIGHT,
GLUT_WINDOW_PARENT,
-//GLUT_WINDOW_NUM_CHILDREN,
-//GLUT_WINDOW_CURSOR,
GLUT_SCREEN_WIDTH,
GLUT_SCREEN_HEIGHT,
-//GLUT_SCREEN_WIDTH_MM,
-//GLUT_SCREEN_HEIGHT_MM,
GLUT_MENU_NUM_ITEMS,
GLUT_DISPLAY_MODE_POSSIBLE,
GLUT_INIT_WINDOW_X,
@@ -333,8 +331,13 @@ enum {
GLUT_INIT_WINDOW_WIDTH,
GLUT_INIT_WINDOW_HEIGHT,
GLUT_INIT_DISPLAY_MODE,
+ GLUT_WINDOW_BUFFER_SIZE,
+ GLUT_VERSION
+//GLUT_WINDOW_NUM_CHILDREN,
+//GLUT_WINDOW_CURSOR,
+//GLUT_SCREEN_WIDTH_MM,
+//GLUT_SCREEN_HEIGHT_MM,
//GLUT_ELAPSED_TIME,
- GLUT_WINDOW_BUFFER_SIZE
};
# define GLUT_WINDOW_STENCIL_SIZE GL_STENCIL_BITS
@@ -357,17 +360,17 @@ enum {
# endif
# define GLUT_WINDOW_STEREO GL_STEREO
-//int glutDeviceGet(GLenum type);
-//#define GLUT_HAS_KEYBOARD 600
-//#define GLUT_HAS_MOUSE 601
-//#define GLUT_HAS_SPACEBALL 602
-//#define GLUT_HAS_DIAL_AND_BUTTON_BOX 603
-//#define GLUT_HAS_TABLET 604
-//#define GLUT_NUM_MOUSE_BUTTONS 605
-//#define GLUT_NUM_SPACEBALL_BUTTONS 606
-//#define GLUT_NUM_BUTTON_BOX_BUTTONS 607
-//#define GLUT_NUM_DIALS 608
-//#define GLUT_NUM_TABLET_BUTTONS 609
+# define GLUT_HAS_KEYBOARD 600
+# define GLUT_HAS_MOUSE 601
+# define GLUT_HAS_SPACEBALL 602
+# define GLUT_HAS_DIAL_AND_BUTTON_BOX 603
+# define GLUT_HAS_TABLET 604
+# define GLUT_NUM_MOUSE_BUTTONS 605
+# define GLUT_NUM_SPACEBALL_BUTTONS 606
+# define GLUT_NUM_BUTTON_BOX_BUTTONS 607
+# define GLUT_NUM_DIALS 608
+# define GLUT_NUM_TABLET_BUTTONS 609
+FL_EXPORT int glutDeviceGet(GLenum type);
// WARNING: these values are different than GLUT uses:
# define GLUT_ACTIVE_SHIFT FL_SHIFT
@@ -375,7 +378,7 @@ enum {
# define GLUT_ACTIVE_ALT FL_ALT
inline int glutGetModifiers() {return Fl::event_state() & (GLUT_ACTIVE_SHIFT | GLUT_ACTIVE_CTRL | GLUT_ACTIVE_ALT);}
-int glutLayerGet(GLenum);
+FL_EXPORT int glutLayerGet(GLenum);
# define GLUT_OVERLAY_POSSIBLE 800
//#define GLUT_LAYER_IN_USE 801
//#define GLUT_HAS_OVERLAY 802
@@ -383,6 +386,12 @@ int glutLayerGet(GLenum);
# define GLUT_NORMAL_DAMAGED 804
# define GLUT_OVERLAY_DAMAGED 805
+extern "C" {
+typedef void (*GLUTproc)();
+}
+
+FL_EXPORT GLUTproc glutGetProcAddress(const char *procName);
+
//inline int glutVideoResizeGet(GLenum param);
//#define GLUT_VIDEO_RESIZE_POSSIBLE 900
//#define GLUT_VIDEO_RESIZE_IN_USE 901
@@ -403,11 +412,8 @@ int glutLayerGet(GLenum);
//inline void glutVideoPan(int x, int y, int width, int height);
-////////////////////////////////////////////////////////////////
-// Emulated GLUT drawing functions:
-
// Font argument must be a void* for compatability, so...
-extern FL_EXPORT struct Glut_Bitmap_Font {uchar font; int size;}
+extern FL_EXPORT struct Fl_Glut_Bitmap_Font {uchar font; int size;}
glutBitmap9By15, glutBitmap8By13, glutBitmapTimesRoman10,
glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12,
glutBitmapHelvetica18;
@@ -420,57 +426,68 @@ extern FL_EXPORT struct Glut_Bitmap_Font {uchar font; int size;}
# define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18)
FL_EXPORT void glutBitmapCharacter(void *font, int character);
+FL_EXPORT int glutBitmapHeight(void *font);
+FL_EXPORT int glutBitmapLength(void *font, const unsigned char *string);
+FL_EXPORT void glutBitmapString(void *font, const unsigned char *string);
FL_EXPORT int glutBitmapWidth(void *font, int character);
-////////////////////////////////////////////////////////////////
-// GLUT drawing functions. These are NOT emulated but you can
-// link in the glut library to get them. This assumes the object
-// files in GLUT remain as they currently are so that there are
-// not symbol conflicts with the above.
-
-extern "C" {
+FL_EXPORT int glutExtensionSupported(char *name);
-extern int APIENTRY glutExtensionSupported(char *name);
+/* GLUT stroked font sub-API */
+struct Fl_Glut_StrokeVertex {
+ GLfloat X, Y;
+};
-/* Stroke font constants (use these in GLUT program). */
-# ifdef WIN32
-# define GLUT_STROKE_ROMAN ((void*)0)
-# define GLUT_STROKE_MONO_ROMAN ((void*)1)
-# else
-extern void *glutStrokeRoman;
-# define GLUT_STROKE_ROMAN (&glutStrokeRoman)
-extern void *glutStrokeMonoRoman;
-# define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman)
-# endif
+struct Fl_Glut_StrokeStrip {
+ int Number;
+ const Fl_Glut_StrokeVertex* Vertices;
+};
-/* GLUT font sub-API */
-extern void APIENTRY glutStrokeCharacter(void *font, int character);
-extern int APIENTRY glutStrokeWidth(void *font, int character);
+struct Fl_Glut_StrokeChar {
+ GLfloat Right;
+ int Number;
+ const Fl_Glut_StrokeStrip* Strips;
+};
-/* GLUT pre-built models sub-API */
-extern void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
-extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
-extern void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
-extern void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
-extern void APIENTRY glutWireCube(GLdouble size);
-extern void APIENTRY glutSolidCube(GLdouble size);
-extern void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
-extern void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
-extern void APIENTRY glutWireDodecahedron();
-extern void APIENTRY glutSolidDodecahedron();
-extern void APIENTRY glutWireTeapot(GLdouble size);
-extern void APIENTRY glutSolidTeapot(GLdouble size);
-extern void APIENTRY glutWireOctahedron();
-extern void APIENTRY glutSolidOctahedron();
-extern void APIENTRY glutWireTetrahedron();
-extern void APIENTRY glutSolidTetrahedron();
-extern void APIENTRY glutWireIcosahedron();
-extern void APIENTRY glutSolidIcosahedron();
+struct Fl_Glut_StrokeFont {
+ char* Name; // The source font name
+ int Quantity; // Number of chars in font
+ GLfloat Height; // Height of the characters
+ const Fl_Glut_StrokeChar** Characters;// The characters mapping
+};
+extern FL_EXPORT Fl_Glut_StrokeFont glutStrokeRoman;
+extern FL_EXPORT Fl_Glut_StrokeFont glutStrokeMonoRoman;
+# define GLUT_STROKE_ROMAN (&glutStrokeRoman)
+# define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman)
-}
+FL_EXPORT void glutStrokeCharacter(void *font, int character);
+FL_EXPORT GLfloat glutStrokeHeight(void *font);
+FL_EXPORT int glutStrokeLength(void *font, const unsigned char *string);
+FL_EXPORT void glutStrokeString(void *font, const unsigned char *string);
+FL_EXPORT int glutStrokeWidth(void *font, int character);
-#endif /* !__glut_h__ */
+/* GLUT pre-built models sub-API */
+FL_EXPORT void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
+FL_EXPORT void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
+FL_EXPORT void glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
+FL_EXPORT void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
+FL_EXPORT void glutWireCube(GLdouble size);
+FL_EXPORT void glutSolidCube(GLdouble size);
+FL_EXPORT void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
+FL_EXPORT void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
+FL_EXPORT void glutWireDodecahedron();
+FL_EXPORT void glutSolidDodecahedron();
+FL_EXPORT void glutWireTeapot(GLdouble size);
+FL_EXPORT void glutSolidTeapot(GLdouble size);
+FL_EXPORT void glutWireOctahedron();
+FL_EXPORT void glutSolidOctahedron();
+FL_EXPORT void glutWireTetrahedron();
+FL_EXPORT void glutSolidTetrahedron();
+FL_EXPORT void glutWireIcosahedron();
+FL_EXPORT void glutSolidIcosahedron();
+
+#endif // !Fl_glut_H
//
-// End of "$Id: glut.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: glut.H 5715 2007-02-25 00:05:06Z matt $".
//
diff --git a/FL/mac.H b/FL/mac.H
index 11ee29a..0af94a0 100644
--- a/FL/mac.H
+++ b/FL/mac.H
@@ -1,5 +1,5 @@
//
-// "$Id: mac.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: mac.H 5379 2006-08-29 11:03:05Z matt $"
//
// Mac header file for the Fast Light Tool Kit (FLTK).
//
@@ -54,10 +54,6 @@ inline void XDestroyRegion(Fl_Region r) {
DisposeRgn(r);
}
-# define XDestroyWindow(a,b) DisposeWindow(b)
-# define XMapWindow(a,b) ShowWindow(b)
-# define XUnmapWindow(a,b) HideWindow(b)
-
# include "Fl_Window.H"
// This object contains all mac-specific stuff about a window:
@@ -90,6 +86,11 @@ public:
static void q_end_image();
};
+extern void MacDestroyWindow(Fl_Window*,WindowPtr);
+extern void MacMapWindow(Fl_Window*,WindowPtr);
+extern void MacUnmapWindow(Fl_Window*,WindowPtr);
+extern int MacUnlinkWindow(Fl_X*,Fl_X*start=0L);
+
inline Window fl_xid(const Fl_Window*w)
{
return Fl_X::i(w)->xid;
@@ -130,6 +131,6 @@ extern void fl_open_callback(void (*cb)(const char *));
extern FL_EXPORT int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b);
//
-// End of "$Id: mac.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: mac.H 5379 2006-08-29 11:03:05Z matt $".
//
diff --git a/FL/names.h b/FL/names.h
new file mode 100644
index 0000000..e2c934b
--- /dev/null
+++ b/FL/names.h
@@ -0,0 +1,85 @@
+//
+// "$Id:$"
+//
+// Event names header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2007 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+// Thnaks to Greg Ercolano for this addition.
+
+#ifndef FL_NAMES_H
+#define FL_NAMES_H
+
+char *fl_eventnames[] =
+{
+ "FL_NO_EVENT",
+ "FL_PUSH",
+ "FL_RELEASE",
+ "FL_ENTER",
+ "FL_LEAVE",
+ "FL_DRAG",
+ "FL_FOCUS",
+ "FL_UNFOCUS",
+ "FL_KEYDOWN",
+ "FL_KEYUP",
+ "FL_CLOSE",
+ "FL_MOVE",
+ "FL_SHORTCUT",
+ "FL_DEACTIVATE",
+ "FL_ACTIVATE",
+ "FL_HIDE",
+ "FL_SHOW",
+ "FL_PASTE",
+ "FL_SELECTIONCLEAR",
+ "FL_MOUSEWHEEL",
+ "FL_DND_ENTER",
+ "FL_DND_DRAG",
+ "FL_DND_LEAVE",
+ "FL_DND_RELEASE",
+};
+
+char *fl_fontnames[] =
+{
+ "FL_HELVETICA",
+ "FL_HELVETICA_BOLD",
+ "FL_HELVETICA_ITALIC",
+ "FL_HELVETICA_BOLD_ITALIC",
+ "FL_COURIER",
+ "FL_COURIER_BOLD",
+ "FL_COURIER_ITALIC",
+ "FL_COURIER_BOLD_ITALIC",
+ "FL_TIMES",
+ "FL_TIMES_BOLD",
+ "FL_TIMES_ITALIC",
+ "FL_TIMES_BOLD_ITALIC",
+ "FL_SYMBOL",
+ "FL_SCREEN",
+ "FL_SCREEN_BOLD",
+ "FL_ZAPF_DINGBATS",
+};
+
+#endif /* FL_NAMES_H */
+
+//
+// End of "$Id:$".
+// \ No newline at end of file
diff --git a/FL/win32.H b/FL/win32.H
index 439c181..7122ab1 100644
--- a/FL/win32.H
+++ b/FL/win32.H
@@ -1,5 +1,5 @@
//
-// "$Id: win32.H 4569 2005-09-15 07:41:17Z matt $"
+// "$Id: win32.H 5436 2006-09-16 16:02:00Z matt $"
//
// WIN32 header file for the Fast Light Tool Kit (FLTK).
//
@@ -132,6 +132,7 @@ extern FL_EXPORT HDC fl_makeDC(HBITMAP);
fl_pop_clip(); RestoreDC(fl_gc, _savedc); DeleteDC(fl_gc); fl_window=_sw; fl_gc = _sgc
FL_EXPORT void fl_copy_offscreen(int x,int y,int w,int h,HBITMAP pixmap,int srcx,int srcy);
+FL_EXPORT void fl_copy_offscreen_with_alpha(int x,int y,int w,int h,HBITMAP pixmap,int srcx,int srcy);
#define fl_delete_offscreen(bitmap) DeleteObject(bitmap);
// Bitmap masks
@@ -147,5 +148,5 @@ inline void fl_open_callback(void (*)(const char *)) {}
extern FL_EXPORT int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b);
//
-// End of "$Id: win32.H 4569 2005-09-15 07:41:17Z matt $".
+// End of "$Id: win32.H 5436 2006-09-16 16:02:00Z matt $".
//
diff --git a/FL/x.H b/FL/x.H
index 91642c2..88802b9 100644
--- a/FL/x.H
+++ b/FL/x.H
@@ -1,5 +1,5 @@
//
-// "$Id: x.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: x.H 5262 2006-07-18 11:23:20Z matt $"
//
// X11 header file for the Fast Light Tool Kit (FLTK).
//
@@ -69,6 +69,7 @@ extern FL_EXPORT Colormap fl_colormap;
extern FL_EXPORT GC fl_gc;
extern FL_EXPORT Window fl_window;
extern FL_EXPORT XFontStruct* fl_xfont;
+extern FL_EXPORT void *fl_xftfont;
FL_EXPORT ulong fl_xpixel(Fl_Color i);
FL_EXPORT ulong fl_xpixel(uchar r, uchar g, uchar b);
FL_EXPORT void fl_clip_region(Fl_Region);
@@ -143,5 +144,5 @@ extern FL_EXPORT int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b)
#endif
//
-// End of "$Id: x.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: x.H 5262 2006-07-18 11:23:20Z matt $".
//
diff --git a/Makefile b/Makefile
index 38f2cd9..2896cdc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 4756 2006-01-15 18:36:16Z mike $"
+# "$Id: Makefile 5788 2007-05-01 14:28:23Z matt $"
#
# Top-level makefile for the Fast Light Tool Kit (FLTK).
#
@@ -32,17 +32,16 @@ DIRS = $(IMAGEDIRS) src fluid test documentation
all: makeinclude
for dir in $(DIRS); do\
echo "=== making $$dir ===";\
- (cd $$dir; $(MAKE) $(MFLAGS)) || break;\
+ (cd $$dir; $(MAKE) $(MFLAGS)) || exit 1;\
done
install: makeinclude
-mkdir -p $(DESTDIR)$(bindir)
$(RM) $(DESTDIR)$(bindir)/fltk-config
- -cp fltk-config $(DESTDIR)$(bindir)
- -chmod 755 $(DESTDIR)$(bindir)/fltk-config
+ $(INSTALL_SCRIPT) fltk-config $(DESTDIR)$(bindir)
for dir in FL $(DIRS); do\
echo "=== installing $$dir ===";\
- (cd $$dir; $(MAKE) $(MFLAGS) install) || break;\
+ (cd $$dir; $(MAKE) $(MFLAGS) install) || exit 1;\
done
install-desktop: makeinclude
@@ -54,7 +53,7 @@ uninstall: makeinclude
$(RM) $(DESTDIR)$(bindir)/fltk-config
for dir in FL $(DIRS); do\
echo "=== uninstalling $$dir ===";\
- (cd $$dir; $(MAKE) $(MFLAGS) uninstall) || break;\
+ (cd $$dir; $(MAKE) $(MFLAGS) uninstall) || exit 1;\
done
uninstall-desktop: makeinclude
@@ -65,28 +64,30 @@ uninstall-desktop: makeinclude
depend: makeinclude
for dir in $(DIRS); do\
echo "=== making dependencies in $$dir ===";\
- (cd $$dir; $(MAKE) $(MFLAGS) depend) || break;\
+ (cd $$dir; $(MAKE) $(MFLAGS) depend) || exit 1;\
done
clean:
-$(RM) core *.o
for dir in $(DIRS); do\
echo "=== cleaning $$dir ===";\
- (cd $$dir; $(MAKE) $(MFLAGS) clean) || break;\
+ (cd $$dir; $(MAKE) $(MFLAGS) clean) || exit 1;\
done
distclean: clean
$(RM) config.*
$(RM) fltk-config fltk.list makeinclude
+ $(RM) fltk.spec
$(RM) FL/Makefile
$(RM) documentation/*.$(CAT1EXT)
$(RM) documentation/*.$(CAT3EXT)
+ $(RM) documentation/*.$(CAT6EXT)
$(RM) documentation/fltk.pdf
$(RM) documentation/fltk.ps
$(RM) -r documentation/fltk.d
for file in test/*.fl; do\
- $(RM) test/`basename $file .fl`.cxx; \
- $(RM) test/`basename $file .fl`.h; \
+ $(RM) test/`basename $$file .fl`.cxx; \
+ $(RM) test/`basename $$file .fl`.h; \
done
makeinclude: configure configh.in makeinclude.in
@@ -108,7 +109,9 @@ portable-dist:
native-dist:
epm -v -f native fltk
+etags:
+ etags FL/*.H FL/*.h src/*.cxx src/*.c src/*.h fluid/*.h fluid/*.cxx test/*.h test/*.cxx
#
-# End of "$Id: Makefile 4756 2006-01-15 18:36:16Z mike $".
+# End of "$Id: Makefile 5788 2007-05-01 14:28:23Z matt $".
#
diff --git a/README.mac b/README.mac
index 0b5c1cc..ab042c4 100644
--- a/README.mac
+++ b/README.mac
@@ -1,4 +1,4 @@
-README.mac - 10/03/2002 - Building FLTK under MacOS X
+README.mac - 2007-02-06 - Building FLTK under MacOS X
-----------------------------------------------------
CONTENTS
@@ -29,49 +29,6 @@ HOW TO BUILD USING GCC (MacOS X)
BSD UNIX, the normal UNIX build procedure as described in
'README' applies.
- A 'resource fork' will be attached to applications to make
- them visible in the Finder. The default resource file is
- "FL/mac.r".
-
- The "fltk-config" script can be used to attach the FLTK
- resource fork to an executable using the "--post" option:
-
- fltk-config --post foo
-
- where "foo" is the name of the executable.
-
- To attach your own resource fork to your FLTK program, run
- the "Rez" command:
-
- Rez -t APPL foo.r -o foo
-
-
-SCRIPTS
-
- When using Finder applications on source files (e.g.
- FileMerge), I found the following script very useful. It adds
- resource forks to all text files:
-
- #!/bin/tcsh
- setenv SET_MAC_TYPE "SetFile -t TEXT -c ttxt "
- setenv F1MAC_N 7
- echo "Setting Mac File Types. Please wait..."
- echo "[1/"$F1MAC_N"]"
- find . -name '*.H' -exec $SET_MAC_TYPE {} \;
- echo "[2/"$F1MAC_N"]"
- find . -name '*.h' -exec $SET_MAC_TYPE {} \;
- echo "[3/"$F1MAC_N"]"
- find . -name '*.c' -exec $SET_MAC_TYPE {} \;
- echo "[4/"$F1MAC_N"]"
- find . -name '*.cxx' -exec $SET_MAC_TYPE {} \;
- echo "[5/"$F1MAC_N"]"
- find . -name '*.fl' -exec $SET_MAC_TYPE {} \;
- echo "[6/"$F1MAC_N"]"
- find . -name 'make*' -exec $SET_MAC_TYPE {} \;
- echo "[7/"$F1MAC_N"]"
- find . -name 'Make*' -exec $SET_MAC_TYPE {} \;
- echo "done."
-
KNOWN MacFLTK BUGS
@@ -80,9 +37,7 @@ KNOWN MacFLTK BUGS
- Line styles are not fully implemented.
- Sub-sub-subwindow not tested.
- - Image transparency is implemented as "screen-door" only
- The 'shiny' demo needs work (flush/aglFlush).
- - OpenGL subwindow during window resize changes position
TEST SUITE STATUS
diff --git a/README.win32 b/README.win32
index 04f083d..f4039f7 100644
--- a/README.win32
+++ b/README.win32
@@ -1,5 +1,6 @@
-README.win32 - 10/03/2002 - Building FLTK under Windows
--------------------------------------------------------
+README.win32 - Building FLTK under Windows
+------------------------------------------
+Last Update: May 2007 for release 1.1.8
INTRODUCTION
@@ -12,18 +13,26 @@ INTRODUCTION
FLTK currently supports the following development
environments on the Windows platform:
- - Microsoft Visual C++ 6.0 using the supplied workspace
- and project files. Be sure to get your service packs!
+ - Microsoft Visual C++ 6.0, VC2005 and VC.NET using the
+ supplied workspace and project files. Be sure to get
+ your service packs!
- - Borland C++ Builder 5 using the supplied IDE file.
+ - Borland C++ Builder 5 and 6 using the supplied IDE
+ files. These files are not as actively maintained as
+ the VC and GNU versions, so may not work for you.
+
+ - Watcom. There is a partial solution for the Watcom
+ toolchain. It is no longer actively maintained.
- GNU toolsets (Cygwin or MinGW) hosted on Windows
9x/2000/NT/XP.
- This document gives a brief overview of compiling and using
- FLTK with the Cygwin and MinGW compiler toolkits. Both
- toolkits provide a build environment based around the GNU
- C/C++ compiler.
+ This remainder of this document gives a brief overview of
+ compiling and using FLTK with the Cygwin and MinGW compiler
+ toolkits. Both toolkits provide a build environment based
+ around the GNU C/C++ compiler. Further information is
+ available from the FLTK website at http://www.fltk.org, such
+ as this Howto note: http://www.fltk.org/articles.php?L598
The Cygwin build environment supplies a library (the Cygwin
DLL) that is primarily intended to provide a number of
@@ -33,7 +42,7 @@ INTRODUCTION
the "BASH" Bourne-compatible shell and all of the standard
Unix file utilities (ls, cat, grep, etc.).
- Cygwin is developed by Cygnus (now part of RedHat, Inc).
+ Cygwin is developed by Cygnus (now part of RedHat, Inc).
Although provided for free download under the GPL,
distributing programs that require the Cygwin DLL under a
license other than the GPL requires a commercial license for
@@ -43,21 +52,23 @@ INTRODUCTION
The MinGW distribution (Minimalist GNU for Windows) provides
a similar toolset but geared solely towards native Windows
- development without the Unix-like POSIX library. The lack
- of any libraries under the GPL or any other restrictive
- license means that programs built with the MinGW environment
- may always be released under any license freely.
+ development without the Unix-like POSIX library. The lack of
+ any libraries under the GPL or any other restrictive license
+ means that programs built with the MinGW environment may
+ always be released under any license freely. MinGW also
+ supplies a Unix-like build environment for Windows,
+ including MSYS (a Bourne-compatible shell) and the standard
+ Unix file utilities (ls, cat, grep, etc.)
If you are not familiar with these GNU-like toolkits please
- refer to the links section later in this section. In
- particular, check out their license conditions carefully
- before use.
+ refer to the links section later in this note. In particular,
+ check out their license conditions carefully before use.
THE TOOLS
There are currently three main configurations supported by
- FLTK:
+ FLTK with the GNU tools:
1. Cygwin: Built using the Cygwin toolset and using the
Unix-like POSIX compatibility layer provided by the
@@ -66,46 +77,35 @@ THE TOOLS
2. Cygwin using the "-mno-cygwin" option: Built using
the Cygwin toolset but not using the Cygwin DLL.
- 3. MinGW: Mainly based upon the MinGW utilities,
- compiler and tools but currently needs additional
- tools from the Cygwin distribution (make.exe and
- sh.exe).
+ 3. MinGW: Built using the MinGW utilities, compiler and
+ tools. This is, in many aspects, analogous to the
+ Cygwin "-mno-cygwin" option.
RECOMMENDED BUILD ENVIRONMENTS
Our recommendation is to:
- 1. Get the current Cygwin toolset (June 20, 2000 or
- later).
-
- Can produce executables that do or do not rely on the
- Cygwin DLL (check licensing)-- your choice. No
- supplementary MinGW files are required.
+ 1. Get the current Cygwin toolset.
- 2. Get the latest full MinGW toolset and add Cygwin
- "make.exe" and "sh.exe" to it.
+ This can either produce executables that do or do not
+ rely on the Cygwin DLL (check licensing) at your
+ choice.
- Will only normal Windows native executables without
- any Unix or POSIX compatibility.
+ 2. Get the latest MinGW toolset. It is recommended that
+ you also get the MSYS shell and the msysDTK developer
+ toolset.
- 3. Get a pre-built combined toolset that has been tested
- with FLTK.
+ This will only produce normal Windows native
+ executables without any Unix or POSIX compatibility
+ layer.
- Carl Thompson has provided a set based upon the B20.1
- Cygwin release and ~Feb 2000 version of Mingw which
- has been successfully used for FLTK.
-
- This will provide several Cygwin utilities and the
- MinGW compiler. Compilation will produce executables
- not reliant on the Cygwin DLL and so are freely
- redistributable under any license you choose.
See the links section below for more information.
- All three options can provide windows-native executables and
- 1 can provide a Unix-like POSIX portability layer that is
- reliant on a GPLed library.
+ Either option can generate windows-native executables and
+ option 1 can provide a Unix-like POSIX portability layer that
+ is reliant on a GPLed library.
See the later sections for detailed information about using
one of these configurations.
@@ -116,7 +116,7 @@ LINKS
1. Main Cygwin homepage:
- http://sourceware.cygnus.com/cygwin/
+ http://www.cygwin.com/
2. Main Mingw homepage:
@@ -126,23 +126,8 @@ LINKS
a lot of useful Mingw-native development
documentation.
- 3. Mumit Khan's homepage (chief maintainer and driving
- force behing MinGW):
-
- http://www.xraylith.wisc.edu/~khan/software/gnu-win32/index.html
-
- This page provides descriptions of Cygwin, Mingw and
- several other similar packages. This information can
- sometimes lag the current release however.
-
- In particular the insights and recommendations for
- using Cygwin for MinGW compilation are very useful:
-
- http://www.xraylith.wisc.edu/~khan/software/gnu-win32/mno-cygwin-howto.txt
- (Some of this information may be outdated and inaccurate!)
-
- 4. Check out the FLTK newsgroups at the FLTK homepage:
+ 3. Check out the FLTK newsgroups at the FLTK homepage:
http://www.fltk.org/
@@ -150,24 +135,28 @@ LINKS
to check back through previous problems with this
sort of configuration before posting new questions.
- 5. Carl Thompson (member of the core team responsible
+ 4. Carl Thompson (member of the core team responsible
for FLTK):
http://www.carlthompson.net/
- Currently a pre-bundled development toolset may be
- found at:
+ A pre-bundled development toolset tailored for use
+ with an earlier version of FLTK may be found at:
http://www.carlthompson.net/cygwin/
- 6. GNU Compiler Collection (GCC) compiler homepage:
+ However, this has not been actively maintained since
+ the Cygwin and MinGW offerings are now more complete
+ these days.
+
+ 5. GNU Compiler Collection (GCC) compiler homepage:
http://gcc.gnu.org/
- 7. OpenGL page - for OpenGL and GLUT libs
+ 6. OpenGL page - for OpenGL and GLUT libs
http://www.opengl.org/
-
+
BUILDING FLTK WITH CYGWIN OR MINGW
@@ -186,51 +175,32 @@ WHY DOES A CONSOLE WINDOW APPEAR WHEN I RUN MY PROGRAM
Keep in mind that a windows application cannot send output
to stdout, even if you run it from an existing console
application.
+ (Note: A special case of this exists if running a MinGW
+ application from the command line of an MSYS shell, when an
+ application is able to write to stdout, even if compiled with
+ "-mwindows".)
HOW DO I GET OPENGL TO WORK?
- The CygWin build automatically supports OpenGL.
-
- The MingW build disables OpenGL by default, since the
- standard MingW distribution lacks the OpenGL header files.
+ Both builds should automatically support OpenGL.
The configuration file config.h has a number of settings
which control compile-time compilation. One such setting is
- "HAVE_GL" . By default this is set to 0 to disable Open GL
- operation. Changing the line in config.h to
+ "HAVE_GL". This may be set to 0 to disable Open GL operation.
+ Changing the line in config.h to
#define HAVE_GL 1
will change this to compile and link in OpenGL.
- In order for it to work you will need a few OpenGL headers
- for both Cygwin and MinGW. These are not part of the
- official distributions of Cygwin or MinGW, so they need to
- be added. The following page provides a ZIP file containing
- the OpenGL headers:
- http://www.carlthompson.net/fltk/
- These should be put in a "GL" subdirectory somewhere in your
- compiler's search path.
- You will also need an OpenGL library and an additional set
- of GLUT libraries.
- The OpenGL files are most likely already part of your
- operating system, and the GLUT libraries are in current
- versions of MinGW and Cygwin or may be found at:
- http://www.opengl.org/
- Do a search for 'GLUT windows' and the first couple of
- results will take you to the latest GLUT and OpenGL libs for
- Windows.
- The binaries (DLLs normally) need to be put somewhere on the
- system PATH. Consult the install documentation on the site
- for info.
- Many programs use OpenGL and GLUT so you may already have
- them on your system.
+
+
diff --git a/bc5/config.h b/bc5/config.h
new file mode 100644
index 0000000..979b006
--- /dev/null
+++ b/bc5/config.h
@@ -0,0 +1,153 @@
+/*
+ * "$Id: config.h 4052 2005-02-24 21:55:12Z mike $"
+ *
+ * Configuration file for the Fast Light Tool Kit (FLTK).
+ *
+ * Copyright 1998-2001 by Bill Spitzak and others.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ * Please report all bugs and problems to "FLTK-bugs@easysw.com".
+ */
+
+/*
+ * BORDER_WIDTH:
+ *
+ * Thickness of FL_UP_BOX and FL_DOWN_BOX. Current 1,2, and 3 are
+ * supported.
+ *
+ * 3 is the historic FLTK look.
+ * 2 is the default and looks like Microsoft Windows, KDE, and Qt.
+ * 1 is a plausible future evolution...
+ *
+ * Note that this may be simulated at runtime by redefining the boxtypes
+ * using Fl::set_boxtype().
+ */
+
+#define BORDER_WIDTH 2
+
+/*
+ * HAVE_GL:
+ *
+ * Do you have OpenGL? Set this to 0 if you don't have or plan to use
+ * OpenGL, and FLTK will be smaller.
+ */
+
+#define HAVE_GL 1
+
+/*
+ * USE_COLORMAP:
+ *
+ * Setting this to zero will save a good deal of code (especially for
+ * fl_draw_image), but FLTK will only work on TrueColor visuals.
+ */
+
+#define USE_COLORMAP 1
+
+/*
+ * HAVE_XDBE:
+ *
+ * Do we have the X double-buffer extension?
+ */
+
+#define HAVE_XDBE 0
+
+/*
+ * USE_XDBE:
+ *
+ * Actually try to use the double-buffer extension? Set this to zero
+ * disable use of XDBE without breaking the list_visuals program.
+ */
+
+#define USE_XDBE HAVE_XDBE
+
+/*
+ * HAVE_OVERLAY:
+ *
+ * Use the X overlay extension? FLTK will try to use an overlay
+ * visual for Fl_Overlay_Window, the Gl_Window overlay, and for the
+ * menus. Setting this to zero will remove a substantial amount of
+ * code from FLTK. Overlays have only been tested on SGI servers!
+ */
+
+#define HAVE_OVERLAY 0
+
+/*
+ * HAVE_GL_OVERLAY:
+ *
+ * It is possible your GL has an overlay even if X does not. If so,
+ * set this to 1.
+ */
+
+#define HAVE_GL_OVERLAY HAVE_OVERLAY
+
+/*
+ * WORDS_BIGENDIAN:
+ *
+ * Byte order of your machine: 1 = big-endian, 0 = little-endian.
+ */
+
+#define WORDS_BIGENDIAN 0
+
+/*
+ * U16, U32, U64:
+ *
+ * Types used by fl_draw_image. One of U32 or U64 must be defined.
+ * U16 is optional but FLTK will work better with it!
+ */
+
+#define U16 unsigned short
+#define U32 unsigned
+/* #undef U64 */
+
+/*
+ * HAVE_DIRENT_H, HAVE_SYS_NDIR_H, HAVE_SYS_DIR_H, HAVE_NDIR_H, HAVE_SCANDIR:
+ *
+ * Where is <dirent.h> (used only by fl_file_chooser and scandir).
+ */
+
+#define HAVE_DIRENT_H 1
+#define HAVE_SYS_NDIR_H 0
+#define HAVE_SYS_DIR_H 0
+#define HAVE_NDIR_H 0
+#define HAVE_SCANDIR 0
+
+/*
+ * possibly missing sprintf-style functions:
+ */
+
+#define HAVE_VSNPRINTF 0
+#define HAVE_SNPRINTF 0
+
+/*
+ * HAVE_SYS_SELECT_H:
+ *
+ * Whether or not select() call has its own header file.
+ */
+
+#define HAVE_SYS_SELECT_H 0
+
+/*
+ * HAVE_POLL:
+ *
+ * Use poll() if we don't have select().
+ */
+
+#define HAVE_POLL 0
+
+/*
+ * End of "$Id: config.h 4052 2005-02-24 21:55:12Z mike $".
+ */
diff --git a/bc5/fltk.ide b/bc5/fltk.ide
new file mode 100644
index 0000000..16ece51
--- /dev/null
+++ b/bc5/fltk.ide
Binary files differ
diff --git a/bc5/opengl32.lib b/bc5/opengl32.lib
new file mode 100644
index 0000000..b427a64
--- /dev/null
+++ b/bc5/opengl32.lib
Binary files differ
diff --git a/configh.in b/configh.in
index 6211cb6..0f4de9e 100644
--- a/configh.in
+++ b/configh.in
@@ -1,10 +1,10 @@
/*
- * "$Id: configh.in 4702 2005-12-14 00:39:55Z mike $"
+ * "$Id: configh.in 5678 2007-02-08 20:14:30Z mike $"
*
* Configuration file for the Fast Light Tool Kit (FLTK).
* @configure_input@
*
- * Copyright 1998-2005 by Bill Spitzak and others.
+ * Copyright 1998-2007 by Bill Spitzak and others.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -68,6 +68,14 @@
#undef HAVE_GL_GLU_H
/*
+ * HAVE_GLXGETPROCADDRESSARB:
+ *
+ * Do you have the OpenGL glXGetProcAddressARB() function?
+ */
+
+#undef HAVE_GLXGETPROCADDRESSARB
+
+/*
* USE_COLORMAP:
*
* Setting this to zero will save a good deal of code (especially for
@@ -280,5 +288,12 @@
#endif /* !HAVE_STRTOLL */
/*
- * End of "$Id: configh.in 4702 2005-12-14 00:39:55Z mike $".
+ * Do we have the dlsym() function and header?
+ */
+
+#undef HAVE_DLFCN_H
+#undef HAVE_DLSYM
+
+/*
+ * End of "$Id: configh.in 5678 2007-02-08 20:14:30Z mike $".
*/
diff --git a/configure b/configure
index 80c4ded..9e6a1e6 100755
--- a/configure
+++ b/configure
@@ -309,7 +309,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS FL_MAJOR_VERSION FL_MINOR_VERSION FL_PATCH_VERSION FL_API_VERSION OPTIM FLLIBNAME GLDEMOS GLLIBNAME IMGLIBNAME LIBEXT LIBNAME LINKFLTK LINKFLTKFORMS LINKFLTKGL LINKFLTKIMG DSOCOMMAND DSOLINK DSONAME FLDSONAME GLDSONAME IMGDSONAME SHAREDSUFFIX LINKSHARED FLUID CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX NROFF GROFF HTMLDOC RANLIB ac_ct_RANLIB AR LIBCOMMAND CPP EGREP LARGEFILE AUDIOLIBS IMAGELIBS JPEG JPEGINC PNG PNGINC ZLIB ZLIBINC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS FTCONFIG GLLIB HLINKS POSTBUILD THREADS INSTALL_DESKTOP UNINSTALL_DESKTOP CAT1EXT CAT3EXT CAT6EXT MAKEDEPEND LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS FL_MAJOR_VERSION FL_MINOR_VERSION FL_PATCH_VERSION FL_API_VERSION ARCHFLAGS OPTIM FLLIBNAME GLDEMOS GLLIBNAME IMGLIBNAME LIBEXT LIBNAME LINKFLTK LINKFLTKFORMS LINKFLTKGL LINKFLTKIMG DSOCOMMAND DSOFLAGS DSOLINK DSONAME FLDSONAME GLDSONAME IMGDSONAME SHAREDSUFFIX LINKSHARED FLUID CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA NROFF GROFF HTMLDOC RANLIB ac_ct_RANLIB AR LIBCOMMAND CPP EGREP LARGEFILE AUDIOLIBS IMAGELIBS JPEG JPEGINC PNG PNGINC ZLIB ZLIBINC PTHREAD_FLAGS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS FTCONFIG XPROP GLLIB HLINKS POSTBUILD THREADS INSTALL_DESKTOP UNINSTALL_DESKTOP CAT1EXT CAT3EXT CAT6EXT MAKEDEPEND LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -870,6 +870,8 @@ Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-optim="flags" use custom optimization flags
+ --with-archflags="flags"
+ use custom architecture flags
--with-links make header links for common misspellings
--with-x use the X Window System
@@ -1325,7 +1327,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
FL_MAJOR_VERSION=1
FL_MINOR_VERSION=1
-FL_PATCH_VERSION=7
+FL_PATCH_VERSION=8
FL_API_VERSION=${FL_MAJOR_VERSION}.${FL_MINOR_VERSION}
@@ -1343,13 +1345,17 @@ if test "x$uname" = x; then
uname="CYGWIN"
fi
+ARCHFLAGS="${ARCHFLAGS:=}"
CFLAGS="${CFLAGS:=}"
CPPFLAGS="${CPPFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
+DSOFLAGS="${DSOFLAGS:=}"
+LDFLAGS="${LDFLAGS:=}"
OPTIM="${OPTIM:=}"
+
case $uname in
CYGWIN* | MINGW*)
# Handle Cygwin option *first*, before all other tests.
@@ -1359,10 +1365,14 @@ if test "${enable_cygwin+set}" = set; then
fi;
if test x$enable_cygwin != xyes; then
+ # NOTE: We can't use ARCHFLAGS for this, since it does not work
+ # with some of the function tests - Cygwin uses a
+ # different C library...
CFLAGS="$CFLAGS -mno-cygwin"
CPPFLAGS="$CPPFLAGS -mno-cygwin"
CXXFLAGS="$CXXFLAGS -mno-cygwin"
LDFLAGS="$LDFLAGS -mno-cygwin"
+ DSOFLAGS="$DSOFLAGS -mno-cygwin"
fi
;;
esac
@@ -1423,7 +1433,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.$FL_API_VERSION.dylib"
GLDSONAME="libfltk_gl.$FL_API_VERSION.dylib"
IMGDSONAME="libfltk_images.$FL_API_VERSION.dylib"
- DSOCOMMAND="\$(CC) $DSOFLAGS -dynamiclib -lc -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -dynamiclib -lc -o"
;;
SunOS* | UNIX_S*)
@@ -1431,7 +1441,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -h \$@ \$(LDLIBS) -G $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -h \$@ \$(LDLIBS) -G $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib"; then
DSOLINK="-R$libdir"
fi
@@ -1441,7 +1451,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.sl.$FL_API_VERSION"
GLDSONAME="libfltk_gl.sl.$FL_API_VERSION"
IMGDSONAME="libfltk_images.sl.$FL_API_VERSION"
- DSOCOMMAND="ld -b -z +h \$@ $DEBUGFLAG -o"
+ DSOCOMMAND="ld \$(DSOFLAGS) -b -z +h \$@ $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib"; then
DSOLINK="-Wl,-rpath,$libdir"
fi
@@ -1451,7 +1461,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -Wl,-soname,\$@,-set_version,sgi1.1 \$(LDLIBS) -shared $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@,-set_version,sgi1.1 \$(LDLIBS) -shared $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib32" -a "x$libdir" != "x/usr/lib64"; then
DSOLINK="-Wl,-rpath,$libdir"
fi
@@ -1461,7 +1471,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib32"; then
DSOLINK="-Wl,-rpath,$libdir"
fi
@@ -1471,7 +1481,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib"; then
DSOLINK="-Wl,-rpath,$libdir"
fi
@@ -1481,7 +1491,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms_s.a"
GLDSONAME="libfltk_gl_s.a"
IMGDSONAME="libfltk_images_s.a"
- DSOCOMMAND="\$(CXX) -Wl,-bexpall,-bM:SRE,-bnoentry -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-bexpall,-bM:SRE,-bnoentry -o"
SHAREDSUFFIX="_s"
;;
CYGWIN* | MINGW*)
@@ -1497,7 +1507,15 @@ if test x$enable_shared = xyes; then
GLDSONAME="cygfltknox_gl-$FL_API_VERSION.dll"
IMGDSONAME="cygfltknox_images-$FL_API_VERSION.dll"
fi
- DSOCOMMAND="\$(CXX) -shared -Wl,--whole-archive -Wl,--export-all-symbols -Wl,--enable-auto-import -o \$@"
+ #-----------------------------------------------------------
+ # -Wl,--enable-runtime-pseudo-reloc: See str 1585
+ # appears to be necessary for older binutils versions < 2.16
+ #-----------------------------------------------------------
+ LDFLAGS="$LDFLAGS -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -shared \
+ -Wl,--whole-archive -Wl,--export-all-symbols \
+ -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-import \
+ -Wl,--enable-auto-image-base -o \$@"
;;
*)
{ echo "$as_me:$LINENO: WARNING: Shared libraries may not be supported. Trying -shared option with compiler." >&5
@@ -1506,7 +1524,7 @@ echo "$as_me: WARNING: Shared libraries may not be supported. Trying -shared op
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
;;
esac
@@ -1534,6 +1552,7 @@ fi
+
# Check whether --enable-threads or --disable-threads was given.
if test "${enable_threads+set}" = set; then
enableval="$enable_threads"
@@ -1547,6 +1566,13 @@ if test "${with_optim+set}" = set; then
fi;
+
+# Check whether --with-archflags or --without-archflags was given.
+if test "${with_archflags+set}" = set; then
+ withval="$with_archflags"
+ ARCHFLAGS="$withval"
+fi;
+
case $uname in
Darwin*)
# Check whether --enable-quartz or --disable-quartz was given.
@@ -2857,6 +2883,119 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f $ac_dir/shtool; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+case $uname in
+ OSF1*)
+ INSTALL="`pwd`/install-sh -c"
+ ;;
+esac
+if test "$INSTALL" = "$ac_install_sh"; then
+ # Use full path to install-sh script...
+ INSTALL="`pwd`/install-sh -c"
+fi
# Extract the first word of "nroff", so it can be a program name with args.
set dummy nroff; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -2897,6 +3036,7 @@ echo "${ECHO_T}no" >&6
fi
if test "x$NROFF" = "x:"; then
+ # Try groff instead of nroff...
# Extract the first word of "groff", so it can be a program name with args.
set dummy groff; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -7158,7 +7298,7 @@ fi
LARGEFILE=""
-if test x$enable_largefile != xno; then
+if test x$enable_largefile = xyes; then
LARGEFILE="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
if test $ac_cv_sys_large_files = 1; then
@@ -7334,6 +7474,281 @@ _ACEOF
fi
+echo "$as_me:$LINENO: checking for library containing dlsym" >&5
+echo $ECHO_N "checking for library containing dlsym... $ECHO_C" >&6
+if test "${ac_cv_search_dlsym+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_dlsym=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlsym ();
+int
+main ()
+{
+dlsym ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_dlsym="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_dlsym" = no; then
+ for ac_lib in dl; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlsym ();
+int
+main ()
+{
+dlsym ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_dlsym="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_dlsym" >&5
+echo "${ECHO_T}$ac_cv_search_dlsym" >&6
+if test "$ac_cv_search_dlsym" != no; then
+ test "$ac_cv_search_dlsym" = "none required" || LIBS="$ac_cv_search_dlsym $LIBS"
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_DLSYM 1
+_ACEOF
+
+fi
+
+if test "${ac_cv_header_dlfcn_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for dlfcn.h" >&5
+echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6
+if test "${ac_cv_header_dlfcn_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5
+echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking dlfcn.h usability" >&5
+echo $ECHO_N "checking dlfcn.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <dlfcn.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking dlfcn.h presence" >&5
+echo $ECHO_N "checking dlfcn.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <dlfcn.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: dlfcn.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: dlfcn.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: dlfcn.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dlfcn.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: dlfcn.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dlfcn.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: dlfcn.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: dlfcn.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for dlfcn.h" >&5
+echo $ECHO_N "checking for dlfcn.h... $ECHO_C" >&6
+if test "${ac_cv_header_dlfcn_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_dlfcn_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5
+echo "${ECHO_T}$ac_cv_header_dlfcn_h" >&6
+
+fi
+if test $ac_cv_header_dlfcn_h = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+
+
AUDIOLIBS=""
case $uname in
@@ -7955,6 +8370,7 @@ LIBS="$SAVELIBS"
have_pthread=no
+PTHREAD_FLAGS=""
if test "x$enable_threads" = xyes; then
if test "${ac_cv_header_pthread_h+set}" = set; then
@@ -8103,88 +8519,13 @@ fi
-echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
-echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6
-if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char pthread_create ();
-int
-main ()
-{
-pthread_create ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_pthread_pthread_create=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_pthread_pthread_create=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
-echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6
-if test $ac_cv_lib_pthread_pthread_create = yes; then
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPTHREAD 1
-_ACEOF
-
- LIBS="-lpthread $LIBS"
-
-fi
-
-
- if test "x$ac_cv_lib_pthread_pthread_create" = xyes -a x$ac_cv_header_pthread_h = xyes; then
- have_pthread=yes
- else
- echo "$as_me:$LINENO: checking for pthread_create using -pthread" >&5
-echo $ECHO_N "checking for pthread_create using -pthread... $ECHO_C" >&6
- SAVELIBS="$LIBS"
- LIBS="-pthread $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
+ if test x$ac_cv_header_pthread_h = xyes; then
+ for flag in -lpthreads -lpthread -pthread; do
+ echo "$as_me:$LINENO: checking for pthread_create using $flag" >&5
+echo $ECHO_N "checking for pthread_create using $flag... $ECHO_C" >&6
+ SAVELIBS="$LIBS"
+ LIBS="$flag $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8221,8 +8562,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- LIBS="-pthread $SAVELIBS"
- have_pthread=yes
+ have_pthread=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -8231,11 +8571,29 @@ LIBS="$SAVELIBS"
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:$LINENO: result: $have_pthread" >&5
+ echo "$as_me:$LINENO: result: $have_pthread" >&5
echo "${ECHO_T}$have_pthread" >&6
+
+ if test $have_pthread = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_PTHREAD 1
+_ACEOF
+
+ PTHREAD_FLAGS="-D_THREAD_SAFE -D_REENTRANT"
+
+ # Solaris requires -D_POSIX_PTHREAD_SEMANTICS to
+ # be POSIX-compliant... :(
+ if test $uname = SunOS; then
+ PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS"
+ fi
+ break
+ fi
+ done
fi
fi
+
+
HLINKS=
POSTBUILD=:
THREADS=
@@ -8252,11 +8610,21 @@ UNINSTALL_DESKTOP=""
case $uname in
CYGWIN* | MINGW*)
- CFLAGS="-mwindows -DWIN32 $CFLAGS"
+ # Recent versions of Cygwin are seriously broken and the size
+ # checks don't work because the shell puts out \r\n instead of
+ # \n. Here we just force U32 to be defined to "unsigned"...
+ cat >>confdefs.h <<\_ACEOF
+#define U32 unsigned
+_ACEOF
+
+ CFLAGS="-mwindows -DWIN32 $CFLAGS"
CXXFLAGS="-mwindows -DWIN32 $CXXFLAGS"
LDFLAGS="-mwindows $LDFLAGS"
+ DSOFLAGS="-mwindows $DSOFLAGS"
LIBS="$LIBS -lole32 -luuid -lcomctl32 -lwsock32"
- OPTIM="$OPTIM"
+ if test "x$with_optim" = x; then
+ with_optim="-O3"
+ fi
if test x$enable_gl != xno; then
if test "${ac_cv_header_GL_gl_h+set}" = set; then
@@ -10031,6 +10399,7 @@ echo "$as_me: WARNING: Ignoring libraries \"$X_PRE_LIBS\" requested by configure
CFLAGS="$CFLAGS $X_CFLAGS"
CXXFLAGS="$CXXFLAGS $X_CFLAGS"
LDFLAGS="$X_LIBS $LDFLAGS"
+ DSOFLAGS="$X_LIBS $DSOFLAGS"
if test "x$x_includes" != x; then
ac_cpp="$ac_cpp -I$x_includes"
@@ -10309,8 +10678,7 @@ if test "${ac_cv_lib_GL_glXMakeCurrent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lGL \
- -lm $LIBS"
+LIBS="-lGL -lm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -10374,15 +10742,13 @@ if test $ac_cv_lib_GL_glXMakeCurrent = yes; then
_ACEOF
GLLIB="-lGL"
else
- \
- echo "$as_me:$LINENO: checking for glXMakeCurrent in -lMesaGL" >&5
+ echo "$as_me:$LINENO: checking for glXMakeCurrent in -lMesaGL" >&5
echo $ECHO_N "checking for glXMakeCurrent in -lMesaGL... $ECHO_C" >&6
if test "${ac_cv_lib_MesaGL_glXMakeCurrent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lMesaGL \
- -lm $LIBS"
+LIBS="-lMesaGL -lm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -10449,6 +10815,77 @@ fi
fi
+ echo "$as_me:$LINENO: checking for glXGetProcAddressARB in -lGL" >&5
+echo $ECHO_N "checking for glXGetProcAddressARB in -lGL... $ECHO_C" >&6
+if test "${ac_cv_lib_GL_glXGetProcAddressARB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGL -lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char glXGetProcAddressARB ();
+int
+main ()
+{
+glXGetProcAddressARB ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_GL_glXGetProcAddressARB=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_GL_glXGetProcAddressARB=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glXGetProcAddressARB" >&5
+echo "${ECHO_T}$ac_cv_lib_GL_glXGetProcAddressARB" >&6
+if test $ac_cv_lib_GL_glXGetProcAddressARB = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_GLXGETPROCADDRESSARB 1
+_ACEOF
+
+fi
+
fi
@@ -10747,7 +11184,7 @@ echo "${ECHO_T}no" >&6
fi
- if test "x$FTCONFIG" != "x:"; then
+ if test "x$FTCONFIG" != x; then
CPPFLAGS="`$FTCONFIG --cflags` $CPPFLAGS"
CXXFLAGS="`$FTCONFIG --cflags` $CXXFLAGS"
@@ -11032,13 +11469,56 @@ fi
fi
- echo "$as_me:$LINENO: checking for X overlay visuals" >&5
+ # Extract the first word of "xprop", so it can be a program name with args.
+set dummy xprop; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XPROP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $XPROP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XPROP="$XPROP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XPROP="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+XPROP=$ac_cv_path_XPROP
+
+if test -n "$XPROP"; then
+ echo "$as_me:$LINENO: result: $XPROP" >&5
+echo "${ECHO_T}$XPROP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ echo "$as_me:$LINENO: checking for X overlay visuals" >&5
echo $ECHO_N "checking for X overlay visuals... $ECHO_C" >&6
if test "${ac_cv_have_overlay+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if xprop -root 2>/dev/null | grep -c "SERVER_OVERLAY_VISUALS" >/dev/null; then
- ac_cv_have_overlay=yes
+ if test "x$XPROP" != x; then
+ if $XPROP -root 2>/dev/null | grep -c "SERVER_OVERLAY_VISUALS" >/dev/null; then
+ ac_cv_have_overlay=yes
+ else
+ ac_cv_have_overlay=no
+ fi
else
ac_cv_have_overlay=no
fi
@@ -11090,7 +11570,7 @@ case "$uname" in
# All others
CAT1EXT=1
CAT3EXT=3
- CAT6EXT=3
+ CAT6EXT=6
;;
esac
@@ -11218,6 +11698,61 @@ fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$OLDCFLAGS"
+ # See if GCC supports -fno-strict-aliasing...
+ echo "$as_me:$LINENO: checking if GCC supports -fno-strict-aliasing" >&5
+echo $ECHO_N "checking if GCC supports -fno-strict-aliasing... $ECHO_C" >&6
+ OLDCFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fno-strict-aliasing"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ OPTIM="$OPTIM -fno-strict-aliasing"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$OLDCFLAGS"
+
# See if we are running Solaris; if so, try the -fpermissive option...
# This option is required on some versions of Solaris to work around
# bugs in the X headers up through Solaris 7.
@@ -11323,15 +11858,11 @@ echo "$as_me: WARNING: FOR BEST RESULTS BEFORE COMPILING: setenv SGI_ABI \"-n32
fi
fi
- if test "x$with_optim" = x; then
- OPTIM="$OPTIM +DAportable"
- fi
-
if test $PICFLAG = 1; then
OPTIM="+z $OPTIM"
fi
- OPTIM="$OPTIM +W336,501,736,740,749,829"
+ CXXFLAGS="$CXXFLAGS +W336,501,736,740,749,829"
;;
OSF1*)
# Running Digital/Tru64 UNIX; these options should work for the
@@ -11409,7 +11940,7 @@ fi
ac_config_headers="$ac_config_headers config.h:configh.in"
- ac_config_files="$ac_config_files makeinclude fltk.list fltk-config FL/Makefile"
+ ac_config_files="$ac_config_files makeinclude fltk.list fltk-config fltk.spec FL/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -11840,6 +12371,7 @@ Copyright (C) 2003 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
srcdir=$srcdir
+INSTALL="$INSTALL"
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF
@@ -11937,6 +12469,7 @@ do
"makeinclude" ) CONFIG_FILES="$CONFIG_FILES makeinclude" ;;
"fltk.list" ) CONFIG_FILES="$CONFIG_FILES fltk.list" ;;
"fltk-config" ) CONFIG_FILES="$CONFIG_FILES fltk-config" ;;
+ "fltk.spec" ) CONFIG_FILES="$CONFIG_FILES fltk.spec" ;;
"FL/Makefile" ) CONFIG_FILES="$CONFIG_FILES FL/Makefile" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:configh.in" ;;
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
@@ -12027,6 +12560,7 @@ s,@FL_MAJOR_VERSION@,$FL_MAJOR_VERSION,;t t
s,@FL_MINOR_VERSION@,$FL_MINOR_VERSION,;t t
s,@FL_PATCH_VERSION@,$FL_PATCH_VERSION,;t t
s,@FL_API_VERSION@,$FL_API_VERSION,;t t
+s,@ARCHFLAGS@,$ARCHFLAGS,;t t
s,@OPTIM@,$OPTIM,;t t
s,@FLLIBNAME@,$FLLIBNAME,;t t
s,@GLDEMOS@,$GLDEMOS,;t t
@@ -12039,6 +12573,7 @@ s,@LINKFLTKFORMS@,$LINKFLTKFORMS,;t t
s,@LINKFLTKGL@,$LINKFLTKGL,;t t
s,@LINKFLTKIMG@,$LINKFLTKIMG,;t t
s,@DSOCOMMAND@,$DSOCOMMAND,;t t
+s,@DSOFLAGS@,$DSOFLAGS,;t t
s,@DSOLINK@,$DSOLINK,;t t
s,@DSONAME@,$DSONAME,;t t
s,@FLDSONAME@,$FLDSONAME,;t t
@@ -12057,6 +12592,9 @@ s,@OBJEXT@,$OBJEXT,;t t
s,@CXX@,$CXX,;t t
s,@CXXFLAGS@,$CXXFLAGS,;t t
s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
s,@NROFF@,$NROFF,;t t
s,@GROFF@,$GROFF,;t t
s,@HTMLDOC@,$HTMLDOC,;t t
@@ -12075,11 +12613,13 @@ s,@PNG@,$PNG,;t t
s,@PNGINC@,$PNGINC,;t t
s,@ZLIB@,$ZLIB,;t t
s,@ZLIBINC@,$ZLIBINC,;t t
+s,@PTHREAD_FLAGS@,$PTHREAD_FLAGS,;t t
s,@X_CFLAGS@,$X_CFLAGS,;t t
s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t
s,@X_LIBS@,$X_LIBS,;t t
s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t
s,@FTCONFIG@,$FTCONFIG,;t t
+s,@XPROP@,$XPROP,;t t
s,@GLLIB@,$GLLIB,;t t
s,@HLINKS@,$HLINKS,;t t
s,@POSTBUILD@,$POSTBUILD,;t t
@@ -12253,6 +12793,10 @@ case $ac_abs_builddir in
esac
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
if test x"$ac_file" != x-; then
{ echo "$as_me:$LINENO: creating $ac_file" >&5
@@ -12314,6 +12858,7 @@ s,@builddir@,$ac_builddir,;t t
s,@abs_builddir@,$ac_abs_builddir,;t t
s,@top_builddir@,$ac_top_builddir,;t t
s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
rm -f $tmp/stdin
if test x"$ac_file" != x-; then
diff --git a/configure.in b/configure.in
index 5165f84..81b1807 100644
--- a/configure.in
+++ b/configure.in
@@ -1,11 +1,11 @@
dnl -*- sh -*-
dnl the "configure" script is made from this by running GNU "autoconf"
dnl
-dnl "$Id: configure.in 4756 2006-01-15 18:36:16Z mike $"
+dnl "$Id: configure.in 5830 2007-05-14 19:35:32Z mike $"
dnl
dnl Configuration script for the Fast Light Tool Kit (FLTK).
dnl
-dnl Copyright 1998-2006 by Bill Spitzak and others.
+dnl Copyright 1998-2007 by Bill Spitzak and others.
dnl
dnl This library is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public
@@ -27,8 +27,8 @@ dnl
dnl http://www.fltk.org/str.php
dnl
-dnl We need at least autoconf 2.13...
-AC_PREREQ(2.13)
+dnl We need at least autoconf 2.50...
+AC_PREREQ(2.50)
dnl Required file in package...
AC_INIT(src/Fl.cxx)
@@ -36,7 +36,7 @@ AC_INIT(src/Fl.cxx)
dnl FLTK library versions...
FL_MAJOR_VERSION=1
FL_MINOR_VERSION=1
-FL_PATCH_VERSION=7
+FL_PATCH_VERSION=8
FL_API_VERSION=${FL_MAJOR_VERSION}.${FL_MINOR_VERSION}
AC_SUBST(FL_MAJOR_VERSION)
@@ -56,11 +56,15 @@ if test "x$uname" = x; then
fi
dnl Don't automatically add "-g" to compiler options...
+ARCHFLAGS="${ARCHFLAGS:=}"
CFLAGS="${CFLAGS:=}"
CPPFLAGS="${CPPFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
+DSOFLAGS="${DSOFLAGS:=}"
+LDFLAGS="${LDFLAGS:=}"
OPTIM="${OPTIM:=}"
+AC_SUBST(ARCHFLAGS)
AC_SUBST(OPTIM)
dnl OS-specific pre-tests...
@@ -69,10 +73,14 @@ case $uname in
# Handle Cygwin option *first*, before all other tests.
AC_ARG_ENABLE(cygwin, [ --enable-cygwin use the CygWin libraries [default=no]])
if test x$enable_cygwin != xyes; then
+ # NOTE: We can't use ARCHFLAGS for this, since it does not work
+ # with some of the function tests - Cygwin uses a
+ # different C library...
CFLAGS="$CFLAGS -mno-cygwin"
CPPFLAGS="$CPPFLAGS -mno-cygwin"
CXXFLAGS="$CXXFLAGS -mno-cygwin"
LDFLAGS="$LDFLAGS -mno-cygwin"
+ DSOFLAGS="$DSOFLAGS -mno-cygwin"
fi
;;
esac
@@ -123,7 +131,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.$FL_API_VERSION.dylib"
GLDSONAME="libfltk_gl.$FL_API_VERSION.dylib"
IMGDSONAME="libfltk_images.$FL_API_VERSION.dylib"
- DSOCOMMAND="\$(CC) $DSOFLAGS -dynamiclib -lc -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -dynamiclib -lc -o"
;;
SunOS* | UNIX_S*)
@@ -131,7 +139,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -h \$@ \$(LDLIBS) -G $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -h \$@ \$(LDLIBS) -G $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib"; then
DSOLINK="-R$libdir"
fi
@@ -141,7 +149,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.sl.$FL_API_VERSION"
GLDSONAME="libfltk_gl.sl.$FL_API_VERSION"
IMGDSONAME="libfltk_images.sl.$FL_API_VERSION"
- DSOCOMMAND="ld -b -z +h \$@ $DEBUGFLAG -o"
+ DSOCOMMAND="ld \$(DSOFLAGS) -b -z +h \$@ $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib"; then
DSOLINK="-Wl,-rpath,$libdir"
fi
@@ -151,7 +159,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -Wl,-soname,\$@,-set_version,sgi1.1 \$(LDLIBS) -shared $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@,-set_version,sgi1.1 \$(LDLIBS) -shared $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib32" -a "x$libdir" != "x/usr/lib64"; then
DSOLINK="-Wl,-rpath,$libdir"
fi
@@ -161,7 +169,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib32"; then
DSOLINK="-Wl,-rpath,$libdir"
fi
@@ -171,7 +179,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o"
if test "x$libdir" != "x/usr/lib"; then
DSOLINK="-Wl,-rpath,$libdir"
fi
@@ -181,7 +189,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms_s.a"
GLDSONAME="libfltk_gl_s.a"
IMGDSONAME="libfltk_images_s.a"
- DSOCOMMAND="\$(CXX) -Wl,-bexpall,-bM:SRE,-bnoentry -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-bexpall,-bM:SRE,-bnoentry -o"
SHAREDSUFFIX="_s"
;;
CYGWIN* | MINGW*)
@@ -197,7 +205,15 @@ if test x$enable_shared = xyes; then
GLDSONAME="cygfltknox_gl-$FL_API_VERSION.dll"
IMGDSONAME="cygfltknox_images-$FL_API_VERSION.dll"
fi
- DSOCOMMAND="\$(CXX) -shared -Wl,--whole-archive -Wl,--export-all-symbols -Wl,--enable-auto-import -o \$@"
+ #-----------------------------------------------------------
+ # -Wl,--enable-runtime-pseudo-reloc: See str 1585
+ # appears to be necessary for older binutils versions < 2.16
+ #-----------------------------------------------------------
+ LDFLAGS="$LDFLAGS -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -shared \
+ -Wl,--whole-archive -Wl,--export-all-symbols \
+ -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-import \
+ -Wl,--enable-auto-image-base -o \$@"
;;
*)
AC_MSG_WARN(Shared libraries may not be supported. Trying -shared option with compiler.)
@@ -205,7 +221,7 @@ if test x$enable_shared = xyes; then
FLDSONAME="libfltk_forms.so.$FL_API_VERSION"
GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
- DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
+ DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
;;
esac
@@ -224,6 +240,7 @@ else
fi
AC_SUBST(DSOCOMMAND)
+AC_SUBST(DSOFLAGS)
AC_SUBST(DSOLINK)
AC_SUBST(DSONAME)
AC_SUBST(FLDSONAME)
@@ -237,6 +254,10 @@ AC_ARG_ENABLE(threads, [ --enable-threads enable multi-threading support
AC_ARG_WITH(optim, [ --with-optim="flags" use custom optimization flags])
+AC_ARG_WITH(archflags, [ --with-archflags="flags"
+ use custom architecture flags],
+ ARCHFLAGS="$withval")
+
case $uname in
Darwin*)
AC_ARG_ENABLE(quartz, [ --enable-quartz use Quartz instead of Quickdraw (default=no)])
@@ -252,9 +273,19 @@ esac
dnl Find commands...
AC_PROG_CC
AC_PROG_CXX
-dnl AC_PROG_INSTALL
+AC_PROG_INSTALL
+case $uname in
+ OSF1*)
+ INSTALL="`pwd`/install-sh -c"
+ ;;
+esac
+if test "$INSTALL" = "$ac_install_sh"; then
+ # Use full path to install-sh script...
+ INSTALL="`pwd`/install-sh -c"
+fi
AC_PATH_PROG(NROFF,nroff)
if test "x$NROFF" = "x:"; then
+ # Try groff instead of nroff...
AC_PATH_PROG(GROFF,groff)
if test "x$GROFF" = "x:"; then
NROFF="echo"
@@ -392,7 +423,7 @@ AC_SYS_LARGEFILE
dnl Define largefile options as needed...
LARGEFILE=""
-if test x$enable_largefile != xno; then
+if test x$enable_largefile = xyes; then
LARGEFILE="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
if test $ac_cv_sys_large_files = 1; then
@@ -421,6 +452,10 @@ fi
AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
+dnl Check for dlopen/dlsym...
+AC_SEARCH_LIBS(dlsym, dl, AC_DEFINE(HAVE_DLSYM))
+AC_CHECK_HEADER(dlfcn.h, AC_DEFINE(HAVE_DLFCN_H))
+
dnl Check for audio libraries...
AUDIOLIBS=""
@@ -528,27 +563,40 @@ AC_EXEEXT
dnl Check for pthreads for multi-threaded apps...
have_pthread=no
+PTHREAD_FLAGS=""
if test "x$enable_threads" = xyes; then
AC_CHECK_HEADER(pthread.h, AC_DEFINE(HAVE_PTHREAD_H))
- AC_CHECK_LIB(pthread, pthread_create)
- if test "x$ac_cv_lib_pthread_pthread_create" = xyes -a x$ac_cv_header_pthread_h = xyes; then
- have_pthread=yes
- else
- dnl *BSD uses -pthread option...
- AC_MSG_CHECKING([for pthread_create using -pthread])
- SAVELIBS="$LIBS"
- LIBS="-pthread $LIBS"
- AC_TRY_LINK([#include <pthread.h>],
- [pthread_create(0, 0, 0, 0);],
- LIBS="-pthread $SAVELIBS"
- have_pthread=yes,
- LIBS="$SAVELIBS")
- AC_MSG_RESULT([$have_pthread])
+ if test x$ac_cv_header_pthread_h = xyes; then
+ dnl Check various threading options for the platforms we support
+ for flag in -lpthreads -lpthread -pthread; do
+ AC_MSG_CHECKING([for pthread_create using $flag])
+ SAVELIBS="$LIBS"
+ LIBS="$flag $LIBS"
+ AC_TRY_LINK([#include <pthread.h>],
+ [pthread_create(0, 0, 0, 0);],
+ have_pthread=yes,
+ LIBS="$SAVELIBS")
+ AC_MSG_RESULT([$have_pthread])
+
+ if test $have_pthread = yes; then
+ AC_DEFINE(HAVE_PTHREAD)
+ PTHREAD_FLAGS="-D_THREAD_SAFE -D_REENTRANT"
+
+ # Solaris requires -D_POSIX_PTHREAD_SEMANTICS to
+ # be POSIX-compliant... :(
+ if test $uname = SunOS; then
+ PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS"
+ fi
+ break
+ fi
+ done
fi
fi
+AC_SUBST(PTHREAD_FLAGS)
+
dnl Define OS-specific stuff...
HLINKS=
POSTBUILD=:
@@ -562,11 +610,19 @@ UNINSTALL_DESKTOP=""
case $uname in
CYGWIN* | MINGW*)
dnl Cygwin environment...
+ # Recent versions of Cygwin are seriously broken and the size
+ # checks don't work because the shell puts out \r\n instead of
+ # \n. Here we just force U32 to be defined to "unsigned"...
+ AC_DEFINE(U32,unsigned)
CFLAGS="-mwindows -DWIN32 $CFLAGS"
CXXFLAGS="-mwindows -DWIN32 $CXXFLAGS"
LDFLAGS="-mwindows $LDFLAGS"
+ DSOFLAGS="-mwindows $DSOFLAGS"
LIBS="$LIBS -lole32 -luuid -lcomctl32 -lwsock32"
- OPTIM="$OPTIM"
+ if test "x$with_optim" = x; then
+ dnl Avoid -Os optimization on Cygwin/Mingw
+ with_optim="-O3"
+ fi
if test x$enable_gl != xno; then
AC_CHECK_HEADER(GL/gl.h,
@@ -651,6 +707,7 @@ case $uname in
CFLAGS="$CFLAGS $X_CFLAGS"
CXXFLAGS="$CXXFLAGS $X_CFLAGS"
LDFLAGS="$X_LIBS $LDFLAGS"
+ DSOFLAGS="$X_LIBS $DSOFLAGS"
if test "x$x_includes" != x; then
ac_cpp="$ac_cpp -I$x_includes"
@@ -662,10 +719,12 @@ case $uname in
if test x$enable_gl != xno; then
AC_SEARCH_LIBS(dlopen, dl)
AC_CHECK_HEADER(GL/gl.h,
- AC_CHECK_LIB(GL, glXMakeCurrent, AC_DEFINE(HAVE_GL) GLLIB="-lGL", \
- AC_CHECK_LIB(MesaGL,glXMakeCurrent, AC_DEFINE(HAVE_GL) GLLIB=" -lMesaGL",,\
- -lm), \
+ AC_CHECK_LIB(GL, glXMakeCurrent, AC_DEFINE(HAVE_GL) GLLIB="-lGL",
+ AC_CHECK_LIB(MesaGL,glXMakeCurrent, AC_DEFINE(HAVE_GL) GLLIB=" -lMesaGL",,
+ -lm),
-lm)
+ AC_CHECK_LIB(GL, glXGetProcAddressARB,
+ AC_DEFINE(HAVE_GLXGETPROCADDRESSARB),, -lm)
)
AC_CHECK_HEADER(GL/glu.h,
AC_DEFINE(HAVE_GL_GLU_H)
@@ -705,7 +764,7 @@ case $uname in
if test x$enable_xft = xyes; then
AC_PATH_PROG(FTCONFIG,freetype-config)
- if test "x$FTCONFIG" != "x:"; then
+ if test "x$FTCONFIG" != x; then
CPPFLAGS="`$FTCONFIG --cflags` $CPPFLAGS"
CXXFLAGS="`$FTCONFIG --cflags` $CXXFLAGS"
@@ -725,9 +784,14 @@ case $uname in
fi
dnl Check for overlay visuals...
+ AC_PATH_PROG(XPROP, xprop)
AC_CACHE_CHECK(for X overlay visuals, ac_cv_have_overlay,
- if xprop -root 2>/dev/null | grep -c "SERVER_OVERLAY_VISUALS" >/dev/null; then
- ac_cv_have_overlay=yes
+ if test "x$XPROP" != x; then
+ if $XPROP -root 2>/dev/null | grep -c "SERVER_OVERLAY_VISUALS" >/dev/null; then
+ ac_cv_have_overlay=yes
+ else
+ ac_cv_have_overlay=no
+ fi
else
ac_cv_have_overlay=no
fi)
@@ -774,7 +838,7 @@ case "$uname" in
# All others
CAT1EXT=1
CAT3EXT=3
- CAT6EXT=3
+ CAT6EXT=6
;;
esac
@@ -863,6 +927,16 @@ if test -n "$GCC"; then
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
+ # See if GCC supports -fno-strict-aliasing...
+ AC_MSG_CHECKING(if GCC supports -fno-strict-aliasing)
+ OLDCFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fno-strict-aliasing"
+ AC_TRY_COMPILE(,,
+ OPTIM="$OPTIM -fno-strict-aliasing"
+ AC_MSG_RESULT(yes),
+ AC_MSG_RESULT(no))
+ CFLAGS="$OLDCFLAGS"
+
# See if we are running Solaris; if so, try the -fpermissive option...
# This option is required on some versions of Solaris to work around
# bugs in the X headers up through Solaris 7.
@@ -922,15 +996,11 @@ else
fi
fi
- if test "x$with_optim" = x; then
- OPTIM="$OPTIM +DAportable"
- fi
-
if test $PICFLAG = 1; then
OPTIM="+z $OPTIM"
fi
- OPTIM="$OPTIM +W336,501,736,740,749,829"
+ CXXFLAGS="$CXXFLAGS +W336,501,736,740,749,829"
;;
OSF1*)
# Running Digital/Tru64 UNIX; these options should work for the
@@ -995,11 +1065,11 @@ fi
dnl Write all of the files...
AC_CONFIG_HEADER(config.h:configh.in)
-AC_OUTPUT(makeinclude fltk.list fltk-config FL/Makefile)
+AC_OUTPUT(makeinclude fltk.list fltk-config fltk.spec FL/Makefile)
dnl Make sure the fltk-config script is executable...
chmod +x fltk-config
dnl
-dnl End of "$Id: configure.in 4756 2006-01-15 18:36:16Z mike $".
+dnl End of "$Id: configure.in 5830 2007-05-14 19:35:32Z mike $".
dnl
diff --git a/documentation/Fl.html b/documentation/Fl.html
index a66e3fe..f7f64e8 100644
--- a/documentation/Fl.html
+++ b/documentation/Fl.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -64,11 +67,12 @@ state information and global methods for the current application.</P>
<LI><A HREF="#Fl.event_clicks">event_clicks</A></LI>
<LI><A HREF="#Fl.event_ctrl">event_ctrl</A></LI>
<LI><A HREF="#Fl.event_dx">event_dx</A></LI>
- <LI><A HREF="#Fl.event_dy">event_dx</A></LI>
+ <LI><A HREF="#Fl.event_dy">event_dy</A></LI>
<LI><A HREF="#Fl.event_inside">event_inside</A></LI>
<LI><A HREF="#Fl.event_is_click">event_is_click</A></LI>
<LI><A HREF="#Fl.event_key">event_key</A></LI>
<LI><A HREF="#Fl.event_length">event_length</A></LI>
+ <LI><A HREF="#Fl.event_original_key">event_original_key</A></LI>
<LI><A HREF="#Fl.event_shift">event_shift</A></LI>
<LI><A HREF="#Fl.event_state">event_state</A></LI>
<LI><A HREF="#Fl.event_text">event_text</A></LI>
@@ -117,6 +121,7 @@ state information and global methods for the current application.</P>
<LI><A HREF="#Fl.scheme">scheme</A></LI>
<LI><A HREF="#Fl.screen_count">screen_count</A></LI>
<LI><A HREF="#Fl.screen_xywh">screen_xywh</A></LI>
+ <LI><A HREF="#Fl.scrollbar_size">scrollbar_size</A></LI>
<LI><A HREF="#Fl.selection">selection</A></LI>
<LI><A HREF="#Fl.selection_owner">selection_owner</A></LI>
<LI><A HREF="#Fl.set_abort">set_abort</A></LI>
@@ -164,7 +169,7 @@ void callback(void*) {
if (!state_changed) return;
state_changed = false;
do_expensive_calculation();
- widget->redraw();
+ widget-&gt;redraw();
}
main() {
@@ -385,10 +390,26 @@ argument on the command-line. You can change the message by setting the
<H4><A NAME="Fl.awake">void awake(void *p);</A></H4>
-<P>The <TT>awake()</TT> method sends a message pointer to the
-main thread, causing any pending <TT>wait()</TT> call to
-terminate so that the main thread can retrieve the message and
-any pending redraws can be processed.
+<H4><A NAME="Fl.awake">int awake(void (*callback)(void*), void *userdata);</A></H4>
+
+<P>The <TT>awake()</TT> method sends a message pointer to the main thread,
+causing any pending <A HREF="#Fl.wait"><TT>Fl::wait()</TT></A> call to
+terminate so that the main thread can retrieve the message and any pending
+redraws can be processed.
+
+<P>Multiple calls to <TT>Fl::awake()</TT> will queue multiple pointers
+for the main thread to process, up to a system-defined (typically several
+thousand) depth. The default message handler saves the last message which
+can be accessed using the <A HREF="#Fl.thread_message">
+<TT>Fl::thread_message()</TT></A> function.
+
+<P>The second form of <TT>awake()</TT> registers a function that will be
+called by the main thread during the next message handling cycle.
+<TT>awake()</TT> will return 0 if the callback function was registered,
+and -1 if registration failed. Over a thousand awake callbacks can be
+registered simultaneously.
+
+<P>See also: <a href="advanced.html#multithreading">multithreading</a>.
<H4><A NAME="Fl.background2">void background2(uchar, uchar, uchar);</A></H4>
@@ -423,19 +444,43 @@ handle()</tt>).
<H4><A NAME="Fl.box_dh">int box_dh(Fl_Boxtype);</A></H4>
<P>Returns the height offset for the given boxtype.
+See <tt><a href="#Fl.box_dy">box_dy</a></tt>.
<H4><A NAME="Fl.box_dw">int box_dw(Fl_Boxtype);</A></H4>
<P>Returns the width offset for the given boxtype.
+See <tt><a href="#Fl.box_dy">box_dy</a></tt>.
<H4><A NAME="Fl.box_dx">int box_dx(Fl_Boxtype);</A></H4>
<P>Returns the X offset for the given boxtype.
+See <tt><a href="#Fl.box_dy">box_dy</a></tt>.
<H4><A NAME="Fl.box_dy">int box_dy(Fl_Boxtype);</A></H4>
<P>Returns the Y offset for the given boxtype.
+<P>These functions return the offset values necessary for a given
+boxtype, useful for computing the area inside a box's borders, to
+prevent overdrawing the borders.
+
+<P>For instance, in the case of a boxtype like <tt>FL_DOWN_BOX</tt>
+where the border width might be 2 pixels all around, the above
+functions would return 2, 2, 4, and 4 for <tt>box_dx</tt>,
+<tt>box_dy</tt>, <tt>box_dw</tt>, and <tt>box_dh</tt>
+respectively.
+
+<P>An example to compute the area inside a widget's box():
+<pre>
+ int X = yourwidget-&gt;x() + Fl::box_dx(yourwidget-&gt;box());
+ int Y = yourwidget-&gt;y() + Fl::box_dy(yourwidget-&gt;box());
+ int W = yourwidget-&gt;w() - Fl::box_dw(yourwidget-&gt;box());
+ int H = yourwidget-&gt;h() - Fl::box_dh(yourwidget-&gt;box());
+</pre>
+<P>These functions are mainly useful in the <tt>draw()</tt> code
+for deriving custom widgets, where one wants to avoid drawing
+over the widget's own border <tt>box()</tt>.
+
<H4><A NAME="Fl.check">int check();</A></H4>
<P>Same as <tt>Fl::wait(0)</tt>. Calling this during a big calculation
@@ -500,9 +545,14 @@ window and then calls the default widget callback.</p>
<H4><A NAME="Fl.delete_widget">void delete_widget(Fl_Widget*);</A></H4>
-<p>Schedules a widget for deletion when it is safe to do so. Use
-this method to delete a widget inside a callback function. When
-deleting groups or windows, you must only delete the group or
+<p>Schedules a widget for deletion at the next call to the event loop.
+Use this method to delete a widget inside a callback function.
+To avoid early deletion of widgets, this function
+should be called toward the end of a callback and only after any call
+to the event loop (<tt>Fl:wait()</tt>, <tt>Fl::flush()</tt>,
+<tt>fl_ask()</tt>, etc).</p>
+
+<p>When deleting groups or windows, you must only delete the group or
window widget and not the individual child widgets.</p>
<H4><A NAME="Fl.display">void display(const char*);</A></H4>
@@ -543,26 +593,33 @@ prints the error message to <TT>stderr</TT> and returns.
<H4><A NAME="Fl.event_button1">int event_button1();</A></H4>
-<P>Returns non-zero if button 1 is pressed.
+<P>Returns non-zero if button 1 is currently held down.
+For more details, see <TT><A href="#Fl.event_buttons">Fl::event_buttons()</A></TT>.
<H4><A NAME="Fl.event_button2">int event_button2();</A></H4>
-<P>Returns non-zero if button 2 is pressed.
+<P>Returns non-zero if button 2 is currently held down.
+For more details, see <TT><A href="#Fl.event_buttons">Fl::event_buttons()</A></TT>.
<H4><A NAME="Fl.event_button3">int event_button3();</A></H4>
-<P>Returns non-zero if button 3 is pressed.
+<P>Returns non-zero if button 3 is currently held down.
+For more details, see <TT><A href="#Fl.event_buttons">Fl::event_buttons()</A></TT>.
<H4><A NAME="Fl.event_button">int event_button();</A></H4>
-<P>Returns which mouse button was pressed. This returns garbage if the
+<P>Returns which mouse button caused te current event. This returns garbage if the
most recent event was not a <tt>FL_PUSH</tt> or <tt>FL_RELEASE</tt>
event.
<H4><A NAME="Fl.event_buttons">int event_buttons();</A></H4>
<P>Returns the button state bits; if non-zero, then at least one
-button is pressed.
+button is pressed. This function returns the button state at the
+time of the event. During an <tt>FL_RELEASE</tt> event, the state
+of the released button will be <tt>0</tt>. To find out, which button
+caused an <tt>FL_RELEASE<tt> event, you can use
+<tt><a href="#Fl.event_button">Fl::event_button()</a></tt> instead.
<H4><A NAME="Fl.event_clicks">int event_clicks();<BR>
void event_clicks(int i);</A></H4>
@@ -660,6 +717,14 @@ will always be a nul at this position in the text. However there may
be a nul before that if the keystroke translates to a nul character or
you paste a nul character.
+<H4><A NAME="Fl.event_original_key">int event_original_key();</A></H4>
+
+<P> If NumLock is deactivated, FLTK translates events from the
+numeric keypad into the corresponding arrow key events.
+<tt>event_key()</tt> returns the translated key code, whereas
+<tt>event_original_key()</tt> returns the keycode before
+NumLock translation.
+
<H4><A NAME="Fl.event_shift">int event_shift();</A></H4>
<P>Returns non-zero if the Shift key is pressed.
@@ -919,6 +984,8 @@ wait until all child threads have called <A
HREF="#Fl.unlock"><TT>unlock()</TT></A> before processing
additional data.
+<P>See also: <a href="advanced.html#multithreading">multithreading</a>
+
<H4><A NAME="Fl.modal">Fl_Window* modal();</A></H4>
<P>Returns the top-most <tt>modal()</tt> window currently shown.
@@ -1054,10 +1121,23 @@ with <tt>return Fl::run();</tt>.
<H4><A NAME="Fl.scheme">void scheme(const char *name);
<BR>const char *scheme();</A></H4>
-<P>Gets or sets the current widget scheme. Currently only "none"
-and "plastic" are recognized, and <TT>NULL</TT> will use the
-scheme defined in the <TT>FLTK_SCHEME</TT> environment variable
-or the <TT>scheme</TT> resource under X11.
+<P>Gets or sets the current widget scheme. <TT>NULL</TT> will use
+the scheme defined in the <TT>FLTK_SCHEME</TT> environment
+variable or the <TT>scheme</TT> resource under X11. Otherwise,
+any of the following schemes can be used:</P>
+
+<ul>
+
+ <li>"none" - This is the default look-n-feel which resembles old
+ Windows (95/98/Me/NT/2000) and old GTK/KDE</li>
+
+ <li>"plastic" - This scheme is inspired by the Aqua user interface
+ on Mac OS X</li>
+
+ <li>"gtk+" - This scheme is inspired by the Red Hat Bluecurve
+ theme</li>
+
+</ul>
<H4><A NAME="Fl.screen_count">int screen_count();</A></H4>
@@ -1074,6 +1154,15 @@ specified coordinates. The last form gets the bounding box for
the numbered screen, where <tt>n</tt> is a number from 0 to the
number of screens less 1.</P>
+<H4><A NAME="Fl.scrollbar_size">void scrollbar_size(int W);<BR>
+int scrollbar_size();</A></H4>
+
+<P>Sets or gets the default scrollbar size that is used by the
+<A HREF="Fl_Browser_.html#Fl_Browser_"><TT>Fl_Browser_</TT></A>,
+<A HREF="Fl_Help_View.html#Fl_Help_View"><TT>Fl_Help_View</TT></A>,
+<A HREF="Fl_Scroll.html#Fl_Scroll"><TT>Fl_Scroll</TT></A>, and
+<A HREF="Fl_Text_Display.html#Fl_Text_Display"><TT>Fl_Text_Display</TT></A> widgets.</P>
+
<H4><A NAME="Fl.selection">void selection(Fl_Widget &amp;owner, const char* stuff, int len);</A></H4>
<P>Changes the current selection. The block of text is
@@ -1172,6 +1261,8 @@ Fl_Widget::test_shortcut()</tt></A>.
that was sent from a child by the <A
HREF="#Fl.awake"><TT>awake()</TT></A> method.
+<P>See also: <a href="advanced.html#multithreading">multithreading</a>
+
<H4><A NAME="Fl.unlock">void unlock();</A></H4>
<P>The <TT>unlock()</TT> method releases the lock that was set
@@ -1179,6 +1270,8 @@ using the <A HREF="#Fl.lock"><TT>lock()</TT></A> method. Child
threads should call this method as soon as they are finished
accessing FLTK.
+<P>See also: <a href="advanced.html#multithreading">multithreading</a>
+
<H4><A NAME="Fl.version">double version();</A></H4>
<P>Returns the compiled-in value of the FL_VERSION constant. This
diff --git a/documentation/Fl_Adjuster.html b/documentation/Fl_Adjuster.html
index 536590a..2267f37 100644
--- a/documentation/Fl_Adjuster.html
+++ b/documentation/Fl_Adjuster.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Adjuster</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Adjuster>class Fl_Adjuster</A></H2>
<HR>
diff --git a/documentation/Fl_BMP_Image.html b/documentation/Fl_BMP_Image.html
index 06dffe2..1fee759 100644
--- a/documentation/Fl_BMP_Image.html
+++ b/documentation/Fl_BMP_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_BMP_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Bitmap.html b/documentation/Fl_Bitmap.html
index 697e2b6..15db9b9 100644
--- a/documentation/Fl_Bitmap.html
+++ b/documentation/Fl_Bitmap.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Bitmap</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Box.html b/documentation/Fl_Box.html
index e575fad..4eb58b9 100644
--- a/documentation/Fl_Box.html
+++ b/documentation/Fl_Box.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Box</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Box>class Fl_Box</A></H2>
<HR>
diff --git a/documentation/Fl_Browser.html b/documentation/Fl_Browser.html
index 8db61d9..c701c84 100644
--- a/documentation/Fl_Browser.html
+++ b/documentation/Fl_Browser.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Browser</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Browser>class Fl_Browser</A></H2>
<HR>
diff --git a/documentation/Fl_Browser_.html b/documentation/Fl_Browser_.html
index 65d3bff..99ff5b4 100644
--- a/documentation/Fl_Browser_.html
+++ b/documentation/Fl_Browser_.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Browser_</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name="Fl_Browser_">class Fl_Browser_</A></H2>
<HR>
@@ -83,6 +87,7 @@ other slow operation. </P>
</TD><TD align=left valign=top>
<UL>
<LI><A href="#Fl_Browser_.scrollbar_right">scrollbar_right</A></LI>
+<LI><A href="#Fl_Browser_.scrollbar_width">scrollbar_width</A></LI>
<LI><A href="#Fl_Browser_.select">select</A></LI>
<LI><A href="#Fl_Browser_.select_only">select_only</A></LI>
<LI><A href="#Fl_Browser_.selection">selection</A></LI>
@@ -344,6 +349,12 @@ It allows the <TT>Fl_Browser_</TT> to update its cache data as needed.
<P>This method moves the vertical scrollbar to the righthand side of the list.
+<H4><A NAME="Fl_Browser_.scrollbar_width">static void Fl_Browser_::scrollbar_width(int sw);</A><BR>
+static int Fl_Browser_::scrollbar_width() const;</H4>
+
+<P>Sets or gets the width of any scrollbars that are used.
+
+
<H4><A NAME="Fl_Browser_.select">int Fl_Browser_::select(void *p, int s=1, int docb=0)</A></H4>
<P>Sets the selection state of item <TT>p</TT> to <TT>s</TT> and
diff --git a/documentation/Fl_Button.html b/documentation/Fl_Button.html
index 533d406..824f384 100644
--- a/documentation/Fl_Button.html
+++ b/documentation/Fl_Button.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Button</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Button>class Fl_Button</A></H2>
<HR>
@@ -10,7 +14,7 @@
+----<B>Fl_Button</B>
|
+----<A href=Fl_Check_Button.html#Fl_Check_Button>Fl_Check_Button</A>, <A href=Fl_Light_Button.html#Fl_Light_Button>Fl_Light_Button</A>, <A href=Fl_Repeat_Button.html#Fl_Repeat_Button>Fl_Repeat_Button</A>,
- <A href=Fl_Return_Button.html#Fl_Return_Button>Fl_Return_Button</A>, <A href=Fl_Round_Button.html#Fl_Round_Button>Fl_Round_Button</A>
+ <A href=Fl_Return_Button.html#Fl_Return_Button>Fl_Return_Button</A>, <A href=Fl_Round_Button.html#Fl_Round_Button>Fl_Round_Button</A>, <A href=Fl_Toggle_Button.html#Fl_Toggle_Button>Fl_Toggle_Button</A>
</PRE>
</UL>
<H3>Include Files</H3>
diff --git a/documentation/Fl_Chart.html b/documentation/Fl_Chart.html
index 02ea2fe..65f16f7 100644
--- a/documentation/Fl_Chart.html
+++ b/documentation/Fl_Chart.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Chart</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Chart>class Fl_Chart</A></H2>
<HR>
diff --git a/documentation/Fl_Check_Browser.html b/documentation/Fl_Check_Browser.html
index 022600b..4de53e4 100644
--- a/documentation/Fl_Check_Browser.html
+++ b/documentation/Fl_Check_Browser.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Check_Browser</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Check_Browser>class Fl_Check_Browser</A></H2>
<HR>
diff --git a/documentation/Fl_Check_Button.html b/documentation/Fl_Check_Button.html
index 0b6a88e..2ad4a56 100644
--- a/documentation/Fl_Check_Button.html
+++ b/documentation/Fl_Check_Button.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Check_Button</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Check_Button>class Fl_Check_Button</A></H2>
<HR>
diff --git a/documentation/Fl_Choice.html b/documentation/Fl_Choice.html
index 8644e0b..c4c1676 100644
--- a/documentation/Fl_Choice.html
+++ b/documentation/Fl_Choice.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Choice</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Choice>class Fl_Choice</A></H2>
<HR>
diff --git a/documentation/Fl_Clock.html b/documentation/Fl_Clock.html
index fa5284f..80f87cb 100644
--- a/documentation/Fl_Clock.html
+++ b/documentation/Fl_Clock.html
@@ -1,11 +1,15 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Clock</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Clock>class Fl_Clock</A></H2>
<HR>
<H3>Class Hierarchy</H3>
<UL>
<PRE>
-<A href=Fl_Widget.html#Fl_Widget>Fl_Widget</A>
+<A href=Fl_Clock_Output.html#Fl_Clock_Output>Fl_Clock_Output</A>
|
+----<B>Fl_Clock</B>
</PRE>
@@ -35,23 +39,14 @@ int h, const char *label = 0)</A></H4>
Creates a new <TT>Fl_Clock</TT> widget using the given position, size,
and label string. The default boxtype is <TT>FL_NO_BOX</TT>.
<H4><A name=Fl_Clock.~Fl_Clock>virtual Fl_Clock::~Fl_Clock()</A></H4>
- The destructor <I>also deletes all the children</I>. This allows a
-whole tree to be deleted at once, without having to keep a pointer to
-all the children in the user code. A kludge has been done so the <TT>
-Fl_Clock</TT> and all of it's children can be automatic (local)
-variables, but you must declare the <TT>Fl_Clock</TT><I>first</I>, so
-that it is destroyed last.
-<H4><A name=Fl_Clock.hour>int Fl_Clock::hour() const</A></H4>
+ The destructor removes the clock.
+<H4><A name=Fl_Clock.hour>int Fl_Clock_Output::hour() const</A></H4>
Returns the current hour (0 to 23).
-<H4><A name=Fl_Clock.minute>int Fl_Clock::minute() const</A></H4>
+<H4><A name=Fl_Clock.minute>int Fl_Clock_Output::minute() const</A></H4>
Returns the current minute (0 to 59).
-<H4><A name=Fl_Clock.second>int Fl_Clock::second() const</A></H4>
+<H4><A name=Fl_Clock.second>int Fl_Clock_Output::second() const</A></H4>
Returns the current second (0 to 60, 60 = leap second).
-<H4><A name=Fl_Clock.value>void Fl_Clock::value(ulong v)
-<BR> void Fl_Clock::value(int h, int m, int s)
-<BR> ulong Fl_Clock::value(void)</A></H4>
- The first two forms of <TT>value</TT> set the displayed time to the
-given UNIX time value or specific hours, minutes, and seconds.
-<P>The third form of <TT>value</TT> returns the displayed time in
-seconds since the UNIX epoch (January 1, 1970). </P>
-</BODY></HTML>
+<H4><A name=Fl_Clock.value>ulong Fl_Clock::value(void)</A></H4>
+ Returns the displayed time in seconds since the UNIX epoch (January 1, 1970).
+</BODY>
+</HTML>
diff --git a/documentation/Fl_Clock_Output.html b/documentation/Fl_Clock_Output.html
new file mode 100644
index 0000000..0428f2f
--- /dev/null
+++ b/documentation/Fl_Clock_Output.html
@@ -0,0 +1,62 @@
+<HTML>
+<HEAD>
+ <TITLE>Fl_Clock_Output</TITLE>
+</HEAD>
+<BODY>
+<!-- NEW PAGE -->
+<H2><A name=Fl_Clock_Output>class Fl_Clock_Output</A></H2>
+<HR>
+<H3>Class Hierarchy</H3>
+<UL>
+<PRE>
+<A href=Fl_Widget.html#Fl_Widget>Fl_Widget</A>
+ |
+ +----<B>Fl_Clock_Output</B>
+ |
+ +----<A href=Fl_Clock.html#Fl_Clock>Fl_Clock</A>
+</PRE>
+</UL>
+<H3>Include Files</H3>
+<UL>
+<PRE>
+#include &lt;FL/Fl_Clock.H&gt;
+</PRE>
+</UL>
+<H3>Description</H3>
+
+<P>This widget can be used to display a program-supplied time.
+The time shown on the clock is not updated.
+To display the current time, use <TT><A href=Fl_Clock.html#Fl_Clock>Fl_Clock</A></TT>
+instead.
+
+<H3>Methods</H3>
+<UL>
+<LI><A href=#Fl_Clock_Output.Fl_Clock_Output>Fl_Clock_Output</A></LI>
+<LI><A href=#Fl_Clock_Output.~Fl_Clock_Output>~Fl_Clock_Output</A></LI>
+<LI><A href=#Fl_Clock_Output.hour>hour</A></LI>
+<LI><A href=#Fl_Clock_Output.minute>minute</A></LI>
+<LI><A href=#Fl_Clock_Output.second>second</A></LI>
+<LI><A href=#Fl_Clock_Output.value>value</A></LI>
+</UL>
+<H4><A name=Fl_Clock_Output.Fl_Clock_Output>Fl_Clock_Output::Fl_Clock_Output(int x, int y, int w,
+int h, const char *label = 0)</A></H4>
+ Creates a new <TT>Fl_Clock_Output</TT> widget using the given position, size,
+and label string. The default boxtype is <TT>FL_NO_BOX</TT>.
+<H4><A name=Fl_Clock_Output.~Fl_Clock_Output>virtual Fl_Clock_Output::~Fl_Clock_Output()</A></H4>
+ The destructor removes the clock.
+<H4><A name=Fl_Clock_Output.hour>int Fl_Clock_Output::hour() const</A></H4>
+ Returns the current hour (0 to 23).
+<H4><A name=Fl_Clock_Output.minute>int Fl_Clock_Output::minute() const</A></H4>
+ Returns the current minute (0 to 59).
+<H4><A name=Fl_Clock_Output.second>int Fl_Clock_Output::second() const</A></H4>
+ Returns the current second (0 to 60, 60 = leap second).
+<H4><A name=Fl_Clock_Output.value>void Fl_Clock_Output::value(ulong v)
+<BR> void Fl_Clock_Output::value(int h, int m, int s)
+<BR> ulong Fl_Clock_Output::value(void)</A></H4>
+ The first two forms of <TT>value</TT> set the displayed time to the
+given UNIX time value or specific hours, minutes, and seconds.
+<P>The third form of <TT>value</TT> returns the displayed time in
+seconds since the UNIX epoch (January 1, 1970). </P>
+
+</BODY>
+</HTML>
diff --git a/documentation/Fl_Color_Chooser.html b/documentation/Fl_Color_Chooser.html
index e576191..4ffd985 100644
--- a/documentation/Fl_Color_Chooser.html
+++ b/documentation/Fl_Color_Chooser.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Color_Chooser</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Color_Chooser>class Fl_Color_Chooser</A></H2>
<HR>
diff --git a/documentation/Fl_Counter.html b/documentation/Fl_Counter.html
index 6b24280..3aab348 100644
--- a/documentation/Fl_Counter.html
+++ b/documentation/Fl_Counter.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Counter</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Counter>class Fl_Counter</A></H2>
<HR>
diff --git a/documentation/Fl_Dial.html b/documentation/Fl_Dial.html
index c42df0c..0c6e425 100644
--- a/documentation/Fl_Dial.html
+++ b/documentation/Fl_Dial.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Dial</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Dial>class Fl_Dial</A></H2>
<HR>
diff --git a/documentation/Fl_Double_Window.html b/documentation/Fl_Double_Window.html
index eb3997c..68f9e56 100644
--- a/documentation/Fl_Double_Window.html
+++ b/documentation/Fl_Double_Window.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Double_Window</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Double_Window>class Fl_Double_Window</A></H2>
<HR>
diff --git a/documentation/Fl_End.html b/documentation/Fl_End.html
index 48d5595..3a7f37b 100644
--- a/documentation/Fl_End.html
+++ b/documentation/Fl_End.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_End</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_End>class Fl_End</A></H2>
<HR>
diff --git a/documentation/Fl_File_Browser.html b/documentation/Fl_File_Browser.html
index 8244790..c53352d 100644
--- a/documentation/Fl_File_Browser.html
+++ b/documentation/Fl_File_Browser.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_File_Browser</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -17,7 +20,7 @@
<H3>Include Files</H3>
<UL><PRE>
-#include &lt;FL/Fl_File_Browser.H>
+#include &lt;FL/Fl_File_Browser.H&gt;
</PRE></UL>
<H3>Description</H3>
diff --git a/documentation/Fl_File_Chooser.html b/documentation/Fl_File_Chooser.html
index 2a9945c..1b0e09d 100644
--- a/documentation/Fl_File_Chooser.html
+++ b/documentation/Fl_File_Chooser.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_File_Chooser</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -15,7 +18,7 @@
<H3>Include Files</H3>
<UL><PRE>
-#include &lt;FL/Fl_File_Chooser.H>
+#include &lt;FL/Fl_File_Chooser.H&gt;
</PRE></UL>
<H3>Description</H3>
@@ -225,7 +228,7 @@ const char *label()</A></H4>
<P>Sets or gets the title bar text for the <CODE>Fl_File_Chooser</CODE>.
-<H4><A NAME="Fl_File_Chooser.label">void ok_label(const char *l)<BR>
+<H4><A NAME="Fl_File_Chooser.ok_label">void ok_label(const char *l)<BR>
const char *ok_label()</A></H4>
<P>Sets or gets the label for the "ok" button in the
diff --git a/documentation/Fl_File_Icon.html b/documentation/Fl_File_Icon.html
index 0536161..53b7ff8 100644
--- a/documentation/Fl_File_Icon.html
+++ b/documentation/Fl_File_Icon.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_File_Icon</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -15,7 +18,7 @@
<H3>Include Files</H3>
<UL><PRE>
-#include &lt;FL/Fl_File_Icon.H>
+#include &lt;FL/Fl_File_Icon.H&gt;
</PRE></UL>
<H3>Description</H3>
diff --git a/documentation/Fl_File_Input.html b/documentation/Fl_File_Input.html
index dd790c3..52f6788 100644
--- a/documentation/Fl_File_Input.html
+++ b/documentation/Fl_File_Input.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_File_Input</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Float_Input.html b/documentation/Fl_Float_Input.html
index 42a03f1..20bbc1d 100644
--- a/documentation/Fl_Float_Input.html
+++ b/documentation/Fl_Float_Input.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Float_Input</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Float_Input>class Fl_Float_Input</A></H2>
<HR>
diff --git a/documentation/Fl_Free.html b/documentation/Fl_Free.html
index aa7046e..6fe48a4 100644
--- a/documentation/Fl_Free.html
+++ b/documentation/Fl_Free.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Free</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Free>class Fl_Free</A></H2>
<HR>
diff --git a/documentation/Fl_GIF_Image.html b/documentation/Fl_GIF_Image.html
index f67911a..dc8a5b2 100644
--- a/documentation/Fl_GIF_Image.html
+++ b/documentation/Fl_GIF_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_GIF_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Gl_Window.html b/documentation/Fl_Gl_Window.html
index 84bddd7..a32b74f 100644
--- a/documentation/Fl_Gl_Window.html
+++ b/documentation/Fl_Gl_Window.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Gl_Window</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -38,6 +41,13 @@ are very useful for drawing UI controls atop your 3D graphics. If the
overlay hardware is not provided, FLTK tries to simulate the overlay,
This works pretty well if your graphics are double buffered, but not
very well for single-buffered. </P>
+<P>Please note that the FLTK drawing and clipping functions
+will not work inside an <tt>Fl_Gl_Window</tt>. All drawing
+should be done using OpenGL calls exclusively.
+Even though <tt>Fl_Gl_Window</tt> is derived from <tt>Fl_Group</tt>,
+it is not useful to add other FLTK Widgets as children,
+unless those Widgets are modified to draw using OpenGL calls.</P>
+
<H3>Methods</H3>
<CENTER>
<TABLE width=90% summary="Fl_Gl_Window methods.">
@@ -51,6 +61,7 @@ very well for single-buffered. </P>
</TD><TD align=left valign=top>
<UL>
<LI><A href=#Fl_Gl_Window.context>context</A></LI>
+<LI><A href=#Fl_Gl_Window.context_valid>context_valid</A></LI>
<LI><A href=#Fl_Gl_Window.draw>draw</A></LI>
<LI><A href=#Fl_Gl_Window.draw_overlay>draw_overlay</A></LI>
</UL>
@@ -157,9 +168,11 @@ void mywindow::draw() {
if (!valid()) {
glViewport(0,0,w(),h());
glFrustum(...);
- glLight(...);
...other initialization...
}
+ if (!context_valid()) {
+ ...load textures, etc. ...
+ }
... draw your geometry here ...
}
</PRE></UL>
@@ -171,6 +184,14 @@ draw()</TT> returns.
<H4><A name=Fl_Gl_Window.invalidate>void Fl_Gl_Window::invalidate()</A></H4>
The <TT>invalidate()</TT> method turns off <TT>valid()</TT> and is
equivalent to calling <TT>value(0)</TT>.
+
+<H4><A name=Fl_Gl_Window.context_valid>char Fl_Gl_Window::context_valid() const
+<BR> void Fl_Gl_Window::context_valid(char i)</A></H4>
+<TT>Fl_Gl_Window::context_valid()</TT> will only be set if the
+OpenGL context is created or recreated. It differs from
+<TT>Fl_Gl_Window::valid()</TT> which is also set whenever the context
+changes size.
+
<H4><A name=Fl_Gl_Window.ortho>void Fl_Gl_Window::ortho()</A></H4>
Set the projection so 0,0 is in the lower left of the window and each
pixel is 1 unit wide/tall. If you are drawing 2D images, your <TT>
diff --git a/documentation/Fl_Group.html b/documentation/Fl_Group.html
index 21d912d..ac19bb7 100644
--- a/documentation/Fl_Group.html
+++ b/documentation/Fl_Group.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Group</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Group>class Fl_Group</A></H2>
<HR>
@@ -9,7 +13,9 @@
|
+----<B>Fl_Group</B>
|
- +----<A href=Fl_Pack.html#Fl_Pack>Fl_Pack</A>, <A href=Fl_Scroll.html#Fl_Scroll>Fl_Scroll</A>, <A href=Fl_Tabs.html#Fl_Tabs>Fl_Tabs</A>, <A href=Fl_Tile.html#Fl_Tile>Fl_Tile</A>, <A href=Fl_Window.html#Fl_Window>Fl_Window</A>
+ +----<A href=Fl_Browser_.html#Fl_Browser_>Fl_Browser_</A>, <A href=Fl_Color_Chooser.html#Fl_Color_Chooser>Fl_Color_Chooser</A>, <A href=Fl_Help_View.html#Fl_Help_View>Fl_Help_View</A>, <A href=Fl_Input_Choice.html#Fl_Input_Choice>Fl_Input_Choice</A>, <A href=Fl_Pack.html#Fl_Pack>Fl_Pack</A>,
+ <A href=Fl_Scroll.html#Fl_Scroll>Fl_Scroll</A>, <A href=Fl_Tabs.html#Fl_Tabs>Fl_Tabs</A>, <A href=Fl_Spinner.html#Fl_Spinner>Fl_Spinner</A>, <A href=Fl_Tabs.html#Fl_Tabs>Fl_Tabs</A>, <A href=Fl_Text_Display.html#Fl_Text_Display>Fl_Text_Display</A>, <A href=Fl_Tile.html#Fl_Tile>Fl_Tile</A>,
+ <A href=Fl_Window.html#Fl_Window>Fl_Window</A>, <A href=Fl_Wizard.html#Fl_Wizard>Fl_Wizard</A>
</PRE>
</UL>
<H3>Include Files</H3>
@@ -122,7 +128,7 @@ memory.</p>
<H4><A name=Fl_Group.current>static Fl_Group *Fl_Group::current()
<BR> static void Fl_Group::current(Fl_Group *w)</A></H4>
<TT>current()</TT> returns the currently active group. The Fl_Widget
- constructor automatically does <tt>current()->add(widget)</tt> if this is not null.
+ constructor automatically does <tt>current()-&gt;add(widget)</tt> if this is not null.
To prevent new widgets from being added to a group, call <TT>Fl_Group::current(0)</TT>.
<H4><A name=Fl_Group.begin>void Fl_Group::begin()</A></H4>
<TT>begin()</TT> sets the current group so you can build the widget
diff --git a/documentation/Fl_Help_Dialog.html b/documentation/Fl_Help_Dialog.html
index 6c81cac..f999fce 100644
--- a/documentation/Fl_Help_Dialog.html
+++ b/documentation/Fl_Help_Dialog.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Help_Dialog</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -9,9 +12,7 @@
<H3>Class Hierarchy</H3>
<UL><PRE>
-<A HREF="Fl_Group.html">Fl_Group</A>
- |
- +----<B>Fl_Help_Dialog</B>
+<B>Fl_Help_Dialog</B>
</PRE></UL>
<H3>Include Files</H3>
@@ -39,12 +40,19 @@ using the <CODE>Fl_Help_View</CODE> widget.
<LI><A HREF="#Fl_Help_Dialog.Fl_Help_Dialog">Fl_Help_Dialog</A>
<LI><A HREF="#Fl_Help_Dialog.~Fl_Help_Dialog">~Fl_Help_Dialog</A>
+ <LI><A HREF="#Fl_Help_Dialog.xywh">h</A>
<LI><A HREF="#Fl_Help_Dialog.hide">hide</A>
<LI><A HREF="#Fl_Help_Dialog.load">load</A>
+ <LI><A HREF="#Fl_Help_Dialog.position">position</A>
+ <LI><A HREF="#Fl_Help_Dialog.resize">resize</A>
<LI><A HREF="#Fl_Help_Dialog.show">show</A>
+ <LI><A HREF="#Fl_Help_Dialog.textsize">textsize</A>
<LI><A HREF="#Fl_Help_Dialog.topline">topline</A>
<LI><A HREF="#Fl_Help_Dialog.value">value</A>
<LI><A HREF="#Fl_Help_Dialog.visible">visible</A>
+ <LI><A HREF="#Fl_Help_Dialog.xywh">w</A>
+ <LI><A HREF="#Fl_Help_Dialog.xywh">x</A>
+ <LI><A HREF="#Fl_Help_Dialog.xywh">y</A>
</UL>
@@ -52,7 +60,7 @@ using the <CODE>Fl_Help_View</CODE> widget.
<P>The constructor creates the dialog pictured above.
-<H4><A NAME="Fl_Help_Dialog.~Fl_Help_Dialog">~Fl_Help_View()</A></H4>
+<H4><A NAME="Fl_Help_Dialog.~Fl_Help_Dialog">~Fl_Help_Dialog()</A></H4>
<P>The destructor destroys the widget and frees all memory that has been
allocated for the current file.
@@ -66,10 +74,23 @@ allocated for the current file.
<P>Loads the specified HTML file into the <CODE>Fl_Help_View</CODE> widget.
The filename can also contain a target name ("filename.html#target").
+<H4><A NAME="Fl_Help_Dialog.position">void position(int x, int y)</A></H4>
+
+<P>Set the screen position of the dialog.
+
+<H4><A NAME="Fl_Help_Dialog.resize">void resize(int xx, int yy, int ww, int hh)</A></H4>
+
+<P>Change the position and size of the dialog.
+
<H4><A NAME="Fl_Help_Dialog.show">void show()</A></H4>
<P>Shows the <code>Fl_Help_Dialog</code> window.
+<H4><A NAME="Fl_Help_Dialog.topline">void textsize(uchar s)<BR>
+uchar textsize()</A></H4>
+
+<P>Sets or gets the default text size for the help view.
+
<H4><A NAME="Fl_Help_Dialog.topline">void topline(const char *n)<BR>
void topline(int n)</A></H4>
@@ -87,5 +108,13 @@ reformats the text. It also clears the history of the "back" and
<P>Returns 1 if the <code>Fl_Help_Dialog</code> window is visible.
+<H4><A NAME="Fl_Help_Dialog.xywh">int x()<BR>
+int y()<BR>
+int w()<BR>
+int h()<BR>
+</A></H4>
+
+<P>Returns the position and size of the help dialog.
+
</BODY>
</HTML>
diff --git a/documentation/Fl_Help_View.html b/documentation/Fl_Help_View.html
index 3eee0ea..4b10afd 100644
--- a/documentation/Fl_Help_View.html
+++ b/documentation/Fl_Help_View.html
@@ -1,4 +1,8 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Help_View</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name="Fl_Help_View">class Fl_Help_View</A></H2>
diff --git a/documentation/Fl_Hold_Browser.html b/documentation/Fl_Hold_Browser.html
index 3b1084a..ef9a5a3 100644
--- a/documentation/Fl_Hold_Browser.html
+++ b/documentation/Fl_Hold_Browser.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Hold_Browser</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Hold_Browser>class Fl_Hold_Browser</A></H2>
<HR>
diff --git a/documentation/Fl_Image.html b/documentation/Fl_Image.html
index 7aadbef..7f3f52f 100644
--- a/documentation/Fl_Image.html
+++ b/documentation/Fl_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Input.html b/documentation/Fl_Input.html
index f94b4c4..05dac19 100644
--- a/documentation/Fl_Input.html
+++ b/documentation/Fl_Input.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Input</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Input_.html b/documentation/Fl_Input_.html
index b6b4ef3..9b7fb34 100644
--- a/documentation/Fl_Input_.html
+++ b/documentation/Fl_Input_.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Input_</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Input_Choice.html b/documentation/Fl_Input_Choice.html
index b941e34..a754e25 100644
--- a/documentation/Fl_Input_Choice.html
+++ b/documentation/Fl_Input_Choice.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Input_Choice</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -13,9 +16,6 @@
<A href=Fl_Group.html#Fl_Group>Fl_Group</A>
|
+----<B>Fl_Input_Choice</B>
- |
- +----<A href=Fl_Input.html#Fl_Input>Fl_Input</A>
- <A href=Fl_Menu_Button.html#Fl_Menu_Button>Fl_Menu_Button</A>
</PRE></UL>
<H3>Include Files</H3>
@@ -65,11 +65,11 @@ and label string.
<P>Destroys the widget and any value associated with it.
-<h4><a name='#Fl_Input_Choice.add'>void Fl_Input_Choice::add(const char *s)</a></h4>
+<h4><a name='Fl_Input_Choice.add'>void Fl_Input_Choice::add(const char *s)</a></h4>
<p>Adds an item to the menu.</p>
-<h4><a name='#Fl_Input_Choice.clear'>void Fl_Input_Choice::clear()</a></h4>
+<h4><a name='Fl_Input_Choice.clear'>void Fl_Input_Choice::clear()</a></h4>
<p>Removes all items from the menu.</p>
@@ -77,7 +77,7 @@ and label string.
<p>Returns a reference to the internal <tt>Fl_Input</tt> widget.</p>
-<h4><a name='#Fl_Input_Choice.menu'>void Fl_Input_Choice::menu(const Fl_Menu_Item *m)<br>
+<h4><a name='Fl_Input_Choice.menu'>void Fl_Input_Choice::menu(const Fl_Menu_Item *m)<br>
const Fl_Menu_Item *menu()</A></h4>
<p>Gets or sets the <tt>Fl_Menu_Item</tt> array used for the menu.</p>
diff --git a/documentation/Fl_Int_Input.html b/documentation/Fl_Int_Input.html
index de4c9e3..e495bfb 100644
--- a/documentation/Fl_Int_Input.html
+++ b/documentation/Fl_Int_Input.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Int_Input</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Int_Input>class Fl_Int_Input</A></H2>
<HR>
diff --git a/documentation/Fl_JPEG_Image.html b/documentation/Fl_JPEG_Image.html
index 06b57f9..a49e4fc 100644
--- a/documentation/Fl_JPEG_Image.html
+++ b/documentation/Fl_JPEG_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_JPEG_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Light_Button.html b/documentation/Fl_Light_Button.html
index a5e597e..4bba330 100644
--- a/documentation/Fl_Light_Button.html
+++ b/documentation/Fl_Light_Button.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Light_Button</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Light_Button>class Fl_Light_Button</A></H2>
<HR>
diff --git a/documentation/Fl_Menu_.html b/documentation/Fl_Menu_.html
index d602283..9f04267 100644
--- a/documentation/Fl_Menu_.html
+++ b/documentation/Fl_Menu_.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Menu_</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Menu_>class Fl_Menu_</A></H2>
<HR>
@@ -80,47 +84,11 @@ int h, const char *label = 0)</A></H4>
Creates a new <TT>Fl_Menu_</TT> widget using the given position, size,
and label string.<tt> menu()</tt> is initialized to null.
+
<H4><A name=Fl_Menu_.~Fl_Menu_>virtual Fl_Menu_::~Fl_Menu_()</A></H4>
If the menu array is private the memory it uses is freed.
-<H4><A name=Fl_Menu_.menu>const Fl_Menu_Item* Fl_Menu_::menu()
-const</a></h4>
-
-Returns a pointer to the array of Fl_Menu_Items. This will either be
-the value passed to <tt>menu(value)</tt> or the private copy.
-
-<h4>void Fl_Menu_::menu(const Fl_Menu_Item*)</H4>
-Set the menu array pointer directly. If the old menu is private it is
-deleted. <tt>NULL</tt> is allowed and acts the same as a zero-length
-menu. If you try to modify the array (with add(), replace(), or
-delete()) a private copy is automatically done.
-
-<H4><A name=Fl_Menu_.mvalue>const Fl_Menu_Item* Fl_Menu_::mvalue()
-const</a></h4>
-
-<P>Returns a pointer to the last menu item that was picked.
-
-<H4><A name=Fl_Menu_.copy>void Fl_Menu_::copy(const
-Fl_Menu_Item*, void* user_data = 0)</A></H4>
-
-<P>The menu is set to a private copy of the passed Fl_Menu_Item
-array. This is useful if you want to modify the flags of the
-menu items. If the <tt>user_data</tt> argument is non-NULL, then
-the <tt>user_data</tt> members of the menu items are set to the
-given value.
-
-<H4><A name=Fl_Menu_.clear>void Fl_Menu_::clear()</A></H4>
-Same as <tt>menu(NULL)</tt>, set the array pointer to null, indicating
-a zero-length menu.
-
-<H4><A name=Fl_Menu_.size>int Fl_Menu_::size() const</A></H4>
-
-This returns the number of Fl_Menu_Item structures that make up the
-menu, correctly counting submenus. This includes the "terminator"
-item at the end. To copy a menu array you need to copy
-<tt>size()*sizeof(Fl_Menu_Item)</tt> bytes. If the menu is
-<TT>NULL</TT> this returns zero (an empty menu will return 1).
<H4><A name=Fl_Menu_.add>int Fl_Menu_::add(const char* label, const
char* shortcut, Fl_Callback*, void *user_data=0, int flags=0)</a><br>
@@ -138,7 +106,7 @@ special characters in the label string. The "&amp;" character
specifies that the following character is an accelerator and
will be underlined. The "\" character is used to escape the next
character in the string. Labels starting with the "_" character
-cause a divider to be placed before that menu item.</p>
+cause a divider to be placed after that menu item.</p>
<p>A label of the form &quot;foo/bar/baz&quot; will create a
submenus called &quot;foo&quot; and &quot;bar&quot; with an
@@ -185,6 +153,87 @@ with Forms and other GL programs. The section strings use the
same special characters as described for the long version of <a
href='#Fl_Menu_.add'><tt>add()</tt></a></p>
+
+<H4><A name=Fl_Menu_.clear>void Fl_Menu_::clear()</A></H4>
+Same as <tt>menu(NULL)</tt>, set the array pointer to null, indicating
+a zero-length menu.
+
+
+<H4><A name=Fl_Menu_.copy>void Fl_Menu_::copy(const
+Fl_Menu_Item*, void* user_data = 0)</A></H4>
+
+<P>The menu is set to a private copy of the passed Fl_Menu_Item
+array. This is useful if you want to modify the flags of the
+menu items. If the <tt>user_data</tt> argument is non-NULL, then
+the <tt>user_data</tt> members of the menu items are set to the
+given value.
+
+
+<H4><A name=Fl_Menu_.down_box>Fl_Boxtype Fl_Menu_::down_box() const
+<BR> void Fl_Menu_::down_box(Fl_Boxtype)</A></H4>
+ This box type is used to surround the currently-selected items in the
+menus. If this is <TT>FL_NO_BOX</TT> then it acts like <TT>
+FL_THIN_UP_BOX</TT> and <TT>selection_color()</TT> acts like <TT>
+FL_WHITE</TT>, for back compatability.
+
+
+<h4><a name="Fl_Menu_.find_item">const Fl_Menu_Item *Fl_Menu_::find_item(const char *name);</a></h4>
+
+<p>Returns a pointer to the menu item with the given (full)
+pathname. If no matching menu item can be found, a NULL pointer
+is returned. This function does not search submenus that are linked
+via FL_SUBMENU_POINTER.</p>
+
+
+<h4><a name=Fl_Menu_.item_pathname>int Fl_Menu_::item_pathname(char *name, int namelen ) const;</a><br>
+int Fl_Menu_::item_pathname(char *name, int namelen, const Fl_Menu_Item *finditem) const;</h4>
+
+<p>Returns the 'menu pathname' (eg. "File/Quit") for the recently picked item in user supplied string 'name'. Useful in the callback function for a menu item, to determine the last picked item's 'menu pathname' string.
+
+<p>If finditem is specified, name will contain the 'menu pathname' for that item.
+
+<p>Returns:
+
+<ul>
+ <li>0 - OK: 'name' has the pathname, guaranteed not longer than namelen
+ <li>-1 - Failed: 'finditem' was not found in the menu
+ <li>-2 - Failed: 'name' is not large enough to handle the menu names
+</ul>
+
+<p>In the case of errors (-1 or -2), 'name' will be an empty string.
+
+
+<H4><A name=Fl_Menu_.menu>const Fl_Menu_Item* Fl_Menu_::menu()
+const</a></h4>
+
+Returns a pointer to the array of Fl_Menu_Items. This will either be
+the value passed to <tt>menu(value)</tt> or the private copy.
+
+<h4>void Fl_Menu_::menu(const Fl_Menu_Item*)</H4>
+Set the menu array pointer directly. If the old menu is private it is
+deleted. <tt>NULL</tt> is allowed and acts the same as a zero-length
+menu. If you try to modify the array (with add(), replace(), or
+delete()) a private copy is automatically done.
+
+
+<H4><A name=Fl_Menu_.mode>void Fl_Menu_::mode(int i, int x);</A></H4>
+
+Changes the flags of item <TT>i</TT>. For a list of the flags, see <a
+href=Fl_Menu_Item.html>Fl_Menu_Item</a>.
+
+
+<H4><A name=Fl_Menu_.mvalue>const Fl_Menu_Item* Fl_Menu_::mvalue()
+const</a></h4>
+
+<P>Returns a pointer to the last menu item that was picked.
+
+
+<H4><A name=Fl_Menu_.remove>void Fl_Menu_::remove(int n)</A></H4>
+
+Deletes item <TT>n</TT> from the menu. If the menu array was directly
+set with menu(x) then copy() is done to make a private array.
+
+
<H4><A name=Fl_Menu_.replace>void Fl_Menu_::replace(int n, const char *)</A>
</H4>
@@ -192,28 +241,20 @@ Changes the text of item <TT>n</TT>. This is the only way to get
slash into an add()'ed menu item. If the menu array was directly set
with menu(x) then copy() is done to make a private array.
-<H4><A name=Fl_Menu_.remove>void Fl_Menu_::remove(int n)</A></H4>
-
-Deletes item <TT>n</TT> from the menu. If the menu array was directly
-set with menu(x) then copy() is done to make a private array.
<H4><A name=Fl_Menu_.shortcut>void Fl_Menu_::shortcut(int i, int n);</A></H4>
Changes the shortcut of item <TT>i</TT> to <TT>n</TT>.
-<H4><A name=Fl_Menu_.mode>void Fl_Menu_::mode(int i, int x);</A></H4>
-Changes the flags of item <TT>i</TT>. For a list of the flags, see <a
-href=Fl_Menu_Item.html>Fl_Menu_Item</a>.
+<H4><A name=Fl_Menu_.size>int Fl_Menu_::size() const</A></H4>
+
+This returns the number of Fl_Menu_Item structures that make up the
+menu, correctly counting submenus. This includes the "terminator"
+item at the end. To copy a menu array you need to copy
+<tt>size()*sizeof(Fl_Menu_Item)</tt> bytes. If the menu is
+<TT>NULL</TT> this returns zero (an empty menu will return 1).
-<H4><A name=Fl_Menu_.value>int Fl_Menu_::value() const
-<BR> int Fl_Menu_::value(int)
-<BR> const Fl_Menu_Item* mvalue() const
-<BR> int Fl_Menu_::value(const Fl_Menu_Item*)</A></H4>
- The value is the index into <TT>menu()</TT> of the last item chosen by
-the user. It is zero initially. You can set it as an integer, or set
-it with a pointer to a menu item. The set routines return non-zero if
-the new value is different than the old one.
<H4><A name=Fl_Menu_.test_shortcut>const Fl_Menu_Item*
Fl_Menu_::test_shortcut()</A></H4>
@@ -231,47 +272,36 @@ not have to be put in a window at all).
one will replace the old one. There is no way to remove the <TT>
global()</TT> setting (so don't destroy the widget!)</P>
-<h4><a name="Fl_Menu_.find_item">const Fl_Menu_Item *Fl_Menu_::find_item(const char *name);</a></h4>
-
-<p>Returns a pointer to the menu item with the given (full)
-pathname. If no matching menu item can be found, a NULL pointer
-is returned. This function does not search submenus that are linked
-via FL_SUBMENU_POINTER.</p>
-
-<h4><a name=Fl_Menu_.item_pathname>int Fl_Menu_::item_pathname(char *name, int namelen ) const;</a><br>
-int Fl_Menu_::item_pathname(char *name, int namelen,
- const Fl_Menu_Item *finditem) const;</h4>
-
-<p>Returns the 'menu pathname' (eg. "File/Quit") for the recently picked item in user supplied string 'name'. Useful in the callback function for a menu item, to determine the last picked item's 'menu pathname' string.
-
-<p>If finditem is specified, name will contain the 'menu pathname' for that item.
-
-<p>Returns:
-
-<ul>
- <li>0 - OK: 'name' has the pathname, guaranteed not longer than namelen
- <li>-1 - Failed: 'finditem' was not found in the menu
- <li>-2 - Failed: 'name' is not large enough to handle the menu names
-</ul>
-
-<p>In the case of errors (-1 or -2), 'name' will be an empty string.
<H4><A name=Fl_Menu_.text>const char* Fl_Menu_::text() const
<BR> const char* Fl_Menu_::text(int i) const</A></H4>
Returns the title of the last item chosen, or of item <TT>i</TT>.
+
<H4><A name=Fl_Menu_.textcolor>Fl_Color Fl_Menu_::textcolor() const
<BR> void Fl_Menu_::textcolor(Fl_Color)</A></H4>
Get or set the current color of menu item labels.
+
+
<H4><A name=Fl_Menu_.textfont>Fl_Font Fl_Menu_::textfont() const
<BR> void Fl_Menu_::textfont(Fl_Font)</A></H4>
Get or set the current font of menu item labels.
+
+
<H4><A name=Fl_Menu_.textsize>uchar Fl_Menu_::textsize() const
<BR> void Fl_Menu_::textsize(uchar)</A></H4>
Get or set the font size of menu item labels.
-<H4><A name=Fl_Menu_.down_box>Fl_Boxtype Fl_Menu_::down_box() const
-<BR> void Fl_Menu_::down_box(Fl_Boxtype)</A></H4>
- This box type is used to surround the currently-selected items in the
-menus. If this is <TT>FL_NO_BOX</TT> then it acts like <TT>
-FL_THIN_UP_BOX</TT> and <TT>selection_color()</TT> acts like <TT>
-FL_WHITE</TT>, for back compatability. </BODY></HTML>
+
+
+<H4><A name=Fl_Menu_.value>int Fl_Menu_::value() const
+<BR> int Fl_Menu_::value(int)
+<BR> const Fl_Menu_Item* mvalue() const
+<BR> int Fl_Menu_::value(const Fl_Menu_Item*)</A></H4>
+ The value is the index into <TT>menu()</TT> of the last item chosen by
+the user. It is zero initially. You can set it as an integer, or set
+it with a pointer to a menu item. The set routines return non-zero if
+the new value is different than the old one.
+
+
+</body>
+</html>
diff --git a/documentation/Fl_Menu_Bar.html b/documentation/Fl_Menu_Bar.html
index 840bbbd..5c0b8ca 100644
--- a/documentation/Fl_Menu_Bar.html
+++ b/documentation/Fl_Menu_Bar.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Menu_Bar</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Menu_Bar>class Fl_Menu_Bar</A></H2>
<HR>
diff --git a/documentation/Fl_Menu_Button.html b/documentation/Fl_Menu_Button.html
index 602a504..45e8cd0 100644
--- a/documentation/Fl_Menu_Button.html
+++ b/documentation/Fl_Menu_Button.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Menu_Button</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Menu_Button>class Fl_Menu_Button</A></H2>
<HR>
diff --git a/documentation/Fl_Menu_Item.html b/documentation/Fl_Menu_Item.html
index 87aa515..0465834 100644
--- a/documentation/Fl_Menu_Item.html
+++ b/documentation/Fl_Menu_Item.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Menu_Item</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Menu_Item>struct Fl_Menu_Item</A></H2>
<HR>
diff --git a/documentation/Fl_Menu_Window.html b/documentation/Fl_Menu_Window.html
index 266f458..14eb70f 100644
--- a/documentation/Fl_Menu_Window.html
+++ b/documentation/Fl_Menu_Window.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Menu_Window</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Menu_Window>class Fl_Menu_Window</A></H2>
<HR>
diff --git a/documentation/Fl_Multi_Browser.html b/documentation/Fl_Multi_Browser.html
index 49e691b..071f004 100644
--- a/documentation/Fl_Multi_Browser.html
+++ b/documentation/Fl_Multi_Browser.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Multi_Browser</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Multi_Browser>class Fl_Multi_Browser</A></H2>
<HR>
diff --git a/documentation/Fl_Multiline_Input.html b/documentation/Fl_Multiline_Input.html
index dd8c4ab..3d46be4 100644
--- a/documentation/Fl_Multiline_Input.html
+++ b/documentation/Fl_Multiline_Input.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Multiline_Input</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Multiline_Input>class Fl_Multiline_Input</A></H2>
<HR>
diff --git a/documentation/Fl_Multiline_Output.html b/documentation/Fl_Multiline_Output.html
index 6c7a086..8374108 100644
--- a/documentation/Fl_Multiline_Output.html
+++ b/documentation/Fl_Multiline_Output.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Multiline_Output</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Multiline_Output>class Fl_Multiline_Output</A></H2>
<HR>
diff --git a/documentation/Fl_Output.html b/documentation/Fl_Output.html
index eb169b8..a6af1ce 100644
--- a/documentation/Fl_Output.html
+++ b/documentation/Fl_Output.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Output</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name="Fl_Output">class Fl_Output</A></H2>
<HR>
diff --git a/documentation/Fl_Overlay_Window.html b/documentation/Fl_Overlay_Window.html
index 33c14a8..bf5f9e3 100644
--- a/documentation/Fl_Overlay_Window.html
+++ b/documentation/Fl_Overlay_Window.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Overlay_Window</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Overlay_Window>class Fl_Overlay_Window</A></H2>
<HR>
diff --git a/documentation/Fl_PNG_Image.html b/documentation/Fl_PNG_Image.html
index 1648634..fbd4215 100644
--- a/documentation/Fl_PNG_Image.html
+++ b/documentation/Fl_PNG_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_PNG_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_PNM_Image.html b/documentation/Fl_PNM_Image.html
index 70f058b..1a9cd5b 100644
--- a/documentation/Fl_PNM_Image.html
+++ b/documentation/Fl_PNM_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_PNM_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Pack.html b/documentation/Fl_Pack.html
index ae1fd24..70ebcd9 100644
--- a/documentation/Fl_Pack.html
+++ b/documentation/Fl_Pack.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Pack</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Pack>class Fl_Pack</A></H2>
<HR>
diff --git a/documentation/Fl_Pixmap.html b/documentation/Fl_Pixmap.html
index 8054e5f..b3572f0 100644
--- a/documentation/Fl_Pixmap.html
+++ b/documentation/Fl_Pixmap.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Pixmap</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Positioner.html b/documentation/Fl_Positioner.html
index f70d8ce..ee3c650 100644
--- a/documentation/Fl_Positioner.html
+++ b/documentation/Fl_Positioner.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Positioner</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Positioner>class Fl_Positioner</A></H2>
<HR>
diff --git a/documentation/Fl_Preferences.html b/documentation/Fl_Preferences.html
index fc5c723..5c6e7d6 100644
--- a/documentation/Fl_Preferences.html
+++ b/documentation/Fl_Preferences.html
@@ -1,16 +1,19 @@
<html>
+<HEAD>
+ <TITLE>Fl_Preferences</TITLE>
+</HEAD>
<body>
<!-- NEW PAGE -->
-<h2>class Fl_Preferences</h2>
+<h2><a name="Fl_Preferences">class Fl_Preferences</a></h2>
<hr>
<h3>Class Hierarchy</h3>
<ul><pre>
-<b>Fl_Preferences</b></a></H4>&nbsp;
+<b>Fl_Preferences</b>
</pre></ul>
<h3>Include Files</h3>
@@ -69,9 +72,11 @@ method.
</ul>
-<H4><a name="Fl_Preferences.Fl_Preferences">Fl_Preferences(enum Root root,
-const char *vendor, const char *application)<BR>
-Fl_Preferences(Fl_Preferences &amp;p, const char *groupname)</a></H4>
+<H4><a name="Fl_Preferences.Fl_Preferences">
+Fl_Preferences(enum Root root, const char *vendor, const char *application)<BR>
+Fl_Preferences(const char *path, const char *vendor, const char *application)<BR>
+Fl_Preferences(Fl_Preferences &amp;p, const char *groupname)<BR>
+</a></H4>
<P>The constructor creates a group that manages name/value pairs and
child groups. Groups are ready for reading and writing at any time.
@@ -89,9 +94,15 @@ name of your application. Both <tt>vendor</tt> and
<tt>application</tt> must be valid relative UNIX pathnames and
may contain '/'s to create deeper file structures.
-<P>The <tt>groupname</tt> argument identifies a group of
-entries. It can contain '/'s to get quick access to individual
-elements inside the hierarchy.
+<P>The second format is used to create a preferences file at an
+arbitrary position in the file system. The file name is generated
+as <tt><i>path</i>/<i>application</i>.prefs</tt>. If <i>application</i>
+is 0, <i>path</i> must contain the full file name.
+
+<P>The third format generates a new group of preference entries
+inside the group or file <i>p</i>. The <tt>groupname</tt> argument
+identifies a group of entries. It can contain '/'s to get quick
+access to individual elements inside the hierarchy.
<H4><a name="Fl_Preferences.~Fl_Preferences">~Fl_Preferences()</a></H4>
@@ -173,7 +184,9 @@ group.
<H4><a name="Fl_Preferences.set">int set(const char *entry, int value)<BR>
int set(const char *entry, int value)<BR>
int set(const char *entry, float value)<BR>
+int set(const char *entry, float value, int precision)<BR>
int set(const char *entry, double value)<BR>
+int set(const char *entry, double value, int precision)<BR>
int set(const char *entry, const char *text)<BR>
int set(const char *entry, const void *data, int size)</a></H4>
diff --git a/documentation/Fl_Progress.html b/documentation/Fl_Progress.html
index d20d14a..0c0c8a2 100644
--- a/documentation/Fl_Progress.html
+++ b/documentation/Fl_Progress.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Progress</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_RGB_Image.html b/documentation/Fl_RGB_Image.html
index 0ee2df6..60b5fef 100644
--- a/documentation/Fl_RGB_Image.html
+++ b/documentation/Fl_RGB_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_RGB_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -15,7 +18,7 @@
|
+----<A href="Fl_JPEG_Image.html">Fl_JPEG_Image</A>,
<A href="Fl_PNG_Image.html">Fl_PNG_Image</A>,
- <A href="Fl_PNM_Image.html">Fl_PNM_Image</A>
+ <A href="Fl_PNM_Image.html">Fl_PNM_Image</A>,
<A href="Fl_BMP_Image.html">Fl_BMP_Image</A>
</PRE></UL>
diff --git a/documentation/Fl_Repeat_Button.html b/documentation/Fl_Repeat_Button.html
index fe94d54..3111715 100644
--- a/documentation/Fl_Repeat_Button.html
+++ b/documentation/Fl_Repeat_Button.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Repeat_Button</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Repeat_Button>class Fl_Repeat_Button</A></H2>
<HR>
diff --git a/documentation/Fl_Return_Button.html b/documentation/Fl_Return_Button.html
index 6c11ae9..8328eea 100644
--- a/documentation/Fl_Return_Button.html
+++ b/documentation/Fl_Return_Button.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Return_Button</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Return_Button>class Fl_Return_Button</A></H2>
<HR>
diff --git a/documentation/Fl_Roller.html b/documentation/Fl_Roller.html
index 8c00772..a430342 100644
--- a/documentation/Fl_Roller.html
+++ b/documentation/Fl_Roller.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Roller</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Roller>class Fl_Roller</A></H2>
<HR>
diff --git a/documentation/Fl_Round_Button.html b/documentation/Fl_Round_Button.html
index f462901..bf1eea1 100644
--- a/documentation/Fl_Round_Button.html
+++ b/documentation/Fl_Round_Button.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Round_Button</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Round_Button>class Fl_Round_Button</A></H2>
<HR>
diff --git a/documentation/Fl_Scroll.html b/documentation/Fl_Scroll.html
index 2e8a17f..f7acf44 100644
--- a/documentation/Fl_Scroll.html
+++ b/documentation/Fl_Scroll.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Scroll</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Scroll>class Fl_Scroll</A></H2>
<HR>
@@ -48,6 +52,8 @@ space for the scrollbars, as Fluid won't show these either. </P>
<P><I>You cannot use <TT>Fl_Window</TT> as a child of this since the
clipping is not conveyed to it when drawn, and it will draw over the
scrollbars and neighboring objects.</I></P>
+<P><I><TT>Fl_Scroll</TT> widgets should not be nested. Having an Fl_Scroll
+inside another Fl_Scroll may result in drawing errors when resizing.</I></P>
<H3>Methods</H3>
<UL>
<LI><A href=#Fl_Scroll.Fl_Scroll>Fl_Scroll</A></LI>
diff --git a/documentation/Fl_Scrollbar.html b/documentation/Fl_Scrollbar.html
index b1d9123..e574740 100644
--- a/documentation/Fl_Scrollbar.html
+++ b/documentation/Fl_Scrollbar.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Scrollbar</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Scrollbar>class Fl_Scrollbar</A></H2>
<HR>
diff --git a/documentation/Fl_Secret_Input.html b/documentation/Fl_Secret_Input.html
index a861b60..d703ac1 100644
--- a/documentation/Fl_Secret_Input.html
+++ b/documentation/Fl_Secret_Input.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Secret_Input</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Secret_Input>class Fl_Secret_Input</A></H2>
<HR>
diff --git a/documentation/Fl_Select_Browser.html b/documentation/Fl_Select_Browser.html
index 4e744db..9304635 100644
--- a/documentation/Fl_Select_Browser.html
+++ b/documentation/Fl_Select_Browser.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Select_Browser</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Select_Browser>class Fl_Select_Browser</A></H2>
<HR>
diff --git a/documentation/Fl_Shared_Image.html b/documentation/Fl_Shared_Image.html
index 88d5b30..ea45f7f 100644
--- a/documentation/Fl_Shared_Image.html
+++ b/documentation/Fl_Shared_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Shared_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Single_Window.html b/documentation/Fl_Single_Window.html
index c6bc84b..8329e0a 100644
--- a/documentation/Fl_Single_Window.html
+++ b/documentation/Fl_Single_Window.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Single_Window</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Single_Window>class Fl_Single_Window</A></H2>
<HR>
diff --git a/documentation/Fl_Slider.html b/documentation/Fl_Slider.html
index c6f51d6..88f5910 100644
--- a/documentation/Fl_Slider.html
+++ b/documentation/Fl_Slider.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Slider</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Slider>class Fl_Slider</A></H2>
<HR>
diff --git a/documentation/Fl_Spinner.html b/documentation/Fl_Spinner.html
index ab6383c..3594e3a 100644
--- a/documentation/Fl_Spinner.html
+++ b/documentation/Fl_Spinner.html
@@ -1,4 +1,7 @@
<html>
+<HEAD>
+ <TITLE>Fl_Spinner</TITLE>
+</HEAD>
<body>
<!-- NEW PAGE -->
@@ -13,9 +16,6 @@
<a href=Fl_Group.html#Fl_Group>Fl_Group</a>
|
+----<b>Fl_Spinner</b>
- |
- +----<a href=Fl_Input.html#Fl_Input>Fl_Input</a>
- <a href=Fl_Repeat_Button.html#Fl_Repeat_Button>Fl_Repeat_Button</a>
</pre></ul>
<h3>Include Files</h3>
@@ -44,6 +44,7 @@ input area or use the buttons to change the value.
<li><a href='#Fl_Spinner.textcolor'>textcolor</a></li>
<li><a href='#Fl_Spinner.textfont'>textfont</a></li>
<li><a href='#Fl_Spinner.textsize'>textsize</a></li>
+ <li><a href='#Fl_Spinner.type'>type</a></li>
<li><a href='#Fl_Spinner.value'>value</a></li>
</ul>
@@ -81,7 +82,10 @@ double minimum() const</a></h4>
double step() const</a></h4>
<p>Sets or returns the amount to change the value when the user
-clicks a button.</p>
+clicks a button.
+Before setting <tt>step</tt> to a non-integer value, the spinner
+<a href='#Fl_Spinner.type'><tt>type()</tt></a> should be changed
+to floating point.</p>
<h4><a name='Fl_Spinner.textcolor'>void textcolor(Fl_Color c)<br />
Fl_Color textcolor() const</a></h4>
@@ -98,10 +102,22 @@ uchar textsize() const</a></h4>
<p>Sets or returns the size of the text in the input field.</p>
+<h4><a name='Fl_Spinner.type'>void type(uchar s)<br />
+uchar type() const</a></h4>
+
+<p>Sets or returns the numeric representation in the input field.
+Valid values are <tt>FL_INT_INPUT</tt> and <tt>FL_FLOAT_INPUT</tt>.
+The first form also changes the <tt>format()</tt> template.
+Please note that <tt>type</tt> is not a virtual function.
+Setting a new spinner type via a superclass pointer will not work.</p>
+
<h4><a name="Fl_Spinner.value">void Fl_Spinner::value(double v)<br />
double Fl_Spinner::value() const</a></h4>
-<p>Sets or returns the current value of the widget.</p>
+<p>Sets or returns the current value of the widget.
+Before setting <tt>value</tt> to a non-integer value, the spinner
+<a href='#Fl_Spinner.type'><tt>type()</tt></a> should be changed
+to floating point.</p>
</body>
</html>
diff --git a/documentation/Fl_Tabs.html b/documentation/Fl_Tabs.html
index d9c8dab..f7cb20b 100644
--- a/documentation/Fl_Tabs.html
+++ b/documentation/Fl_Tabs.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Tabs</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -79,7 +82,7 @@ can be automatic (local) variables, but you must declare the
<TT>Fl_Tabs</TT> widget <I>first</I> so that it is destroyed
last.
-<H4><A name="Fl_Tabs.value">Fl_Widget* Fl_Tabs::value() const
+<H4><A name="Fl_Tabs.value">Fl_Widget* Fl_Tabs::value()
<BR>int Fl_Tabs::value(Fl_Widget*)</A></H4>
<P>Gets or sets the currently visible widget/tab.
diff --git a/documentation/Fl_Text_Buffer.html b/documentation/Fl_Text_Buffer.html
index 20edfc5..2b97120 100644
--- a/documentation/Fl_Text_Buffer.html
+++ b/documentation/Fl_Text_Buffer.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Text_Buffer</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -11,9 +14,6 @@
<UL><PRE>
<B>Fl_Text_Buffer</B>
- |
- +----<A href="Fl_Text_Display.html">Fl_Text_Display</A>,
- <A href="Fl_Text_Editor.html">Fl_Text_Editor</A>
</PRE></UL>
<H3>Include Files</H3>
@@ -24,8 +24,11 @@
<H3>Description</H3>
-<P>The <TT>Fl_Text_Buffer</TT> class is used by the <TT>Fl_Text_Display</TT>
-and <TT>Fl_Text_Editor</TT> to manage complex text data and is based upon the
+<P>The <TT>Fl_Text_Buffer</TT> class is used by the
+<tt><A href="Fl_Text_Display.html">Fl_Text_Display</A></tt>
+and
+<tt><A href="Fl_Text_Editor.html">Fl_Text_Editor</A></tt>
+to manage complex text data and is based upon the
excellent NEdit text editor engine - see
<A HREF="http://www.nedit.org/">http://www.nedit.org/</A>.</P>
@@ -139,7 +142,10 @@ typedef void (*Fl_Text_Modify_Cb)(int pos, int nInserted, int nDeleted,
<H4><A NAME="Fl_Text_Buffer.appendfile">int appendfile(const char *file, int buflen = 128*1024);</A></H4>
-<P>Appends the named file to the end of the buffer.
+<P>Appends the named file to the end of the buffer. Returns 0 on
+success, non-zero on error (strerror() contains reason). 1 indicates
+open for read failed (no data loaded). 2 indicates error occurred
+while reading data (data was partially loaded).
<H4><A NAME="Fl_Text_Buffer.call_modify_callbacks">void call_modify_callbacks();</A></H4>
@@ -236,7 +242,10 @@ int* charsInserted, int* charsDeleted);</A></H4>
<H4><A NAME="Fl_Text_Buffer.insertfile">int insertfile(const char *file, int pos, int buflen = 128*1024);</A></H4>
-<P>Inserts a file at the specified position.
+<P>Inserts a file at the specified position. Returns 0 on success,
+non-zero on error (strerror() contains reason). 1 indicates open
+for read failed (no data loaded). 2 indicates error occurred
+while reading data (data was partially loaded).
<H4><A NAME="Fl_Text_Buffer.insert">void insert(int pos, const char* text);</A></H4>
@@ -262,7 +271,10 @@ using the <tt>free()</tt> function.
<H4><A NAME="Fl_Text_Buffer.loadfile">int loadfile(const char *file, int buflen = 128*1024);</A></H4>
-<P>Replaces the current buffer with the contents of a file.
+<P>Replaces the current buffer with the contents of a file. Returns 0
+on success, non-zero on error (strerror() contains reason). 1 indicates
+open for read failed (no data loaded). 2 indicates error occurred
+while reading data (data was partially loaded).
<H4><A NAME="Fl_Text_Buffer.null_substitution_character">char null_substitution_character();</A></H4>
@@ -270,7 +282,10 @@ using the <tt>free()</tt> function.
<H4><A NAME="Fl_Text_Buffer.outputfile">int outputfile(const char *file, int start, int end, int buflen = 128*1024);</A></H4>
-<P>Writes the specified portions of the file to a file.
+<P>Writes the specified portions of the file to a file. Returns 0 on success, non-zero
+on error (strerror() contains reason). 1 indicates open for write failed
+(no data saved). 2 indicates error occurred while writing data
+(data was partially saved).
<H4><A NAME="Fl_Text_Buffer.overlay_rectangular">void overlay_rectangular(int startPos, int rectStart, int rectEnd,
const char* text, int* charsInserted, int* charsDeleted);</A></H4>
@@ -324,7 +339,10 @@ const char* text);</A></H4>
<H4><A NAME="Fl_Text_Buffer.savefile">int savefile(const char *file, int buflen = 128*1024);</A></H4>
-<P>Saves the entire buffer to a file.
+<P>Saves the entire buffer to a file. Returns 0 on success, non-zero
+on error (strerror() contains reason). 1 indicates open for write failed
+(no data saved). 2 indicates error occurred while writing data
+(data was partially saved).
<H4><A NAME="Fl_Text_Buffer.search_backward">int search_backward(int startPos, const char* searchString, int* foundPos,
int matchCase = 0);</A></H4>
@@ -417,8 +435,10 @@ done with the text, free it using the <tt>free()</tt> function.
<H4><A NAME="Fl_Text_Buffer.text">const char* text();<BR>
void text(const char* text);</A></H4>
-<P>Gets or sets the text in the buffer. When you are done with
-the text, free it using the <tt>free()</tt> function.
+<P>Gets or sets the text in the buffer. The first form
+returns a copy of the text in the buffer which you must
+later <tt>free()</tt> when done using it. The second form sets the text in
+the buffer, making an internal copy of the string that is automatically managed.
<H4><A NAME="Fl_Text_Buffer.unhighlight">void unhighlight();</A></H4>
diff --git a/documentation/Fl_Text_Display.html b/documentation/Fl_Text_Display.html
index ad83d7e..afce86e 100644
--- a/documentation/Fl_Text_Display.html
+++ b/documentation/Fl_Text_Display.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Text_Display</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Text_Editor.html b/documentation/Fl_Text_Editor.html
index fce4915..2714fb1 100644
--- a/documentation/Fl_Text_Editor.html
+++ b/documentation/Fl_Text_Editor.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Text_Editor</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Tile.html b/documentation/Fl_Tile.html
index 13e4379..8918cc2 100644
--- a/documentation/Fl_Tile.html
+++ b/documentation/Fl_Tile.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Tile</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -28,6 +31,24 @@ the border between them:
<P ALIGN=CENTER><IMG src="Fl_Tile.gif" ALT="Fl_Tile widget."></P>
+<P>For the tiling to work correctly, the children of an
+<TT>Fl_Tile</TT> must cover the entire area of the widget, but not
+overlap. This means that all children must touch each
+other at their edges, and no gaps can't be left inside the
+<TT>Fl_Tile</TT>.
+
+<P><TT>Fl_Tile</TT> does not normailly draw any graphics of its own.
+The &quot;borders&quot; which can be seen in the snapshot above
+are actually part of the children. Their boxtypes have been set
+to <TT>FL_DOWN_BOX</TT> creating the impression of
+&quot;ridges&quot; where the boxes touch. What you see are
+actually two adjacent <TT>FL_DOWN_BOX</TT>'s drawn next to each
+other. All neighboring widgets share the same edge - the widget's
+thick borders make it appear as though the widgets aren't actually
+touching, but they are. If the edges of adjacent widgets do not
+touch, then it will be impossible to drag the corresponding
+edges.</P>
+
<P><TT>Fl_Tile</TT> allows objects to be resized to zero dimensions.
To prevent this you can use the <TT>resizable()</TT> to limit where
corners can be dragged to.</P>
@@ -38,17 +59,6 @@ their layout. If desired, call <TT>position()</TT> after creating the
children but before displaying the window to set the borders where you
want.</P>
-<P>The &quot;borders&quot; are part of the children -
-<TT>Fl_Tile</TT> does not draw any graphics of its own. In the
-example above, all of the children have <TT>FL_DOWN_BOX</TT>
-types, and the &quot;ridges&quot; you see are actually two
-adjacent <TT>FL_DOWN_BOX</TT>'s drawn next to each other. All
-neighboring widgets share the same edge - the widget's thick
-borders make it appear as though the widgets aren't actually
-touching, but they are. If the edges of adjacent widgets do not
-touch, then it will be impossible to drag the corresponding
-edges.</P>
-
<H3>Methods</H3>
<UL>
<LI><A href=#Fl_Tile.Fl_Tile>Fl_Tile</A></LI>
diff --git a/documentation/Fl_Tiled_Image.html b/documentation/Fl_Tiled_Image.html
index a9a16a5..33e2810 100644
--- a/documentation/Fl_Tiled_Image.html
+++ b/documentation/Fl_Tiled_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Tiled_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Timer.html b/documentation/Fl_Timer.html
index 7250366..4c9ed61 100644
--- a/documentation/Fl_Timer.html
+++ b/documentation/Fl_Timer.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Timer</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Timer>class Fl_Timer</A></H2>
<HR>
diff --git a/documentation/Fl_Toggle_Button.html b/documentation/Fl_Toggle_Button.html
new file mode 100644
index 0000000..c719d22
--- /dev/null
+++ b/documentation/Fl_Toggle_Button.html
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+ <TITLE>Fl_Toggle_Button</TITLE>
+</HEAD>
+<BODY>
+<!-- NEW PAGE -->
+<H2><A name=Fl_Toggle_Button>class Fl_Toggle_Button</A></H2>
+<HR>
+<H3>Class Hierarchy</H3>
+<UL>
+<PRE>
+<A href=Fl_Button.html#Fl_Button>Fl_Button</A>
+ |
+ +----<B>Fl_Toggle_Button</B>
+</PRE>
+</UL>
+<H3>Include Files</H3>
+<UL>
+<PRE>
+#include &lt;FL/Fl_Toggle_Button.H&gt;
+</PRE>
+</UL>
+<H3>Description</H3>
+<P>The toggle button is a push button that needs to be clicked once
+to toggle on, and one more time to toggle off.
+The <TT>Fl_Toggle_Button</TT> subclass displays the &quot;on&quot; state by
+drawing a pushed-in button.</P>
+<P>Buttons generate callbacks when they are clicked by the user. You
+control exactly when and how by changing the values for <TT>type()</TT>
+and <TT>when()</TT>.
+<H3>Methods</H3>
+<UL>
+<LI><A href=#Fl_Toggle_Button.Fl_Toggle_Button>Fl_Toggle_Button</A></LI>
+<LI><A href=#Fl_Toggle_Button.~Fl_Toggle_Button>~Fl_Toggle_Button</A></LI>
+</UL>
+<H4><A name=Fl_Toggle_Button.Fl_Toggle_Button>
+Fl_Toggle_Button::Fl_Toggle_Button(int x, int y, int w, int h, const char
+*label = 0)</A></H4>
+ Creates a new <TT>Fl_Toggle_Button</TT> widget using the given
+position, size, and label string.
+<H4><A name=Fl_Toggle_Button.~Fl_Toggle_Button>
+Fl_Toggle_Button::~Fl_Toggle_Button()</A></H4>
+ The destructor deletes the toggle button. </BODY></HTML>
diff --git a/documentation/Fl_Tooltip.html b/documentation/Fl_Tooltip.html
index f44c2f0..29027e4 100644
--- a/documentation/Fl_Tooltip.html
+++ b/documentation/Fl_Tooltip.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Tooltip</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_Valuator.html b/documentation/Fl_Valuator.html
index 4903c14..2023351 100644
--- a/documentation/Fl_Valuator.html
+++ b/documentation/Fl_Valuator.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Valuator</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Valuator>class Fl_Valuator</A></H2>
<HR>
@@ -95,12 +99,26 @@ turned off by <TT>value(x)</TT> and just before doing a callback
<P>Clears the <TT>changed()</TT> flag.
-<H4><A name=Fl_Valuator.format>int Fl_Valuator::format(char *)</A></H4>
+<H4><A name=Fl_Valuator.format>int Fl_Valuator::format(char *buffer)</A></H4>
-<P>Format the passed value to show enough digits so that for the
-current step value. If the step has been set to zero then it
-does a <TT>%g</TT> format. The characters are written into the
-passed buffer.
+<P>Uses internal rules to format the fields numerical value into
+the character array pointed to by the passed parameter.</P>
+
+<P>The actual format used depends on the current step value. If
+the step value has been set to zero then a %g format is used.
+If the step value is non-zero, then a %.*f format is used,
+where the precision is calculated to show sufficient digits
+for the current step value. An integer step value, such as 1
+or 1.0, gives a precision of 0, so the formatted value will
+appear as an integer.</P>
+
+<P>This method is used by the <TT>Fl_Value_...</TT> group of widgets to
+format the current value into a text string.
+The return value is the length of the formatted text.
+The formatted value is written into in <i>buffer</i>.
+<i>buffer</i> should have space for at least 128 bytes.</P>
+
+<P>You may override this function to create your own text formatting.</P>
<H4><A name=Fl_Valuator.increment>double
Fl_Valuator::increment(double,int n)</A></H4>
diff --git a/documentation/Fl_Value_Input.html b/documentation/Fl_Value_Input.html
index eed7345..3495d56 100644
--- a/documentation/Fl_Value_Input.html
+++ b/documentation/Fl_Value_Input.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Value_Input</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -31,6 +34,12 @@ href="Fl_Input.html#Fl_Input"><TT>Fl_Input</TT></A> widget with
there - and when they hit return or tab the value updates to
what they typed and the callback is done.
+<P>If <TT>step()</TT> is non-zero and integral, then the range of numbers
+is limited to integers instead of floating point numbers. As
+well as displaying the value as an integer, typed input is also
+limited to integer values, even if the hidden <TT>Fl_Input</TT> widget
+is of <TT>type(FL_FLOAT_INPUT)</TT>.</P>
+
<P>If <TT>step()</TT> is non-zero, the user can also drag the
mouse across the object and thus slide the value. The left
button moves one <TT>step()</TT> per pixel, the middle by <TT>10
diff --git a/documentation/Fl_Value_Output.html b/documentation/Fl_Value_Output.html
index 0f03ce6..7ba59fa 100644
--- a/documentation/Fl_Value_Output.html
+++ b/documentation/Fl_Value_Output.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Value_Output</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Value_Output>class Fl_Value_Output</A></H2>
<HR>
diff --git a/documentation/Fl_Value_Slider.html b/documentation/Fl_Value_Slider.html
index 43039c7..847b576 100644
--- a/documentation/Fl_Value_Slider.html
+++ b/documentation/Fl_Value_Slider.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Value_Slider</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Value_Slider>class Fl_Value_Slider</A></H2>
<HR>
diff --git a/documentation/Fl_Widget.html b/documentation/Fl_Widget.html
index 731a3b9..3562ba5 100644
--- a/documentation/Fl_Widget.html
+++ b/documentation/Fl_Widget.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Widget</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Widget>class Fl_Widget</A></H2>
<HR>
@@ -7,7 +11,7 @@
<PRE>
<B>Fl_Widget</B>
|
- +----<A href=Fl_Box.html#Fl_Box>Fl_Box</A>, <A href=Fl_Browser_.html#Fl_Browser_>Fl_Browser_</A>, <A href=Fl_Button.html#Fl_Button>Fl_Button</A>, <A href=Fl_Chart.html#Fl_Chart>Fl_Chart</A>, <A href=Fl_Clock.html#Fl_Clock>Fl_Clock</A>,
+ +----<A href=Fl_Box.html#Fl_Box>Fl_Box</A>, <A href=Fl_Browser_.html#Fl_Browser_>Fl_Browser_</A>, <A href=Fl_Button.html#Fl_Button>Fl_Button</A>, <A href=Fl_Chart.html#Fl_Chart>Fl_Chart</A>, <A href=Fl_Clock_Output.html#Fl_Clock_Output>Fl_Clock_Output</A>,
<A href=Fl_Free.html#Fl_Free>Fl_Free</A>, <A href=Fl_Group.html#Fl_Group>Fl_Group</A>, <A href=Fl_Input_.html#Fl_Input_>Fl_Input_</A>, <A href=Fl_Menu_.html#Fl_Menu_>Fl_Menu_</A>, <A href=Fl_Positioner.html#Fl_Positioner>Fl_Positioner</A>,
<A HREF="Fl_Progress.html">Fl_Progress</A>, <A href=Fl_Timer.html#Fl_Timer>Fl_Timer</A>, <A href=Fl_Valuator.html#Fl_Valuator>Fl_Valuator</A>
</PRE>
@@ -128,16 +132,19 @@ will destroy all of the child widgets and groups in that group.
<H4><A name=Fl_Widget.active>int Fl_Widget::active() const</A><BR>
-<A name=Fl_Widget.active_r>int Fl_Widget::active_r() const</A></BR>
-<A name=Fl_Widget.activate>void Fl_Widget::activate()</A></BR>
+<A name=Fl_Widget.active_r>int Fl_Widget::active_r() const</A><BR>
+<A name=Fl_Widget.activate>void Fl_Widget::activate()</A><BR>
<A name=Fl_Widget.deactivate>void Fl_Widget::deactivate()</A></H4>
<P><TT>Fl_Widget::active()</TT> returns whether the widget is
active. <TT>Fl_Widget::active_r()</TT> returns whether the
-widget and all of its parents are active. An inactive widget
-does not get any events, but it does get redrawn. A widget is
-only active if <TT>active()</TT> is true on it <I>and all of its
-parents</I>.
+widget and all of its parents are active. Inactive widgets
+will be drawn "grayed out", e.g. with less contrast than the
+active widget. Inactive widgets will not receive any keyboard or
+mouse button events. Other events (including <tt>FL_ENTER</tt>,
+<tt>FL_MOVE</tt>, <tt>FL_LEAVE</tt>, <tt>FL_SHORTCUT</tt>, and
+others) will still be sent. A widget is only active if
+<TT>active()</TT> is true on it <I>and all of its parents</I>.
<P>Changing this value will send <TT>FL_ACTIVATE</TT> or <TT>
FL_DEACTIVATE</TT> to the widget if <tt>active_r()</tt> is true.
@@ -224,7 +231,7 @@ the program sets the stored value. </P>
<P>Hides the widget; you must still redraw the parent to see a
change in the window. Normally you want to use the <A
-HREF="#Fl_Widget.hide"><CODE>hide()</CODE> method instead.
+HREF="#Fl_Widget.hide"><CODE>hide()</CODE></A> method instead.
<H4><A NAME="Fl_Widget.clear_visible_focus">void Fl_Window::clear_visible_focus();</A></H4>
@@ -425,6 +432,10 @@ resizing. The default version does <I>not</I> call the
widget to do so because the parent may know a faster way to
update the display, such as scrolling from the old position.
+<P>Some window managers under X11 call <TT>resize</TT> a lot more
+often than needed. Please verify that the position or size of
+a widget did actually change before doing any extensiive calculations.
+
<P><TT>position(x,y)</TT> is a shortcut for <TT>resize(x,y,w(),h())</TT>,
and <TT>size(w,h)</TT> is a shortcut for <TT>resize(x(),y(),w,h)</TT>.</P>
@@ -462,6 +473,11 @@ window when the user hovers the mouse over the widget. The
string is <I>not</I> copied, so make sure any formatted string
is stored in a <TT>static</TT>, global, or allocated buffer.
+<P>If no tooltip is set, the tooltip of the parent is inherited.
+Setting a tooltip for a group and setting no tooltip for a child
+will show the group's tooltip instead. To avoid this behavior,
+you can set the child's tooltip to an empty string
+(<tt>&quot;&quot;</tt>).
<H4><A NAME="Fl_Widget.type">uchar Fl_Widget::type() const;</A></H4>
@@ -533,7 +549,7 @@ int Fl_Widget::visible_focus();</H4>
<P>Modifies keyboard focus navigation.
See <A HREF="#Fl_Widget.set_visible_focus"><code>set_visible_focus()</code></a> and
-<A HREF="#Fl_Widget.cleare_visible_focus"><code>clear_visible_focus()</code></a>.
+<A HREF="#Fl_Widget.clear_visible_focus"><code>clear_visible_focus()</code></a>.
The second form returns non-zero if this widget will participate in keyboard focus navigation.
<H4><A name=Fl_Widget.when>Fl_When Fl_Widget::when() const
diff --git a/documentation/Fl_Window.html b/documentation/Fl_Window.html
index 089503b..4fdf29f 100644
--- a/documentation/Fl_Window.html
+++ b/documentation/Fl_Window.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>Fl_Window</TITLE>
+</HEAD>
+<BODY>
<!-- NEW PAGE -->
<H2><A name=Fl_Window>class Fl_Window</A></H2>
<HR>
@@ -88,14 +92,16 @@ is not <tt>NULL</tt>, the window is created as a subwindow of
the parent window.</p>
<p>The first form of the constructor creates a top-level window
-and tells the window manager to position the window. The second
+and asks the window manager to position the window. The second
form of the constructor either creates a subwindow or a
top-level window at the specified location, subject to window
manager configuration. If you do not specify the position of the
window, the window manager will pick a place to show the window
or allow the user to pick a location. Use <tt>position(x,y)</tt>
-or <tt>hotspot()</tt> before calling <tt>show()</tt> to force a
-position on the screen.</p>
+or <tt>hotspot()</tt> before calling <tt>show()</tt> to request a
+position on the screen. See <TT><A href="#Fl_Window.resize">
+Fl_Window::resize()</A></TT> for some more details on positioning
+windows.</p>
<p>Top-level windows initially have <tt>visible()</tt> set to 0
and <tt>parent()</tt> set to <tt>NULL</tt>. Subwindows initially
@@ -176,7 +182,6 @@ FL_SHOW</TT> events and <TT>visible()</TT> is turned on and off. </P>
<P>There is no way to control what is drawn in the icon except with the
string passed to <TT>Fl_Window::xclass()</TT>. You should not rely on
window managers displaying the icons. </P>
-
<H4><A name=Fl_Window.resize>void Fl_Window::resize(int,int,int,int)</A></H4>
Change the size and position of the window. If <TT>shown()</TT> is
true, these changes are communicated to the window server (which may
@@ -187,6 +192,11 @@ of resizing on the child widgets.
<P>You can also call the <TT>Fl_Widget</TT> methods <TT>size(x,y)</TT>
and <TT>position(w,h)</TT>, which are inline wrappers for this virtual
function. </P>
+<P>A top-level window can not force, but merely suggest a position and
+size to the operating system. The window manager may not be willing or
+able to display a window at the desired position or with the given
+dimensions. It is up to the application developer to verify window
+parameters after the <tt>resize</tt> request.
<H4><A name=Fl_Window.free_position>void Fl_Window::free_position()</A></H4>
Undoes the effect of a previous <TT>resize()</TT> or <TT>show()</TT>
so that the next time <TT>show()</TT> is called the window manager is
@@ -252,7 +262,8 @@ and &quot;xprog.1&quot; turns into &quot;xprog, XProg&quot;.</I> This only works
before</I> calling <TT>show()</TT>.
<P>Under Microsoft Windows this string is used as the name of the
WNDCLASS structure, though it is not clear if this can have any
-visible effect. </P>
+visible effect. The passed pointer is stored unchanged. The string
+is not copied.</P>
<H4><A name=Fl_Window.make_current>void Fl_Window::make_current()</A></H4>
<TT>make_current()</TT> sets things up so that the drawing functions in <A
href=drawing.html#drawing><TT>&lt;FL/fl_draw.H&gt;</TT></A> will go into this
diff --git a/documentation/Fl_Wizard.html b/documentation/Fl_Wizard.html
index d0b4b8b..1a0f456 100644
--- a/documentation/Fl_Wizard.html
+++ b/documentation/Fl_Wizard.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_Wizard</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
@@ -9,7 +12,7 @@
<H3>Class Hierarchy</H3>
<UL><PRE>
-Fl_Group
+<A href=Fl_Group.html#Fl_Group>Fl_Group</A>
|
+----<B>Fl_Wizard</B>
</PRE></UL>
diff --git a/documentation/Fl_XBM_Image.html b/documentation/Fl_XBM_Image.html
index 22180f8..5eb6903 100644
--- a/documentation/Fl_XBM_Image.html
+++ b/documentation/Fl_XBM_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_XBM_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Fl_XPM_Image.html b/documentation/Fl_XPM_Image.html
index e53dfad..d3e9e3e 100644
--- a/documentation/Fl_XPM_Image.html
+++ b/documentation/Fl_XPM_Image.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>Fl_XPM_Image</TITLE>
+</HEAD>
<BODY>
<!-- NEW PAGE -->
diff --git a/documentation/Makefile b/documentation/Makefile
index 4e6b354..941fe0e 100644
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 4756 2006-01-15 18:36:16Z mike $"
+# "$Id: Makefile 5663 2007-02-06 19:35:28Z mike $"
#
# Documentation makefile for the Fast Light Tool Kit (FLTK).
#
-# Copyright 1998-2005 by Bill Spitzak and others.
+# Copyright 1998-2007 by Bill Spitzak and others.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -54,6 +54,7 @@ HTMLFILES = \
subclassing.html \
opengl.html \
fluid.html \
+ advanced.html \
widgets.html \
Fl.html \
Fl_Adjuster.html \
@@ -68,6 +69,7 @@ HTMLFILES = \
Fl_Check_Button.html \
Fl_Choice.html \
Fl_Clock.html \
+ Fl_Clock_Output.html \
Fl_Color_Chooser.html \
Fl_Counter.html \
Fl_Dial.html \
@@ -129,6 +131,7 @@ HTMLFILES = \
Fl_Tile.html \
Fl_Tiled_Image.html \
Fl_Timer.html \
+ Fl_Toggle_Button.html \
Fl_Tooltip.html \
Fl_Valuator.html \
Fl_Value_Input.html \
@@ -145,7 +148,8 @@ HTMLFILES = \
forms.html \
osissues.html \
migration.html \
- license.html
+ license.html \
+ examples.html
IMAGEFILES = \
adjuster1.gif \
@@ -212,7 +216,7 @@ IMAGEFILES = \
MANPAGES = fltk.$(CAT3EXT) fltk-config.$(CAT1EXT) fluid.$(CAT1EXT) \
- checkers.$(CAT6EXT) sudoku.$(CAT6EXT)
+ blocks.$(CAT6EXT) checkers.$(CAT6EXT) sudoku.$(CAT6EXT)
all: $(MANPAGES)
@@ -228,38 +232,31 @@ depend:
install: $(MANPAGES)
echo "Installing documentation files in $(DESTDIR)$(docdir)..."
- -$(MKDIR) $(DESTDIR)$(docdir)
- $(CP) $(HTMLFILES) $(IMAGEFILES) index.html $(DESTDIR)$(docdir)
- $(CHMOD) 644 $(DESTDIR)$(docdir)/*.*
+ -$(INSTALL_DIR) $(DESTDIR)$(docdir)
+ for file in $(HTMLFILES) $(IMAGEFILES) index.html; do \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(docdir); \
+ done
echo "Installing man pages in $(DESTDIR)$(mandir)..."
- -$(MKDIR) $(DESTDIR)$(mandir)/cat1
- $(CP) fluid.$(CAT1EXT) $(DESTDIR)$(mandir)/cat1
- $(CHMOD) 644 $(DESTDIR)$(mandir)/cat1/fluid.$(CAT1EXT)
- $(CP) fltk-config.$(CAT1EXT) $(DESTDIR)$(mandir)/cat1
- $(CHMOD) 644 $(DESTDIR)$(mandir)/cat1/fltk-config.$(CAT1EXT)
- -$(MKDIR) $(DESTDIR)$(mandir)/cat3
- $(CP) fltk.$(CAT3EXT) $(DESTDIR)$(mandir)/cat3
- $(CHMOD) 644 $(DESTDIR)$(mandir)/cat3/fltk.$(CAT3EXT)
- -$(MKDIR) $(DESTDIR)$(mandir)/man1
- $(CP) fluid.man $(DESTDIR)$(mandir)/man1/fluid.1
- $(CHMOD) 644 $(DESTDIR)$(mandir)/man1/fluid.1
- $(CP) fltk-config.man $(DESTDIR)$(mandir)/man1/fltk-config.1
- $(CHMOD) 644 $(DESTDIR)$(mandir)/man1/fltk-config.1
- -$(MKDIR) $(DESTDIR)$(mandir)/man3
- $(CP) fltk.man $(DESTDIR)$(mandir)/man3/fltk.3
- $(CHMOD) 644 $(DESTDIR)$(mandir)/man3/fltk.3
+ -$(INSTALL_DIR) $(DESTDIR)$(mandir)/cat1
+ $(INSTALL_MAN) fluid.$(CAT1EXT) $(DESTDIR)$(mandir)/cat1
+ $(INSTALL_MAN) fltk-config.$(CAT1EXT) $(DESTDIR)$(mandir)/cat1
+ -$(INSTALL_DIR) $(DESTDIR)$(mandir)/cat3
+ $(INSTALL_MAN) fltk.$(CAT3EXT) $(DESTDIR)$(mandir)/cat3
+ -$(INSTALL_DIR) $(DESTDIR)$(mandir)/man1
+ $(INSTALL_MAN) fluid.man $(DESTDIR)$(mandir)/man1/fluid.1
+ $(INSTALL_MAN) fltk-config.man $(DESTDIR)$(mandir)/man1/fltk-config.1
+ -$(INSTALL_DIR) $(DESTDIR)$(mandir)/man3
+ $(INSTALL_MAN) fltk.man $(DESTDIR)$(mandir)/man3/fltk.3
install-linux install-osx:
- -$(MKDIR) $(DESTDIR)$(mandir)/cat6
- $(CP) checkers.$(CAT6EXT) $(DESTDIR)$(mandir)/cat6
- $(CHMOD) 644 $(DESTDIR)$(mandir)/cat6/checkers.$(CAT6EXT)
- $(CP) sudoku.$(CAT6EXT) $(DESTDIR)$(mandir)/cat6
- $(CHMOD) 644 $(DESTDIR)$(mandir)/cat6/sudoku.$(CAT6EXT)
- -$(MKDIR) $(DESTDIR)$(mandir)/man6
- $(CP) checkers.man $(DESTDIR)$(mandir)/man6/checkers.6
- $(CHMOD) 644 $(DESTDIR)$(mandir)/man6/checkers.6
- $(CP) sudoku.man $(DESTDIR)$(mandir)/man6/sudoku.6
- $(CHMOD) 644 $(DESTDIR)$(mandir)/man6/sudoku.6
+ -$(INSTALL_DIR) $(DESTDIR)$(mandir)/cat6
+ $(INSTALL_MAN) blocks.$(CAT6EXT) $(DESTDIR)$(mandir)/cat6
+ $(INSTALL_MAN) checkers.$(CAT6EXT) $(DESTDIR)$(mandir)/cat6
+ $(INSTALL_MAN) sudoku.$(CAT6EXT) $(DESTDIR)$(mandir)/cat6
+ -$(INSTALL_DIR) $(DESTDIR)$(mandir)/man6
+ $(INSTALL_MAN) blocks.man $(DESTDIR)$(mandir)/man6/blocks.6
+ $(INSTALL_MAN) checkers.man $(DESTDIR)$(mandir)/man6/checkers.6
+ $(INSTALL_MAN) sudoku.man $(DESTDIR)$(mandir)/man6/sudoku.6
uninstall:
@@ -272,8 +269,10 @@ uninstall:
$(RM) $(DESTDIR)$(mandir)/man3/fltk.3
uninstall-linux uninstall-osx:
+ $(RM) $(DESTDIR)$(mandir)/cat6/blocks.$(CAT6EXT)
$(RM) $(DESTDIR)$(mandir)/cat6/checkers.$(CAT6EXT)
$(RM) $(DESTDIR)$(mandir)/cat6/sudoku.$(CAT6EXT)
+ $(RM) $(DESTDIR)$(mandir)/man6/blocks.6
$(RM) $(DESTDIR)$(mandir)/man6/checkers.6
$(RM) $(DESTDIR)$(mandir)/man6/sudoku.6
@@ -282,7 +281,7 @@ uninstall-linux uninstall-osx:
fltk.d/index.html: $(HTMLFILES) $(IMAGEFILES)
echo "Generating HTML documentation..."
-$(RMDIR) fltk.d
- -$(MKDIR) fltk.d
+ -$(INSTALL_DIR) fltk.d
-$(HTMLDOC) --verbose --batch fltk.book -d fltk.d -t html
fltk.ps: $(HTMLFILES) $(IMAGEFILES)
@@ -296,5 +295,5 @@ fltk.pdf: $(HTMLFILES) $(IMAGEFILES)
-$(HTMLDOC) --verbose --batch fltk.book $(MEDIA) -f fltk.pdf
#
-# End of "$Id: Makefile 4756 2006-01-15 18:36:16Z mike $".
+# End of "$Id: Makefile 5663 2007-02-06 19:35:28Z mike $".
#
diff --git a/documentation/advanced.html b/documentation/advanced.html
new file mode 100644
index 0000000..774a75c
--- /dev/null
+++ b/documentation/advanced.html
@@ -0,0 +1,95 @@
+<HTML>
+<HEAD>
+ <TITLE>10 - Advanced FLTK</TITLE>
+</HEAD>
+<BODY>
+
+<H1 ALIGN="RIGHT"><A NAME="advanced">10 - Advanced FLTK</A></H1>
+
+<P>This chapter explains advanced programming and design topics
+that will help you to get the most out of FLTK.</P>
+
+<H2><A NAME="multithreading">Multithreading</H2>
+
+<P>FLTK supports multithreaded application using a locking mechanism based on "pthreads". We do not provide a threading interface as part of the library. However a simple example how threads can be implemented for all supported platforms can be found in <tt>test/threads.h</tt> and <tt>test/threads.cxx</tt>.
+
+<P>To use the locking mechanism, FLTK must be compiled with <tt>--enable-threads</tt> set during the <tt>configure</tt> process. IDE-based versions of FLTK are automatically compiled with locking enabled if possible.
+
+<P>In <TT>main()</TT>, call <a href="Fl.html#Fl.lock"><TT>Fl::lock()</TT></A> before <A HREF="Fl.html#Fl.run"><TT>Fl::run()</TT></A> or <A HREF="Fl.html#Fl.wait"><TT>Fl::wait()</TT></A> to start the runtime multithreading support for your program. All callbacks and derived functions like <tt>handle()</tt> and <tt>draw()</tt> will now be properly locked:</P>
+
+<pre>
+ int main() {
+ Fl::lock();
+ /* run thread */
+ while (Fl::wait() &gt; 0) {
+ if (Fl::thread_message()) {
+ /* process your data */
+ }
+ }
+ }
+</pre>
+
+<P>You can now start as many threads as you like. From within
+a thread (other than the main thread) FLTK calls must be wrapped
+with calls to <a href="Fl.html#Fl.lock"><tt>Fl::lock()</tt></a>
+and <a href="Fl.html#Fl.unlock"><tt>Fl::unlock()</tt></a>:
+
+<pre>
+ Fl::lock(); // avoid conflicting calls
+ ... // your code here
+ Fl::unlock(); // allow other threads to access FLTK again
+</pre>
+
+<p>You can send messages from child threads to the main thread
+using <a href="Fl.html#Fl.awake"><tt>Fl::awake(msg)</tt></a>:</p>
+
+<pre>
+ void *msg; // "msg" is a pointer to your message
+ Fl::awake(msg); // send "msg" to main thread
+</pre>
+
+<p>You can also tell the main thread to call a function for you
+as soon as possible by using
+<a href="Fl.html#Fl.awake"><tt>Fl::awake(callback, userdata)</tt></a>:</p>
+
+<pre>
+ void do_something(void *userdata) {
+ // running with the main thread
+ }
+
+ // running in another thread
+ void *data; // "data" is a pointer to your user data
+ Fl::awake(do_something, data); // call something in main thread
+</pre>
+
+
+<P>FLTK supports multiple platforms, some of them which do not
+allow any other but the main thread to handle system events and
+open or close windows. The safe thing to do is to adhere to the
+following rules for threads on all operating systems:
+
+<ul>
+
+<li>Don't <tt>show()</tt> or <tt>hide()</tt>anything that contains
+widgets derived from <tt>Fl_Window</tt>, including dialogs, file
+choosers, subwindows or <tt>Fl_GL_Window</tt>s</li>
+
+<li>Don't call <tt>Fl::wait()</tt>, <tt>Fl::flush()</tt> or any
+related methods that will handle system messages</li>
+
+<li>Don't start or cancel timers</li>
+
+<li>Don't change window decorations or titles</li>
+
+<li>The <tt>make_current()</tt> method may or may not work well for regular windows, but should always work for <tt>Fl_GL_Window</tt>s to allow for high speed rendering on graphics cards with multiple pipelines</li>
+
+</ul>
+
+<P>See also:
+<a href="Fl.html#Fl.awake">void awake(void *message)</A>,
+<a href="Fl.html#Fl.lock">void lock()</A>,
+<a href="Fl.html#Fl.thread_message">void *thread_message()</A>,
+<a href="Fl.html#Fl.unlock">void unlock()</A>.
+
+</BODY>
+</HTML>
diff --git a/documentation/basics.html b/documentation/basics.html
index 7958cc1..94d0c20 100644
--- a/documentation/basics.html
+++ b/documentation/basics.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>2 - FLTK Basics</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="basics">2 - FLTK Basics</A></H1>
@@ -108,7 +111,7 @@ the widget. You can learn more about boxtypes in
<A href="common.html#boxtypes">Chapter 3</A>.</P>
<P>You could examine the boxtype in by doing
-<tt>box->box()</tt>. FLTK uses method name overloading to make
+<tt>box-&gt;box()</tt>. FLTK uses method name overloading to make
short names for get/set methods. A "set" method is always of
the form "void&nbsp;name(type)", and a "get" method is always
of the form "type&nbsp;name()&nbsp;const".</P>
diff --git a/documentation/blocks.man b/documentation/blocks.man
new file mode 100644
index 0000000..9203007
--- /dev/null
+++ b/documentation/blocks.man
@@ -0,0 +1,26 @@
+.TH blocks 6 "FLTK Checkers" "15 January 2006"
+.SH NAME
+blocks \- the fltk block attack! game
+.sp
+.SH SYNOPSIS
+\fIBlocks\fR is a FLTK-based block elimination game. Stacks of
+colored blocks move from right to left as you try to eliminate
+groups adjacent blocks by clicking on them. As the game
+progresses, more colors are added (up to a maximum of 7) and the
+blocks move faster and faster.
+.SH GAME PLAY
+Press the N key to start a game. As the blocks move across the
+window, click on groups of two or more blocks to clear them - the
+larger the number of adjacent blocks, the greater the score.
+Clicking on a blocks containing a dark ball will clear all blocks
+of that color, however you will score much fewer points than a
+normal click. The game is over when the blocks reach the left
+side of the window.
+.LP
+Press the spacebar to pause the game.
+.SH SEE ALSO
+fltk(3)
+.br
+FLTK Web Site, http://www.fltk.org/
+.SH AUTHOR
+Michael R Sweet.
diff --git a/documentation/common.html b/documentation/common.html
index ef171b2..6462bc2 100644
--- a/documentation/common.html
+++ b/documentation/common.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>3 - Common Widgets and Attributes</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="common">3 - Common Widgets and Attributes</A></H1>
@@ -318,6 +321,27 @@ void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
}
</PRE></UL>
+<H4><A name="fl_down">Fl_Boxtype fl_down(Fl_Boxtype)</A></H4>
+
+<P><tt>fl_down</tt> returns the "pressed" or "down" version of a box.
+If no "down" version of a given box exists, the behavior of this function
+is undefined and some random box or frame is returned.
+See also: <A HREF="drawing.html#fl_frame">fl_frame drawing</A>.
+
+<H4><A name="fl_frame">Fl_Boxtype fl_frame(Fl_Boxtype)</A></H4>
+
+<P><tt>fl_frame</tt> returns the unfilled, frame-only version of a box.
+If no frame version of a given box exists, the behavior of this function
+is undefined and some random box or frame is returned.
+See also: <A HREF="drawing.html#fl_frame">fl_frame drawing</A>.
+
+<H4><A name="fl_box">Fl_Boxtype fl_box(Fl_Boxtype)</A></H4>
+
+<P><tt>fl_box</tt> returns the filled version of a frame.
+If no filled version of a given frame exists, the behavior of this function
+is undefined and some random box or frame is returned.
+See also: <TT><A HREF="#fl_frame">fl_frame</A></TT>.
+
<H4>Adding Your Box Type</H4>
<P>The <TT>Fl::set_boxtype()</TT> method adds or replaces the
@@ -333,6 +357,16 @@ Fl::set_boxtype(XYZ_BOX, xyz_draw, 1, 1, 2, 2);
offsets for the x, y, width, and height values that should be
subtracted when drawing the label inside the box.</P>
+<P>A complete box design contains four box types in this order:
+a filled, neutral box (<TT>UP_BOX</TT>), a filled, depressed box
+(<TT>DOWN_BOX</TT>), and the same as outlines only (<TT>UP_FRAME</TT>
+and <TT>DOWN_FRAME</TT>). The function
+<TT><A HREF="#fl_down">fl_down(Fl_Boxtype)</A></TT>
+expects the neutral design on a boxtype with a numerical
+value evenly divideable by two.
+<TT><A HREF="#fl_frame">fl_frame(Fl_Boxtype)</A></TT>
+expects the <TT>UP_BOX</TT> design at a value divideable by four.</P>
+
<H2><A NAME="labels">Labels and Label Types</A></H2>
<P>The <TT>label()</TT>, <TT>align()</TT>, <TT>labelfont()</TT>,
@@ -372,7 +406,7 @@ sign. Figure 3-4 shows the available symbols.</P>
</UL>
<P>Thus, to show a very large arrow pointing downward you would use the
-label string "@+92->".
+label string "@+92-&gt;".
<H3>align()</H3>
@@ -507,6 +541,33 @@ method to select your label type.</P>
<P>The <TT>Fl::set_labeltype</TT> method can also be used to overload
an existing label type such as <TT>FL_NORMAL_LABEL</TT>.</P>
+<H4><A NAME="add_symbol">Making your own symbols</A></H4>
+
+<P>It is also possible to define your own drawings and add
+them to the symbol list, so they can be rendered as part of
+any label.</P>
+
+<P>To create a new symbol, you implement a drawing function
+<tt>void drawit(Fl_Color c)</tt> which typically uses the
+<a href="drawing.html#complex">complex drawing functions</a>
+to generate a vector shape inside a two-by-two units sized box
+around the origin. This function is then linked into the symbols
+table using <tt>fl_add_symbol</tt>:</P>
+
+<UL><PRE>
+<A NAME="fl_add_symbol">int fl_add_symbol(const char *name, void (*drawit)(Fl_Color), int scalable)</A>
+</PRE></UL>
+
+<P><i>name</i> is the name of the symbol without the "@"; <i>scalable</I>
+must be set to 1 if the symbol is generated using scalable vector drawing
+functions.</P>
+
+<UL><PRE>
+<A NAME="fl_draw_symbol">int fl_draw_symbol(const char *name,int x,int y,int w,int h,Fl_Color col)</A>
+</PRE></UL>
+
+<P>This function draw a named symbol fitting the given rectangle.
+
<H2>Callbacks</H2>
<P>Callbacks are functions that are called when the value of a
@@ -572,15 +633,15 @@ button-&gt;when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED);
pointer to the instance of your class.</P>
<PRE>
-class foo {
- void my_callback(Widget *);
- static void my_static_callback(Widget *w, foo *f) { f->my_callback(w); }
+class Foo {
+ void my_callback(Fl_Widget *w);
+ static void my_static_callback(Fl_Widget *w, void *f) { ((Foo *)f)-&gt;my_callback(w); }
...
}
...
-w->callback(my_static_callback, this);
+w-&gt;callback(my_static_callback, (void *)this);
</PRE>
</TD>
</TR>
diff --git a/documentation/drawing.html b/documentation/drawing.html
index a867dc7..f003e5a 100644
--- a/documentation/drawing.html
+++ b/documentation/drawing.html
@@ -1,7 +1,10 @@
<HTML>
+<HEAD>
+ <TITLE>5 - Drawing Things in FLTK</TITLE>
+</HEAD>
<BODY>
-<H1><A NAME="drawing">5 - Drawing Things in FLTK</A></H1>
+<H1 ALIGN="RIGHT"><A NAME="drawing">5 - Drawing Things in FLTK</A></H1>
<P>This chapter covers the drawing functions that are provided with FLTK.
@@ -64,6 +67,8 @@ following types of drawing functions:
<LI><A href="#overlay">Overlay</A></LI>
+ <LI><A href="#offscreen">Offscreen Drawing</A></LI>
+
</UL>
<H3><A name="boxdraw">Boxes</A></H3>
@@ -92,6 +97,8 @@ not a multiple of 4 characters in length are undefined.
<P>The only difference between this function and
<CODE>fl_frame2()</CODE> is the order of the line segments.
+<P>See also: <A HREF="common.html#fl_frame">fl_frame boxtype</A>.
+
<H4><A NAME="fl_frame2">void fl_frame2(const char *s, int x, int y, int w, int h);</A></H4>
<P>The <CODE>fl_frame2()</CODE> function draws a series of line
@@ -122,11 +129,11 @@ void fl_push_clip(int x, int y, int w, int h)</H4>
region onto the stack. The <CODE>fl_clip()</CODE> name is deprecated and
will be removed from future releases.
-<H4>void fl_push_no_clip()</H4>
+<H4><A NAME=fl_push_no_clip>void fl_push_no_clip()</A></H4>
<P>Pushes an empty clip region on the stack so nothing will be clipped.
-<H4>void fl_pop_clip()</H4>
+<H4><A NAME=fl_pop_clip>void fl_pop_clip()</A></H4>
<P>Restore the previous clip region.
@@ -143,7 +150,7 @@ will be removed from future releases.
</TR>
</TABLE></CENTER>
-<H4>int fl_not_clipped(int x, int y, int w, int h)</H4>
+<H4><A NAME=fl_not_clipped>int fl_not_clipped(int x, int y, int w, int h)</A></H4>
<P>Returns non-zero if any of the rectangle intersects the current clip
region. If this returns 0 you don't have to draw the object.
@@ -159,8 +166,8 @@ region. If this returns 0 you don't have to draw the object.
</TR>
</TABLE></CENTER>
-<H4>int fl_clip_box(int x, int y, int w, int h, int &amp;X, int &amp;Y, int &amp;W,
-int &amp;H)</H4>
+<H4><A NAME=fl_clip_box>int fl_clip_box(int x, int y, int w, int h, int &amp;X, int &amp;Y, int &amp;W,
+int &amp;H)</A></H4>
<P>Intersect the rectangle <TT>x,y,w,h</TT> with the current
clip region and returns the bounding box of the result in
@@ -169,6 +176,13 @@ different than the original. This can be used to limit the
necessary drawing to a rectangle. <TT>W</TT> and <TT>H</TT> are
set to zero if the rectangle is completely outside the region.
+<H4><A NAME=fl_clip_region>void fl_clip_region(Fl_Region r)
+<BR>Fl_Region fl_clip_region()</A></H4>
+
+<P>Replace the top of the clip stack with a clipping region of any shape.
+Fl_Region is an operating system specific type. The second form returns
+the current clipping region.
+
<H3><A name="colors">Colors</A></H3>
<P>FLTK manages colors as 32-bit unsigned integers. Values from
@@ -215,7 +229,7 @@ widths. Full functionality is not available under Windows 95, 98,
and Me due to the reduced drawing functionality these operating
systems provide.
-<h4>void fl_line_style(int style, int width=0, char* dashes=0)</h4>
+<h4><A NAME="fl_line_style">void fl_line_style(int style, int width=0, char* dashes=0)</A></h4>
<P>Set how to draw lines (the "pen"). If you change this it is your
responsibility to set it back to the default with
@@ -300,11 +314,12 @@ href="#complex">transformation matrix</A>, so you should only
call these while the matrix is set to the identity matrix (the
default).
-<H4>void fl_point(int x, int y)</H4>
+<H4><A NAME=fl_point>void fl_point(int x, int y)</A></H4>
<P>Draw a single pixel at the given coordinates.
-<H4>void fl_rectf(int x, int y, int w, int h)</H4>
+<H4><A NAME=fl_rectf>void fl_rectf(int x, int y, int w, int h)
+<BR>void fl_rectf(int x, int y, int w, int h)</A></H4>
<P>Color a rectangle that exactly fills the given bounding box.
@@ -316,43 +331,44 @@ color this is done by drawing a solid-colored block using <A
href="#fl_draw_image"><TT>fl_draw_image()</TT></A> so that
the correct color shade is produced.
-<H4>void fl_rect(int x, int y, int w, int h)</H4>
+<H4><A NAME=fl_rect>void fl_rect(int x, int y, int w, int h)
+<BR>void fl_rect(int x, int y, int w, int h, Fl_Color c)</A></H4>
<P>Draw a 1-pixel border <I>inside</I> this bounding box.
-<H4>void fl_line(int x, int y, int x1, int y1)
-<BR>void fl_line(int x, int y, int x1, int y1, int x2, int y2)</H4>
+<H4><A NAME=fl_line>void fl_line(int x, int y, int x1, int y1)
+<BR>void fl_line(int x, int y, int x1, int y1, int x2, int y2)</A></H4>
<P>Draw one or two lines between the given points.
-<H4>void fl_loop(int x, int y, int x1, int y1, int x2, int y2)
+<H4><A NAME=fl_loop>void fl_loop(int x, int y, int x1, int y1, int x2, int y2)
<BR>void fl_loop(int x, int y, int x1, int y1, int x2, int y2, int x3,
-int y3)</H4>
+int y3)</A></H4>
<P>Outline a 3 or 4-sided polygon with lines.
-<H4>void fl_polygon(int x, int y, int x1, int y1, int x2, int y2)
+<H4><A NAME=fl_polygon>void fl_polygon(int x, int y, int x1, int y1, int x2, int y2)
<BR>void fl_polygon(int x, int y, int x1, int y1, int x2, int y2, int
-x3, int y3)</H4>
+x3, int y3)</A></H4>
<P>Fill a 3 or 4-sided polygon. The polygon must be convex.
-<H4>void fl_xyline(int x, int y, int x1)
+<H4><A NAME=fl_xyline>void fl_xyline(int x, int y, int x1)
<BR>void fl_xyline(int x, int y, int x1, int y2)
-<BR>void fl_xyline(int x, int y, int x1, int y2, int x3)</H4>
+<BR>void fl_xyline(int x, int y, int x1, int y2, int x3)</A></H4>
<P>Draw horizontal and vertical lines. A horizontal line is
drawn first, then a vertical, then a horizontal.
-<H4>void fl_yxline(int x, int y, int y1)
+<H4><A NAME=fl_yxline>void fl_yxline(int x, int y, int y1)
<BR>void fl_yxline(int x, int y, int y1, int x2)
-<BR>void fl_yxline(int x, int y, int y1, int x2, int y3)</H4>
+<BR>void fl_yxline(int x, int y, int y1, int x2, int y3)</A></H4>
<P>Draw vertical and horizontal lines. A vertical line is drawn
first, then a horizontal, then a vertical.
-<H4>void fl_arc(int x, int y, int w, int h, double a1, double a2)
-<BR>void fl_pie(int x, int y, int w, int h, double a1, double a2)</H4>
+<H4><A NAME=fl_pie>void fl_arc(int x, int y, int w, int h, double a1, double a2)
+<BR>void fl_pie(int x, int y, int w, int h, double a1, double a2)</A></H4>
<P>Draw ellipse sections using integer coordinates. These
functions match the rather limited circle drawing code provided
@@ -376,6 +392,14 @@ function described later in this chapter.</P>
extend outside the line drawn by <TT>fl_arc</TT>; to avoid this
use <TT>w - 1</TT> and <TT>h - 1</TT>.</P>
+<h4><a name=fl_scroll>void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
+void (*draw_area)(void*, int,int,int,int), void* data)</a></h4>
+
+<P>Scroll a rectangle and draw the newly exposed portions. The contents
+of the rectangular area is first shifted by <tt>dx</tt> and
+<tt>dy</tt> pixels. The callback is then called for every newly
+exposed rectangular area,
+
<H3><A name="complex">Drawing Complex Shapes</A></H3>
<P>The complex drawing functions let you draw arbitrary shapes
@@ -389,40 +413,56 @@ severely limits the accuracy of these functions for complex
graphics, so use OpenGL when greater accuracy and/or performance
is required.
-<H4>void fl_push_matrix()
-<BR>void fl_pop_matrix()</H4>
+<H4><A NAME=fl_push_matrix>void fl_push_matrix()
+<BR>void fl_pop_matrix()</A></H4>
<P>Save and restore the current transformation. The maximum
depth of the stack is 4.
-<H4>void fl_scale(float x, float y)
+<H4><A NAME=fl_scale>void fl_scale(float x, float y)
<BR>void fl_scale(float x)
<BR>void fl_translate(float x, float y)
<BR>void fl_rotate(float d)
<BR>void fl_mult_matrix(float a, float b, float c, float d, float
-x, float y)</H4>
+x, float y)</A></H4>
<P>Concatenate another transformation onto the current one. The rotation
angle is in degrees (not radians) and is counter-clockwise.
-<H4>void fl_begin_line()
-<BR>void fl_end_line()</H4>
+<H4><A NAME=fl_transform>double fl_transform_x(double x, double y)
+<BR>double fl_transform_y(double x, double y)
+<BR>double fl_transform_dx(double x, double y)
+<BR>double fl_transform_dy(double x, double y)
+<BR>void fl_transformed_vertex(double xf, double yf)</A></H4>
+
+<P>Transform a coordinate or a distance trough the current transformation matrix.
+After transforming a coordinate pair, it can be added to the vertex
+list without any forther translations using <tt>fl_transformed_vertex</tt>.
+
+<H4><A NAME=fl_begin_points>void fl_begin_points()
+<BR>void fl_end_points()</A></H4>
+
+<P>Start and end drawing a list of points. Points are added to
+the list with <tt>fl_vertex</tt>.
+
+<H4><A NAME=fl_begin_line>void fl_begin_line()
+<BR>void fl_end_line()</A></H4>
<P>Start and end drawing lines.
-<H4>void fl_begin_loop()
-<BR> void fl_end_loop()</H4>
+<H4><A NAME=fl_begin_loop>void fl_begin_loop()
+<BR> void fl_end_loop()</A></H4>
<P>Start and end drawing a closed sequence of lines.
-<H4>void fl_begin_polygon()
-<BR>void fl_end_polygon()</H4>
+<H4><A NAME= fl_begin_polygon>void fl_begin_polygon()
+<BR>void fl_end_polygon()</A></H4>
<P>Start and end drawing a convex filled polygon.
-<H4>void fl_begin_complex_polygon()
+<H4><A NAME=fl_begin_complex_polygon>void fl_begin_complex_polygon()
<BR>void fl_gap()
-<BR>void fl_end_complex_polygon()</H4>
+<BR>void fl_end_complex_polygon()</A></H4>
<P>Start and end drawing a complex filled polygon. This polygon
may be concave, may have holes in it, or may be several
@@ -451,11 +491,11 @@ fl_begin_complex_polygon()</TT> and
<TT>fl_begin_loop()</TT> and replace each <TT>fl_gap()</TT> with
<TT>fl_end_loop();fl_begin_loop()</TT>.</P>
-<H4>void fl_vertex(float x, float y)</H4>
+<H4><A NAME=fl_vertex>void fl_vertex(float x, float y)</A></H4>
Add a single vertex to the current path.
-<H4>void fl_curve(float x, float y, float x1, float y1, float x2, float
-y2, float x3, float y3)</H4>
+<H4><A NAME=fl_curve>void fl_curve(float x, float y, float x1, float y1, float x2, float
+y2, float x3, float y3)</A></H4>
<P>Add a series of points on a Bezier curve to the path. The curve ends
(and two of the points) are at <TT>x,y</TT> and <TT>x3,y3</TT>.
@@ -471,7 +511,7 @@ in degrees counter-clockwise from 3 o'clock. If <TT>end</TT> is
less than <TT>start</TT> then it draws the arc in a clockwise
direction.
-<H4>void fl_circle(float x, float y, float r)</H4>
+<H4><A NAME=fl_circle>void fl_circle(float x, float y, float r)</A></H4>
<P><TT>fl_circle()</TT> is equivalent to <TT>fl_arc(...,0,360)</TT> but
may be faster. It must be the <I>only</I> thing in the path: if you
@@ -494,8 +534,8 @@ want a circle as part of a complex polygon you must use <TT>fl_arc()</TT>.
It is undefined whether this location or the characters are
modified by the current transformation.
-<H4>void fl_draw(const char *, int x, int y)
-<BR>void fl_draw(const char *, int n, int x, int y)</H4>
+<H4><A NAME=fl_draw>void fl_draw(const char *, int x, int y)
+<BR>void fl_draw(const char *, int n, int x, int y)</A></H4>
<P>Draw a nul-terminated string or an array of <TT>n</TT> characters
starting at the given location. Text is aligned to the left and to
@@ -527,32 +567,33 @@ to look for symbol names starting with the "@" character.
<P>The text length is limited to 1024 caracters per line.
-<H4>void fl_measure(const char *, int &amp;w, int &amp;h, int draw_symbols = 1)</H4>
+<H4><A NAME=fl_measure>void fl_measure(const char *, int &amp;w,
+int &amp;h, int draw_symbols = 1)</A></H4>
<P>Measure how wide and tall the string will be when printed by
the <TT>fl_draw(...align)</TT> function. If the incoming
<TT>w</TT> is non-zero it will wrap to that width.
-<H4>int fl_height()</H4>
+<H4><A NAME=fl_height>int fl_height()</A></H4>
<P>Recommended minimum line spacing for the current font. You
can also just use the value of <TT>size</TT> passed to <A
href=#fl_font><TT>fl_font()</TT></A>.
-<H4>int fl_descent()</H4>
+<H4><A NAME=fl_descent>int fl_descent()</A></H4>
<P>Recommended distance above the bottom of a
<TT>fl_height()</TT> tall box to draw the text at so it looks
centered vertically in that box.
-<H4>float fl_width(const char*)
+<H4><A NAME=fl_width>float fl_width(const char*)
<BR>float fl_width(const char*, int n)
-<BR>float fl_width(uchar)</H4>
+<BR>float fl_width(uchar)</A></H4>
<P>Return the pixel width of a nul-terminated string, a sequence of <TT>n</TT>
characters, or a single character in the current font.
-<H4>const char *fl_shortcut_label(ulong)</H4>
+<H4><A NAME=fl_shortcut_label>const char *fl_shortcut_label(ulong)</A></H4>
<P>Unparse a shortcut value as used by <A
href="Fl_Button.html#Fl_Button.shortcut"><TT>Fl_Button</TT></A>
@@ -591,13 +632,41 @@ the display.
<TT>pixels</TT> and not "points". Lines should be spaced
<TT>size</TT> pixels apart or more.</P>
-<H4>int fl_font()
-<BR>int fl_size()</H4>
+<H4><A NAME=fl_size>int fl_font()
+<BR>int fl_size()</A></H4>
<P>Returns the face and size set by the most recent call to
<TT>fl_font(a,b)</TT>. This can be used to save/restore the
font.
+<H3><A NAME=character_encoding>Character Encoding</A></H3>
+
+<P>FLTK 1 supports western character sets using the eight bit encoding
+of the user-selected global code page. For MS Windows and X11, the code
+page is assumed to be Windows-1252/Latin1, a superset to ISO 8859-1.
+On Mac OS X, we assume MacRoman.
+
+<P>FLTK provides the functions <tt>fl_latin1_to_local</tt>,
+<tt>fl_local_to_latin1</tt>, <tt>fl_mac_roman_to_local</tt>, and
+<tt>fl_local_to_mac_roman</tt> to convert strings between both
+encodings. These functions are only required if your source
+code contains "C"-strings with international characters and
+if this source will be compiled on multiple platforms.
+
+<P>Assuming that the following source code was written on MS Windows,
+this example will output the correct label on OS X and X11 as well.
+Without the conversion call, the label on OS X would read
+<tt>Fahrvergn&cedil;gen</tt> with a deformed umlaut u.
+<PRE>
+ btn = new Fl_Button(10, 10, 300, 25);
+ btn-&gt;copy_label(fl_latin1_to_local("Fahrvergn&uuml;gen"));
+</PRE>
+
+<P>If your application uses characters that are not part of both
+encodings, or it will be used in areas that commonly use different
+code pages, yoou might consider upgrading to FLTK 2 which supports
+UTF-8 encoding.
+
<H3><A name="overlay">Drawing Overlays</A></H3>
<P>These functions allow you to draw interactive selection rectangles
@@ -720,7 +789,7 @@ the first one may be greater than zero.</P>
<P>If <TT>D</TT> is 4 or more, you must fill in the unused bytes
with zero.</P>
-<H4>int fl_draw_pixmap(char **data, int X, int Y, Fl_Color = FL_GRAY)</H4>
+<H4><A NAME=fl_draw_pixmap>int fl_draw_pixmap(char **data, int X, int Y, Fl_Color = FL_GRAY)</A></H4>
<P>Draws XPM image data, with the top-left corner at the given position.
The image is dithered on 8-bit displays so you won't lose color space
@@ -739,7 +808,7 @@ fl_draw_pixmap(foo, X, Y);
<TT>Fl_Color</TT> argument. To draw with true transparency you must
use the <A HREF="Fl_Pixmap.html"><TT>Fl_Pixmap</TT></A> class.
-<H4>int fl_measure_pixmap(char **data, int &amp;w, int &amp;h)</H4>
+<H4><A NAME=fl_measure_pixmap>int fl_measure_pixmap(char **data, int &amp;w, int &amp;h)</A></H4>
<P>An XPM image contains the dimensions in its data. This
function finds and returns the width and height. The return
@@ -799,13 +868,19 @@ color.
The <TT>draw()</TT> method draws the image using the colors in the
file, and masks off any transparent colors automatically.
-<P>The <TT>Fl_RGB_Image</TT> class encapsulates a full-color (or
-grayscale) image with 1 to 4 color components. Images with an
-even number of components are assumed to contain an alpha
-channel that is used for transparency. The transparency provided
-by the <TT>draw()</TT> method is either a 24-bit blend against
-the existing window contents or a "screen door" transparency
-mask, depending on the platform and screen color depth.
+<P>The <TT>Fl_RGB_Image</TT> class encapsulates a full-color
+(or grayscale) image with 1 to 4 color components. Images with
+an even number of components are assumed to contain an
+alpha channel that is used for transparency. The transparency
+provided by the <TT>draw()</TT> method is either a 24-bit
+blend against the existing window contents or a "screen door"
+transparency mask, depending on the platform and screen color depth.
+
+<H4><A NAME=fl_can_do_alpha_blending>char fl_can_do_alpha_blending()</A></H4>
+
+<P><TT>fl_can_do_alpha_blending()</TT> will return 1, if your
+platform supports true alpha blending for RGBA images, or 0,
+if FLTK will use screen door transparency.
<P>FLTK also provides several image classes based on the three
standard image types for common file formats:
@@ -858,7 +933,45 @@ image, and this area is left unchanged.
<H4>void draw(int x, int y)</H4>
<P>Draws the image with the upper-left corner at <TT>x,y</TT>.
-This is the same as doing <TT>draw(x,y,img->w(),img->h(),0,0)</TT>.
+This is the same as doing <TT>draw(x,y,img-&gt;w(),img-&gt;h(),0,0)</TT>.
+
+<h3><A NAME=offscreen>Offscreen Drawing</A></h3>
+
+Sometimes it can be very useful to generate a complex drawing
+in memory first and copy it to the screen at a later point in
+time. This technique can significantly reduce the amount of
+repeated drawing. <tt>Fl_Double_Window</tt> uses offscreen rendering
+to avoid flickering on systems that don't support
+double-buffering natively.
+
+<H4><A NAME=fl_create_offscreen>Fl_Offscreen fl_create_offscreen(int w, int h)</A></H4>
+
+<P>Create an RGB offscreen buffer with <tt>w*h</tt> pixels.
+
+<H4><A NAME=fl_create_offscreen_with_alpha>Fl_Offscreen fl_create_offscreen_with_alpha(int w, int h)</A></H4>
+
+<P>Create an RGBA offscreen buffer. Alpha blending is not available
+on all platforms.
+
+<H4><A NAME=fl_delete_offscreen>void fl_delete_offscreen(Fl_Offscreen)</A></H4>
+
+<P>Delete a previously created offscreen buffer. All drawings are lost.
+
+<H4><A NAME=fl_begin_offscreen>void fl_begin_offscreen(Fl_Offscreen)</A></H4>
+
+<P>Send all subsequent drawing commands to this offscreen buffer.
+FLTK can draw into a buffer at any time. There is no need to wait for
+an <tt>Fl_Widget::draw()</tt> to occur.
+
+<H4><A NAME=fl_end_offscreen>void fl_end_offscreen()</A></H4>
+
+<P>Quit sending drawing commands to this offscreen buffer.
+
+<H4><A NAME=fl_copy_offscreen>void fl_copy_offscreen(int x, int y,
+int w, int h, Fl_Offscreen osrc, int srcx, int srcy)</A></H4>
+
+<P>Copy a rectangular area of the size <tt>w*h</tt> from <tt>srcx, srcy</tt> in the offscreen
+buffer into the current buffer at <tt>x, y</tt>.
</BODY>
</HTML>
diff --git a/documentation/editor.html b/documentation/editor.html
index 963b592..c2dc39a 100644
--- a/documentation/editor.html
+++ b/documentation/editor.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>4 - Designing a Simple Text Editor</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="editor">4 - Designing a Simple Text Editor</A></H1>
@@ -120,22 +123,22 @@ m-&gt;copy(menuitems);
widget to edit the text:
<UL><PRE>
-w->editor = new Fl_Text_Editor(0, 30, 640, 370);
-w->editor->buffer(textbuf);
+w-&gt;editor = new Fl_Text_Editor(0, 30, 640, 370);
+w-&gt;editor-&gt;buffer(textbuf);
</PRE></UL>
<P>So that we can keep track of changes to the file, we also want to add
a &quot;modify&quot; callback:</P>
<UL><PRE>
-textbuf->add_modify_callback(changed_cb, w);
-textbuf->call_modify_callbacks();
+textbuf-&gt;add_modify_callback(changed_cb, w);
+textbuf-&gt;call_modify_callbacks();
</PRE></UL>
<P>Finally, we want to use a mono-spaced font like <TT>FL_COURIER</TT>:
<UL><PRE>
-w->editor->textfont(FL_COURIER);
+w-&gt;editor-&gt;textfont(FL_COURIER);
</PRE></UL>
<H2>The Replace Dialog</H2>
@@ -178,7 +181,7 @@ void changed_cb(int, int nInserted, int nDeleted,int, const char*, void* v) {
if ((nInserted || nDeleted) &amp;&amp; !loading) changed = 1;
EditorWindow *w = (EditorWindow *)v;
set_title(w);
- if (loading) w->editor->show_insert_position();
+ if (loading) w-&gt;editor-&gt;show_insert_position();
}
</PRE></UL>
@@ -196,7 +199,7 @@ to copy the currently selected text to the clipboard:</P>
<UL><PRE>
void copy_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
- Fl_Text_Editor::kf_copy(0, e->editor);
+ Fl_Text_Editor::kf_copy(0, e-&gt;editor);
}
</PRE></UL>
@@ -209,7 +212,7 @@ to cut the currently selected text to the clipboard:</P>
<UL><PRE>
void cut_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
- Fl_Text_Editor::kf_cut(0, e->editor);
+ Fl_Text_Editor::kf_cut(0, e-&gt;editor);
}
</PRE></UL>
@@ -221,7 +224,7 @@ to delete the currently selected text to the clipboard:</P>
<UL><PRE>
void delete_cb(Fl_Widget*, void* v) {
- textbuf->remove_selection();
+ textbuf-&gt;remove_selection();
}
</PRE></UL>
@@ -237,10 +240,10 @@ void find_cb(Fl_Widget* w, void* v) {
EditorWindow* e = (EditorWindow*)v;
const char *val;
- val = fl_input("Search String:", e->search);
+ val = fl_input("Search String:", e-&gt;search);
if (val != NULL) {
// User entered a string - go find it!
- strcpy(e->search, val);
+ strcpy(e-&gt;search, val);
find2_cb(w, v);
}
</PRE></UL>
@@ -254,21 +257,21 @@ search dialog:
<UL><PRE>
void find2_cb(Fl_Widget* w, void* v) {
EditorWindow* e = (EditorWindow*)v;
- if (e->search[0] == '\0') {
+ if (e-&gt;search[0] == '\0') {
// Search string is blank; get a new one...
find_cb(w, v);
return;
}
- int pos = e->editor->insert_position();
- int found = textbuf->search_forward(pos, e->search, &amp;pos);
+ int pos = e-&gt;editor-&gt;insert_position();
+ int found = textbuf-&gt;search_forward(pos, e-&gt;search, &amp;pos);
if (found) {
// Found a match; select and update the position...
- textbuf->select(pos, pos+strlen(e->search));
- e->editor->insert_position(pos+strlen(e->search));
- e->editor->show_insert_position();
+ textbuf-&gt;select(pos, pos+strlen(e-&gt;search));
+ e-&gt;editor-&gt;insert_position(pos+strlen(e-&gt;search));
+ e-&gt;editor-&gt;show_insert_position();
}
- else fl_alert("No occurrences of \'%s\' found!", e->search);
+ else fl_alert("No occurrences of \'%s\' found!", e-&gt;search);
}
</PRE></UL>
@@ -286,10 +289,10 @@ void new_cb(Fl_Widget*, void*) {
if (!check_save()) return;
filename[0] = '\0';
- textbuf->select(0, textbuf->length());
- textbuf->remove_selection();
+ textbuf-&gt;select(0, textbuf-&gt;length());
+ textbuf-&gt;remove_selection();
changed = 0;
- textbuf->call_modify_callbacks();
+ textbuf-&gt;call_modify_callbacks();
}
</PRE></UL>
@@ -320,7 +323,7 @@ to paste the clipboard at the current position:</P>
<UL><PRE>
void paste_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
- Fl_Text_Editor::kf_paste(0, e->editor);
+ Fl_Text_Editor::kf_paste(0, e-&gt;editor);
}
</PRE></UL>
@@ -566,7 +569,7 @@ void set_title(Fl_Window* w) {
if (changed) strcat(title, " (modified)");
- w->label(title);
+ w-&gt;label(title);
}
</PRE></UL>
@@ -584,9 +587,9 @@ int main(int argc, char **argv) {
Fl_Window* window = new_view();
- window->show(1, argv);
+ window-&gt;show(1, argv);
- if (argc > 1) load_file(argv[1], -1);
+ if (argc &gt; 1) load_file(argv[1], -1);
return Fl::run();
}
@@ -639,7 +642,7 @@ size of the text that is drawn.
<P>Styles are defined using the
<CODE>Fl_Text_Display::Style_Table_Entry</CODE> structure
-defined in <CODE>&lt;FL/Fl_Text_Display.H></CODE>:
+defined in <CODE>&lt;FL/Fl_Text_Display.H&gt;</CODE>:
<UL><PRE>
struct Style_Table_Entry {
@@ -680,7 +683,7 @@ style data and buffer with the text editor widget:
<UL><PRE>
Fl_Text_Buffer *stylebuf;
-w->editor->highlight_data(stylebuf, styletable,
+w-&gt;editor-&gt;highlight_data(stylebuf, styletable,
sizeof(styletable) / sizeof(styletable[0]),
'A', style_unfinished_cb, 0);
</PRE></UL>
@@ -689,7 +692,7 @@ w->editor->highlight_data(stylebuf, styletable,
that changes to the text buffer are mirrored in the style buffer:
<UL><PRE>
-textbuf->add_modify_callback(style_update, w->editor);
+textbuf-&gt;add_modify_callback(style_update, w-&gt;editor);
</PRE></UL>
<P>The <CODE>style_update()</CODE> function, like the <CODE>change_cb()</CODE>
@@ -718,43 +721,43 @@ style_update(int pos, // I - Position of update
// If this is just a selection change, just unselect the style buffer...
if (nInserted == 0 &amp;&amp; nDeleted == 0) {
- stylebuf->unselect();
+ stylebuf-&gt;unselect();
return;
}
// Track changes in the text buffer...
- if (nInserted > 0) {
+ if (nInserted &gt; 0) {
// Insert characters into the style buffer...
style = new char[nInserted + 1];
memset(style, 'A', nInserted);
style[nInserted] = '\0';
- stylebuf->replace(pos, pos + nDeleted, style);
+ stylebuf-&gt;replace(pos, pos + nDeleted, style);
delete[] style;
} else {
// Just delete characters in the style buffer...
- stylebuf->remove(pos, pos + nDeleted);
+ stylebuf-&gt;remove(pos, pos + nDeleted);
}
// Select the area that was just updated to avoid unnecessary
// callbacks...
- stylebuf->select(pos, pos + nInserted - nDeleted);
+ stylebuf-&gt;select(pos, pos + nInserted - nDeleted);
// Re-parse the changed region; we do this by parsing from the
// beginning of the line of the changed region to the end of
// the line of the changed region... Then we check the last
// style character and keep updating if we have a multi-line
// comment character...
- start = textbuf->line_start(pos);
- end = textbuf->line_end(pos + nInserted - nDeleted);
- text = textbuf->text_range(start, end);
- style = stylebuf->text_range(start, end);
+ start = textbuf-&gt;line_start(pos);
+ end = textbuf-&gt;line_end(pos + nInserted - nDeleted);
+ text = textbuf-&gt;text_range(start, end);
+ style = stylebuf-&gt;text_range(start, end);
last = style[end - start - 1];
style_parse(text, style, end - start);
- stylebuf->replace(start, end, style);
- ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
+ stylebuf-&gt;replace(start, end, style);
+ ((Fl_Text_Editor *)cbArg)-&gt;redisplay_range(start, end);
if (last != style[end - start - 1]) {
// The last character on the line changed styles, so reparse the
@@ -762,14 +765,14 @@ style_update(int pos, // I - Position of update
free(text);
free(style);
- end = textbuf->length();
- text = textbuf->text_range(start, end);
- style = stylebuf->text_range(start, end);
+ end = textbuf-&gt;length();
+ text = textbuf-&gt;text_range(start, end);
+ style = stylebuf-&gt;text_range(start, end);
style_parse(text, style, end - start);
- stylebuf->replace(start, end, style);
- ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
+ stylebuf-&gt;replace(start, end, style);
+ ((Fl_Text_Editor *)cbArg)-&gt;redisplay_range(start, end);
}
free(text);
@@ -797,7 +800,7 @@ style_parse(const char *text,
*bufptr;
const char *temp;
- for (current = *style, col = 0, last = 0; length > 0; length --, text ++) {
+ for (current = *style, col = 0, last = 0; length &gt; 0; length --, text ++) {
if (current == 'A') {
// Check for directives, comments, strings, and keywords...
if (col == 0 &amp;&amp; *text == '#') {
diff --git a/documentation/enumerations.html b/documentation/enumerations.html
index 2d78172..49acbcb 100644
--- a/documentation/enumerations.html
+++ b/documentation/enumerations.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>C - FLTK Enumerations</TITLE>
+</HEAD>
+<BODY>
<H1 ALIGN=RIGHT><A NAME=Enumerations>C - FLTK Enumerations</A></H1>
<P>This appendix lists the enumerations provided in the
@@ -134,7 +138,7 @@ FL_KEYBOARD</TT> and <TT>FL_SHORTCUT</TT> events:
<LI><TT>FL_BUTTON2</TT> - Mouse button 2 is pushed. </LI>
<LI><TT>FL_BUTTON3</TT> - Mouse button 3 is pushed. </LI>
<LI><TT>FL_BUTTONS</TT> - Any mouse button is pushed. </LI>
-<LI><TT>FL_BUTTON(n)</TT> - Mouse button N (N > 0) is pushed. </LI>
+<LI><TT>FL_BUTTON(n)</TT> - Mouse button N (N &gt; 0) is pushed. </LI>
</UL>
<!-- NEED 4in -->
diff --git a/documentation/events.html b/documentation/events.html
index fb401d4..95be139 100644
--- a/documentation/events.html
+++ b/documentation/events.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>6 - Handling Events</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="events">6 - Handling Events</A></H1>
@@ -146,6 +149,11 @@ call the <a href="Fl.html#Fl.compose"><TT>Fl::compose()</TT></a>
function to translate individual keystrokes into foreign
characters.
+<P><code>FL_KEYUP</code> events are sent to the widget that
+currently has focus. This is not necessarily the same widget
+that received the corresponding <code>FL_KEYDOWN</code> event
+because focus may have changed between events.
+
<H3>FL_SHORTCUT</H3>
<P>If the <A href="Fl.html#Fl.focus"><TT>Fl::focus()</TT></A>
@@ -219,6 +227,21 @@ selection indication. Most modern programs ignore this.
<H2><A NAME="dnd">Drag And Drop Events</A></H2>
+<P>FLTK supports drag and drop of text and files from any
+application on the desktop. Text is transfered using
+the current code page. Files are received as a list of full path
+and file names, seperated by newline. On some platforms, path
+names are prepended with <tt>file://</tt>.
+
+<P>The drag and drop data is available in <tt>Fl::event_text()</tt>
+at the concluding <tt>FL_PASTE</tt>. On some platforms, the
+event text is also available for the <tt>FL_DND_*</tt> events,
+however application must not depend on that behavior because it
+depends on the protocol used on each platform.
+
+<P><tt>FL_DND_*</tt> events cannot be used in widgets derived
+from <tt>Fl_Group</tt> or <tt>Fl_Window</tt>.
+
<H3>FL_DND_ENTER</H3>
<P>The mouse has been moved to point at this widget. A widget
diff --git a/documentation/examples.html b/documentation/examples.html
index f3f3e55..53101d3 100644
--- a/documentation/examples.html
+++ b/documentation/examples.html
@@ -1,7 +1,10 @@
<HTML>
+<HEAD>
+ <TITLE>I - Tests and Demo Source Code</TITLE>
+</HEAD>
<BODY>
-<H1 ALIGN="RIGHT"><A NAME="tests">I - Tests and Demo Source Code</A></H1>
+<H1 ALIGN="RIGHT"><A NAME="examples">I - Tests and Demo Source Code</A></H1>
<P ALIGN="RIGHT">March 19, 2005</P>
@@ -22,82 +25,84 @@ a test platform to verify the functionality of the FLTK library.</P>
<td><a href="#arc"><tt>arc</tt></a></td>
<td><a href="#ask"><tt>ask</tt></a></td>
<td><a href="#bitmap"><tt>bitmap</tt></a></td>
+<td><a href="#blocks"><tt>blocks</tt></a></td>
<td><a href="#boxtype"><tt>boxtype</tt></a></td>
-<td><a href="#browser"><tt>browser</tt></a></td>
</tr>
<tr>
+<td><a href="#browser"><tt>browser</tt></a></td>
<td><a href="#button"><tt>button</tt></a></td>
<td><a href="#buttons"><tt>buttons</tt></a></td>
<td><a href="#checkers"><tt>checkers</tt></a></td>
<td><a href="#clock"><tt>clock</tt></a></td>
<td><a href="#colbrowser"><tt>colbrowser</tt></a></td>
-<td><a href="#color_chooser"><tt>color_chooser</tt></a></td>
</tr>
<tr>
+<td><a href="#color_chooser"><tt>color_chooser</tt></a></td>
<td><a href="#cube"><tt>cube</tt></a></td>
<td><a href="#CubeView"><tt>CubeView</tt></a></td>
<td><a href="#cursor"><tt>cursor</tt></a></td>
<td><a href="#curve"><tt>curve</tt></a></td>
<td><a href="#demo"><tt>demo</tt></a></td>
-<td><a href="#doublebuffer"><tt>doublebuffer</tt></a></td>
</tr>
<tr>
+<td><a href="#doublebuffer"><tt>doublebuffer</tt></a></td>
<td><a href="#editor"><tt>editor</tt></a></td>
<td><a href="#fast_slow"><tt>fast_slow</tt></a></td>
<td><a href="#file_chooser"><tt>file_chooser</tt></a></td>
<td><a href="#fluid"><tt>fluid</tt></a></td>
<td><a href="#fonts"><tt>fonts</tt></a></td>
-<td><a href="#forms"><tt>forms</tt></a></td>
</tr>
<tr>
+<td><a href="#forms"><tt>forms</tt></a></td>
<td><a href="#fractals"><tt>fractals</tt></a></td>
<td><a href="#fullscreen"><tt>fullscreen</tt></a></td>
<td><a href="#gl_overlay"><tt>gl_overlay</tt></a></td>
<td><a href="#glpuzzle"><tt>glpuzzle</tt></a></td>
<td><a href="#hello"><tt>hello</tt></a></td>
-<td><a href="#help"><tt>help</tt></a></td>
</tr>
<tr>
+<td><a href="#help"><tt>help</tt></a></td>
<td><a href="#iconize"><tt>iconize</tt></a></td>
<td><a href="#image"><tt>image</tt></a></td>
<td><a href="#inactive"><tt>inactive</tt></a></td>
<td><a href="#input"><tt>input</tt></a></td>
<td><a href="#input_choice"><tt>input_choice</tt></a></td>
-<td><a href="#keyboard"><tt>keyboard</tt></a></td>
</tr>
<tr>
+<td><a href="#keyboard"><tt>keyboard</tt></a></td>
<td><a href="#label"><tt>label</tt></a></td>
<td><a href="#line_style"><tt>line_style</tt></a></td>
<td><a href="#list_visuals"><tt>list_visuals</tt></a></td>
<td><a href="#mandelbrot"><tt>mandelbrot</tt></a></td>
<td><a href="#menubar"><tt>menubar</tt></a></td>
-<td><a href="#message"><tt>message</tt></a></td>
</tr>
<tr>
+<td><a href="#message"><tt>message</tt></a></td>
<td><a href="#minimum"><tt>minimum</tt></a></td>
<td><a href="#navigation"><tt>navigation</tt></a></td>
<td><a href="#output"><tt>output</tt></a></td>
<td><a href="#overlay"><tt>overlay</tt></a></td>
<td><a href="#pack"><tt>pack</tt></a></td>
-<td><a href="#pixmap_browser"><tt>pixmap_browser</tt></a></td>
</tr>
<tr>
+<td><a href="#pixmap_browser"><tt>pixmap_browser</tt></a></td>
<td><a href="#pixmap"><tt>pixmap</tt></a></td>
<td><a href="#preferences"><tt>preferences</tt></a></td>
<td><a href="#radio"><tt>radio</tt></a></td>
<td><a href="#resizebox"><tt>resizebox</tt></a></td>
<td><a href="#resize"><tt>resize</tt></a></td>
-<td><a href="#scroll"><tt>scroll</tt></a></td>
</tr>
<tr>
+<td><a href="#scroll"><tt>scroll</tt></a></td>
<td><a href="#shape"><tt>shape</tt></a></td>
<td><a href="#subwindow"><tt>subwindow</tt></a></td>
+<td><a href="#sudoku"><tt>sudoku</tt></a></td>
<td><a href="#symbols"><tt>symbols</tt></a></td>
<td><a href="#tabs"><tt>tabs</tt></a></td>
-<td><a href="#threads"><tt>threads</tt></a></td>
-<td><a href="#tile"><tt>tile</tt></a></td>
</tr>
<tr>
+<td><a href="#threads"><tt>threads</tt></a></td>
+<td><a href="#tile"><tt>tile</tt></a></td>
<td><a href="#tiled_image"><tt>tiled_image</tt></a></td>
<td><a href="#valuators"><tt>valuators</tt></a></td>
</tr>
@@ -106,64 +111,87 @@ a test platform to verify the functionality of the FLTK library.</P>
<h3><a name="adjuster">adjuster</h3>
<tt>adjuster</tt> shows a nifty little widget for quickly
setting values in a great range.
+
<h3><a name="arc">arc</h3>
The <tt>arc</tt> 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.
+
<h3><a name="ask">ask</h3>
<tt>ask</tt> shows some of FLTK's standard dialog boxes, but you
may end up in a loop, but you may end up in a loop, but... .
+
<h3><a name="bitmap">bitmap</h3>
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.
+
+<h3><a name="blocks">blocks</h3>
+A wonderful and addictive game that shows the usage of FLTK
+timers, graphics, and how to implement sound on all platforms.
+<tt>blocks</tt> is also a good example for the Mac OS X specific
+bundle format.
+
<h3><a name="boxtype">boxtype</h3>
<tt>boxtype</tt> gives an overview of readily available boxes and
frames in FLTK. More types can be added by the user. When using
themes, FLTK shuffles boxtypes around to give an app a new look.
+
<h3><a name="browser">browser</h3>
<tt>browser</tt> shows the capabilities of the <tt>Fl_Browser</tt> widget.
Important features tested are loading of files, line formatting, and
correct positioning of the browser data window.
+
<h3><a name="button">button</h3>
The <tt>button</tt> test is a very simple demo of buttons and callbacks.
+
<h3><a name="buttons">buttons</h3>
<tt>buttons</tt> shows a sample of FLTK button types.
+
<h3><a name="checkers">checkers</h3>
Written by Steve Poulsen in early 1979, <tt>checkers</tt> shows
how to polish a VT100 text terminal based program into a neat
program 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 this program.
+
<h3><a name="clock">clock</h3>
The <tt>clock</tt> demo shows two analog clocks. The innards of
teh <tt>Fl_Clock</tt> widget are pretty interesting as they explain
the use of timeouts and matrix based drawing.
+
<h3><a name="colbrowser">colbrowser</h3>
<tt>colbrowser</tt> 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 mederatly useful unless your UI is written in <i>Motif</i>.
+
<h3><a name="color_chooser">color_chooser</h3>
The <tt>color_chooser</tt> gives a short demo of FLTK's palette based
color chooser and of the RGB based color wheel.
+
<h3><a name="cube">cube</h3>
The <tt>cube</tt> demo shows the speed of OpenGL. It also tests
the ability to render two OpenGL buffers into a single window,
and shows OpenGL text.
+
<h3><a name="CubeView">CubeView</h3>
<tt>CubeView</tt> shows how to create a UI containing OpenGL with fluid.
+
<h3><a name="cursor">cursor</h3>
The <tt>cursor</tt> demo show all mouse cursor shapes that come standard
with FLTK. The <i>fgcolor</i> and <i>bgcolor</i> sliders work only
on few systems like Irix.
+
<h3><a name="curve">curve</h3>
<tt>curve</tt> draws a nice Bezier curve into a custom widget. The
<i>points</i> option for splines is not supported on all platforms.
+
<h3><a name="demo">demo</h3>
This tool allows quick access to all programs in the <tt>test</tt> directory.
<tt>demo</tt> is viaully based on the IrixGL demo program and cna be
extended by editing <tt>test/demo.menu</tt>.
+
<h3><a name="doublebuffer">doublebuffer</h3>
The <tt>doublebuffer</tt> demo show the difference between a single
buffered window, which may flicker during a slow redraw, and a
@@ -171,178 +199,227 @@ 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.
+
<h3><a name="editor">editor</h3>
FLTK has two very different text input widgets. <tt>Fl_Input</tt>
and derived classes are rather leight weight, however
<tt>Fl_Text_Editor</tt> is a complete port of nedit (with permission).
The <tt>editor</tt> test is almost a full application, showing custom
syntax highlighting and dialog creation.
+
<h3><a name="fast_slow">fast_slow</h3>
<tt>fast_slow</tt> shows how an application can use then <tt>when()</tt>
setting to receive different kinds of callbacks.
+
<h3><a name="file_chooser">file_chooser</h3>
The standard FLTK <tt>file_chooser</tt> is the result of many
iterations, trying to find a middle ground between a complex
browser and a fast light implementation.
+
<h3><a name="fonts">fonts</h3>
<tt>fonts</tt> show 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.
+
<h3><a name="forms">forms</h3>
<tt>forms</tt> is an XForms program with very few changes.
Search for "fltk" to find all changes necessary to port to fltk.
This demo show the different boxtypes. Note that some
boxtypes are not appropriate for some objects.
+
<h3><a name="fractals">fractals</h3>
<tt>fractals</tt> shows how to mix OpenGL, Glut and FLTK code.
FLTK supports a rather large subset of Glut, so that many Glut
application compile just fine.
+
<h3><a name="fullscreen">fullscreen</h3>
This demo shows how to do many of the window manipulations that
are popular on SGI programs, even though X does not really like
them. You can toggle the border on/off, change the visual to
switch between single/double buffer, and make the window take
over the screen. More information in the source code.
+
<h3><a name="gl_overlay">gl_overlay</h3>
<tt>gl_overlay</tt> shows OpenGL overlay plane rendering. If no
hardware overly plane is available, FLTK will simulate it
automatically.
+
<h3><a name="glpuzzle">glpuzzle</h3>
The <tt>glpuzzle</tt> test dhows how most Glut source code compiles
easily under FLTK.
+
<h3><a name="hello">hello</h3>
<tt>hello</tt>: Hello, World. Need I say maore? Well, maybe. This
tiny demo shows how little is needed to get a functioning application
running with FLTK. Quite impressive, I'd say.
+
<h3><a name="help">help</h3>
<tt>help</tt> displays the built-in FLTK help browser. The
<tt>Fl_Help_Dialog</tt> understands a subset of html and renders
various image formats. It is a great help to provide help
pages to the user without depending on the operating system's
html browser.
+
<h3><a name="iconize">iconize</h3>
<tt>iconize</tt> demonstrates the efeect of the window functions
<tt>hide()</tt>, <tt>iconize()</tt>, and <tt>show()</tt>.
+
<h3><a name="image">image</h3>
The <tt>image</tt> 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).
+
<h3><a name="inactive">inactive</h3>
<tt>inactive</tt> tests the correct rendering of inactive widgets.
To see the inactive version of images, you can check the pixmap
or image test.
+
<h3><a name="input">input</h3>
This tool shows and tests differnet types of text input fields based on
<tt>Fl_Input_</tt>. The <tt>input</tt> program also tests various
settings of <tt>Fl_Input::when()</tt>.
+
<h3><a name="input_choice">input_choice</h3>
<tt>input_choice</tt> tests the latest addition to FLTK1, a text input
field with an attached pulldown menu. Windows users will recognize
similarities to the 'ComboBox'. <tt>input_choice</tt> starts up in
'plastic' scheme, but the traditional scheme is also supported.
+
<h3><a name="keyboard">keyboard</h3>
FLTK unifies keyboard events for all platforms. The <tt>keyboard</tt>
test can be used to check the return values of <tt>Fl::event_key()</tt>
and <tt>Fl::event_text()</tt>. 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.
+
<h3><a name="label">label</h3>
Every FLTK widget can have a label attached to it. The <tt>label</tt>
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>.
+
<h3><a name="line_style">line_style</h3>
Advanced line drawing can be tested with <tt>line_style</tt>.
Not all platforms support all line styles.
+
<h3><a name="list_visuals">list_visuals</h3>
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.
+
<h3><a name="mandelbrot">mandelbrot</h3>
<tt>mandelbrot</tt> 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.
+
<h3><a name="menubar">menubar</h3>
The <tt>menubar</tt> 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.
+
<h3><a name="message">message</h3>
<tt>message</tt> pops up a few of FLTK's standars message boxes.
+
<h3><a name="minimum">minimum</h3>
The <tt>minimum</tt> 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.
correctly.
+
<h3><a name="navigation">navigation</h3>
<tt>navigation</tt> demonstrates how the text cursor moves from
text field to text field by using the arrow keys, tab and shift-tab..
+
<h3><a name="output">output</h3>
<tt>output</tt> shows the difference between the single line and
multi line mode of the <tt>Fl_Output</tt> widget. Fonts can be
selected from the FLTK standard list of fonts.
+
<h3><a name="overlay">overlay</h3>
The <tt>overlay</tt> test app show how easy an FLTK window can
be layered to display cursor and manipulator style elemnts. This
example derives a new class from <tt>Fl_Overly_WIndow</tt> and
provides a new function to draw custom overlays.
+
<h3><a name="pack">pack</h3>
The <tt>pack</tt> test program demonstrates the resizing
and repositioning of children of the <tt>Fl_Pack</tt> group.
Putting an <tt>Fl_Pack</tt> into an <tt>Fl_Scroll</tt> is
a useful way to create a kind of browser.
+
<h3><a name="pixmap_browser">pixmap_browser</h3>
<tt>pixmap_browser</tt> tests the shared image interface. When using
the same image multiple times <tt>Fl_Shared_Image</tt> will keep it
only once in memory.
+
<h3><a name="pixmap">pixmap</h3>
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.
+
<h3><a name="preferences">preferences</h3>
I do have my <tt>preferences</tt> in the morning, but sometimes I
just can't remember a thing. This is where the <tt>Fl_Preferences</tt>
come in handy. The remember any kind of data between program launches.
+
<h3><a name="radio">radio</h3>
The <tt>radio</tt> tool was created entirely with <i>fluid</i>. It
shows some of the available btton types and tests radio
button behavior.
+
<h3><a name="resizebox">resizebox</h3>
<tt>resizebox</tt> shows some possible ways of FLTK's automatic
resize bahavior..
+
<h3><a name="resize">resize</h3>
The <tt>resize</tt> demo tests size and position functions with
the given window manager.
+
<h3><a name="scroll">scroll</h3>
<tt>scroll</tt> shows how to scroll an area of widgets, one of
them beeing a slow custom drawing. <tt>Fl_Scroll</tt> uses
clipping and smart window area copying to improve redraw speed.
The buttons at the bottom of the window test decoration rendering
and updates.
+
<h3><a name="shape">shape</h3>
<tt>shape</tt> 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.
+
<h3><a name="subwindow">subwindow</h3>
The <tt>subwindow</tt> demo tests messaging and drawing between
the main window and 'true' sub windows. A sub window is differnt
to a group by resetting the FLTK coordinate stystem to 0, 0 in the
top left corner. On Win32 and X11, subwindows have their own
operating system specific handle.
+
+<h3><a name="sudoku">sudoku</h3>
+Another highly addictive game - don't play it, I warned you.
+The implementation shows how to create application icons,
+how to deal with OS specific, and how to generate sound.
+
<h3><a name="symbols">symbols</h3>
<tt>symbols</tt> 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.).
+
<h3><a name="tabs">tabs</h3>
The <tt>tabs</tt> 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.
+
+<P>The <tt>tabs</tt> application shows the <tt>Fl_Tabs</tt> widget
+on the left and the <tt>Fl_Wizard</tt> widget on the right side
+for direct comparison of these two panel management widgets.
+
<h3><a name="threads">threads</h3>
FLTK can be used in a multithreading environment. There are some
limitations, mostly due to the underlying operating system.
@@ -350,17 +427,21 @@ limitations, mostly due to the underlying operating system.
<tt>Fl::unlock()</tt>, and <tt>Fl::awake()</tt> in secondary threads
to keep FLTK happy. Although locking works on all platforms,
this demo is not available on every machine.
+
<h3><a name="tile">tile</h3>
The <tt>tile</tt> tool shows a nice way of using <tt>Fl_Tile</tt>.
To test correct resizing of subwindows, the widget for region
1 is created from an <tt>Fl_Window</tt> class.
+
<h3><a name="tiled_image">tiled_image</h3>
The <tt>tiled_image</tt> demo uses an image as the background
for a window by repeating it over the full size of the widget.
Thw window is resizable and shows how the image gets repeated.
+
<h3><a name="valuators">valuators</h3>
<tt>valuators</tt> shows all of FLTK's nifty widgets to change
numeric values.
+
<h3><a name="fluid">fluid</h3>
<tt>fuid</tt> is not only a big test program, but also a very
useful visual UI designer. Many parts of <tt>fluid</tt> were
diff --git a/documentation/fltk-config.man b/documentation/fltk-config.man
index 423e753..b778871 100644
--- a/documentation/fltk-config.man
+++ b/documentation/fltk-config.man
@@ -1,4 +1,4 @@
-.TH fltk-config 1 "Fast Light Tool Kit" "8 August 2005"
+.TH fltk-config 1 "Fast Light Tool Kit" "6 February 2007"
.SH NAME
fltk-config \- script to get information about the installed version of fltk.
.sp
@@ -10,10 +10,8 @@ fltk-config [ --prefix
] [ --version ] [ --api-version ] [ --use-gl ] [ --use-images ] [ --use-glut ]
[ --cc ] [ --cxx ]
[ --cflags ] [ --cxxflags ] [ --ldflags ] [ --ldstaticflags ] [ --libs ]
-[ -g ] [ --compile
+[ -D\fIname[=value]\fR ] [ -g ] [ --compile
.I program.cxx
-] [ --post
-.I program
]
.SH DESCRIPTION
\fIfltk-config\fR is a utility script that can be used to get information
@@ -65,11 +63,6 @@ application to the static FLTK libraries.
Displays the full path to the FLTK library files, to be used for
dependency checking.
.TP 5
---post \fIprogram\fR
-.br
-Binds the default FLTK resource fork to a program under MacOS.
-Does nothing on other operating systems.
-.TP 5
--use-gl
.br
Enables OpenGL support.
diff --git a/documentation/fltk.book b/documentation/fltk.book
index 436ffe9..acd4fcc 100644
--- a/documentation/fltk.book
+++ b/documentation/fltk.book
@@ -1,5 +1,5 @@
-#HTMLDOC 1.8.20
--t pdf13 -f fltk.pdf --book --toclevels 2 --no-numbered --toctitle "Table of Contents" --title --titleimage FL.gif --linkstyle underline --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --footer h.1 --tocheader .t. --tocfooter ..i --duplex --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=50 --no-embedfonts --fontsize 11.0 --fontspacing 1.2 --headingfont Helvetica --bodyfont Times --headfootsize 11.0 --headfootfont Helvetica --charset 8859-1 --links --no-truetype --pagemode outline --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680
+#HTMLDOC 1.8.27.1
+-t pdf13 -f "fltk.pdf" --book --toclevels 2 --no-numbered --toctitle "Table of Contents" --title --titleimage "FL.gif" --linkstyle underline --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer h.1 --nup 1 --tocheader .t. --tocfooter ..i --duplex --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=50 --fontsize 11.0 --fontspacing 1.2 --headingfont Helvetica --bodyfont Times --headfootsize 11.0 --headfootfont Helvetica --charset iso-8859-1 --links --no-embedfonts --pagemode outline --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680 --strict --no-overflow
preface.html
intro.html
basics.html
@@ -11,6 +11,7 @@ subclassing.html
opengl.html
fluid.html
widgets.html
+advanced.html
Fl.html
Fl_Adjuster.html
Fl_Bitmap.html
@@ -24,6 +25,7 @@ Fl_Check_Browser.html
Fl_Check_Button.html
Fl_Choice.html
Fl_Clock.html
+Fl_Clock_Output.html
Fl_Color_Chooser.html
Fl_Counter.html
Fl_Dial.html
@@ -74,6 +76,7 @@ Fl_Scroll.html
Fl_Scrollbar.html
Fl_Secret_Input.html
Fl_Select_Browser.html
+Fl_Shared_Image.html
Fl_Single_Window.html
Fl_Slider.html
Fl_Spinner.html
@@ -84,6 +87,7 @@ Fl_Text_Editor.html
Fl_Tile.html
Fl_Tiled_Image.html
Fl_Timer.html
+Fl_Toggle_Button.html
Fl_Tooltip.html
Fl_Valuator.html
Fl_Value_Input.html
diff --git a/documentation/fluid.html b/documentation/fluid.html
index 2fe3e48..2cb7a25 100644
--- a/documentation/fluid.html
+++ b/documentation/fluid.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>9 - Programming with FLUID</TITLE>
+</HEAD>
+<BODY>
<H1 ALIGN="RIGHT"><A NAME="FLUID">9 - Programming with FLUID</A></H1>
This chapter shows how to use the Fast Light User-Interface Designer
@@ -423,7 +427,7 @@ field of the widget panel. For example, the callback for the
<tt>ypan</tt> slider is:
<ul><pre>
-cube-&gt;pany(((Fl_Slider *)o)->value());
+cube-&gt;pany(((Fl_Slider *)o)-&gt;value());
cube-&gt;redraw();
</pre></ul>
diff --git a/documentation/forms.html b/documentation/forms.html
index 53ead44..269fa29 100644
--- a/documentation/forms.html
+++ b/documentation/forms.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>E - Forms Compatibility</TITLE>
+</HEAD>
+<BODY>
<H1 ALIGN=RIGHT><A NAME=forms>E - Forms Compatibility</A></H1>
This appendix describes the Forms compatibility included with FLTK.
<H2>Importing Forms Layout Files</H2>
diff --git a/documentation/functions.html b/documentation/functions.html
index a620577..bcd4d09 100644
--- a/documentation/functions.html
+++ b/documentation/functions.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>B - Function Reference</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="functions">B - Function Reference</A></H1>
@@ -9,47 +12,278 @@ A</A>.
<H2>Function List by Name</H2>
-<UL>
-
- <LI><A HREF="#fl_alert"><TT>fl_alert</TT></A></LI>
- <LI><A HREF="#fl_ask"><TT>fl_ask</TT></A></LI>
- <LI><A HREF="#fl_beep"><TT>fl_beep</TT></A></LI>
- <LI><A HREF="#fl_choice2"><TT>fl_choice</TT></A></LI>
- <LI><A HREF="#fl_color_average"><TT>fl_color_average</TT></A></LI>
- <LI><A HREF="#fl_color_chooser_func"><TT>fl_color_chooser</TT></A></LI>
- <LI><A HREF="#fl_color_cube"><TT>fl_color_cube</TT></A></LI>
- <LI><A HREF="#fl_contrast"><TT>fl_contrast</TT></A></LI>
- <LI><A HREF="#fl_cursor"><TT>fl_cursor</TT></A></LI>
- <LI><A HREF="#fl_darker"><TT>fl_darker</TT></A></LI>
- <LI><A HREF="#fl_dir_chooser"><TT>fl_dir_chooser</TT></A></LI>
- <LI><A HREF="#fl_file_chooser2"><TT>fl_file_chooser</TT></A></LI>
- <LI><A HREF="#fl_file_chooser_callback"><TT>fl_file_chooser_callback</TT></A></LI>
- <LI><A HREF="#fl_file_chooser_ok_label"><TT>fl_file_chooser_ok_label</TT></A></LI>
- <LI><A HREF="#fl_filename_absolute"><TT>fl_filename_absolute</TT></A></LI>
- <LI><A HREF="#fl_filename_expand"><TT>fl_filename_expand</TT></A></LI>
- <LI><A HREF="#fl_filename_ext"><TT>fl_filename_ext</TT></A></LI>
- <LI><A HREF="#fl_filename_isdir"><TT>fl_filename_isdir</TT></A></LI>
- <LI><A HREF="#fl_filename_list"><TT>fl_filename_list</TT></A></LI>
- <LI><A HREF="#fl_filename_match"><TT>fl_filename_match</TT></A></LI>
- <LI><A HREF="#fl_filename_name"><TT>fl_filename_name</TT></A></LI>
- <LI><A HREF="#fl_filename_relative"><TT>fl_filename_relative</TT></A></LI>
- <LI><A HREF="#fl_filename_setext"><TT>fl_filename_setext</TT></A></LI>
- <LI><A HREF="#fl_gray_ramp"><TT>fl_gray_ramp</TT></A></LI>
- <LI><A HREF="#fl_input2"><TT>fl_input</TT></A></LI>
- <LI><A HREF="#fl_lighter"><TT>fl_lighter</TT></A></LI>
- <LI><A HREF="#fl_message"><TT>fl_message</TT></A></LI>
- <LI><A HREF="#fl_message_font"><TT>fl_message_font</TT></A></LI>
- <LI><A HREF="#fl_message_icon"><TT>fl_message_icon</TT></A></LI>
- <LI><A HREF="#fl_password"><TT>fl_password</TT></A></LI>
- <LI><A HREF="#fl_register_images"><TT>fl_register_images</TT></A></LI>
- <LI><A HREF="#fl_rgb_color"><TT>fl_rgb_color</TT></A></LI>
- <LI><A HREF="#fl_show_colormap"><TT>fl_show_colormap</TT></A></LI>
-
-</UL>
+<TABLE width=100%>
+ <TR>
+ <TD width=33%>
+ <UL>
+ <LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_RGB</TT></A> (WIN32)</LI>
+ <LI><A HREF="common.html#add_symbol"><TT>fl_add_symbol</TT></A></LI>
+ <LI><A HREF="#fl_alert"><TT>fl_alert</TT></A></LI>
+ <LI><A HREF="#fl_alphasort"><TT>fl_alphasort</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_arc"><TT>fl_arc</TT></A></LI>
+ <LI><A HREF="#fl_ask"><TT>fl_ask</TT></A></LI>
+ <LI><A HREF="#fl_beep"><TT>fl_beep</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_complex_polygon"><TT>fl_begin_complex_polygon</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_line"><TT>fl_begin_line</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_loop"><TT>fl_begin_loop</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_offscreen"><TT>fl_begin_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_points"><TT>fl_begin_points</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_polygon"><TT>fl_begin_polygon</TT></A></LI>
+ <LI><A HREF="common.html#fl_box"><TT>fl_box</TT></A></LI>
+ <LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_brush</TT></A> (WIN32)</LI>
+ <LI><A HREF="drawing.html#fl_can_do_alpha_blending"><TT>fl_can_do_alpha_blending</TT></A></LI>
+ <LI><A HREF="#fl_casealphasort"><TT>fl_casealphasort</TT></A></LI>
+ <LI><A HREF="#fl_casenumericsort"><TT>fl_casenumericsort</TT></A></LI>
+ <LI><A HREF="#fl_choice2"><TT>fl_choice</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_circle"><TT>fl_circle</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_clip_box"><TT>fl_clip_box</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_clip_region"><TT>fl_clip_region</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_close_display"><TT>fl_close_display</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_color"><TT>fl_color</TT></A></LI>
+ <LI><A HREF="#fl_color_average"><TT>fl_color_average</TT></A></LI>
+ <LI><A HREF="#fl_color_chooser_func"><TT>fl_color_chooser</TT></A></LI>
+ <LI><A HREF="#fl_color_cube"><TT>fl_color_cube</TT></A></LI>
+ <LI><A HREF="#fl_contrast"><TT>fl_contrast</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_copy_offscreen"><TT>fl_copy_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_create_offscreen"><TT>fl_create_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_create_offscreen_with_alpha"><TT>fl_create_offscreen_with_alpha</TT></A></LI>
+ <LI><A HREF="#fl_cursor"><TT>fl_cursor</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_curve"><TT>fl_curve</TT></A></LI>
+ <LI><A HREF="#fl_darker"><TT>fl_darker</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_delete_offscreen"><TT>fl_delete_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_descent"><TT>fl_descent</TT></A></LI>
+ <LI><A HREF="#fl_dir_chooser"><TT>fl_dir_chooser</TT></A></LI>
+ <LI><A HREF="common.html#fl_down"><TT>fl_down</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw"><TT>fl_draw</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw_box"><TT>fl_draw_box</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw_image"><TT>fl_draw_image</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw_image"><TT>fl_draw_image_mono</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw_pixmap"><TT>fl_draw_pixmap</TT></A></LI>
+ <LI><A HREF="common.html#fl_draw_symbol"><TT>fl_draw_symbol</TT></A></LI>
+ </UL>
+ </TD>
+ <TD width=33%>
+ <UL>
+ <LI><A HREF="drawing.html#fl_begin_complex_polygon"><TT>fl_end_complex_polygon</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_line"><TT>fl_end_line</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_loop"><TT>fl_end_loop</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_end_offscreen"><TT>fl_end_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_points"><TT>fl_end_points</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_polygon"><TT>fl_end_polygon</TT></A></LI>
+ <LI><A HREF="#fl_file_chooser2"><TT>fl_file_chooser</TT></A></LI>
+ <LI><A HREF="#fl_file_chooser_callback"><TT>fl_file_chooser_callback</TT></A></LI>
+ <LI><A HREF="#fl_file_chooser_ok_label"><TT>fl_file_chooser_ok_label</TT></A></LI>
+ <LI><A HREF="#fl_filename_absolute"><TT>fl_filename_absolute</TT></A></LI>
+ <LI><A HREF="#fl_filename_expand"><TT>fl_filename_expand</TT></A></LI>
+ <LI><A HREF="#fl_filename_ext"><TT>fl_filename_ext</TT></A></LI>
+ <LI><A HREF="#fl_filename_isdir"><TT>fl_filename_isdir</TT></A></LI>
+ <LI><A HREF="#fl_filename_list"><TT>fl_filename_list</TT></A></LI>
+ <LI><A HREF="#fl_filename_match"><TT>fl_filename_match</TT></A></LI>
+ <LI><A HREF="#fl_filename_name"><TT>fl_filename_name</TT></A></LI>
+ <LI><A HREF="#fl_filename_relative"><TT>fl_filename_relative</TT></A></LI>
+ <LI><A HREF="#fl_filename_setext"><TT>fl_filename_setext</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_find"><TT>fl_find</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_font"><TT>fl_font</TT></A></LI>
+ <LI><A HREF="common.html#fl_frame"><TT>fl_frame</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_frame"><TT>fl_frame</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_frame2"><TT>fl_frame2</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_complex_polygon"><TT>fl_gap</TT></A></LI>
+ <LI><A HREF="#fl_gray_ramp"><TT>fl_gray_ramp</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_handle"><TT>fl_handle</TT></A> (X11)</LI>
+ <LI><A HREF="drawing.html#fl_height"><TT>fl_height</TT></A></LI>
+ <LI><A HREF="#fl_inactive"><TT>fl_inactive</TT></A></LI>
+ <LI><A HREF="#fl_input2"><TT>fl_input</TT></A></LI>
+ <LI><A HREF="drawing.html#character_encoding"><TT>fl_latin1_to_local</TT></A></LI>
+ <LI><A HREF="#fl_lighter"><TT>fl_lighter</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_line"><TT>fl_line</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_line_style"><TT>fl_line_style</TT></A></LI>
+ <LI><A HREF="drawing.html#character_encoding"><TT>fl_local_to_latin1</TT></A></LI>
+ <LI><A HREF="drawing.html#character_encoding"><TT>fl_local_to_mac_roman</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_loop"><TT>fl_loop</TT></A></LI>
+ <LI><A HREF="drawing.html#character_encoding"><TT>fl_mac_roman_to_local</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_measure"><TT>fl_measure</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_measure_pixmap"><TT>fl_measure_pixmap</TT></A></LI>
+ <LI><A HREF="#fl_message"><TT>fl_message</TT></A></LI>
+ <LI><A HREF="#fl_message_font"><TT>fl_message_font</TT></A></LI>
+ <LI><A HREF="#fl_message_icon"><TT>fl_message_icon</TT></A></LI>
+ </UL>
+ </TD>
+ <TD width=30%>
+ <UL>
+ <LI><A HREF="drawing.html#fl_scale"><TT>fl_mult_matrix</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_not_clipped"><TT>fl_not_clipped</TT></A></LI>
+ <LI><A HREF="#fl_numericsort"><TT>fl_numericsort</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_open_callback"><TT>fl_open_callback</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_open_display"><TT>fl_open_display</TT></A></LI>
+ <LI><A HREF="#fl_open_uri"><TT>fl_open_uri</TT></A></LI>
+ <LI><A HREF="drawing.html#overlay"><TT>fl_overlay_clear</TT></A></LI>
+ <LI><A HREF="drawing.html#overlay"><TT>fl_overlay_rect</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_parse_color"><TT>fl_parse_color</TT></A></LI>
+ <LI><A HREF="#fl_password"><TT>fl_password</TT></A></LI>
+ <LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_pen</TT></A> (WIN32)</LI>
+ <LI><A HREF="drawing.html#fl_pie"><TT>fl_pie</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_point"><TT>fl_point</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_polygon"><TT>fl_polygon</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_pop_clip"><TT>fl_pop_clip</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_push_matrix"><TT>fl_pop_matrix</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_push_clip"><TT>fl_push_clip</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_push_matrix"><TT>fl_push_matrix</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_push_no_clip"><TT>fl_push_no_clip</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_read_image"><TT>fl_read_image</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_rect"><TT>fl_rect</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_rectf"><TT>fl_rectf</TT></A></LI>
+ <LI><A HREF="#fl_register_images"><TT>fl_register_images</TT></A></LI>
+ <LI><A HREF="#fl_rgb_color"><TT>fl_rgb_color</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scale"><TT>fl_rotate</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scale"><TT>fl_scale</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scroll"><TT>fl_scroll</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_shortcut_label"><TT>fl_shortcut_label</TT></A></LI>
+ <LI><A HREF="#fl_show_colormap"><TT>fl_show_colormap</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_size"><TT>fl_size</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transform_dx</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transform_dy</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transform_x</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transform_y</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transformed_vertex</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scale"><TT>fl_translate</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_vertex"><TT>fl_vertex</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_width"><TT>fl_width</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_xid"><TT>fl_xid</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_xpixel"><TT>fl_xpixel</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_xyline"><TT>fl_xyline</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_yxline"><TT>fl_yxline</TT></A></LI>
+<!-- <LI><A HREF=""><TT>fl_brush_action</TT></A> (WIN32)</LI> -->
+<!-- <LI><A HREF=""><TT>fl_create_alphamask</TT></A></LI> -->
+<!-- <LI><A HREF=""><TT>fl_create_bitmask</TT></A></LI> -->
+<!-- <LI><A HREF=""><TT>fl_delete_bitmask</TT></A></LI> -->
+<!-- <LI><A HREF=""><TT>fl_makeDC</TT></A> (WIN32)</LI> -->
+<!-- <LI><A HREF=""><TT>fl_old_shortcut</TT></A></LI> -->
+<!-- <LI><A HREF=""><TT>fl_release_dc</TT></A></LI> -->
+<!-- <LI><A HREF=""><TT>fl_save_dc</TT></A></LI> -->
+ </UL>
+ </TD>
+ </TR>
+</TABLE>
<H2>Function List by Category</H2>
+<TABLE width=100%>
+ <TR>
+ <TD width=50% valign=top>
<UL>
+ <LI>Drawing Functions
+ <UL>
+ <LI>Color
+ <UL>
+ <LI><A HREF="drawing.html#fl_color"><TT>fl_color</TT></A></LI>
+ <LI><A HREF="#fl_color_average"><TT>fl_color_average</TT></A></LI>
+ <LI><A HREF="#fl_color_cube"><TT>fl_color_cube</TT></A></LI>
+ <LI><A HREF="#fl_contrast"><TT>fl_contrast</TT></A></LI>
+ <LI><A HREF="#fl_cursor"><TT>fl_cursor</TT></A></LI>
+ <LI><A HREF="#fl_darker"><TT>fl_darker</TT></A></LI>
+ <LI><A HREF="#fl_gray_ramp"><TT>fl_gray_ramp</TT></A></LI>
+ <LI><A HREF="#fl_lighter"><TT>fl_lighter</TT></A></LI>
+ <LI><A HREF="#fl_rgb_color"><TT>fl_rgb_color</TT></A></LI>
+ </UL>
+ <LI>Text
+ <UL>
+ <LI><A HREF="drawing.html#fl_descent"><TT>fl_descent</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw"><TT>fl_draw</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_font"><TT>fl_font</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_height"><TT>fl_height</TT></A></LI>
+ <LI><A HREF="drawing.html#character_encoding"><TT>fl_latin1_to_local</TT></A></LI>
+ <LI><A HREF="drawing.html#character_encoding"><TT>fl_local_to_latin1</TT></A></LI>
+ <LI><A HREF="drawing.html#character_encoding"><TT>fl_local_to_mac_roman</TT></A></LI>
+ <LI><A HREF="drawing.html#character_encoding"><TT>fl_mac_roman_to_local</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_measure"><TT>fl_measure</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_shortcut_label"><TT>fl_shortcut_label</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_size"><TT>fl_size</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_width"><TT>fl_width</TT></A></LI>
+ </UL>
+ <LI>Symbols
+ <UL>
+ <LI><A HREF="common.html#add_symbol"><TT>fl_add_symbol</TT></A></LI>
+ <LI><A HREF="common.html#fl_draw_symbol"><TT>fl_draw_symbol</TT></A></LI>
+ </UL>
+ <LI>Fast Drawing
+ <UL>
+ <LI><A HREF="drawing.html#fl_arc"><TT>fl_arc</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_circle"><TT>fl_circle</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_frame"><TT>fl_frame</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_frame2"><TT>fl_frame2</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_line"><TT>fl_line</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_line_style"><TT>fl_line_style</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_loop"><TT>fl_loop</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_pie"><TT>fl_pie</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_point"><TT>fl_point</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_polygon"><TT>fl_polygon</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_rect"><TT>fl_rect</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_rectf"><TT>fl_rectf</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scroll"><TT>fl_scroll</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_xyline"><TT>fl_xyline</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_yxline"><TT>fl_yxline</TT></A></LI>
+ </UL>
+ <LI>Complex Drawing
+ <UL>
+ <LI><A HREF="drawing.html#fl_pie"><TT>fl_arc</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_complex_polygon"><TT>fl_begin_complex_polygon</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_line"><TT>fl_begin_line</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_loop"><TT>fl_begin_loop</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_offscreen"><TT>fl_begin_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_points"><TT>fl_begin_points</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_polygon"><TT>fl_begin_polygon</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_curve"><TT>fl_curve</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scale"><TT>fl_rotate</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scale"><TT>fl_scale</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_complex_polygon"><TT>fl_end_complex_polygon</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_line"><TT>fl_end_line</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_loop"><TT>fl_end_loop</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_points"><TT>fl_end_points</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_polygon"><TT>fl_end_polygon</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_begin_complex_polygon"><TT>fl_gap</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scale"><TT>fl_mult_matrix</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_push_matrix"><TT>fl_pop_matrix</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_push_matrix"><TT>fl_push_matrix</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transform_dx</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transform_dy</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transform_x</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transform_y</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_transform"><TT>fl_transformed_vertex</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_scale"><TT>fl_translate</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_vertex"><TT>fl_vertex</TT></A></LI>
+ </UL>
+ </UL>
+ </TD>
+ <TD width=50% valign=top>
+ <UL><LI>Drawing Functions (cont'd)
+ <UL>
+ <LI>Clipping
+ <UL>
+ <LI><A HREF="drawing.html#fl_clip_box"><TT>fl_clip_box</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_clip_region"><TT>fl_clip_region</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_not_clipped"><TT>fl_not_clipped</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_push_no_clip"><TT>fl_push_no_clip</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_push_clip"><TT>fl_push_clip</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_pop_clip"><TT>fl_pop_clip</TT></A></LI>
+ </UL>
+ <LI>Overlay Drawing
+ <UL>
+ <LI><A HREF="drawing.html#overlay"><TT>fl_overlay_clear</TT></A></LI>
+ <LI><A HREF="drawing.html#overlay"><TT>fl_overlay_rect</TT></A></LI>
+ </UL>
+ <LI>Offscreen Drawing
+ <UL>
+ <LI><A HREF="drawing.html#fl_copy_offscreen"><TT>fl_copy_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_create_offscreen"><TT>fl_create_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_create_offscreen_with_alpha"><TT>fl_create_offscreen_with_alpha</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_delete_offscreen"><TT>fl_delete_offscreen</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_end_offscreen"><TT>fl_end_offscreen</TT></A></LI>
+ </UL>
+ </ul>
+ </LI>
+
+</UL>
+ <UL>
<LI>Dialog Functions
<UL>
@@ -70,22 +304,6 @@ A</A>.
<LI><A HREF="#fl_show_colormap"><TT>fl_show_colormap</TT></A></LI>
</UL>
</LI>
-
- <LI>Drawing Functions
- <UL>
-
- <LI><A HREF="#fl_color_average"><TT>fl_color_average</TT></A></LI>
- <LI><A HREF="#fl_color_cube"><TT>fl_color_cube</TT></A></LI>
- <LI><A HREF="#fl_contrast"><TT>fl_contrast</TT></A></LI>
- <LI><A HREF="#fl_cursor"><TT>fl_cursor</TT></A></LI>
- <LI><A HREF="#fl_darker"><TT>fl_darker</TT></A></LI>
- <LI><A HREF="#fl_gray_ramp"><TT>fl_gray_ramp</TT></A></LI>
- <LI><A HREF="#fl_lighter"><TT>fl_lighter</TT></A></LI>
- <LI><A HREF="#fl_rgb_color"><TT>fl_rgb_color</TT></A></LI>
-
- </UL>
- </LI>
-
<LI>Filename Functions
<UL>
<LI><A HREF="#fl_filename_absolute"><TT>fl_filename_absolute</TT></A></LI>
@@ -97,16 +315,46 @@ A</A>.
<LI><A HREF="#fl_filename_name"><TT>fl_filename_name</TT></A></LI>
<LI><A HREF="#fl_filename_relative"><TT>fl_filename_relative</TT></A></LI>
<LI><A HREF="#fl_filename_setext"><TT>fl_filename_setext</TT></A></LI>
+ <LI><A HREF="#fl_open_uri"><TT>fl_open_uri</TT></A></LI>
</UL>
</LI>
<LI>Image Functions
<UL>
+ <LI><A HREF="drawing.html#fl_can_do_alpha_blending"><TT>fl_can_do_alpha_blending</TT></A></LI>
<LI><A HREF="#fl_register_images"><TT>fl_register_images</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw_image"><TT>fl_draw_image</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw_image"><TT>fl_draw_image_mono</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw_pixmap"><TT>fl_draw_pixmap</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_measure_pixmap"><TT>fl_measure_pixmap</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_read_image"><TT>fl_read_image</TT></A></LI>
</UL>
</LI>
-</UL>
+ <LI>Box Types
+ <UL>
+ <LI><A HREF="common.html#fl_down"><TT>fl_down</TT></A></LI>
+ <LI><A HREF="drawing.html#fl_draw_box"><TT>fl_draw_box</TT></A></LI>
+ <LI><A HREF="common.html#fl_frame"><TT>fl_frame</TT></A></LI>
+ </UL>
+
+ <LI>System Related Functions
+ <UL>
+ <LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_RGB</TT></A> (WIN32)</LI>
+ <LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_brush</TT></A> (WIN32)</LI>
+ <LI><A HREF="osissues.html#fl_close_display"><TT>fl_close_display</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_find"><TT>fl_find</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_handle"><TT>fl_handle</TT></A> (X11)</LI>
+ <LI><A HREF="osissues.html#fl_open_callback"><TT>fl_open_callback</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_open_display"><TT>fl_open_display</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_parse_color"><TT>fl_parse_color</TT></A></LI>
+ <LI><A HREF="osissues.html#WIN32.gdi"><TT>fl_pen</TT></A> (WIN32)</LI>
+ <LI><A HREF="osissues.html#fl_xid"><TT>fl_xid</TT></A></LI>
+ <LI><A HREF="osissues.html#fl_xpixel"><TT>fl_xpixel</TT></A></LI>
+ </UL>
+
+</td>
+</table>
<!-- NEED 4in -->
<H2><A NAME="fl_alert">fl_alert</A></H2>
@@ -161,7 +409,7 @@ a shortcut for No.
<p><b>Note:</b> Use of this function is <i>strongly</i>
discouraged, and it will be removed in FLTK 2.0. Instead, use <a
-href='#fl_choice'><tt>fl_choice()</tt></a> instead and provide
+href='#fl_choice2'><tt>fl_choice()</tt></a> instead and provide
unambiguous verbs in place of "Yes" and "No".</p>
<!-- NEED 4in -->
@@ -396,7 +644,7 @@ Fl_Color fl_cursor(Fl_Cursor cursor, Fl_Color fg, Fl_Color bg);
<P>Sets the cursor for the current window to the specified shape
and colors. The cursors are defined in the <A
-HREF="enumerations.html#cursor"><CODE>&lt;FL/Enumerations.H></CODE>
+HREF="enumerations.html#cursor"><CODE>&lt;FL/Enumerations.H&gt;</CODE>
header file</A>.
@@ -726,22 +974,22 @@ are provided with FLTK:
<UL>
- <LI><TT>fl_alphasort</tt> - The files are sorted in
+ <LI><TT><A NAME=fl_alphasort>fl_alphasort</A></tt> - The files are sorted in
ascending alphabetical order; upper- and lowercase
letters are compared according to their ASCII ordering -
uppercase before lowercase.
- <LI><TT>fl_casealphasort</tt> - The files are sorted in
+ <LI><TT><A NAME=fl_casealphasort>fl_casealphasort</A></tt> - The files are sorted in
ascending alphabetical order; upper- and lowercase
letters are compared equally - case is not significant.
- <LI><TT>fl_casenumericsort</TT> - The files are sorted
+ <LI><TT><A NAME=fl_casenumericsort>fl_casenumericsort</A></TT> - The files are sorted
in ascending &quot;alphanumeric&quot; order, where an
attempt is made to put unpadded numbers in consecutive
order; upper- and lowercase letters are compared equally
- case is not significant.
- <LI><TT>fl_numericsort</TT> - The files are sorted in
+ <LI><TT><A NAME=fl_numericsort>fl_numericsort</A></TT> - The files are sorted in
ascending &quot;alphanumeric&quot; order, where an
attempt is made to put unpadded numbers in consecutive
order; upper- and lowercase letters are compared
@@ -926,6 +1174,28 @@ fl_gray_ramp(I * (FL_NUM_GRAY - 1) / 255)
<!-- NEED 4in -->
+<H2><A NAME="fl_inactive">fl_inactive</A></H2>
+
+<HR>
+
+<H3>Include File</H3>
+
+<UL><PRE>
+#include &lt;FL/Enumerations.H&gt;
+</PRE></UL>
+
+<H3>Prototype</H3>
+
+<UL><PRE>
+Fl_Color fl_inactive(Fl_Color c);
+</PRE></UL>
+
+<H3>Description</H3>
+
+<P>Returns the inactive, dimmed version of the give color
+
+
+<!-- NEED 4in -->
<H2><A NAME="fl_input2">fl_input</A></H2>
<HR>
@@ -1001,6 +1271,13 @@ The message will wrap to fit the window, or may be many lines by
putting <tt>\n</tt> characters into it. The enter key is a
shortcut for the OK button.
+<P>A message text can be further formatted with html tags by
+adding <tt>&lt;html&gt;</tt> at the beginning of the message.
+See <tt><a href="Fl_Help_View.html">Fl_Help_View</a></tt> for
+details.
+
+<P>The message text is limited to 1024 characters.
+
<P ALIGN="CENTER"><IMG src="fl_message.gif" ALT="The fl_message window.">
@@ -1052,6 +1329,32 @@ calling the functions.
<!-- NEED 4in -->
+<H2><A NAME="fl_open_uri">fl_open_uri</A></H2>
+
+<HR>
+
+<H3>Include Files</H3>
+
+<UL><PRE>
+#include &lt;FL/filename.H&gt;
+</PRE></UL>
+
+<H3>Prototype</H3>
+
+<UL><PRE>
+void fl_open_uri(const char *uri, char *msg = (char *)0, int msglen = 0);
+</PRE></UL>
+
+<H3>Description</H3>
+
+<P>fl_open_uri() opens the specified Uniform Resource Identifier (URI) using an operating-system dependent program or interface. For URIs using the "ftp", "http", or "https" schemes, the system default web browser is used to open the URI, while "mailto" and "news" URIs are typically opened using the system default mail reader and "file" URIs are opened using the file system navigator.</P>
+
+<P>On success, the (optional) <TT>msg</TT> buffer is filled with the command that was run to open the URI; on Windows, this will always be "open uri".</P>
+
+<P>On failure, the <TT>msg</TT> buffer is filled with an English error message.</P>
+
+
+<!-- NEED 4in -->
<H2><A NAME="fl_password">fl_password</A></H2>
<HR>
diff --git a/documentation/glut.html b/documentation/glut.html
index 27f8467..b1addff 100644
--- a/documentation/glut.html
+++ b/documentation/glut.html
@@ -1,46 +1,33 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>D - GLUT Compatibility</TITLE>
+</HEAD>
+<BODY>
<H1 ALIGN=RIGHT><A NAME=glut>D - GLUT Compatibility</A></H1>
- This appendix describes the GLUT compatibility header file supplied
-with FLTK.
+<P>This appendix describes the GLUT compatibility header file supplied with FLTK. FLTK's GLUT compatibility is based on the original GLUT 3.7 and the follow-on FreeGLUT 2.4.0 libraries.</P>
<H2>Using the GLUT Compatibility Header File</H2>
- You should be able to compile existing GLUT source code by including <TT>
-&lt;FL/glut.H&gt;</TT> instead of <TT>&lt;GL/glut.h&gt;</TT>. This can be done by
-editing the source, by changing the <TT>-I</TT> switches to the
-compiler, or by providing a symbolic link from <TT>GL/glut.h</TT> to <TT>
-FL/glut.H</TT>.
-<P><I>All files calling GLUT procedures must be compiled with C++</I>.
- You may have to alter them slightly to get them to compile without
-warnings, and you may have to rename them to get make to use the C++
-compiler. </P>
-<P>You must link with the FLTK library. If you call any GLUT drawing
-functions that FLTK does not emulate (<TT>glutExtensionsSupported()</TT>
-, <TT>glutWire*()</TT>, <TT>glutSolid*()</TT>, and <TT>glutStroke*()</TT>
-), you will also have to link with the GLUT library (<I>after</I> the
-FLTK library!) </P>
-<P>Most of <TT>FL/glut.H</TT> is inline functions. You should take a
-look at it (and maybe at <TT>test/glpuzzle.cxx</TT> in the FLTK source) if
-you are having trouble porting your GLUT program. </P>
-<P>This has been tested with most of the demo programs that come with
-the GLUT 3.3 distribution. </P>
+<P>You should be able to compile existing GLUT source code by including <TT>&lt;FL/glut.H&gt;</TT> instead of <TT>&lt;GL/glut.h&gt;</TT>. This can be done by editing the source, by changing the <TT>-I</TT> switches to the compiler, or by providing a symbolic link from <TT>GL/glut.h</TT> to <TT>FL/glut.H</TT>.</P>
+<P><I>All files calling GLUT procedures must be compiled with C++</I>. You may have to alter them slightly to get them to compile without warnings, and you may have to rename them to get make to use the C++ compiler.</P>
+<P>You must link with the FLTK library. Most of <TT>FL/glut.H</TT> is inline functions. You should take a look at it (and maybe at <TT>test/glpuzzle.cxx</TT> in the FLTK source) if you are having trouble porting your GLUT program. </P>
+<P>This has been tested with most of the demo programs that come with the GLUT and FreeGLUT distributions.</P>
<H2>Known Problems</H2>
- The following functions and/or arguments to functions are missing, and
+<P>The following functions and/or arguments to functions are missing, and
you will have to replace them or comment them out for your code to
compile:
<UL>
-<LI><TT>glutLayerGet(GLUT_LAYER_IN_USE)</TT></LI>
-<LI><TT>glutLayerGet(GLUT_HAS_OVERLAY)</TT></LI>
-<LI><TT>glutSetColor(), glutGetColor(), glutCopyColormap()</TT></LI>
+<LI><TT>glutGet(GLUT_ELAPSED_TIME)</TT></LI>
+<LI><TT>glutGet(GLUT_SCREEN_HEIGHT_MM)</TT></LI>
+<LI><TT>glutGet(GLUT_SCREEN_WIDTH_MM)</TT></LI>
+<LI><TT>glutGet(GLUT_WINDOW_NUM_CHILDREN)</TT></LI>
<LI><TT>glutInitDisplayMode(GLUT_LUMINANCE)</TT></LI>
+<LI><TT>glutLayerGet(GLUT_HAS_OVERLAY)</TT></LI>
+<LI><TT>glutLayerGet(GLUT_LAYER_IN_USE)</TT></LI>
<LI><TT>glutPushWindow()</TT></LI>
+<LI><TT>glutSetColor(), glutGetColor(), glutCopyColormap()</TT></LI>
+<LI><TT>glutVideoResize()</TT> missing. </LI>
<LI><TT>glutWarpPointer()</TT></LI>
-<LI>Spaceball, buttonbox, dials, tablet functions, <TT>glutDeviceGet()</TT>
-</LI>
<LI><TT>glutWindowStatusFunc()</TT></LI>
-<LI><TT>glutGet(GLUT_WINDOW_NUM_CHILDREN)</TT></LI>
-<LI><TT>glutGet(GLUT_SCREEN_WIDTH_MM)</TT></LI>
-<LI><TT>glutGet(GLUT_SCREEN_HEIGHT_MM)</TT></LI>
-<LI><TT>glutGet(GLUT_ELAPSED_TIME)</TT></LI>
-<LI><TT>glutVideoResize()</TT> missing. </LI>
+<LI>Spaceball, buttonbox, dials, and tablet functions</LI>
</UL>
Most of the symbols/enumerations have different values than GLUT uses.
This will break code that relies on the actual values. The only
diff --git a/documentation/index.html b/documentation/index.html
index 8a4cf8c..1b53a03 100644
--- a/documentation/index.html
+++ b/documentation/index.html
@@ -1,7 +1,7 @@
<HTML>
<HEAD>
<META NAME="robots" CONTENT="noindex">
- <TITLE>FLTK 1.1.7 Programming Manual</TITLE>
+ <TITLE>FLTK 1.1.8 Programming Manual</TITLE>
</HEAD>
<BODY>
@@ -10,22 +10,17 @@
<TD VALIGN="MIDDLE">
<IMG SRC="FL.gif" WIDTH="200" HEIGHT="100" ALIGN="ABSMIDDLE" ALT="FL"></TD>
<TD ALIGN="CENTER" VALIGN="MIDDLE">
- <H1>FLTK 1.1.7 Programming Manual</H1>
- <P>Revision 7 by Michael Sweet, Craig P. Earls, and Bill Spitzak<BR>
- Copyright 1998-2006 by Bill Spitzak and others.</P>
+ <H1>FLTK 1.1.8 Programming Manual</H1>
+ <P>Revision 8 by Michael Sweet, Craig P. Earls,<br>Matthias Melcher, and Bill Spitzak<BR>
+ Copyright 1998-2007 by Bill Spitzak and others.</P>
</TD>
</TR>
-</TABLE>
-
-<TABLE BGCOLOR="#9f9f9f" CELLPADDING="8" CELLSPACING="0" SUMMARY="TITLE BAR" WIDTH="700">
<TR>
- <TD ALIGN="CENTER"><B>This software and manual are
- provided under the terms of the GNU Library General
- Public License.</B></TD>
+ <TH COLSPAN=2>This software and manual are provided under the terms of the GNU Library General Public License. Permission is granted to reproduce this manual or any portion for any purpose, provided this copyright and permission notice are preserved.</TH>
</TR>
</TABLE>
-<TABLE COLS="2" BGCOLOR="#9f9fef" CELLPADDING="8" CELLSPACING="0" SUMMARY="Table of Contents" WIDTH="700">
+<TABLE BGCOLOR="#9f9fef" CELLPADDING="8" CELLSPACING="0" SUMMARY="Table of Contents" WIDTH="700">
<TR>
<TD ALIGN="LEFT" VALIGN="TOP"><B><A HREF="preface.html#preface">Preface</A></B>
<BR>
@@ -68,6 +63,9 @@
<LI><A HREF="fluid.html#widget_attributes">Selecting Moving Widgets</A></LI>
<LI><A HREF="fluid.html#images">Image Labels</A></LI>
</UL>
+ <B><A HREF="advanced.html#advanced">10 - Advanced FLTK</A></B>
+ <BR>
+ <BR>
<B><A HREF="widgets.html#widgets">A - Class Reference</A></B>
<BR>
<BR>
diff --git a/documentation/intro.html b/documentation/intro.html
index 89ce23b..dac5355 100644
--- a/documentation/intro.html
+++ b/documentation/intro.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>1 - Introduction to FLTK</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="intro">1 - Introduction to FLTK</A></H1>
@@ -332,8 +335,8 @@ make
<DD><A href="mailto:fltk-bugs@fltk.org">fltk-bugs@fltk.org</A> [for
reporting bugs]
- <DT>News</DT>
- <DD><A HREF="news://news.easysw.com">news.easysw.com</A></DD>
+ <DT>NNTP Newsgroups</DT>
+ <DD>news.easysw.com</DD>
</DL>
diff --git a/documentation/license.html b/documentation/license.html
index b0edc75..04f61da 100644
--- a/documentation/license.html
+++ b/documentation/license.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>H - FLTK License</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="license">H - FLTK License</A></H1>
diff --git a/documentation/migration.html b/documentation/migration.html
index 48bc46f..1f94004 100644
--- a/documentation/migration.html
+++ b/documentation/migration.html
@@ -1,7 +1,10 @@
<HTML>
+<HEAD>
+ <TITLE>G - Migrating Code from FLTK 1.0.x</TITLE>
+</HEAD>
<BODY>
-<H1 ALIGN="RIGHT">G - Migrating Code from FLTK 1.0.x</H1>
+<H1 ALIGN="RIGHT"><A NAME="migration">G - Migrating Code from FLTK 1.0.x</A></H1>
<P>This appendix describes the differences between the FLTK
1.0.x and FLTK 1.1.x functions and classes.</P>
@@ -51,9 +54,9 @@ symbol on the command-line when you compile
<UL><PRE>
#define FLTK_1_0_COMPAT
-#include &lt;FL/Fl.H>
-#include &lt;FL/Enumerations.H>
-#include &lt;FL/filename.H>
+#include &lt;FL/Fl.H&gt;
+#include &lt;FL/Enumerations.H&gt;
+#include &lt;FL/filename.H&gt;
</PRE></UL>
<P>The following table shows the old and new function names:</P>
diff --git a/documentation/opengl.html b/documentation/opengl.html
index 481673f..89a21a1 100644
--- a/documentation/opengl.html
+++ b/documentation/opengl.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>8 - Using OpenGL</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN=RIGHT><A NAME=opengl>8 - Using OpenGL</A></H1>
diff --git a/documentation/osissues.html b/documentation/osissues.html
index 3d5b9d7..79c385a 100644
--- a/documentation/osissues.html
+++ b/documentation/osissues.html
@@ -1,4 +1,7 @@
<HTML>
+<HEAD>
+ <TITLE>F - Operating System Issues</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="osissues">F - Operating System Issues</A></H1>
@@ -133,13 +136,29 @@ unsigned long fl_xpixel(uchar r, uchar g, uchar b)</A></H4>
index or RGB color. This is the X pixel that <A
href="drawing.html#fl_color"><TT>fl_color()</TT></A> would use.
+<H4><A name="fl_parse_color">int fl_parse_color(const char* p, uchar&amp; r, uchar&amp; g, uchar&amp; b)</A></H4>
+
+<P>Convert a name into the red, green, and blue values of a color
+by parsing the X11 color names. On other systems, <tt>fl_parse_color</tt>
+can only convert names in hexadecimal encoding, for example <tt>#ff8083</tt>.
+
<H4><A name="fl_xfont">extern XFontStruct *fl_xfont</A></H4>
<P>Points to the font selected by the most recent <A
href="drawing.html#fl_font"><TT>fl_font()</TT></A>. This is not
necessarily the current font of <TT>fl_gc</TT>, which is not set
until <A href="drawing.html#text"><TT>fl_draw()</TT></A> is
-called.
+called. If FLTK was compiled with Xft support, <TT>fl_xfont</TT>
+will usually be 0 and <TT>fl_xftfont</TT> will contain a pointer
+to the XftFont structure instead.
+
+<H4><A name="fl_xftfont">extern void *fl_xftfont</A></H4>
+
+<P>If FLTK was compiled with Xft support enabled, <tt>fl_xftfont</tt>
+Points to the xft font selected by the most recent <A
+href="drawing.html#fl_font"><TT>fl_font()</TT></A>. Otherwise
+it will be 0. <tt>fl_xftfont</tt> should be cast to
+<tt>XftFont*</tt>.
<H3>Changing the Display, Screen, or X Visual</H3>
@@ -361,7 +380,7 @@ should be used as follows:
#include &lt;X11/xpm.h&gt;
#include &quot;icon.xpm&quot;
-fl_opendisplay(); // needed if display has not been previously opened
+fl_open_display(); // needed if display has not been previously opened
Pixmap p, mask;
@@ -483,7 +502,7 @@ window handle, or <TT>NULL</TT> if not found. This function uses
a cache so it is slightly faster than iterating through the
windows yourself.
-<H3>Drawing Things Using the WIN32 GDI</H3>
+<H3><A name="WIN32.gdi">Drawing Things Using the WIN32 GDI</A></H3>
<P>When the virtual function <A
HREF="subclassing.html#draw"><TT>Fl_Widget::draw()</TT></A> is
@@ -630,6 +649,25 @@ window handle, or <TT>NULL</TT> if not found. FLTK windows that
are children of top-level windows share the WindowRef of the
top-level window.
+<h3>Apple "Quit" Event</h3>
+
+<P>When the user press Cmd-Q or requests a termination of the
+application, OS X will send a "Quit" Apple Event. FLTK handles
+this event by sending an <tt>FL_CLOSE</tt> event to all open
+windows. If all windows close, the application will terminate.
+
+<h3>Apple "Open" Event</h3>
+
+Whenever the user drops a file onto an application icon, OS X
+generates an Apple Event of the type "Open". You can have FLTK
+notify you of an Open event by setting the <tt>fl_open_callback</tt>.
+
+<h4><a name=fl_open_callback>void fl_open_callback(void (*cb)(const char *))</a></h4>
+
+<tt>cb</tt> will be called with a single iUnix-style file name and path.
+If multiple files were dropped, <tt>fl_open_callback</tt> will be called
+multiple times.
+
<h3>Drawing Things Using QuickDraw</h3>
<P>When the virtual function <tt>Fl_Widget::draw()</tt> is
@@ -637,6 +675,17 @@ called, FLTK has prepared the Window and CGrafPort for drawing.
Clipping and offsets are prepared to allow correct subwindow
drawing.
+<h3>Drawing Things Using Quartz</h3>
+
+<P>If the FLTK library was compiled using the configuration
+flag <tt>--enable-quartz</tt>, all code inside <tt>Fl_Widget::draw()</tt>
+is expected to call Quartz drawing functions instead of
+QuickDraw. The Quartz coordinate system is flipped to match
+FLTK's coordinate system. The origin for all drawing is in the top
+left corner of the enclosing <tt>Fl_Window</tt>.
+
+<h3>Fl_Double_Window</h3>
+
<P>OS X double-buffers all windows automatically. On OS X,
<tt>Fl_Window</tt> and <tt>Fl_Double_Window</tt> are handled
internally in the same way.
@@ -656,7 +705,7 @@ applications
will NOT copy any resource forks! For copying and moving use
CpMac and MvMac respectively. For creating a tar archive, all
executables need to be stripped from their Resource Fork before
-packing, e.g. "DeRez fluid >fluid.r". After unpacking the
+packing, e.g. "DeRez fluid &gt; fluid.r". After unpacking the
Resource Fork needs to be reattached, e.g. "Rez fluid.r -o
fluid".
</TD></TR></TABLE></CENTER>
diff --git a/documentation/preface.html b/documentation/preface.html
index b64a7b4..a20ff3e 100644
--- a/documentation/preface.html
+++ b/documentation/preface.html
@@ -1,16 +1,16 @@
<HTML>
<HEAD>
- <META CONTENT="Written by Michael Sweet, Craig P. Earls, and Bill Spitzak" NAME="Author">
+ <META CONTENT="Written by Michael Sweet, Craig P. Earls, Matthias Melcher, and Bill Spitzak" NAME="Author">
<META CONTENT="Copyright 1998-2006 by Bill Spitzak and Others." NAME="Copyright">
- <META CONTENT="Revision 7" NAME="DocNumber">
- <TITLE>FLTK 1.1.7 Programming Manual</TITLE>
+ <META CONTENT="Revision 8" NAME="DocNumber">
+ <TITLE>FLTK 1.1.8 Programming Manual</TITLE>
</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="preface">Preface</A></H1>
<P>This manual describes the Fast Light Tool Kit (&quot;FLTK&quot;)
-version 1.1.7, a C++ Graphical User Interface
+version 1.1.8, a C++ Graphical User Interface
(&quot;GUI&quot;) toolkit for UNIX, Microsoft Windows and MacOS. Each
of the chapters in this manual is designed as a tutorial for
using FLTK, while the appendices provide a convenient reference
diff --git a/documentation/subclassing.html b/documentation/subclassing.html
index 338ec3e..873f6cd 100644
--- a/documentation/subclassing.html
+++ b/documentation/subclassing.html
@@ -1,4 +1,8 @@
-<HTML><BODY>
+<HTML>
+<HEAD>
+ <TITLE>7 - Adding and Extending Widgets</TITLE>
+</HEAD>
+<BODY>
<H1 ALIGN=RIGHT><A NAME=subclassing>7 - Adding and Extending Widgets</A></H1>
This chapter describes how to add your own widgets or extend existing
widgets in FLTK.
diff --git a/documentation/widgets.html b/documentation/widgets.html
index 393b8af..f67d3c1 100644
--- a/documentation/widgets.html
+++ b/documentation/widgets.html
@@ -1,10 +1,13 @@
<HTML>
+<HEAD>
+ <TITLE>A - Class Reference</TITLE>
+</HEAD>
<BODY>
<H1 ALIGN="RIGHT"><A NAME="widgets">A - Class Reference</A></H1>
-This appendix describes all of the classes in FLTK. For a
-description of the <TT>fl_</TT> functions, see
+This appendix describes all classes in FLTK and their methods.
+For a description of the <TT>fl_</TT> functions, see
<A href="functions.html">Appendix B</A>.
<H2>Alphabetical List of Classes</H2>
@@ -25,6 +28,7 @@ description of the <TT>fl_</TT> functions, see
<A HREF="Fl_Check_Button.html">Fl_Check_Button</A><BR>
<A HREF="Fl_Choice.html">Fl_Choice</A><BR>
<A HREF="Fl_Clock.html">Fl_Clock</A><BR>
+<A HREF="Fl_Clock_Output.html">Fl_Clock_Output</A><BR>
<A HREF="Fl_Color_Chooser.html">Fl_Color_Chooser</A><BR>
<A HREF="Fl_Counter.html">Fl_Counter</A><BR>
<A HREF="Fl_Dial.html">Fl_Dial</A><BR>
@@ -41,7 +45,6 @@ description of the <TT>fl_</TT> functions, see
<A HREF="Fl_Help_Dialog.html">Fl_Help_Dialog</A><BR>
<A HREF="Fl_Help_View.html">Fl_Help_View</A><BR>
<A HREF="Fl_Hold_Browser.html">Fl_Hold_Browser</A><BR>
-<A HREF="Fl.html">Fl</A><BR>
<A HREF="Fl_Image.html">Fl_Image</A><BR>
<A HREF="Fl_Input_.html">Fl_Input_</A><BR>
<A HREF="Fl_Input.html">Fl_Input</A><BR>
@@ -54,8 +57,8 @@ description of the <TT>fl_</TT> functions, see
<A HREF="Fl_Menu_.html">Fl_Menu_</A><BR>
<A HREF="Fl_Menu_Item.html">Fl_Menu_Item</A><BR>
<A HREF="Fl_Menu_Window.html">Fl_Menu_Window</A><BR>
-</TD><TD>
<A HREF="Fl_Multi_Browser.html">Fl_Multi_Browser</A><BR>
+</TD><TD>
<A HREF="Fl_Multiline_Input.html">Fl_Multiline_Input</A><BR>
<A HREF="Fl_Multiline_Output.html">Fl_Multiline_Output</A><BR>
<A HREF="Fl_Output.html">Fl_Output</A><BR>
@@ -87,6 +90,7 @@ description of the <TT>fl_</TT> functions, see
<A HREF="Fl_Tiled_Image.html">Fl_Tiled_Image</A><BR>
<A HREF="Fl_Tile.html">Fl_Tile</A><BR>
<A HREF="Fl_Timer.html">Fl_Timer</A><BR>
+<A HREF="Fl_Toggle_Button.html">Fl_Toggle_Button</A><BR>
<A HREF="Fl_Tooltip.html">Fl_Tooltip</A><BR>
<A HREF="Fl_Valuator.html">Fl_Valuator</A><BR>
<A HREF="Fl_Value_Input.html">Fl_Value_Input</A><BR>
@@ -107,6 +111,7 @@ description of the <TT>fl_</TT> functions, see
<LI><A HREF="Fl.html">Fl</A>
<LI><A HREF="Fl_End.html#Fl_End">Fl_End</A>
<LI><A HREF="Fl_File_Icon.html#Fl_File_Icon">Fl_File_Icon</A>
+ <LI><A HREF="Fl_Help_Dialog.html#Fl_Help_Dialog">Fl_Help_Dialog</A>
<LI><A HREF="Fl_Image.html">Fl_Image</A>
<UL>
<LI><A HREF="Fl_Bitmap.html">Fl_Bitmap</A><BR>
@@ -135,17 +140,6 @@ description of the <TT>fl_</TT> functions, see
<LI><A HREF="Fl_Widget.html#Fl_Widget">Fl_Widget</A>
<UL>
<LI><A HREF="Fl_Box.html#Fl_Box">Fl_Box</A>
- <LI><A HREF="Fl_Browser_.html#Fl_Browser_">Fl_Browser_</A>
- <UL>
- <LI><A HREF="Fl_Browser.html#Fl_Browser">Fl_Browser</A>
- <UL>
- <LI><A HREF="Fl_File_Browser.html#Fl_File_Browser">Fl_File_Browser</A>
- <LI><A HREF="Fl_Hold_Browser.html#Fl_Hold_Browser">Fl_Hold_Browser</A>
- <LI><A HREF="Fl_Multi_Browser.html#Fl_Multi_Browser">Fl_Multi_Browser</A>
- <LI><A HREF="Fl_Select_Browser.html#Fl_Select_Browser">Fl_Select_Browser</A>
- </UL>
- <LI><A HREF="Fl_Check_Browser.html">Fl_Check_Browser</A>
- </UL>
<LI><A HREF="Fl_Button.html#Fl_Button">Fl_Button</A>
<UL>
<LI><A HREF="Fl_Check_Button.html#Fl_Check_Button">Fl_Check_Button</A>
@@ -153,20 +147,34 @@ description of the <TT>fl_</TT> functions, see
<LI><A HREF="Fl_Repeat_Button.html#Fl_Repeat_Button">Fl_Repeat_Button</A>
<LI><A HREF="Fl_Return_Button.html#Fl_Return_Button">Fl_Return_Button</A>
<LI><A HREF="Fl_Round_Button.html#Fl_Round_Button">Fl_Round_Button</A>
+ <LI><A HREF="Fl_Toggle_Button.html#Fl_Toggle_Button">Fl_Toggle_Button</A>
</UL>
<LI><A HREF="Fl_Chart.html#Fl_Chart">Fl_Chart</A>
- <LI><A HREF="Fl_Clock.html#Fl_Clock">Fl_Clock</A>
+ <LI><A HREF="Fl_Clock_Output.html#Fl_Clock_Output">Fl_Clock_Output</A>
+ <UL>
+ <LI><A HREF="Fl_Clock.html#Fl_Clock">Fl_Clock</A>
+ </UL>
+ <LI><A HREF="Fl_File_Chooser.html#Fl_File_Chooser">Fl_File_Chooser</A>
<LI><A HREF="Fl_Free.html#Fl_Free">Fl_Free</A>
<LI><A HREF="Fl_Group.html#Fl_Group">Fl_Group</A>
<UL>
+ <LI><A HREF="Fl_Browser_.html#Fl_Browser_">Fl_Browser_</A>
+ <UL>
+ <LI><A HREF="Fl_Browser.html#Fl_Browser">Fl_Browser</A>
+ <UL>
+ <LI><A HREF="Fl_File_Browser.html#Fl_File_Browser">Fl_File_Browser</A>
+ <LI><A HREF="Fl_Hold_Browser.html#Fl_Hold_Browser">Fl_Hold_Browser</A>
+ <LI><A HREF="Fl_Multi_Browser.html#Fl_Multi_Browser">Fl_Multi_Browser</A>
+ <LI><A HREF="Fl_Select_Browser.html#Fl_Select_Browser">Fl_Select_Browser</A>
+ </UL>
+ <LI><A HREF="Fl_Check_Browser.html">Fl_Check_Browser</A>
+ </UL>
<LI><A HREF="Fl_Color_Chooser.html#Fl_Color_Chooser">Fl_Color_Chooser</A>
- <LI><A HREF="Fl_File_Chooser.html#Fl_File_Chooser">Fl_File_Chooser</A>
- <LI><A HREF="Fl_Help_Dialog.html#Fl_Help_Dialog">Fl_Help_Dialog</A>
<LI><A HREF="Fl_Help_View.html#Fl_Help_View">Fl_Help_View</A>
<LI><A HREF="Fl_Input_Choice.html">Fl_Input_Choice</A>
<LI><A HREF="Fl_Pack.html#Fl_Pack">Fl_Pack</A>
<LI><A HREF="Fl_Scroll.html#Fl_Scroll">Fl_Scroll</A>
- <LI><A HREF="Fl_Slider.html#Fl_Slider">Fl_Slider</A>
+ <LI><A HREF="Fl_Spinner.html#Fl_Spinner">Fl_Spinner</A>
<LI><A HREF="Fl_Tabs.html#Fl_Tabs">Fl_Tabs</A>
<LI><A HREF="Fl_Text_Display.html">Fl_Text_Display</A>
<UL>
@@ -223,5 +231,675 @@ description of the <TT>fl_</TT> functions, see
</UL>
</UL>
+<H2>Alphabetical List of Methods</H2>
+
+<H3>A</H3><UL>
+<LI>activate: <A href=Fl_Menu_Item.html#Fl_Menu_Item.activate>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.activate>Fl_Widget</A></LI>
+<LI>active: <A href=Fl_Menu_Item.html#Fl_Menu_Item.active>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.active>Fl_Widget</A></LI>
+<LI>active_r: <A href=Fl_Widget.html#Fl_Widget.active_r>Fl_Widget</A></LI>
+<LI>add: <A HREF="Fl_File_Icon.html#Fl_File_Icon.add">Fl_File_Icon</A>,
+ <A href=Fl_Browser.html#Fl_Browser.add>Fl_Browser</A>,
+ <A href=Fl_Chart.html#Fl_Chart.add>Fl_Chart</A>,
+ <A href=Fl_Check_Browser.html#Fl_Check_Browser.add>Fl_Check_Browser</A>,
+ <A href=Fl_Group.html#Fl_Group.add>Fl_Group</A>,
+ <A href=Fl_Input_Choice.html#Fl_Input_Choice.add>Fl_Input_Choice</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.add>Fl_Menu_</A></LI>
+<LI>add_color: <A HREF="Fl_File_Icon.html#Fl_File_Icon.add_color">Fl_File_Icon</A></LI>
+<LI>add_default_key_bindings: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.add_default_key_bindings">Fl_Text_Editor</A></LI>
+<LI>add_key_binding: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.add_key_binding">Fl_Text_Editor</A></LI>
+<LI>add_modify_callback: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.add_modify_callback">Fl_Text_Buffer</A></LI>
+<LI>add_resizable: <A href=Fl_Group.html#Fl_Group.add_resizable>Fl_Group</A></LI>
+<LI>add_vertex: <A HREF="Fl_File_Icon.html#Fl_File_Icon.add_vertex">Fl_File_Icon</A></LI>
+<LI>align: <A href=Fl_Scroll.html#Fl_Scroll.align>Fl_Scroll</A>,
+ <A href=Fl_Widget.html#Fl_Widget.align>Fl_Widget</A></LI>
+<LI>angle1: <A href=Fl_Dial.html#Fl_Dial.angles>Fl_Dial</A></LI>
+<LI>angle2: <A href=Fl_Dial.html#Fl_Dial.angles>Fl_Dial</A></LI>
+<LI>angles: <A href=Fl_Dial.html#Fl_Dial.angles>Fl_Dial</A></LI>
+<LI>append: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.append">Fl_Text_Buffer</A></LI>
+<LI>appendfile: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.appendfile">Fl_Text_Buffer</A></LI>
+<LI>argument: <A href=Fl_Menu_Item.html#Fl_Menu_Item.argument>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.argument>Fl_Widget</A></LI>
+<LI>array: <A href=Fl_Group.html#Fl_Group.array>Fl_Group</A></LI>
+<LI>autosize: <A href=Fl_Chart.html#Fl_Chart.autosize>Fl_Chart</A></LI>
+</UL>
+<H3>B</H3><UL>
+<LI>b: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.b>Fl_Color_Chooser</A></LI>
+<LI>bbox: <A href="Fl_Browser_.html#Fl_Browser_.bbox">Fl_Browser_</A></LI>
+<LI>begin: <A href=Fl_Group.html#Fl_Group.begin>Fl_Group</A></LI>
+<LI>border: <A href=Fl_Window.html#Fl_Window.border>Fl_Window</A></LI>
+<LI>bottomline: <A href=Fl_Browser.html#Fl_Browser.bottomline>Fl_Browser</A></LI>
+<LI>bound_key_function: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.bound_key_function">Fl_Text_Editor</A></LI>
+<LI>bounds: <A href="Fl_Valuator.html#Fl_Valuator.bounds">Fl_Valuator</A>,
+ <A href=Fl_Chart.html#Fl_Chart.bounds>Fl_Chart</A></LI>
+<LI>box: <A href=Fl_Widget.html#Fl_Widget.box>Fl_Widget</A></LI>
+<LI>buffer: <A HREF="Fl_Text_Display.html#Fl_Text_Display.buffer">Fl_Text_Display</A></LI>
+</UL>
+<H3>C</H3><UL>
+<LI>call_modify_callbacks: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.call_modify_callbacks">Fl_Text_Buffer</A></LI>
+<LI>callback: <A href=Fl_Menu_Item.html#Fl_Menu_Item.callback>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.callback>Fl_Widget</A></LI>
+<LI>can_do: <A href=Fl_Gl_Window.html#Fl_Gl_Window.can_do>Fl_Gl_Window</A></LI>
+<LI>can_do_overlay: <A href=Fl_Gl_Window.html#Fl_Gl_Window.can_do_overlay>Fl_Gl_Window</A></LI>
+<LI>changed: <A href="Fl_Valuator.html#Fl_Valuator.changed">Fl_Valuator</A>,
+ <A href=Fl_Choice.html#Fl_Choice.changed>Fl_Choice</A>,
+ <A href=Fl_Widget.html#Fl_Widget.changed>Fl_Widget</A></LI>
+<LI>character: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.character">Fl_Text_Buffer</A></LI>
+<LI>character_width: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.character_width">Fl_Text_Buffer</A></LI>
+<LI>check_all: <A href=Fl_Check_Browser.html#Fl_Check_Browser.check_all>Fl_Check_Browser</A></LI>
+<LI>check_none: <A href=Fl_Check_Browser.html#Fl_Check_Browser.check_none>Fl_Check_Browser</A></LI>
+<LI>checkbox: <A href=Fl_Menu_Item.html#Fl_Menu_Item.checkbox>Fl_Menu_Item</A></LI>
+<LI>checked: <A href=Fl_Check_Browser.html#Fl_Check_Browser.checked>Fl_Check_Browser</A></LI>
+<LI>child: <A href=Fl_Group.html#Fl_Group.child>Fl_Group</A></LI>
+<LI>children: <A href=Fl_Group.html#Fl_Group.children>Fl_Group</A></LI>
+<LI>clamp: <A href="Fl_Valuator.html#Fl_Valuator.clamp">Fl_Valuator</A></LI>
+<LI>clear: <A HREF="Fl_File_Icon.html#Fl_File_Icon.clear">Fl_File_Icon</A>,
+ <A href="Fl_Group.html#Fl_Group.clear">Fl_Group</A>,
+ <A href=Fl_Browser.html#Fl_Browser.clear>Fl_Browser</A>,
+ <A href=Fl_Button.html#Fl_Button.clear>Fl_Button</A>,
+ <A href=Fl_Chart.html#Fl_Chart.clear>Fl_Chart</A>,
+ <A href=Fl_Check_Browser.html#Fl_Check_Browser.clear>Fl_Check_Browser</A>,
+ <A href=Fl_Input_Choice.html#Fl_Input_Choice.clear>Fl_Input_Choice</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.clear>Fl_Menu_</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.clear>Fl_Menu_Item</A></LI>
+<LI>clear_border: <A href=Fl_Window.html#Fl_Window.clear_border>Fl_Window</A></LI>
+<LI>clear_changed: <A href="Fl_Valuator.html#Fl_Valuator.clear_changed">Fl_Valuator</A>,
+ <A href=Fl_Choice.html#Fl_Choice.clear_changed>Fl_Choice</A>,
+ <A href=Fl_Widget.html#Fl_Widget.clear_changed>Fl_Widget</A></LI>
+<LI>clear_output: <A href=Fl_Widget.html#Fl_Widget.clear_output>Fl_Widget</A></LI>
+<LI>clear_overlay: <A href=Fl_Menu_Window.html#Fl_Menu_Window.clear_overlay>Fl_Menu_Window</A></LI>
+<LI>clear_rectangular: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.clear_rectangular">Fl_Text_Buffer</A></LI>
+<LI>clear_visible: <A href=Fl_Widget.html#Fl_Widget.clear_visible>Fl_Widget</A></LI>
+<LI>clear_visible_focus: <A href=Fl_Widget.html#Fl_Widget.clear_visible_focus>Fl_Widget</A></LI>
+<LI>color: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.color">Fl_File_Chooser</A>,
+ <A HREF="Fl_Tooltip.html#Fl_Tooltip.color">Fl_Tooltip</A>,
+ <A href=Fl_Widget.html#Fl_Widget.color>Fl_Widget</A></LI>
+<LI>color_average: <A href="Fl_Image.html#Fl_Image.color_average">Fl_Image</A></LI>
+<LI>column_char: <A href=Fl_Browser.html#Fl_Browser.column_char>Fl_Browser</A></LI>
+<LI>column_widths: <A href=Fl_Browser.html#Fl_Browser.column_widths>Fl_Browser</A></LI>
+<LI>contains: <A href=Fl_Widget.html#Fl_Widget.contains>Fl_Widget</A></LI>
+<LI>context: <A href=Fl_Gl_Window.html#Fl_Gl_Window.context>Fl_Gl_Window</A></LI>
+<LI>context_valid: <A href=Fl_Gl_Window.html#Fl_Gl_Window.context_valid>Fl_Gl_Window</A></LI>
+<LI>copy: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.copy">Fl_Text_Buffer</A>,
+ <A href="Fl_Image.html#Fl_Image.copy">Fl_Image</A>,
+ <A href="Fl_Input_.html#Fl_Input_.copy">Fl_Input_</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.copy>Fl_Menu_</A></LI>
+<LI>copy_cuts: <A href="Fl_Input_.html#Fl_Input_.copy_cuts">Fl_Input_</A></LI>
+<LI>copy_label: <A href=Fl_Widget.html#Fl_Widget.copy_label>Fl_Widget</A></LI>
+<LI>count: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.count">Fl_File_Chooser</A>,
+ <A href="Fl_Image.html#Fl_Image.count">Fl_Image</A></LI>
+<LI>count_displayed_characters: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.count_displayed_characters">Fl_Text_Buffer</A></LI>
+<LI>count_lines: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.count_lines">Fl_Text_Buffer</A></LI>
+<LI>current: <A href=Fl_Group.html#Fl_Group.current>Fl_Group</A>,
+ <A href=Fl_Window.html#Fl_Window.current>Fl_Window</A></LI>
+<LI>cursor: <A href=Fl_Window.html#Fl_Window.cursor>Fl_Window</A></LI>
+<LI>cursor_color: <A HREF="Fl_Text_Display.html#Fl_Text_Display.cursor_color">Fl_Text_Display</A>,
+ <A href="Fl_Value_Input.html#Fl_Value_Input.cursor_color">Fl_Value_Input</A>,
+ <A href=Fl_Input.html#Fl_Input.cursor_color>Fl_Input</A></LI>
+<LI>cursor_style: <A HREF="Fl_Text_Display.html#Fl_Text_Display.cursor_style">Fl_Text_Display</A></LI>
+<LI>cut: <A href="Fl_Input_.html#Fl_Input_.cut">Fl_Input_</A></LI>
+</UL>
+<H3>D</H3><UL>
+<LI>d: <A href="Fl_Image.html#Fl_Image.d">Fl_Image</A></LI>
+<LI>damage: <A href=Fl_Widget.html#Fl_Widget.damage>Fl_Widget</A></LI>
+<LI>data: <A href="Fl_Image.html#Fl_Image.data">Fl_Image</A>,
+ <A href=Fl_Browser.html#Fl_Browser.data>Fl_Browser</A></LI>
+<LI>deactivate: <A href=Fl_Menu_Item.html#Fl_Menu_Item.deactivate>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.deactivate>Fl_Widget</A></LI>
+<LI>default_callback: <A href=Fl_Widget.html#Fl_Widget.default_callback>Fl_Widget</A></LI>
+<LI>default_key_function: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.default_key_function">Fl_Text_Editor</A></LI>
+<LI>deimage: <A href=Fl_Widget.html#Fl_Widget.deimage>Fl_Widget</A></LI>
+<LI>delay: <A HREF="Fl_Tooltip.html#Fl_Tooltip.delay">Fl_Tooltip</A></LI>
+<LI>deleteEntry: <a href="Fl_Preferences.html#Fl_Preferences.deleteEntry">Fl_Preferences</a></LI>
+<LI>deleteGroup: <a href="Fl_Preferences.html#Fl_Preferences.deleteGroup">Fl_Preferences</a></LI>
+<LI>deleting: <A href="Fl_Browser_.html#Fl_Browser_.deleting">Fl_Browser_</A></LI>
+<LI>desaturate: <A href="Fl_Image.html#Fl_Image.desaturate">Fl_Image</A></LI>
+<LI>deselect: <A href="Fl_Browser_.html#Fl_Browser_.deselect">Fl_Browser_</A>,
+ <A href=Fl_Hold_Browser.html#Fl_Hold_Browser.deselect>Fl_Hold_Browser</A>,
+ <A href=Fl_Multi_Browser.html#Fl_Multi_Browser.deselect>Fl_Multi_Browser</A>,
+ <A href=Fl_Select_Browser.html#Fl_Select_Browser.deselect>Fl_Select_Browser</A></LI>
+<LI>direction: <A href=Fl_Timer.html#Fl_Timer.direction>Fl_Timer</A></LI>
+<LI>directory: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.directory">Fl_File_Chooser</A>,
+ <A HREF="Fl_Help_View.html#Fl_Help_View.directory">Fl_Help_View</A></LI>
+<LI>disable: <A HREF="Fl_Tooltip.html#Fl_Tooltip.disable">Fl_Tooltip</A></LI>
+<LI>display: <A href="Fl_Browser_.html#Fl_Browser_.display">Fl_Browser_</A></LI>
+<LI>displayed: <A href="Fl_Browser_.html#Fl_Browser_.displayed">Fl_Browser_</A></LI>
+<LI>do_callback: <A href=Fl_Menu_Item.html#Fl_Menu_Item.do_callback>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.do_callback>Fl_Widget</A></LI>
+<LI>down_box: <A href="Fl_File_Input.html#Fl_File_Input.down_box">Fl_File_Input</A>,
+ <A href=Fl_Button.html#Fl_Button.down_box>Fl_Button</A>,
+ <A href=Fl_Choice.html#Fl_Choice.down_box>Fl_Choice</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.down_box>Fl_Menu_</A></LI>
+<LI>draw: <A HREF="Fl_File_Icon.html#Fl_File_Icon.draw">Fl_File_Icon</A>,
+ <A href="Fl_Browser_.html#Fl_Browser_.draw">Fl_Browser_</A>,
+ <A href="Fl_Image.html#Fl_Image.draw">Fl_Image</A>,
+ <A href=Fl_Gl_Window.html#Fl_Gl_Window.draw>Fl_Gl_Window</A></LI>
+<LI>draw_empty: <A href="Fl_Image.html#Fl_Image.draw_empty">Fl_Image</A></LI>
+<LI>draw_overlay: <A href=Fl_Gl_Window.html#Fl_Gl_Window.draw_overlay>Fl_Gl_Window</A>,
+ <A href=Fl_Overlay_Window.html#Fl_Overlay_Window.draw_overlay>Fl_Overlay_Window</A></LI>
+<LI>drawtext: <A href="Fl_Input_.html#Fl_Input_.drawtext">Fl_Input_</A></LI>
+</UL>
+<H3>E</H3><UL>
+<LI>enable: <A HREF="Fl_Tooltip.html#Fl_Tooltip.enable">Fl_Tooltip</A></LI>
+<LI>enabled: <A HREF="Fl_Tooltip.html#Fl_Tooltip.enabled">Fl_Tooltip</A></LI>
+<LI>end: <A href=Fl_Group.html#Fl_Group.end>Fl_Group</A></LI>
+<LI>enter: <A HREF="Fl_Tooltip.html#Fl_Tooltip.enter">Fl_Tooltip</A></LI>
+<LI>enter_area: <A HREF="Fl_Tooltip.html#Fl_Tooltip.enter_area">Fl_Tooltip</A></LI>
+<LI>entries: <a href="Fl_Preferences.html#Fl_Preferences.entries">Fl_Preferences</a></LI>
+<LI>entry: <a href="Fl_Preferences.html#Fl_Preferences.entry">Fl_Preferences</a></LI>
+<LI>entryExists: <a href="Fl_Preferences.html#Fl_Preferences.entryExists">Fl_Preferences</a></LI>
+<LI>exit: <A HREF="Fl_Tooltip.html#Fl_Tooltip.exit">Fl_Tooltip</A></LI>
+<LI>expand_character: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.expand_character">Fl_Text_Buffer</A></LI>
+</UL>
+<H3>F</H3><UL>
+<LI>filename: <A HREF="Fl_Help_View.html#Fl_Help_View.filename">Fl_Help_View</A></LI>
+<LI>filetype: <A HREF="Fl_File_Browser.html#Fl_File_Browser.filetype">Fl_File_Browser</A></LI>
+<LI>filter: <A HREF="Fl_File_Browser.html#Fl_File_Browser.filter">Fl_File_Browser</A>,
+ <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.filter">Fl_File_Chooser</A></LI>
+<LI>filter_value: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.filter_value">Fl_File_Chooser</A></LI>
+<LI>find: <A HREF="Fl_File_Icon.html#Fl_File_Icon.find">Fl_File_Icon</A>,
+ <A href="Fl_Shared_Image.html#Fl_Shared_Image.find">Fl_Shared_Image</A>,
+ <A href=Fl_Group.html#Fl_Group.find>Fl_Group</A></LI>
+<LI>find_item: <A href="Fl_Browser_.html#Fl_Browser_.find_item">Fl_Browser_</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.find_item>Fl_Menu_</A></LI>
+<LI>findchar_backward: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.findchar_backward">Fl_Text_Buffer</A></LI>
+<LI>findchar_forward: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.findchar_forward">Fl_Text_Buffer</A></LI>
+<LI>findchars_backward: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.findchars_backward">Fl_Text_Buffer</A></LI>
+<LI>findchars_forward: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.findchars_forward">Fl_Text_Buffer</A></LI>
+<LI>first: <A HREF="Fl_File_Icon.html#Fl_File_Icon.first">Fl_File_Icon</A></LI>
+<LI>font: <A HREF="Fl_Tooltip.html#Fl_Tooltip.font">Fl_Tooltip</A></LI>
+<LI>format: <A href="Fl_Valuator.html#Fl_Valuator.format">Fl_Valuator</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.format>Fl_Spinner</a></LI>
+<LI>format_char: <A href=Fl_Browser.html#Fl_Browser.format_char>Fl_Browser</A></LI>
+<LI>free_position: <A href=Fl_Window.html#Fl_Window.free_position>Fl_Window</A></LI>
+<LI>full_height: <A href="Fl_Browser_.html#Fl_Browser_.full_height">Fl_Browser_</A></LI>
+<LI>full_width: <A href="Fl_Browser_.html#Fl_Browser_.full_width">Fl_Browser_</A></LI>
+<LI>fullscreen: <A href=Fl_Window.html#Fl_Window.fullscreen>Fl_Window</A></LI>
+<LI>fullscreen_off: <A href=Fl_Window.html#Fl_Window.fullscreen_off>Fl_Window</A></LI>
+</UL>
+<H3>G</H3><UL>
+<LI>g: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.g>Fl_Color_Chooser</A></LI>
+<LI>get: <A href="Fl_Shared_Image.html#Fl_Shared_Image.get">Fl_Shared_Image</A>,
+ <a href="Fl_Preferences.html#Fl_Preferences.get">Fl_Preferences</a></LI>
+<LI>getUserdataPath: <a href="Fl_Preferences.html#Fl_Preferences.getUserdataPath">Fl_Preferences</a></LI>
+<LI>global: <A href=Fl_Menu_.html#Fl_Menu_.global>Fl_Menu_</A></LI>
+<LI>group: <a href="Fl_Preferences.html#Fl_Preferences.group">Fl_Preferences</a></LI>
+<LI>groupExists: <a href="Fl_Preferences.html#Fl_Preferences.groupExists">Fl_Preferences</a></LI>
+<LI>groups: <a href="Fl_Preferences.html#Fl_Preferences.groups">Fl_Preferences</a></LI>
+</UL>
+<H3>H</H3><UL>
+<LI>h: <A href="Fl_Image.html#Fl_Image.h">Fl_Image</A>,
+ <A href=Fl_Widget.html#Fl_Widget.h>Fl_Widget</A></LI>
+<LI>handle: <A href="Fl_Browser_.html#Fl_Browser_.handle">Fl_Browser_</A>,
+ <A href=Fl_Widget.html#Fl_Widget.handle>Fl_Widget</A></LI>
+<LI>handletext: <A href="Fl_Input_.html#Fl_Input_.handletext">Fl_Input_</A></LI>
+<LI>has_scrollbar: <A href="Fl_Browser_.html#Fl_Browser_.has_scrollbar">Fl_Browser_</A></LI>
+<LI>hide: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.hide">Fl_File_Chooser</A>,
+ <A HREF="Fl_Help_Dialog.html#Fl_Help_Dialog.hide">Fl_Help_Dialog</A>,
+ <A href=Fl_Browser.html#Fl_Browser.hide>Fl_Browser</A>,
+ <A href=Fl_Gl_Window.html#Fl_Gl_Window.hide>Fl_Gl_Window</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.hide>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.hide>Fl_Widget</A>,
+ <A href=Fl_Window.html#Fl_Window.hide>Fl_Window</A></LI>
+<LI>hide_cursor: <A HREF="Fl_Text_Display.html#Fl_Text_Display.hide_cursor">Fl_Text_Display</A></LI>
+<LI>highlight: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.highlight">Fl_Text_Buffer</A></LI>
+<LI>highlight_data: <A HREF="Fl_Text_Display.html#Fl_Text_Display.highlight_data">Fl_Text_Display</A></LI>
+<LI>highlight_position: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.highlight_position">Fl_Text_Buffer</A></LI>
+<LI>highlight_rectangular: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.highlight_rectangular">Fl_Text_Buffer</A></LI>
+<LI>highlight_selection: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.highlight_selection">Fl_Text_Buffer</A></LI>
+<LI>highlight_text: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.highlight_text">Fl_Text_Buffer</A></LI>
+<LI>hotspot: <A href=Fl_Window.html#Fl_Window.hotspot>Fl_Window</A></LI>
+<LI>hour: <A href=Fl_Clock.html#Fl_Clock.hour>Fl_Clock</A>,
+ <A href=Fl_Clock_Output.html#Fl_Clock_Output.hour>Fl_Clock_Output</A></LI>
+<LI>hoverdelay: <A HREF="Fl_Tooltip.html#Fl_Tooltip.hoverdelay">Fl_Tooltip</A></LI>
+<LI>hposition: <A href="Fl_Browser_.html#Fl_Browser_.hposition">Fl_Browser_</A></LI>
+<LI>hsv2rgb: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.hsv2rgb>Fl_Color_Chooser</A></LI>
+<LI>hsv: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.hsv>Fl_Color_Chooser</A></LI>
+<LI>hue: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.hue>Fl_Color_Chooser</A></LI>
+</UL>
+<H3>I</H3><UL>
+<LI>iconize: <A href=Fl_Window.html#Fl_Window.iconize>Fl_Window</A></LI>
+<LI>iconlabel: <A href=Fl_Window.html#Fl_Window.iconlabel>Fl_Window</A></LI>
+<LI>iconsize: <A HREF="Fl_File_Browser.html#Fl_File_Browser.iconsize">Fl_File_Browser</A>,
+ <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.iconsize">Fl_File_Chooser</A></LI>
+<LI>image: <A href="Fl_Tiled_Image.html#Fl_Tiled_Image.image">Fl_Tiled_Image</A>,
+ <A href=Fl_Widget.html#Fl_Widget.image>Fl_Widget</A></LI>
+<LI>images: <A href="Fl_Shared_Image.html#Fl_Shared_Image.images">Fl_Shared_Image</A></LI>
+<LI>in_selection: <A HREF="Fl_Text_Display.html#Fl_Text_Display.in_selection">Fl_Text_Display</A></LI>
+<LI>inactive: <A href="Fl_Image.html#Fl_Image.inactive">Fl_Image</A></LI>
+<LI>incr_height: <A href="Fl_Browser_.html#Fl_Browser_.incr_height">Fl_Browser_</A></LI>
+<LI>increment: <A href="Fl_Valuator.html#Fl_Valuator.increment">Fl_Valuator</A></LI>
+<LI>index: <A href=Fl_Input.html#Fl_Input.index>Fl_Input</A>,
+ <A href=Fl_Output.html#Fl_Output.index>Fl_Output</A></LI>
+<LI>init_sizes: <A href=Fl_Group.html#Fl_Group.init_sizes>Fl_Group</A></LI>
+<LI>input: <A href=Fl_Input_Choice.html#Fl_Input_Choice.input>Fl_Input_Choice</A></LI>
+<LI>input_type: <A href="Fl_Input_.html#Fl_Input_.input_type">Fl_Input_</A></LI>
+<LI>insert: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.insert">Fl_Text_Buffer</A>,
+ <A HREF="Fl_Text_Display.html#Fl_Text_Display.insert">Fl_Text_Display</A>,
+ <A href="Fl_Input_.html#Fl_Input_.insert">Fl_Input_</A>,
+ <A href=Fl_Browser.html#Fl_Browser.insert>Fl_Browser</A>,
+ <A href=Fl_Chart.html#Fl_Chart.insert>Fl_Chart</A>,
+ <A href=Fl_Group.html#Fl_Group.insert>Fl_Group</A></LI>
+<LI>insert_column: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.insert_column">Fl_Text_Buffer</A></LI>
+<LI>insert_mode: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.insert_mode">Fl_Text_Editor</A></LI>
+<LI>insert_position: <A HREF="Fl_Text_Display.html#Fl_Text_Display.insert_position">Fl_Text_Display</A></LI>
+<LI>insertfile: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.insertfile">Fl_Text_Buffer</A></LI>
+<LI>inserting: <A href="Fl_Browser_.html#Fl_Browser_.inserting">Fl_Browser_</A></LI>
+<LI>inside: <A href=Fl_Widget.html#Fl_Widget.inside>Fl_Widget</A></LI>
+<LI>invalidate: <A href=Fl_Gl_Window.html#Fl_Gl_Window.invalidate>Fl_Gl_Window</A></LI>
+<LI>item_draw: <A href="Fl_Browser_.html#Fl_Browser_.item_draw">Fl_Browser_</A></LI>
+<LI>item_first: <A href="Fl_Browser_.html#Fl_Browser_.item_first">Fl_Browser_</A></LI>
+<LI>item_height: <A href="Fl_Browser_.html#Fl_Browser_.item_height">Fl_Browser_</A></LI>
+<LI>item_next: <A href="Fl_Browser_.html#Fl_Browser_.item_next">Fl_Browser_</A></LI>
+<LI>item_pathname: <A href=Fl_Menu_.html#Fl_Menu_.item_pathname>Fl_Menu_</A></LI>
+<LI>item_prev: <A href="Fl_Browser_.html#Fl_Browser_.item_prev">Fl_Browser_</A></LI>
+<LI>item_quick_height: <A href="Fl_Browser_.html#Fl_Browser_.item_quick_height">Fl_Browser_</A></LI>
+<LI>item_select: <A href="Fl_Browser_.html#Fl_Browser_.item_select">Fl_Browser_</A></LI>
+<LI>item_selected: <A href="Fl_Browser_.html#Fl_Browser_.item_selected">Fl_Browser_</A></LI>
+<LI>item_width: <A href="Fl_Browser_.html#Fl_Browser_.item_width">Fl_Browser_</A></LI>
+</UL>
+<H3>K</H3><UL>
+<LI>kf_backspace: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_backspace">Fl_Text_Editor</A></LI>
+<LI>kf_c_s_move: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_c_s_move">Fl_Text_Editor</A></LI>
+<LI>kf_copy: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_copy">Fl_Text_Editor</A></LI>
+<LI>kf_ctrl_move: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_ctrl_move">Fl_Text_Editor</A></LI>
+<LI>kf_cut: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_cut">Fl_Text_Editor</A></LI>
+<LI>kf_default: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_default">Fl_Text_Editor</A></LI>
+<LI>kf_delete: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_delete">Fl_Text_Editor</A></LI>
+<LI>kf_down: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_down">Fl_Text_Editor</A></LI>
+<LI>kf_end: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_end">Fl_Text_Editor</A></LI>
+<LI>kf_enter: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_enter">Fl_Text_Editor</A></LI>
+<LI>kf_home: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_home">Fl_Text_Editor</A></LI>
+<LI>kf_ignore: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_ignore">Fl_Text_Editor</A></LI>
+<LI>kf_insert: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_insert">Fl_Text_Editor</A></LI>
+<LI>kf_left: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_left">Fl_Text_Editor</A></LI>
+<LI>kf_move: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_move">Fl_Text_Editor</A></LI>
+<LI>kf_page_down: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_page_down">Fl_Text_Editor</A></LI>
+<LI>kf_page_up: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_page_up">Fl_Text_Editor</A></LI>
+<LI>kf_paste: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_paste">Fl_Text_Editor</A></LI>
+<LI>kf_right: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_right">Fl_Text_Editor</A></LI>
+<LI>kf_select_all: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_select_all">Fl_Text_Editor</A></LI>
+<LI>kf_shift_move: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_shift_move">Fl_Text_Editor</A></LI>
+<LI>kf_up: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.kf_up">Fl_Text_Editor</A></LI>
+</UL>
+<H3>L</H3><UL>
+<LI>label: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.label">Fl_File_Chooser</A>,
+ <A HREF="Fl_File_Icon.html#Fl_File_Icon.label">Fl_File_Icon</A>,
+ <A href="Fl_Image.html#Fl_Image.label">Fl_Image</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.label>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.label>Fl_Widget</A>,
+ <A href=Fl_Window.html#Fl_Window.label>Fl_Window</A></LI>
+<LI>labelcolor: <A href=Fl_Menu_Item.html#Fl_Menu_Item.labelcolor>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.labelcolor>Fl_Widget</A></LI>
+<LI>labelfont: <A href=Fl_Menu_Item.html#Fl_Menu_Item.labelfont>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.labelfont>Fl_Widget</A></LI>
+<LI>labelsize: <A href=Fl_Menu_Item.html#Fl_Menu_Item.labelsize>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.labelsize>Fl_Widget</A></LI>
+<LI>labeltype: <A HREF="Fl_File_Icon.html#Fl_File_Icon.labeltype">Fl_File_Icon</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.labeltype>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.labeltype>Fl_Widget</A></LI>
+<LI>ld: <A href="Fl_Image.html#Fl_Image.ld">Fl_Image</A></LI>
+<LI>leftedge: <A href="Fl_Browser_.html#Fl_Browser_.leftedge">Fl_Browser_</A></LI>
+<LI>length: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.length">Fl_Text_Buffer</A></LI>
+<LI>line_end: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.line_end">Fl_Text_Buffer</A></LI>
+<LI>line_start: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.line_start">Fl_Text_Buffer</A></LI>
+<LI>line_text: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.line_text">Fl_Text_Buffer</A></LI>
+<LI>lineboundary: <A href="Fl_Input_.html#Fl_Input_.lineboundary">Fl_Input_</A></LI>
+<LI>linesize: <A href=Fl_Scrollbar.html#Fl_Scrollbar.linesize>Fl_Scrollbar</A></LI>
+<LI>link: <A HREF="Fl_Help_View.html#Fl_Help_View.link">Fl_Help_View</A></LI>
+<LI>load: <A HREF="Fl_File_Browser.html#Fl_File_Browser.load">Fl_File_Browser</A>,
+ <A HREF="Fl_File_Icon.html#Fl_File_Icon.load">Fl_File_Icon</A>,
+ <A HREF="Fl_Help_Dialog.html#Fl_Help_Dialog.load">Fl_Help_Dialog</A>,
+ <A HREF="Fl_Help_View.html#Fl_Help_View.load">Fl_Help_View</A>,
+ <A href=Fl_Browser.html#Fl_Browser.load>Fl_Browser</A></LI>
+<LI>load_fti: <A HREF="Fl_File_Icon.html#Fl_File_Icon.load_fti">Fl_File_Icon</A></LI>
+<LI>load_system_icons: <A HREF="Fl_File_Icon.html#Fl_File_Icon.load_system_icons">Fl_File_Icon</A></LI>
+<LI>load_xpm: <A HREF="Fl_File_Icon.html#Fl_File_Icon.load_xpm">Fl_File_Icon</A></LI>
+<LI>loadfile: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.loadfile">Fl_Text_Buffer</A></LI>
+<LI>lstep: <A href=Fl_Counter.html#Fl_Counter.lstep>Fl_Counter</A></LI>
+</UL>
+<H3>M</H3><UL>
+<LI>make_current: <A href=Fl_Gl_Window.html#Fl_Gl_Window.make_current>Fl_Gl_Window</A>,
+ <A href=Fl_Window.html#Fl_Window.make_current>Fl_Window</A></LI>
+<LI>make_overlay_current: <A href=Fl_Gl_Window.html#Fl_Gl_Window.make_overlay_current>Fl_Gl_Window</A></LI>
+<LI>mark: <A href="Fl_Input_.html#Fl_Input_.mark">Fl_Input_</A></LI>
+<LI>maximum: <A href="Fl_Progress.html#Fl_Progress.maximum">Fl_Progress</A>,
+ <A href="Fl_Valuator.html#Fl_Valuator.maximum">Fl_Valuator</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.maximum>Fl_Spinner</a></LI>
+<LI>maximum_size: <A href="Fl_Input_.html#Fl_Input_.maximum_size">Fl_Input_</A></LI>
+<LI>maxsize: <A href=Fl_Chart.html#Fl_Chart.maxsize>Fl_Chart</A></LI>
+<LI>maybe_do_callback: <A href="Fl_Input_.html#Fl_Input_.maybe_do_callback">Fl_Input_</A></LI>
+<LI>menu: <A href=Fl_Input_Choice.html#Fl_Input_Choice.menu>Fl_Input_Choice</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.menu>Fl_Menu_</A></LI>
+<LI>menubutton: <A href=Fl_Input_Choice.html#Fl_Input_Choice.menubutton>Fl_Input_Choice</A></LI>
+<LI>middleline: <A href=Fl_Browser.html#Fl_Browser.middleline>Fl_Browser</A></LI>
+<LI>minimum: <A href="Fl_Progress.html#Fl_Progress.minimum">Fl_Progress</A>,
+ <A href="Fl_Valuator.html#Fl_Valuator.minimum">Fl_Valuator</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.minimum>Fl_Spinner</a></LI>
+<LI>minute: <A href=Fl_Clock.html#Fl_Clock.minute>Fl_Clock</A>,
+ <A href=Fl_Clock_Output.html#Fl_Clock_Output.minute>Fl_Clock_Output</A></LI>
+<LI>modal: <A href=Fl_Window.html#Fl_Window.modal>Fl_Window</A></LI>
+<LI>mode: <A href=Fl_Gl_Window.html#Fl_Gl_Window.mode>Fl_Gl_Window</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.mode>Fl_Menu_</A></LI>
+<LI>move: <A href=Fl_Browser.html#Fl_Browser.move>Fl_Browser</A></LI>
+<LI>move_down: <A HREF="Fl_Text_Display.html#Fl_Text_Display.move_down">Fl_Text_Display</A></LI>
+<LI>move_left: <A HREF="Fl_Text_Display.html#Fl_Text_Display.move_left">Fl_Text_Display</A></LI>
+<LI>move_right: <A HREF="Fl_Text_Display.html#Fl_Text_Display.move_right">Fl_Text_Display</A></LI>
+<LI>move_up: <A HREF="Fl_Text_Display.html#Fl_Text_Display.move_up">Fl_Text_Display</A></LI>
+<LI>mvalue: <A href=Fl_Menu_.html#Fl_Menu_.mvalue>Fl_Menu_</A></LI>
+</UL>
+<H3>N</H3><UL>
+<LI>name: <A href="Fl_Shared_Image.html#Fl_Shared_Image.name">Fl_Shared_Image</A></LI>
+<LI>nchecked: <A href=Fl_Check_Browser.html#Fl_Check_Browser.nchecked>Fl_Check_Browser</A></LI>
+<LI>new_list: <A href="Fl_Browser_.html#Fl_Browser_.new_list">Fl_Browser_</A></LI>
+<LI>next: <A HREF="Fl_Wizard.html#Fl_Wizard.next">Fl_Wizard</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.next>Fl_Menu_Item</A></LI>
+<LI>next_word: <A HREF="Fl_Text_Display.html#Fl_Text_Display.next_word">Fl_Text_Display</A></LI>
+<LI>nitems: <A href=Fl_Check_Browser.html#Fl_Check_Browser.nitems>Fl_Check_Browser</A></LI>
+<LI>non_modal: <A href=Fl_Window.html#Fl_Window.non_modal>Fl_Window</A></LI>
+<LI>null_substitution_character: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.null_substitution_character">Fl_Text_Buffer</A></LI>
+<LI>num_images: <A href="Fl_Shared_Image.html#Fl_Shared_Image.num_images">Fl_Shared_Image</A></LI>
+</UL>
+<H3>O</H3><UL>
+<LI>ok_label: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.ok_label">Fl_File_Chooser</A></LI>
+<LI>ortho: <A href=Fl_Gl_Window.html#Fl_Gl_Window.ortho>Fl_Gl_Window</A></LI>
+<LI>output: <A href=Fl_Widget.html#Fl_Widget.output>Fl_Widget</A></LI>
+<LI>outputfile: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.outputfile">Fl_Text_Buffer</A></LI>
+<LI>overlay_rectangular: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.overlay_rectangular">Fl_Text_Buffer</A></LI>
+<LI>overstrike: <A HREF="Fl_Text_Display.html#Fl_Text_Display.overstrike">Fl_Text_Display</A></LI>
+</UL>
+<H3>P</H3><UL>
+<LI>parent: <A href=Fl_Widget.html#Fl_Widget.parent>Fl_Widget</A></LI>
+<LI>pattern: <A HREF="Fl_File_Icon.html#Fl_File_Icon.pattern">Fl_File_Icon</A></LI>
+<LI>popup: <A href=Fl_Menu_Button.html#Fl_Menu_Button.popup>Fl_Menu_Button</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.popup>Fl_Menu_Item</A></LI>
+<LI>position: <A href="Fl_Browser_.html#Fl_Browser_.position">Fl_Browser_</A>,
+ <A href="Fl_Input_.html#Fl_Input_.position">Fl_Input_</A>,
+ <A href=Fl_Browser.html#Fl_Browser.position>Fl_Browser</A>,
+ <A href=Fl_Scroll.html#Fl_Scroll.position>Fl_Scroll</A>,
+ <A href=Fl_Tile.html#Fl_Tile.position>Fl_Tile</A>,
+ <A href=Fl_Widget.html#Fl_Widget.position>Fl_Widget</A></LI>
+<LI>position_style: <A HREF="Fl_Text_Display.html#Fl_Text_Display.position_style">Fl_Text_Display</A></LI>
+<LI>precision: <A href="Fl_Valuator.html#Fl_Valuator.precision">Fl_Valuator</A></LI>
+<LI>prev: <A HREF="Fl_Wizard.html#Fl_Wizard.prev">Fl_Wizard</A></LI>
+<LI>preview: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.preview">Fl_File_Chooser</A></LI>
+<LI>previous_word: <A HREF="Fl_Text_Display.html#Fl_Text_Display.previous_word">Fl_Text_Display</A></LI>
+<LI>primary_selection: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.primary_selection">Fl_Text_Buffer</A></LI>
+<LI>pulldown: <A href=Fl_Menu_Item.html#Fl_Menu_Item.pulldown>Fl_Menu_Item</A></LI>
+</UL>
+<H3>R</H3><UL>
+<LI>r: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.r>Fl_Color_Chooser</A></LI>
+<LI>radio: <A href=Fl_Menu_Item.html#Fl_Menu_Item.radio>Fl_Menu_Item</A></LI>
+<LI>range: <A href="Fl_Valuator.html#Fl_Valuator.range">Fl_Valuator</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.range>Fl_Spinner</a></LI>
+<LI>readonly: <A href="Fl_Input_.html#Fl_Input_.readonly">Fl_Input_</A></LI>
+<LI>redisplay_range: <A HREF="Fl_Text_Display.html#Fl_Text_Display.redisplay_range">Fl_Text_Display</A></LI>
+<LI>redraw: <A href=Fl_Widget.html#Fl_Widget.redraw>Fl_Widget</A></LI>
+<LI>redraw_label: <A href=Fl_Widget.html#Fl_Widget.redraw_label>Fl_Widget</A></LI>
+<LI>redraw_line: <A href="Fl_Browser_.html#Fl_Browser_.redraw_line">Fl_Browser_</A>,
+ <A href="Fl_Browser_.html#Fl_Browser_.redraw_lines">Fl_Browser_</A></LI>
+<LI>redraw_overlay: <A href=Fl_Gl_Window.html#Fl_Gl_Window.redraw_overlay>Fl_Gl_Window</A>,
+ <A href=Fl_Overlay_Window.html#Fl_Overlay_Window.redraw_overlay>Fl_Overlay_Window</A></LI>
+<LI>refcount: <A href="Fl_Shared_Image.html#Fl_Shared_Image.refcount">Fl_Shared_Image</A></LI>
+<LI>release: <A href="Fl_Shared_Image.html#Fl_Shared_Image.release">Fl_Shared_Image</A></LI>
+<LI>reload: <A href="Fl_Shared_Image.html#Fl_Shared_Image.reload">Fl_Shared_Image</A></LI>
+<LI>remove: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.remove">Fl_Text_Buffer</A>,
+ <A href=Fl_Browser.html#Fl_Browser.remove>Fl_Browser</A>,
+ <A href=Fl_Group.html#Fl_Group.remove>Fl_Group</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.remove>Fl_Menu_</A></LI>
+<LI>remove_all_key_bindings: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.remove_all_key_bindings">Fl_Text_Editor</A></LI>
+<LI>remove_key_binding: <A HREF="Fl_Text_Editor.html#Fl_Text_Editor.remove_key_binding">Fl_Text_Editor</A></LI>
+<LI>remove_modify_callback: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.remove_modify_callback">Fl_Text_Buffer</A></LI>
+<LI>remove_rectangular: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.remove_rectangular">Fl_Text_Buffer</A></LI>
+<LI>remove_secondary_selection: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.remove_secondary_selection">Fl_Text_Buffer</A></LI>
+<LI>remove_selection: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.remove_selection">Fl_Text_Buffer</A></LI>
+<LI>replace: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.replace">Fl_Text_Buffer</A>,
+ <A href="Fl_Input_.html#Fl_Input_.replace">Fl_Input_</A>,
+ <A href=Fl_Chart.html#Fl_Chart.replace>Fl_Chart</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.replace>Fl_Menu_</A></LI>
+<LI>replace_rectangular: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.replace_rectangular">Fl_Text_Buffer</A></LI>
+<LI>replace_secondary_selection: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.replace_secondary_selection">Fl_Text_Buffer</A></LI>
+<LI>replace_selection: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.replace_selection">Fl_Text_Buffer</A></LI>
+<LI>replacing: <A href="Fl_Browser_.html#Fl_Browser_.replacing">Fl_Browser_</A></LI>
+<LI>rescan: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.rescan">Fl_File_Chooser</A></LI>
+<LI>resizable: <A href=Fl_Group.html#Fl_Group.resizable>Fl_Group</A></LI>
+<LI>resize: <A href="Fl_Browser_.html#Fl_Browser_.resize">Fl_Browser_</A>,
+ <A href=Fl_Widget.html#Fl_Widget.resize>Fl_Widget</A>,
+ <A href=Fl_Window.html#Fl_Window.resize>Fl_Window</A></LI>
+<LI>resizeable: <A href=Fl_Tile.html#Fl_Tile.resizeable>Fl_Tile</A></LI>
+<LI>rewind_lines: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.rewind_lines">Fl_Text_Buffer</A></LI>
+<LI>rgb2hsv: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.rgb2hsv>Fl_Color_Chooser</A></LI>
+<LI>rgb: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.rgb>Fl_Color_Chooser</A></LI>
+<LI>round: <A href="Fl_Valuator.html#Fl_Valuator.round">Fl_Valuator</A></LI>
+</UL>
+<H3>S</H3><UL>
+<LI>saturation: <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.saturation>Fl_Color_Chooser</A></LI>
+<LI>savefile: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.savefile">Fl_Text_Buffer</A></LI>
+<LI>scroll: <A HREF="Fl_Text_Display.html#Fl_Text_Display.scroll">Fl_Text_Display</A></LI>
+<LI>scrollbar_align: <A HREF="Fl_Text_Display.html#Fl_Text_Display.scrollbar_align">Fl_Text_Display</A></LI>
+<LI>scrollbar_left: <A href="Fl_Browser_.html#Fl_Browser_.scrollbar_left">Fl_Browser_</A></LI>
+<LI>scrollbar_right: <A href="Fl_Browser_.html#Fl_Browser_.scrollbar_right">Fl_Browser_</A></LI>
+<LI>scrollbar_size: <A HREF="Fl.html#Fl.scrollbar_size">Fl</A></LI>
+<LI>scrollbar_width: <A HREF="Fl_Browser_.html#Fl_Browser_.scrollbar_width">Fl_Browser_</A>, <A HREF="Fl_Text_Display.html#Fl_Text_Display.scrollbar_width">Fl_Text_Display</A></LI>
+<LI>scrollvalue: <A href=Fl_Slider.html#Fl_Slider.scrollvalue>Fl_Slider</A></LI>
+<LI>search_backward: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.search_backward">Fl_Text_Buffer</A></LI>
+<LI>search_forward: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.search_forward">Fl_Text_Buffer</A></LI>
+<LI>second: <A href=Fl_Clock.html#Fl_Clock.second>Fl_Clock</A>,
+ <A href=Fl_Clock_Output.html#Fl_Clock_Output.second>Fl_Clock_Output</A></LI>
+<LI>secondary_select: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.secondary_select">Fl_Text_Buffer</A></LI>
+<LI>secondary_select_rectangular: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.secondary_select_rectangular">Fl_Text_Buffer</A></LI>
+<LI>secondary_selection: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.secondary_selection">Fl_Text_Buffer</A></LI>
+<LI>secondary_selection_position: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.secondary_selection_position">Fl_Text_Buffer</A></LI>
+<LI>secondary_selection_text: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.secondary_selection_text">Fl_Text_Buffer</A></LI>
+<LI>secondary_unselect: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.secondary_unselect">Fl_Text_Buffer</A></LI>
+<LI>select: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.select">Fl_Text_Buffer</A>,
+ <A href="Fl_Browser_.html#Fl_Browser_.select">Fl_Browser_</A>,
+ <A href=Fl_Hold_Browser.html#Fl_Hold_Browser.select>Fl_Hold_Browser</A>,
+ <A href=Fl_Multi_Browser.html#Fl_Multi_Browser.select>Fl_Multi_Browser</A>,
+ <A href=Fl_Select_Browser.html#Fl_Select_Browser.select>Fl_Select_Browser</A></LI>
+<LI>select_only: <A href="Fl_Browser_.html#Fl_Browser_.select_only">Fl_Browser_</A></LI>
+<LI>select_rectangular: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.select_rectangular">Fl_Text_Buffer</A></LI>
+<LI>selected: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.selected">Fl_Text_Buffer</A></LI>
+<LI>selection: <A href="Fl_Browser_.html#Fl_Browser_.selection">Fl_Browser_</A></LI>
+<LI>selection_color: <A href=Fl_Widget.html#Fl_Widget.selection_color>Fl_Widget</A></LI>
+<LI>selection_position: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.selection_position">Fl_Text_Buffer</A></LI>
+<LI>selection_text: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.selection_text">Fl_Text_Buffer</A></LI>
+<LI>set: <A href=Fl_Button.html#Fl_Button.set>Fl_Button</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.set>Fl_Menu_Item</A>,
+ <a href="Fl_Preferences.html#Fl_Preferences.set">Fl_Preferences</a></LI>
+<LI>set_changed: <A href="Fl_Valuator.html#Fl_Valuator.set_changed">Fl_Valuator</A>,
+ <A href=Fl_Choice.html#Fl_Choice.set_changed>Fl_Choice</A>,
+ <A href=Fl_Widget.html#Fl_Widget.set_changed>Fl_Widget</A>,
+ <A href=Fl_Check_Browser.html#Fl_Check_Browser.set_checked>Fl_Check_Browser</A></LI>
+<LI>set_modal: <A href=Fl_Window.html#Fl_Window.set_modal>Fl_Window</A></LI>
+<LI>set_non_modal: <A href=Fl_Window.html#Fl_Window.set_non_modal>Fl_Window</A></LI>
+<LI>set_output: <A href=Fl_Widget.html#Fl_Widget.set_output>Fl_Widget</A></LI>
+<LI>set_overlay: <A href=Fl_Menu_Window.html#Fl_Menu_Window.set_overlay>Fl_Menu_Window</A></LI>
+<LI>set_visible: <A href=Fl_Widget.html#Fl_Widget.set_visible>Fl_Widget</A></LI>
+<LI>set_visible_focus: <A href=Fl_Widget.html#Fl_Widget.set_visible_focus>Fl_Widget</A></LI>
+<LI>setonly: <A href=Fl_Button.html#Fl_Button.setonly>Fl_Button</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.setonly>Fl_Menu_Item</A></LI>
+<LI>shortcut: <A href=Fl_Button.html#Fl_Button.shortcut>Fl_Button</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.shortcut>Fl_Menu_</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.shortcut>Fl_Menu_Item</A></LI>
+<LI>show: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.show">Fl_File_Chooser</A>,
+ <A HREF="Fl_Help_Dialog.html#Fl_Help_Dialog.show">Fl_Help_Dialog</A>,
+ <A href=Fl_Browser.html#Fl_Browser.show>Fl_Browser</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.show>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.show>Fl_Widget</A>,
+ <A href=Fl_Window.html#Fl_Window.show>Fl_Window</A></LI>
+<LI>show_cursor: <A HREF="Fl_Text_Display.html#Fl_Text_Display.show_cursor">Fl_Text_Display</A></LI>
+<LI>show_insert_position: <A HREF="Fl_Text_Display.html#Fl_Text_Display.show_insert_position">Fl_Text_Display</A></LI>
+<LI>shown: <A href=Fl_Window.html#Fl_Window.shown>Fl_Window</A></LI>
+<LI>size: <A HREF="Fl_File_Icon.html#Fl_File_Icon.size">Fl_File_Icon</A>,
+ <A HREF="Fl_Help_View.html#Fl_Help_View.size">Fl_Help_View</A>,
+ <A HREF="Fl_Tooltip.html#Fl_Tooltip.size">Fl_Tooltip</A>,
+ <A href=Fl_Browser.html#Fl_Browser.size>Fl_Browser</A>,
+ <A href=Fl_Chart.html#Fl_Chart.size>Fl_Chart</A>,
+ <A href=Fl_Input.html#Fl_Input.size>Fl_Input</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.size>Fl_Menu_</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.size>Fl_Menu_Item</A>,
+ <A href=Fl_Output.html#Fl_Output.size>Fl_Output</A>,
+ <A href=Fl_Widget.html#Fl_Widget.size>Fl_Widget</A>,
+ <a href="Fl_Preferences.html#Fl_Preferences.size">Fl_Preferences</a></LI>
+<LI>size_range: <A href=Fl_Window.html#Fl_Window.size_range>Fl_Window</A></LI>
+<LI>skip_displayed_characters: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.skip_displayed_characters">Fl_Text_Buffer</A></LI>
+<LI>skip_lines: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.skip_lines">Fl_Text_Buffer</A></LI>
+<LI>slider: <A href=Fl_Slider.html#Fl_Slider.slider>Fl_Slider</A></LI>
+<LI>slider_size: <A href=Fl_Slider.html#Fl_Slider.slider_size>Fl_Slider</A></LI>
+<LI>soft: <A href="Fl_Value_Input.html#Fl_Value_Input.soft">Fl_Value_Input</A>,
+ <A href=Fl_Adjuster.html#Fl_Adjuster.soft>Fl_Adjuster</A>,
+ <A href=Fl_Value_Output.html#Fl_Value_Output.soft>Fl_Value_Output</A></LI>
+<LI>spacing: <A href=Fl_Pack.html#Fl_Pack.spacing>Fl_Pack</A></LI>
+<LI>static_value: <A href=Fl_Input.html#Fl_Input.static_value>Fl_Input</A></LI>
+<LI>step: <A href="Fl_Valuator.html#Fl_Valuator.step">Fl_Valuator</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.step>Fl_Spinner</a></LI>
+<LI>submenu: <A href=Fl_Menu_Item.html#Fl_Menu_Item.submenu>Fl_Menu_Item</A></LI>
+<LI>substitute_null_characters: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.substitute_null_characters">Fl_Text_Buffer</A></LI>
+<LI>suspended: <A href=Fl_Timer.html#Fl_Timer.suspended>Fl_Timer</A></LI>
+<LI>swap: <A href=Fl_Browser.html#Fl_Browser.swap>Fl_Browser</A></LI>
+<LI>swap_buffers: <A href=Fl_Gl_Window.html#Fl_Gl_Window.swap_buffers>Fl_Gl_Window</A></LI>
+</UL>
+<H3>T</H3><UL>
+<LI>tab_distance: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.tab_distance">Fl_Text_Buffer</A></LI>
+<LI>take_focus: <A href=Fl_Widget.html#Fl_Widget.take_focus>Fl_Widget</A></LI>
+<LI>takesevents: <A href=Fl_Widget.html#Fl_Widget.takesevents>Fl_Widget</A></LI>
+<LI>test_shortcut: <A href=Fl_Menu_.html#Fl_Menu_.test_shortcut>Fl_Menu_</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.test_shortcut>Fl_Menu_Item</A></LI>
+<LI>text: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.text">Fl_Text_Buffer</A>,
+ <A href=Fl_Browser.html#Fl_Browser.text>Fl_Browser</A>,
+ <A href=Fl_Check_Browser.html#Fl_Check_Browser.text>Fl_Check_Browser</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.text>Fl_Menu_</A></LI>
+<LI>text_in_rectangle: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.text_in_rectangle">Fl_Text_Buffer</A></LI>
+<LI>text_range: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.text_range">Fl_Text_Buffer</A></LI>
+<LI>textcolor: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.textcolor">Fl_File_Chooser</A>,
+ <A HREF="Fl_Help_View.html#Fl_Help_View.textcolor">Fl_Help_View</A>,
+ <A HREF="Fl_Text_Display.html#Fl_Text_Display.textcolor">Fl_Text_Display</A>,
+ <A HREF="Fl_Tooltip.html#Fl_Tooltip.textcolor">Fl_Tooltip</A>,
+ <A href="Fl_Browser_.html#Fl_Browser_.textcolor">Fl_Browser_</A>,
+ <A href="Fl_Value_Input.html#Fl_Value_Input.textcolor">Fl_Value_Input</A>,
+ <A href=Fl_Input.html#Fl_Input.textcolor>Fl_Input</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.textcolor>Fl_Menu_</A>,
+ <A href=Fl_Output.html#Fl_Output.textcolor>Fl_Output</A>,
+ <A href=Fl_Value_Output.html#Fl_Value_Output.textcolor>Fl_Value_Output</A>,
+ <A href=Fl_Value_Slider.html#Fl_Value_Slider.textcolor>Fl_Value_Slider</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.textcolor>Fl_Spinner</a></LI>
+<LI>textfont: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.textfont">Fl_File_Chooser</A>,
+ <A HREF="Fl_Help_View.html#Fl_Help_View.textfont">Fl_Help_View</A>,
+ <A HREF="Fl_Text_Display.html#Fl_Text_Display.textfont">Fl_Text_Display</A>,
+ <A href="Fl_Browser_.html#Fl_Browser_.textfont">Fl_Browser_</A>,
+ <A href="Fl_Value_Input.html#Fl_Value_Input.textfont">Fl_Value_Input</A>,
+ <A href=Fl_Input.html#Fl_Input.textfont>Fl_Input</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.textfont>Fl_Menu_</A>,
+ <A href=Fl_Output.html#Fl_Output.textfont>Fl_Output</A>,
+ <A href=Fl_Value_Output.html#Fl_Value_Output.textfont>Fl_Value_Output</A>,
+ <A href=Fl_Value_Slider.html#Fl_Value_Slider.textfont>Fl_Value_Slider</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.textfont>Fl_Spinner</a></LI>
+<LI>textsize: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.textsize">Fl_File_Chooser</A>,
+ <A HREF="Fl_Help_View.html#Fl_Help_View.textsize">Fl_Help_View</A>,
+ <A HREF="Fl_Text_Display.html#Fl_Text_Display.textsize">Fl_Text_Display</A>,
+ <A href="Fl_Browser_.html#Fl_Browser_.textsize">Fl_Browser_</A>,
+ <A href="Fl_Value_Input.html#Fl_Value_Input.textsize">Fl_Value_Input</A>,
+ <A href=Fl_Input.html#Fl_Input.textsize>Fl_Input</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.textsize>Fl_Menu_</A>,
+ <A href=Fl_Output.html#Fl_Output.textsize>Fl_Output</A>,
+ <A href=Fl_Value_Output.html#Fl_Value_Output.textsize>Fl_Value_Output</A>,
+ <A href=Fl_Value_Slider.html#Fl_Value_Slider.textsize>Fl_Value_Slider</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.textsize>Fl_Spinner</a></LI>
+<LI>title: <A HREF="Fl_Help_View.html#Fl_Help_View.title">Fl_Help_View</A></LI>
+<LI>tooltip: <A href="Fl_Widget.html#Fl_Widget.tooltip">Fl_Widget</A></LI>
+<LI>top: <A href="Fl_Browser_.html#Fl_Browser_.top">Fl_Browser_</A></LI>
+<LI>topline: <A HREF="Fl_Help_Dialog.html#Fl_Help_Dialog.topline">Fl_Help_Dialog</A>,
+ <A HREF="Fl_Help_View.html#Fl_Help_View.topline">Fl_Help_View</A>,
+ <A href=Fl_Browser.html#Fl_Browser.topline>Fl_Browser</A></LI>
+<LI>type: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.type">Fl_File_Chooser</A>,
+ <A HREF="Fl_File_Icon.html#Fl_File_Icon.type">Fl_File_Icon</A>,
+ <A href=Fl_Button.html#Fl_Button.type>Fl_Button</A>,
+ <A href=Fl_Chart.html#Fl_Chart.type>Fl_Chart</A>,
+ <A href=Fl_Counter.html#Fl_Counter.type>Fl_Counter</A>,
+ <A href=Fl_Dial.html#Fl_Dial.type>Fl_Dial</A>,
+ <A href=Fl_Menu_Button.html#Fl_Menu_Button.type>Fl_Menu_Button</A>,
+ <A href=Fl_Scroll.html#Fl_Scroll.type>Fl_Scroll</A>,
+ <A href=Fl_Slider.html#Fl_Slider.type>Fl_Slider</A>,
+ <A href=Fl_Widget.html#Fl_Widget.type>Fl_Widget</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.type>Fl_Spinner</a></LI>
+</UL>
+<H3>U</H3><UL>
+<LI>uncache: <A href="Fl_Image.html#Fl_Image.uncache">Fl_Image</A></LI>
+<LI>undo: <A href="Fl_Input_.html#Fl_Input_.undo">Fl_Input_</A></LI>
+<LI>unhighlight: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.unhighlight">Fl_Text_Buffer</A></LI>
+<LI>unselect: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.unselect">Fl_Text_Buffer</A></LI>
+<LI>unsubstitute_null_characters: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.unsubstitute_null_characters">Fl_Text_Buffer</A></LI>
+<LI>up_down_position: <A href="Fl_Input_.html#Fl_Input_.up_down_position">Fl_Input_</A></LI>
+<LI>user_data: <A href=Fl_Menu_Item.html#Fl_Menu_Item.user_data>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.user_data>Fl_Widget</A></LI>
+</UL>
+<H3>V</H3><UL>
+<LI>valid: <A href=Fl_Gl_Window.html#Fl_Gl_Window.valid>Fl_Gl_Window</A></LI>
+<LI>value: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.value">Fl_File_Chooser</A>,
+ <A HREF="Fl_File_Icon.html#Fl_File_Icon.value">Fl_File_Icon</A>,
+ <A HREF="Fl_Help_Dialog.html#Fl_Help_Dialog.value">Fl_Help_Dialog</A>,
+ <A HREF="Fl_Help_View.html#Fl_Help_View.value">Fl_Help_View</A>,
+ <A HREF="Fl_Wizard.html#Fl_Wizard.value">Fl_Wizard</A>,
+ <A href="Fl_Progress.html#Fl_Progress.value">Fl_Progress</A>,
+ <A href="Fl_Tabs.html#Fl_Tabs.value">Fl_Tabs</A>,
+ <A href="Fl_Valuator.html#Fl_Valuator.value">Fl_Valuator</A>,
+ <A href=Fl_Button.html#Fl_Button.value>Fl_Button</A>,
+ <A href=Fl_Check_Browser.html#Fl_Check_Browser.value>Fl_Check_Browser</A>,
+ <A href=Fl_Choice.html#Fl_Choice.value>Fl_Choice</A>,
+ <A href=Fl_Clock.html#Fl_Clock.value>Fl_Clock</A>,
+ <A href=Fl_Clock_Output.html#Fl_Clock_Output.value>Fl_Clock_Output</A>,
+ <A href=Fl_Color_Chooser.html#Fl_Color_Chooser.value>Fl_Color_Chooser</A>,
+ <A href=Fl_Hold_Browser.html#Fl_Hold_Browser.value>Fl_Hold_Browser</A>,
+ <A href=Fl_Input.html#Fl_Input.value>Fl_Input</A>,
+ <A href=Fl_Input_Choice.html#Fl_Input_Choice.value>Fl_Input_Choice</A>,
+ <A href=Fl_Menu_.html#Fl_Menu_.value>Fl_Menu_</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.value>Fl_Menu_Item</A>,
+ <A href=Fl_Multi_Browser.html#Fl_Multi_Browser.value>Fl_Multi_Browser</A>,
+ <A href=Fl_Output.html#Fl_Output.value>Fl_Output</A>,
+ <A href=Fl_Positioner.html#Fl_Positioner.value>Fl_Positioner</A>,
+ <A href=Fl_Scrollbar.html#Fl_Scrollbar.value>Fl_Scrollbar</A>,
+ <A href=Fl_Select_Browser.html#Fl_Select_Browser.value>Fl_Select_Browser</A>,
+ <A href=Fl_Timer.html#Fl_Timer.value>Fl_Timer</A>,
+ <a href=Fl_Spinner.html#Fl_Spinner.value>Fl_Spinner</a></LI>
+<LI>visible: <A HREF="Fl_File_Chooser.html#Fl_File_Chooser.visible">Fl_File_Chooser</A>,
+ <A HREF="Fl_Help_Dialog.html#Fl_Help_Dialog.visible">Fl_Help_Dialog</A>,
+ <A href=Fl_Browser.html#Fl_Browser.visible>Fl_Browser</A>,
+ <A href=Fl_Menu_Item.html#Fl_Menu_Item.visible>Fl_Menu_Item</A>,
+ <A href=Fl_Widget.html#Fl_Widget.visible>Fl_Widget</A></LI>
+<LI>visible_focus: <A href=Fl_Widget.html#Fl_Widget.visible_focus>Fl_Widget</A></LI>
+<LI>visible_r: <A href=Fl_Widget.html#Fl_Widget.visible_r>Fl_Widget</A></LI>
+</UL>
+<H3>W</H3><UL>
+<LI>w: <A href="Fl_Image.html#Fl_Image.w">Fl_Image</A>,
+ <A href=Fl_Widget.html#Fl_Widget.w>Fl_Widget</A></LI>
+<LI>when: <A href=Fl_Button.html#Fl_Button.when>Fl_Button</A>,
+ <A href=Fl_Input.html#Fl_Input.when>Fl_Input</A>,
+ <A href=Fl_Widget.html#Fl_Widget.when>Fl_Widget</A></LI>
+<LI>window: <A href=Fl_Widget.html#Fl_Widget.window>Fl_Widget</A></LI>
+<LI>word_end: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.word_end">Fl_Text_Buffer</A>,
+ <A HREF="Fl_Text_Display.html#Fl_Text_Display.word_end">Fl_Text_Display</A></LI>
+<LI>word_start: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.word_start">Fl_Text_Buffer</A>,
+ <A HREF="Fl_Text_Display.html#Fl_Text_Display.word_start">Fl_Text_Display</A></LI>
+<LI>wrap: <A href="Fl_Input_.html#Fl_Input_.wrap">Fl_Input_</A></LI>
+<LI>wrap_mode: <A HREF="Fl_Text_Display.html#Fl_Text_Display.wrap_mode">Fl_Text_Display</A></LI>
+</UL>
+<H3>X</H3><UL>
+<LI>x: <A href=Fl_Widget.html#Fl_Widget.x>Fl_Widget</A></LI>
+<LI>xbounds: <A href=Fl_Positioner.html#Fl_Positioner.xbounds>Fl_Positioner</A></LI>
+<LI>xclass: <A href=Fl_Window.html#Fl_Window.xclass>Fl_Window</A></LI>
+<LI>xposition: <A href=Fl_Scroll.html#Fl_Scroll.xposition>Fl_Scroll</A></LI>
+<LI>xstep: <A href=Fl_Positioner.html#Fl_Positioner.xstep>Fl_Positioner</A></LI>
+<LI>xvalue: <A href=Fl_Positioner.html#Fl_Positioner.xvalue>Fl_Positioner</A></LI>
+</UL>
+<H3>y</H3><UL>
+<LI>y: <A href=Fl_Widget.html#Fl_Widget.y>Fl_Widget</A></LI>
+<LI>ybounds: <A href=Fl_Positioner.html#Fl_Positioner.ybounds>Fl_Positioner</A></LI>
+<LI>yposition: <A href=Fl_Scroll.html#Fl_Scroll.yposition>Fl_Scroll</A></LI>
+<LI>ystep: <A href=Fl_Positioner.html#Fl_Positioner.ystep>Fl_Positioner</A></LI>
+<LI>yvalue: <A href=Fl_Positioner.html#Fl_Positioner.yvalue>Fl_Positioner</A></LI>
+</UL>
+
</BODY>
</HTML>
diff --git a/fltk-config.in b/fltk-config.in
index b7b3e80..e9bf8a4 100755
--- a/fltk-config.in
+++ b/fltk-config.in
@@ -1,10 +1,10 @@
#!/bin/sh
#
-# "$Id: fltk-config.in 4689 2005-12-07 20:13:12Z mike $"
+# "$Id: fltk-config.in 5733 2007-03-06 20:00:04Z matt $"
#
# FLTK configuration utility.
#
-# Copyright 2000-2005 by Bill Spitzak and others.
+# Copyright 2000-2007 by Bill Spitzak and others.
# Original version Copyright 2000 by James Dean Palmer
# Adapted by Vincent Penne and Michael Sweet
#
@@ -53,10 +53,12 @@ CXX="@CXX@"
POSTBUILD="@POSTBUILD@"
# flags for C++ compiler:
-CFLAGS="@CFLAGS@"
-CXXFLAGS="@CXXFLAGS@"
+ARCHFLAGS="@ARCHFLAGS@"
+CFLAGS="@CFLAGS@ @LARGEFILE@ @PTHREAD_FLAGS@"
+CXXFLAGS="@CXXFLAGS@ @LARGEFILE@ @PTHREAD_FLAGS@"
LDFLAGS="@LDFLAGS@"
LDLIBS="@LIBS@"
+OPTIM="@OPTIM@"
# Check for local invocation, and update paths accordingly...
if test -f "$selfdir/FL/Fl_Window.H"; then
@@ -108,6 +110,7 @@ Options telling what we are doing:
Options telling what information we request:
[--cc] return C compiler used to compile FLTK
[--cxx] return C++ compiler used to compile FLTK
+ [--optim] return compiler optimization used to compile FLTK
[--cflags] return flags to compile C using FLTK
[--cxxflags] return flags to compile C++ using FLTK
[--ldflags] return flags to link against FLTK
@@ -117,6 +120,7 @@ Options telling what information we request:
Option to compile and link an application:
[-g] compile the program with debugging information
+ [-Dname[=value]] compile the program with the given define
[--compile program.cxx]
[--post program]
"
@@ -157,6 +161,9 @@ do
--cxx)
echo $CXX
;;
+ --optim)
+ echo_optim=yes
+ ;;
--use-gl | --use-glut)
use_gl=yes
;;
@@ -184,6 +191,9 @@ do
-g)
debug=-g
;;
+ -D*)
+ CXXFLAGS="$CXXFLAGS $1"
+ ;;
--compile)
compile=$2
post=$2
@@ -262,8 +272,8 @@ if test -n "$compile"; then
post=$prog
- echo $CXX $includes $CXXFLAGS $debug -o $prog $compile $LDSTATIC
- $CXX $includes $CXXFLAGS $debug -o $prog $compile $LDSTATIC
+ echo $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o $prog $compile $LDSTATIC
+ $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o $prog $compile $LDSTATIC
fi
if test -n "$post" -a "$POSTBUILD" != ":"; then
@@ -279,6 +289,10 @@ if test "$echo_cxxflags" = "yes"; then
echo $includes $CXXFLAGS
fi
+if test "$echo_optim" = "yes"; then
+ echo $OPTIM
+fi
+
if test "$echo_ldflags" = "yes"; then
my_libs=
libdirs=$libs
@@ -304,5 +318,5 @@ if test "$echo_libs" = "yes"; then
fi
#
-# End of "$Id: fltk-config.in 4689 2005-12-07 20:13:12Z mike $".
+# End of "$Id: fltk-config.in 5733 2007-03-06 20:00:04Z matt $".
#
diff --git a/fltk.list.in b/fltk.list.in
index 2678e68..150c0ae 100644
--- a/fltk.list.in
+++ b/fltk.list.in
@@ -1,11 +1,11 @@
#
-# "$Id: fltk.list.in 4761 2006-01-15 20:33:10Z mike $"
+# "$Id: fltk.list.in 5677 2007-02-08 19:17:47Z mike $"
#
# EPM product list file for the Fast Light Tool Kit (FLTK).
#
# (EPM can be found at http://www.easysw.com/epm/)
#
-# Copyright 1998-2006 by Bill Spitzak and others.
+# Copyright 1998-2007 by Bill Spitzak and others.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -28,7 +28,7 @@
#
%product Fast Light Tool Kit (FLTK)
-%copyright 1998-2006 by Bill Spitzak and others.
+%copyright 1998-2007 by Bill Spitzak and others.
%vendor FLTK Development Team
%license COPYING
%readme README
@@ -43,6 +43,7 @@ $prefix=@prefix@
$exec_prefix=@exec_prefix@
$bindir=@bindir@
$datadir=@datadir@
+$datarootdir=@datarootdir@
$includedir=@includedir@
$libdir=@libdir@
$mandir=@mandir@
@@ -114,7 +115,6 @@ f 0555 root sys $libdir/libfltk_gl.so.@FL_API_VERSION@ src/libfltk_gl.so.@FL_API
%description dynamically linked applications.
%system darwin
-f 0444 root sys $includedir/FL/mac.r FL/mac.r
l 0444 root sys /usr/include/gcc/darwin/3.1/g++-v3/FL $includedir/FL
d 0555 root sys /Applications/fluid.app -
@@ -359,9 +359,19 @@ f 0444 root sys $docdir/examples/ test/*.h
%subpackage games
%description FLTK Games
-%description Install fltk-games to play checkers or Sudoku on your computer.
+%description Install fltk-games to play Block Attack!, checkers, or Sudoku on your computer.
%system darwin
+d 0555 root sys /Applications/blocks.app -
+d 0555 root sys /Applications/blocks.app/Contents -
+f 0444 root sys /Applications/blocks.app/Contents/Info.plist test/blocks.app/Contents/Info.plist
+f 0444 root sys /Applications/blocks.app/Contents/PkgInfo test/blocks.app/Contents/PkgInfo
+d 0555 root sys /Applications/blocks.app/Contents/MacOS -
+f 0555 root sys /Applications/blocks.app/Contents/MacOS/blocks test/blocks
+d 0555 root sys /Applications/blocks.app/Contents/Resources -
+f 0444 root sys /Applications/blocks.app/Contents/Resources/blocks.icns test/blocks.app/Contents/Resources/blocks.icns
+%postremove /bin/rm -rf /Applications/blocks.app
+
d 0555 root sys /Applications/checkers.app -
d 0555 root sys /Applications/checkers.app/Contents -
f 0444 root sys /Applications/checkers.app/Contents/Info.plist test/checkers.app/Contents/Info.plist
@@ -383,22 +393,29 @@ f 0444 root sys /Applications/sudoku.app/Contents/Resources/sudoku.icns test/sud
%postremove /bin/rm -rf /Applications/sudoku.app
%system !darwin
+f 0555 root sys $bindir/blocks test/blocks
+f 0444 root sys /usr/share/applnk/Games/blocks.desktop test/desktop/blocks.desktop
+f 0444 root sys /usr/share/icons/hicolor/32x32/apps/blocks.png test/icons/blocks-32.png
+f 0444 root sys /usr/share/icons/hicolor/128x128/apps/blocks.png test/icons/blocks-128.png
+
f 0555 root sys $bindir/checkers test/checkers
-f 0444 root sys /usr/share/applnk/Games/checkers.desktop test/checkers.desktop
-f 0444 root sys /usr/share/icons/hicolor/32x32/apps/checkers.png checkers/checkers-32.png
-f 0444 root sys /usr/share/icons/hicolor/128x128/apps/checkers.png checkers/checkers-128.png
+f 0444 root sys /usr/share/applnk/Games/checkers.desktop test/desktop/checkers.desktop
+f 0444 root sys /usr/share/icons/hicolor/32x32/apps/checkers.png test/icons/checkers-32.png
+f 0444 root sys /usr/share/icons/hicolor/128x128/apps/checkers.png test/icons/checkers-128.png
f 0555 root sys $bindir/sudoku test/sudoku
-f 0444 root sys /usr/share/applnk/Games/sudoku.desktop test/sudoku.desktop
-f 0444 root sys /usr/share/icons/hicolor/32x32/apps/sudoku.png sudoku/sudoku-32.png
-f 0444 root sys /usr/share/icons/hicolor/128x128/apps/sudoku.png sudoku/sudoku-128.png
+f 0444 root sys /usr/share/applnk/Games/sudoku.desktop test/desktop/sudoku.desktop
+f 0444 root sys /usr/share/icons/hicolor/32x32/apps/sudoku.png test/icons/sudoku-32.png
+f 0444 root sys /usr/share/icons/hicolor/128x128/apps/sudoku.png test/icons/sudoku-128.png
%system all
+f 0444 root sys $mandir/cat6/blocks.$CAT6EXT documentation/blocks.$CAT6EXT
f 0444 root sys $mandir/cat6/checkers.$CAT6EXT documentation/checkers.$CAT6EXT
f 0444 root sys $mandir/cat6/sudoku.$CAT6EXT documentation/sudoku.$CAT6EXT
+f 0444 root sys $mandir/man6/blocks.6 documentation/blocks.man
f 0444 root sys $mandir/man6/checkers.6 documentation/checkers.man
f 0444 root sys $mandir/man6/sudoku.6 documentation/sudoku.man
#
-# End of "$Id: fltk.list.in 4761 2006-01-15 20:33:10Z mike $".
+# End of "$Id: fltk.list.in 5677 2007-02-08 19:17:47Z mike $".
#
diff --git a/fltk.spec b/fltk.spec
deleted file mode 100644
index ce4d72f..0000000
--- a/fltk.spec
+++ /dev/null
@@ -1,143 +0,0 @@
-#
-# "$Id: fltk.spec.in 4756 2006-01-15 18:36:16Z mike $"
-#
-# RPM spec file for FLTK.
-#
-# Copyright 1998-2006 by Bill Spitzak and others.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA.
-#
-# Please report all bugs and problems on the following page:
-#
-# http://www.fltk.org/str.php
-#
-
-%define version 1.1.7
-%define release 1
-%define prefix /usr
-
-Summary: Fast Light Tool Kit (FLTK)
-Name: fltk
-Version: %{version}
-Release: %{release}
-License: LGPL
-Group: System Environment/Libraries
-Source: ftp://ftp.easysw.com/pub/fltk/1.1.7/fltk-1.1.7-source.tar.bz2
-URL: http://www.fltk.org/
-Packager: FLTK Developer <fltk@fltk.org>
-# use BuildRoot so as not to disturb the version already installed
-BuildRoot: /var/tmp/fltk-%{PACKAGE_VERSION}
-
-%description
-The Fast Light Tool Kit ("FLTK", pronounced "fulltick") is a
-cross-platform C++ GUI toolkit for UNIX(r)/Linux(r) (X11),
-Microsoft(r) Windows(r), and MacOS(r) X. FLTK provides modern
-GUI functionality without the bloat and supports 3D graphics via
-OpenGL(r) and its built-in GLUT emulation.
-
-%package devel
-Summary: FLTK Development Environment
-Group: Development/Libraries
-
-%description devel
-Install fltk-devel if you need to develop FLTK applications.
-You'll need to install the fltk package if you plan to run
-dynamically linked applications.
-
-%package games
-Summary: FLTK Games
-Group: Games
-
-%description games
-Install fltk-games to play checkers or Sudoku on your computer.
-
-%prep
-%setup
-
-%build
-CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --mandir=%{_mandir} --enable-shared --enable-xft --enable-xdbe --enable-xinerama
-
-# If we got this far, all prerequisite libraries must be here.
-make
-
-%install
-# these lines just make sure the directory structure in the
-# RPM_BUILD_ROOT exists
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT
-
-make -e DESTDIR=$RPM_BUILD_ROOT install install-desktop
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-%dir %{prefix}/lib
-%{prefix}/lib/libfltk*.so.*
-
-%files devel
-%defattr(-,root,root)
-
-%dir %{prefix}/bin
-%{prefix}/bin/fltk-config
-%{prefix}/bin/fluid
-
-%dir %{prefix}/include/FL
-%{prefix}/include/FL/*
-%{prefix}/include/Fl
-
-%dir %{prefix}/lib
-%{prefix}/lib/libfltk*.so
-%{prefix}/lib/libfltk*.a
-
-%dir %{_mandir}
-%{_mandir}/cat1/*
-%{_mandir}/cat3/*
-%{_mandir}/man1/*
-%{_mandir}/man3/*
-
-%dir %{prefix}/share/doc/fltk
-%{prefix}/share/doc/fltk/*
-
-%dir %{prefix}/share/applnk
-%{prefix}/share/applnk/Development/*
-
-%dir %{prefix}/share/icons
-%{prefix}/share/icons/hicolor/*/apps/fluid.png
-
-%dir %{prefix}/share/mimelnk
-%{prefix}/share/mimelnk/*
-
-%files games
-%dir %{prefix}/bin
-%{prefix}/bin/checkers
-%{prefix}/bin/sudoku
-
-%dir %{_mandir}
-%{_mandir}/cat6/*
-%{_mandir}/man6/*
-
-%dir %{prefix}/share/applnk
-%{prefix}/share/applnk/Games/*
-
-%dir %{prefix}/share/icons
-%{prefix}/share/icons/hicolor/*/apps/checkers.png
-%{prefix}/share/icons/hicolor/*/apps/sudoku.png
-
-#
-# End of "$Id: fltk.spec.in 4756 2006-01-15 18:36:16Z mike $".
-#
diff --git a/fltk.spec.in b/fltk.spec.in
index 97273d3..a6fa0e5 100644
--- a/fltk.spec.in
+++ b/fltk.spec.in
@@ -1,9 +1,9 @@
#
-# "$Id: fltk.spec.in 4756 2006-01-15 18:36:16Z mike $"
+# "$Id: fltk.spec.in 5707 2007-02-22 12:03:46Z mike $"
#
# RPM spec file for FLTK.
#
-# Copyright 1998-2006 by Bill Spitzak and others.
+# Copyright 1998-2007 by Bill Spitzak and others.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -25,8 +25,8 @@
# http://www.fltk.org/str.php
#
-%define version @VERSION@
-%define release @RELEASE@
+%define version @FL_MAJOR_VERSION@.@FL_MINOR_VERSION@.@FL_PATCH_VERSION@
+%define release 1
%define prefix /usr
Summary: Fast Light Tool Kit (FLTK)
@@ -62,13 +62,13 @@ Summary: FLTK Games
Group: Games
%description games
-Install fltk-games to play checkers or Sudoku on your computer.
+Install fltk-games to play Block Attack!, Checkers, or Sudoku on your computer.
%prep
%setup
%build
-CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --mandir=%{_mandir} --enable-shared --enable-xft --enable-xdbe --enable-xinerama
+CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --mandir=%{_mandir} --enable-largefile --enable-shared --enable-threads --enable-xft --enable-xdbe --enable-xinerama
# If we got this far, all prerequisite libraries must be here.
make
@@ -124,6 +124,7 @@ rm -rf $RPM_BUILD_ROOT
%files games
%dir %{prefix}/bin
+%{prefix}/bin/blocks
%{prefix}/bin/checkers
%{prefix}/bin/sudoku
@@ -135,9 +136,10 @@ rm -rf $RPM_BUILD_ROOT
%{prefix}/share/applnk/Games/*
%dir %{prefix}/share/icons
+%{prefix}/share/icons/hicolor/*/apps/blocks.png
%{prefix}/share/icons/hicolor/*/apps/checkers.png
%{prefix}/share/icons/hicolor/*/apps/sudoku.png
#
-# End of "$Id: fltk.spec.in 4756 2006-01-15 18:36:16Z mike $".
+# End of "$Id: fltk.spec.in 5707 2007-02-22 12:03:46Z mike $".
#
diff --git a/fluid/CodeEditor.cxx b/fluid/CodeEditor.cxx
index af1e0c8..a30777d 100644
--- a/fluid/CodeEditor.cxx
+++ b/fluid/CodeEditor.cxx
@@ -1,5 +1,5 @@
//
-// "$Id$"
+// "$Id: CodeEditor.cxx 5498 2006-09-29 21:02:27Z mike $"
//
// Code editor widget for the Fast Light Tool Kit (FLTK).
//
@@ -406,6 +406,14 @@ CodeEditor::~CodeEditor() {
}
+CodeViewer::CodeViewer(int X, int Y, int W, int H, const char *L)
+: CodeEditor(X, Y, W, H, L)
+{
+ default_key_function(kf_ignore);
+ remove_all_key_bindings(&key_bindings);
+ cursor_style(CARET_CURSOR);
+}
+
//
-// End of "$Id$".
+// End of "$Id: CodeEditor.cxx 5498 2006-09-29 21:02:27Z mike $".
//
diff --git a/fluid/CodeEditor.h b/fluid/CodeEditor.h
index 04c51bd..fa195b0 100644
--- a/fluid/CodeEditor.h
+++ b/fluid/CodeEditor.h
@@ -1,5 +1,5 @@
//
-// "$Id$"
+// "$Id: CodeEditor.h 5498 2006-09-29 21:02:27Z mike $"
//
// Code editor widget for the Fast Light Tool Kit (FLTK).
//
@@ -70,8 +70,19 @@ class CodeEditor : public Fl_Text_Editor {
int top_line() { return get_absolute_top_line_number(); }
};
+class CodeViewer : public CodeEditor {
+
+ public:
+
+ CodeViewer(int X, int Y, int W, int H, const char *L=0);
+
+ protected:
+
+ int handle(int ev) { return Fl_Text_Display::handle(ev); }
+};
+
#endif // !CodeEditor_h
//
-// End of "$Id$".
+// End of "$Id: CodeEditor.h 5498 2006-09-29 21:02:27Z mike $".
//
diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx
index a424789..8153086 100644
--- a/fluid/Fl_Function_Type.cxx
+++ b/fluid/Fl_Function_Type.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Function_Type.cxx 4638 2005-11-04 15:16:24Z matt $"
+// "$Id: Fl_Function_Type.cxx 5343 2006-08-23 11:00:22Z matt $"
//
// C function type code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -334,16 +334,23 @@ void Fl_Function_Type::write_code1() {
write_c("%s%s %s {\n", rtype, star, s);
}
}
- if (havewidgets) write_c(" %s* w;\n",subclassname(child));
+
+ if (havewidgets && !child->name()) write_c(" %s* w;\n", subclassname(child));
indentation += 2;
}
void Fl_Function_Type::write_code2() {
+ Fl_Type *child;
+ const char *var = "w";
+ for (child = next; child && child->level > level; child = child->next)
+ if (child->is_window() && child->name()) var = child->name();
+
if (ismain()) {
- if (havewidgets) write_c(" w->show(argc, argv);\n");
+ if (havewidgets) write_c(" %s->show(argc, argv);\n", var);
write_c(" return Fl::run();\n");
- } else if (havewidgets && !constructor && !return_type)
- write_c(" return w;\n");
+ } else if (havewidgets && !constructor && !return_type) {
+ write_c(" return %s;\n", var);
+ }
write_c("}\n");
indentation = 0;
}
@@ -499,6 +506,7 @@ Fl_Type *Fl_Decl_Type::make() {
while (p && !p->is_decl_block()) p = p->parent;
Fl_Decl_Type *o = new Fl_Decl_Type();
o->public_ = 0;
+ o->static_ = 1;
o->name("int x;");
o->add(p);
o->factory = this;
@@ -508,11 +516,14 @@ Fl_Type *Fl_Decl_Type::make() {
void Fl_Decl_Type::write_properties() {
Fl_Type::write_properties();
if (public_) write_string("public");
+ if (!static_) write_string("global");
}
void Fl_Decl_Type::read_property(const char *c) {
if (!strcmp(c,"public")) {
public_ = 1;
+ } else if (!strcmp(c,"global")) {
+ static_ = 0;
} else {
Fl_Type::read_property(c);
}
@@ -522,6 +533,12 @@ void Fl_Decl_Type::open() {
if (!decl_panel) make_decl_panel();
decl_input->static_value(name());
decl_public_button->value(public_);
+ decl_static_button->value(static_);
+ if (public_)
+ decl_static_button->label("extern");
+ else
+ decl_static_button->label("static");
+ char pp = public_;
decl_panel->show();
const char* message = 0;
for (;;) { // repeat as long as there are errors
@@ -531,6 +548,14 @@ void Fl_Decl_Type::open() {
if (w == decl_panel_cancel) goto BREAK2;
else if (w == decl_panel_ok) break;
else if (!w) Fl::wait();
+ if (pp != decl_public_button->value()) {
+ pp = decl_public_button->value();
+ if (pp)
+ decl_static_button->label("extern");
+ else
+ decl_static_button->label("static");
+ decl_static_button->redraw();
+ }
}
const char*c = decl_input->value();
while (isspace(*c)) c++;
@@ -541,6 +566,10 @@ void Fl_Decl_Type::open() {
set_modflag(1);
public_ = decl_public_button->value();
}
+ if (static_!=decl_static_button->value()) {
+ set_modflag(1);
+ static_ = decl_static_button->value();
+ }
break;
}
BREAK2:
@@ -552,6 +581,17 @@ Fl_Decl_Type Fl_Decl_type;
void Fl_Decl_Type::write_code1() {
const char* c = name();
if (!c) return;
+ // handle a few keywords differently if inside a class
+ if (is_in_class() && (
+ !strncmp(c,"class",5) && isspace(c[5])
+ || !strncmp(c,"typedef",7) && isspace(c[7])
+ || !strncmp(c,"FL_EXPORT",9) && isspace(c[9])
+ || !strncmp(c,"struct",6) && isspace(c[6])
+ ) ) {
+ write_public(public_);
+ write_h(" %s\n", c);
+ return;
+ }
// handle putting #include, extern, using or typedef into decl:
if (!isalpha(*c) && *c != '~'
|| !strncmp(c,"extern",6) && isspace(c[6])
@@ -567,18 +607,27 @@ void Fl_Decl_Type::write_code1() {
write_c("%s\n", c);
return;
}
+ // find the first C++ style comment
+ const char* e = c+strlen(c), *csc = c;
+ while (csc<e && (csc[0]!='/' || csc[1]!='/')) csc++;
+ if (csc!=e) e = csc; // comment found
// lose all trailing semicolons so I can add one:
- const char* e = c+strlen(c);
+ while (e>c && e[-1]==' ') e--;
while (e>c && e[-1]==';') e--;
if (class_name(1)) {
write_public(public_);
- write_h(" %.*s;\n", (int)(e-c), c);
+ write_h(" %.*s; %s\n", (int)(e-c), c, csc);
} else {
if (public_) {
- write_h("extern %.*s;\n", (int)(e-c), c);
- write_c("%.*s;\n", (int)(e-c), c);
+ if (static_)
+ write_h("extern ");
+ write_h("%.*s; %s\n", (int)(e-c), c, csc);
+ if (static_)
+ write_c("%.*s; %s\n", (int)(e-c), c, csc);
} else {
- write_c("static %.*s;\n", (int)(e-c), c);
+ if (static_)
+ write_c("static ");
+ write_c("%.*s; %s\n", (int)(e-c), c, csc);
}
}
}
@@ -1044,9 +1093,8 @@ Fl_Class_Type Fl_Class_type;
static Fl_Class_Type *current_class;
extern Fl_Widget_Class_Type *current_widget_class;
-extern int varused_test;
void write_public(int state) {
- if ((!current_class && !current_widget_class) || varused_test) return;
+ if (!current_class && !current_widget_class) return;
if (current_class && current_class->write_public_state == state) return;
if (current_widget_class && current_widget_class->write_public_state == state) return;
if (current_class) current_class->write_public_state = state;
@@ -1087,5 +1135,5 @@ int Fl_Class_Type::has_function(const char *rtype, const char *sig) const {
}
//
-// End of "$Id: Fl_Function_Type.cxx 4638 2005-11-04 15:16:24Z matt $".
+// End of "$Id: Fl_Function_Type.cxx 5343 2006-08-23 11:00:22Z matt $".
//
diff --git a/fluid/Fl_Group_Type.cxx b/fluid/Fl_Group_Type.cxx
index 16227f6..e11ee1f 100644
--- a/fluid/Fl_Group_Type.cxx
+++ b/fluid/Fl_Group_Type.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Group_Type.cxx 4553 2005-08-30 21:25:47Z matt $"
+// "$Id: Fl_Group_Type.cxx 5609 2007-01-18 11:28:47Z matt $"
//
// Fl_Group object code for the Fast Light Tool Kit (FLTK).
//
@@ -7,7 +7,7 @@
// the Fl_Tabs widget, with special stuff to select tab items and
// insure that only one is visible.
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -124,9 +124,12 @@ void Fl_Group_Type::write_code1() {
}
void Fl_Group_Type::write_code2() {
+ const char *var = name() ? name() : "o";
write_extra_code();
- write_c("%so->end();\n", indent());
- if (resizable()) write_c("%sFl_Group::current()->resizable(o);\n", indent());
+ write_c("%s%s->end();\n", indent(), var);
+ if (resizable()) {
+ write_c("%sFl_Group::current()->resizable(%s);\n", indent(), var);
+ }
write_block_close();
}
@@ -161,10 +164,14 @@ Fl_Type* Fl_Tabs_Type::click_test(int x, int y) {
Fl_Tabs *t = (Fl_Tabs*)o;
Fl_Widget *a = t->which(x,y);
if (!a) return 0; // didn't click on tab
+ // changing the visible tab has an impact on the generated
+ // source code, so mark this project as changed.
+ int changed = (a!=t->value());
// okay, run the tabs ui until they let go of mouse:
t->handle(FL_PUSH);
Fl::pushed(t);
while (Fl::pushed()==t) Fl::wait();
+ if (changed) set_modflag(1);
return (Fl_Type*)(t->value()->user_data());
}
@@ -271,6 +278,22 @@ void Fl_Group_Type::copy_properties() {
const char scroll_type_name[] = "Fl_Scroll";
+Fl_Widget *Fl_Scroll_Type::enter_live_mode(int top) {
+ Fl_Group *grp = new Fl_Scroll(o->x(), o->y(), o->w(), o->h());
+ grp->show();
+ live_widget = grp;
+ if (live_widget) {
+ copy_properties();
+ Fl_Type *n;
+ for (n = next; n && n->level > level; n = n->next) {
+ if (n->level == level+1)
+ n->enter_live_mode();
+ }
+ grp->end();
+ }
+ return live_widget;
+}
+
Fl_Menu_Item scroll_type_menu[] = {
{"BOTH", 0, 0, 0/*(void*)Fl_Scroll::BOTH*/},
{"HORIZONTAL", 0, 0, (void*)Fl_Scroll::HORIZONTAL},
@@ -303,5 +326,5 @@ void Fl_Tile_Type::copy_properties() {
}
//
-// End of "$Id: Fl_Group_Type.cxx 4553 2005-08-30 21:25:47Z matt $".
+// End of "$Id: Fl_Group_Type.cxx 5609 2007-01-18 11:28:47Z matt $".
//
diff --git a/fluid/Fl_Menu_Type.cxx b/fluid/Fl_Menu_Type.cxx
index f16c7d3..f172d51 100644
--- a/fluid/Fl_Menu_Type.cxx
+++ b/fluid/Fl_Menu_Type.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_Type.cxx 4727 2005-12-30 14:11:04Z matt $"
+// "$Id: Fl_Menu_Type.cxx 5808 2007-05-10 12:06:31Z matt $"
//
// Menu item code for the Fast Light Tool Kit (FLTK).
//
@@ -9,7 +9,7 @@
// This file also contains code to make Fl_Menu_Button, Fl_Menu_Bar,
// etc widgets.
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -244,10 +244,19 @@ void Fl_Menu_Item_Type::write_static() {
// Write menu item variables...
t = prev; while (t && t->is_menu_item()) t = t->prev;
for (Fl_Type* q = t->next; q && q->is_menu_item(); q = q->next) {
- const char *c = array_name((Fl_Menu_Item_Type *)q);
+ Fl_Menu_Item_Type *m = (Fl_Menu_Item_Type*)q;
+ const char *c = array_name(m);
if (c) {
- int i; const char* n = ((Fl_Menu_Item_Type *)q)->menu_name(i);
- write_c("Fl_Menu_Item* %s::%s = %s::%s + %d;\n", k, c, k, n, i);
+ if (c==m->name()) {
+ // assign a menu item address directly to a variable
+ int i;
+ const char* n = ((Fl_Menu_Item_Type *)q)->menu_name(i);
+ write_c("Fl_Menu_Item* %s::%s = %s::%s + %d;\n", k, c, k, n, i);
+ } else {
+ // if the name is an array, only define the array.
+ // The actual assignment is in write_code1()
+ write_c("Fl_Menu_Item* %s::%s;\n", k, c);
+ }
}
}
}
@@ -299,9 +308,14 @@ void Fl_Menu_Item_Type::write_item() {
}
}
else write_c("\"\"");
- if (((Fl_Button*)o)->shortcut())
- write_c(", 0x%x, ", ((Fl_Button*)o)->shortcut());
- else
+ if (((Fl_Button*)o)->shortcut()) {
+ int s = ((Fl_Button*)o)->shortcut();
+ if (use_FL_COMMAND && (s & (FL_CTRL|FL_META))) {
+ write_c(", FL_COMMAND|0x%x, ", s & ~(FL_CTRL|FL_META));
+ } else {
+ write_c(", 0x%x, ", s);
+ }
+ } else
write_c(", 0, ");
if (callback()) {
const char* k = is_name(callback()) ? 0 : class_name(1);
@@ -336,8 +350,12 @@ void Fl_Menu_Item_Type::write_code1() {
if (class_name(1)) {
write_public(public_);
write_h(" static Fl_Menu_Item *%s;\n", c);
- } else
- write_h("#define %s (%s+%d)\n", c, mname, i);
+ } else {
+ if (c==name())
+ write_h("#define %s (%s+%d)\n", c, mname, i);
+ else
+ write_h("extern Fl_Menu_Item *%s;\n", c);
+ }
}
if (callback()) {
@@ -351,10 +369,16 @@ void Fl_Menu_Item_Type::write_code1() {
}
int init = 0;
+ // if the name is an array variable, assign the value here
+ if (name() && strchr(name(), '[')) {
+ write_c("%s%s = &%s[%d];\n", indent(), name(), mname, i);
+ }
if (image) {
- write_c(" {Fl_Menu_Item* o = &%s[%d];\n", mname, i);
- init = 1;
- image->write_code();
+ if (!init) {
+ init = 1;
+ write_c("%s{ Fl_Menu_Item* o = &%s[%d];\n", indent(), mname, i);
+ }
+ image->write_code("o");
}
for (int n=0; n < NUM_EXTRA_CODE; n++)
if (extra_code(n) && !isdeclare(extra_code(n))) {
@@ -443,7 +467,7 @@ Fl_Type* Fl_Menu_Type::click_test(int, int) {
void Fl_Menu_Type::write_code2() {
if (next && next->is_menu_item())
- write_c("%so->menu(%s);\n", indent(),
+ write_c("%s%s->menu(%s);\n", indent(), name() ? name() : "o",
unique_id(this, "menu", name(), label()));
Fl_Widget_Type::write_code2();
}
@@ -525,7 +549,13 @@ void Shortcut_Button::draw() {
if (value()) draw_box(FL_DOWN_BOX, (Fl_Color)9);
else draw_box(FL_UP_BOX, FL_WHITE);
fl_font(FL_HELVETICA,14); fl_color(FL_FOREGROUND_COLOR);
- fl_draw(fl_shortcut_label(svalue),x()+6,y(),w(),h(),FL_ALIGN_LEFT);
+ if (use_FL_COMMAND && (svalue & (FL_CTRL|FL_META))) {
+ char buf[1024];
+ fl_snprintf(buf, 1023, "Command+%s", fl_shortcut_label(svalue&~(FL_CTRL|FL_META)));
+ fl_draw(buf,x()+6,y(),w(),h(),FL_ALIGN_LEFT);
+ } else {
+ fl_draw(fl_shortcut_label(svalue),x()+6,y(),w(),h(),FL_ALIGN_LEFT);
+ }
}
int Shortcut_Button::handle(int e) {
@@ -543,7 +573,7 @@ int Shortcut_Button::handle(int e) {
v = Fl::event_state()&(FL_META|FL_ALT|FL_CTRL|FL_SHIFT) | Fl::event_key();
if (v == FL_BackSpace && svalue) v = 0;
}
- if (v != svalue) {svalue = v; set_changed(); redraw(); do_callback(); }
+ if (v != svalue) {svalue = v; set_changed(); redraw(); do_callback(); }
return 1;
} else if (e == FL_UNFOCUS) {
int c = changed(); value(0); if (c) set_changed();
@@ -564,15 +594,18 @@ void shortcut_in_cb(Shortcut_Button* i, void* v) {
i->svalue = ((Fl_Button*)(current_widget->o))->shortcut();
i->redraw();
} else {
+ int mod = 0;
for (Fl_Type *o = Fl_Type::first; o; o = o->next)
if (o->selected && o->is_button()) {
Fl_Button* b = (Fl_Button*)(((Fl_Widget_Type*)o)->o);
+ if (b->shortcut()!=i->svalue) mod = 1;
b->shortcut(i->svalue);
if (o->is_menu_item()) ((Fl_Widget_Type*)o)->redraw();
}
+ if (mod) set_modflag(1);
}
}
//
-// End of "$Id: Fl_Menu_Type.cxx 4727 2005-12-30 14:11:04Z matt $".
+// End of "$Id: Fl_Menu_Type.cxx 5808 2007-05-10 12:06:31Z matt $".
//
diff --git a/fluid/Fl_Type.cxx b/fluid/Fl_Type.cxx
index aaf5f23..e6dda59 100644
--- a/fluid/Fl_Type.cxx
+++ b/fluid/Fl_Type.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Type.cxx 4630 2005-11-03 20:43:19Z matt $"
+// "$Id: Fl_Type.cxx 5808 2007-05-10 12:06:31Z matt $"
//
// Widget type code for the Fast Light Tool Kit (FLTK).
//
@@ -15,7 +15,7 @@
// not in the linked list and are not written to files or
// copied or otherwise examined.
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -622,6 +622,7 @@ Fl_Type::~Fl_Type() {
int Fl_Type::is_parent() const {return 0;}
int Fl_Type::is_widget() const {return 0;}
int Fl_Type::is_valuator() const {return 0;}
+int Fl_Type::is_spinner() const {return 0;}
int Fl_Type::is_button() const {return 0;}
int Fl_Type::is_menu_item() const {return 0;}
int Fl_Type::is_menu_button() const {return 0;}
@@ -708,7 +709,10 @@ void delete_all(int selected_only) {
f = g;
} else f = f->next;
}
- if(!selected_only) include_H_from_C=1;
+ if(!selected_only) {
+ include_H_from_C=1;
+ use_FL_COMMAND=0;
+ }
selection_changed(0);
}
@@ -862,5 +866,5 @@ void Fl_Type::copy_properties() {
}
//
-// End of "$Id: Fl_Type.cxx 4630 2005-11-03 20:43:19Z matt $".
+// End of "$Id: Fl_Type.cxx 5808 2007-05-10 12:06:31Z matt $".
//
diff --git a/fluid/Fl_Type.h b/fluid/Fl_Type.h
index f4f50bc..02ce697 100644
--- a/fluid/Fl_Type.h
+++ b/fluid/Fl_Type.h
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Type.h 4638 2005-11-04 15:16:24Z matt $"
+// "$Id: Fl_Type.h 5808 2007-05-10 12:06:31Z matt $"
//
// Widget type header file for the Fast Light Tool Kit (FLTK).
//
@@ -11,7 +11,8 @@
// instance of this object. It could also have a "copy()" function,
// but it was easier to implement this by using the file read/write
// that is needed to save the setup anyways.
-// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -131,6 +132,7 @@ public:
virtual int is_widget() const;
virtual int is_button() const;
virtual int is_valuator() const;
+ virtual int is_spinner() const;
virtual int is_menu_item() const;
virtual int is_menu_button() const;
virtual int is_group() const;
@@ -199,6 +201,7 @@ public:
class Fl_Decl_Type : public Fl_Type {
char public_;
+ char static_;
public:
Fl_Type *make();
void write_code1();
@@ -438,6 +441,7 @@ public:
virtual const char *type_name() {return scroll_type_name;}
Fl_Widget_Type *_make() {return new Fl_Scroll_Type();}
int pixmapID() { return 19; }
+ Fl_Widget *enter_live_mode(int top=0);
void copy_properties();
};
@@ -542,6 +546,7 @@ public:
virtual const char *type_name() {return "widget_class";}
int pixmapID() { return 48; }
int is_parent() const {return 1;}
+ int is_code_block() const {return 1;}
int is_decl_block() const {return 1;}
int is_class() const {return 1;}
};
@@ -758,7 +763,8 @@ const char *c_check(const char *c, int type = 0);
int storestring(const char *n, const char * & p, int nostrip=0);
extern int include_H_from_C;
+extern int use_FL_COMMAND;
//
-// End of "$Id: Fl_Type.h 4638 2005-11-04 15:16:24Z matt $".
+// End of "$Id: Fl_Type.h 5808 2007-05-10 12:06:31Z matt $".
//
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx
index e107ab5..0ce353a 100644
--- a/fluid/Fl_Widget_Type.cxx
+++ b/fluid/Fl_Widget_Type.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Widget_Type.cxx 4723 2005-12-30 10:13:17Z matt $"
+// "$Id: Fl_Widget_Type.cxx 5808 2007-05-10 12:06:31Z matt $"
//
// Widget type code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -32,6 +32,7 @@
#include "alignment_panel.h"
#include <FL/fl_message.H>
#include <FL/Fl_Slider.H>
+#include <FL/Fl_Spinner.H>
#include <FL/Fl_Window.H>
#include "../src/flstring.h"
#include <stdio.h>
@@ -638,6 +639,14 @@ Fl_Menu_Item boxmenu[] = {
{"PLASTIC_DOWN_BOX",0,0,(void *)FL_PLASTIC_DOWN_BOX},
{"PLASTIC_THIN_UP_BOX",0,0,(void *)FL_PLASTIC_THIN_UP_BOX},
{"PLASTIC_THIN_DOWN_BOX",0,0,(void *)FL_PLASTIC_THIN_DOWN_BOX},
+{"PLASTIC_ROUND_UP_BOX",0,0,(void *)FL_PLASTIC_ROUND_UP_BOX},
+{"PLASTIC_ROUND_DOWN_BOX",0,0,(void *)FL_PLASTIC_ROUND_DOWN_BOX},
+{"GTK_UP_BOX",0,0,(void *)FL_GTK_UP_BOX},
+{"GTK_DOWN_BOX",0,0,(void *)FL_GTK_DOWN_BOX},
+{"GTK_THIN_UP_BOX",0,0,(void *)FL_GTK_THIN_UP_BOX},
+{"GTK_THIN_DOWN_BOX",0,0,(void *)FL_GTK_THIN_DOWN_BOX},
+{"GTK_ROUND_UP_BOX",0,0,(void *)FL_GTK_ROUND_UP_BOX},
+{"GTK_ROUND_DOWN_BOX",0,0,(void *)FL_GTK_ROUND_DOWN_BOX},
{0},
{"frames",0,0,0,FL_SUBMENU},
{"UP_FRAME",0,0,(void *)FL_UP_FRAME},
@@ -652,6 +661,10 @@ Fl_Menu_Item boxmenu[] = {
{"OVAL_FRAME",0,0,(void *)FL_OVAL_FRAME},
{"PLASTIC_UP_FRAME",0,0,(void *)FL_PLASTIC_UP_FRAME},
{"PLASTIC_DOWN_FRAME",0,0,(void *)FL_PLASTIC_DOWN_FRAME},
+{"GTK_UP_FRAME",0,0,(void *)FL_GTK_UP_FRAME},
+{"GTK_DOWN_FRAME",0,0,(void *)FL_GTK_DOWN_FRAME},
+{"GTK_THIN_UP_FRAME",0,0,(void *)FL_GTK_THIN_UP_FRAME},
+{"GTK_THIN_DOWN_FRAME",0,0,(void *)FL_GTK_THIN_DOWN_FRAME},
{0},
{0}};
@@ -873,6 +886,13 @@ void visible_cb(Fl_Light_Button* i, void* v) {
n ? q->o->show() : q->o->hide();
q->redraw();
mod = 1;
+ if (n && q->parent && q->parent->type_name()) {
+ if (!strcmp(q->parent->type_name(), "Fl_Tabs")) {
+ ((Fl_Tabs *)q->o->parent())->value(q->o);
+ } else if (!strcmp(q->parent->type_name(), "Fl_Wizard")) {
+ ((Fl_Wizard *)q->o->parent())->value(q->o);
+ }
+ }
}
}
if (mod) set_modflag(1);
@@ -1421,7 +1441,7 @@ void slider_size_cb(Fl_Value_Input* i, void* v) {
i->parent()->hide();
else
i->parent()->show();
- if (current_widget->is_valuator()!=2) {i->deactivate(); return;}
+ if (current_widget->is_valuator()<2) {i->deactivate(); return;}
i->activate();
i->value(((Fl_Slider*)(current_widget->o))->slider_size());
} else {
@@ -1430,7 +1450,7 @@ void slider_size_cb(Fl_Value_Input* i, void* v) {
for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
if (o->selected && o->is_widget()) {
Fl_Widget_Type* q = (Fl_Widget_Type*)o;
- if (q->is_valuator()==2) {
+ if (q->is_valuator()>=2) {
((Fl_Slider*)(q->o))->slider_size(n);
q->o->redraw();
mod = 1;
@@ -1443,9 +1463,16 @@ void slider_size_cb(Fl_Value_Input* i, void* v) {
void min_cb(Fl_Value_Input* i, void* v) {
if (v == LOAD) {
- if (!current_widget->is_valuator()) {i->deactivate(); return;}
- i->activate();
- i->value(((Fl_Valuator*)(current_widget->o))->minimum());
+ if (current_widget->is_valuator()) {
+ i->activate();
+ i->value(((Fl_Valuator*)(current_widget->o))->minimum());
+ } else if (current_widget->is_spinner()) {
+ i->activate();
+ i->value(((Fl_Spinner*)(current_widget->o))->minimum());
+ } else {
+ i->deactivate();
+ return;
+ }
} else {
int mod = 0;
double n = i->value();
@@ -1456,7 +1483,11 @@ void min_cb(Fl_Value_Input* i, void* v) {
((Fl_Valuator*)(q->o))->minimum(n);
q->o->redraw();
mod = 1;
- }
+ } else if (q->is_spinner()) {
+ ((Fl_Spinner*)(q->o))->minimum(n);
+ q->o->redraw();
+ mod = 1;
+ }
}
}
if (mod) set_modflag(1);
@@ -1465,9 +1496,16 @@ void min_cb(Fl_Value_Input* i, void* v) {
void max_cb(Fl_Value_Input* i, void* v) {
if (v == LOAD) {
- if (!current_widget->is_valuator()) {i->deactivate(); return;}
- i->activate();
- i->value(((Fl_Valuator*)(current_widget->o))->maximum());
+ if (current_widget->is_valuator()) {
+ i->activate();
+ i->value(((Fl_Valuator*)(current_widget->o))->maximum());
+ } else if (current_widget->is_spinner()) {
+ i->activate();
+ i->value(((Fl_Spinner*)(current_widget->o))->maximum());
+ } else {
+ i->deactivate();
+ return;
+ }
} else {
int mod = 0;
double n = i->value();
@@ -1478,6 +1516,10 @@ void max_cb(Fl_Value_Input* i, void* v) {
((Fl_Valuator*)(q->o))->maximum(n);
q->o->redraw();
mod = 1;
+ } else if (q->is_spinner()) {
+ ((Fl_Spinner*)(q->o))->maximum(n);
+ q->o->redraw();
+ mod = 1;
}
}
}
@@ -1487,9 +1529,16 @@ void max_cb(Fl_Value_Input* i, void* v) {
void step_cb(Fl_Value_Input* i, void* v) {
if (v == LOAD) {
- if (!current_widget->is_valuator()) {i->deactivate(); return;}
- i->activate();
- i->value(((Fl_Valuator*)(current_widget->o))->step());
+ if (current_widget->is_valuator()) {
+ i->activate();
+ i->value(((Fl_Valuator*)(current_widget->o))->step());
+ } else if (current_widget->is_spinner()) {
+ i->activate();
+ i->value(((Fl_Spinner*)(current_widget->o))->step());
+ } else {
+ i->deactivate();
+ return;
+ }
} else {
int mod = 0;
double n = i->value();
@@ -1497,9 +1546,13 @@ void step_cb(Fl_Value_Input* i, void* v) {
if (o->selected && o->is_widget()) {
Fl_Widget_Type* q = (Fl_Widget_Type*)o;
if (q->is_valuator()) {
- ((Fl_Valuator*)(q->o))->step(n);
- q->o->redraw();
- mod = 1;
+ ((Fl_Valuator*)(q->o))->step(n);
+ q->o->redraw();
+ mod = 1;
+ } else if (q->is_spinner()) {
+ ((Fl_Spinner*)(q->o))->step(n);
+ q->o->redraw();
+ mod = 1;
}
}
}
@@ -1515,6 +1568,9 @@ void value_cb(Fl_Value_Input* i, void* v) {
} else if (current_widget->is_button()) {
i->activate();
i->value(((Fl_Button*)(current_widget->o))->value());
+ } else if (current_widget->is_spinner()) {
+ i->activate();
+ i->value(((Fl_Spinner*)(current_widget->o))->value());
} else
i->deactivate();
} else {
@@ -1530,6 +1586,9 @@ void value_cb(Fl_Value_Input* i, void* v) {
((Fl_Button*)(q->o))->value(n != 0);
if (q->is_menu_item()) q->redraw();
mod = 1;
+ } else if (q->is_spinner()) {
+ ((Fl_Spinner*)(q->o))->value(n);
+ mod = 1;
}
}
}
@@ -1551,7 +1610,11 @@ void subtype_cb(Fl_Choice* i, void* v) {
int j;
for (j = 0;; j++) {
if (!m[j].text) {j = 0; break;}
- if (m[j].argument() == current_widget->o->type()) break;
+ if (current_widget->is_spinner()) {
+ if (m[j].argument() == ((Fl_Spinner*)current_widget->o)->type()) break;
+ } else {
+ if (m[j].argument() == current_widget->o->type()) break;
+ }
}
i->value(j);
i->activate();
@@ -1564,9 +1627,12 @@ void subtype_cb(Fl_Choice* i, void* v) {
if (o->selected && o->is_widget()) {
Fl_Widget_Type* q = (Fl_Widget_Type*)o;
if (q->subtypes()==m) {
- q->o->type(n);
- q->redraw();
- mod = 1;
+ if (q->is_spinner())
+ ((Fl_Spinner*)q->o)->type(n);
+ else
+ q->o->type(n);
+ q->redraw();
+ mod = 1;
}
}
}
@@ -1807,7 +1873,9 @@ int isdeclare(const char *c) {
void Fl_Widget_Type::write_static() {
const char* t = subclassname(this);
- if (!subclass() || is_class()) write_declare("#include <FL/%s.H>", t);
+ if (!subclass() || (is_class() && !strncmp(t, "Fl_", 3))) {
+ write_declare("#include <FL/%s.H>", t);
+ }
for (int n=0; n < NUM_EXTRA_CODE; n++) {
if (extra_code(n) && isdeclare(extra_code(n)))
write_declare("%s", extra_code(n));
@@ -1895,7 +1963,7 @@ const char *Fl_Type::callback_name() {
}
extern int varused_test, varused;
-
+
void Fl_Widget_Type::write_code1() {
const char* t = subclassname(this);
const char *c = array_name(this);
@@ -1913,17 +1981,49 @@ void Fl_Widget_Type::write_code1() {
write_h(" static void %s(%s*, %s);\n", cn, t, ut);
}
// figure out if local variable will be used (prevent compiler warnings):
- if (is_parent())
- varused = 1;
- else {
- varused_test = 1; varused = 0;
- write_widget_code();
- varused_test = 0;
+ int wused = !name() && is_window();
+ const char *ptr;
+
+ varused = wused;
+
+ if (!name() && !varused) {
+ varused |= is_parent();
+
+ if (!varused) {
+ varused_test = 1;
+ write_widget_code();
+ varused_test = 0;
+ }
+ }
+
+ if (!varused) {
for (int n=0; n < NUM_EXTRA_CODE; n++)
- if (extra_code(n) && !isdeclare(extra_code(n))) varused = 1;
+ if (extra_code(n) && !isdeclare(extra_code(n)))
+ {
+ int instring = 0;
+ int inname = 0;
+ for (ptr = extra_code(n); *ptr; ptr ++) {
+ if (instring) {
+ if (*ptr == '\\') ptr++;
+ else if (*ptr == '\"') instring = 0;
+ } else if (inname && !isalnum(*ptr & 255)) inname = 0;
+ else if (*ptr == '\"') instring = 1;
+ else if (isalnum(*ptr & 255) || *ptr == '_') {
+ size_t len = strspn(ptr, "0123456789_"
+ "abcdefghijklmnopqrstuvwxyz"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+
+ if (!strncmp(ptr, "o", len)) {
+ varused = 1;
+ break;
+ } else ptr += len - 1;
+ }
+ }
+ }
}
- write_c(indent());
- if (varused) write_c("{ %s* o = ", t);
+
+ write_c("%s{ ", indent());
+ if (varused) write_c("%s* o = ", t);
if (name()) write_c("%s = ", name());
if (is_window()) {
// Handle special case where user is faking a Fl_Group type as a window,
@@ -1955,10 +2055,12 @@ void Fl_Widget_Type::write_code1() {
}
}
write_c(");\n");
+
indentation += 2;
- if (is_window()) write_c("%sw = o;\n",indent());
- if (varused) write_widget_code();
+ if (wused) write_c("%sw = o;\n", indent());
+
+ write_widget_code();
}
void Fl_Widget_Type::write_color(const char* field, Fl_Color color) {
@@ -1991,18 +2093,21 @@ void Fl_Widget_Type::write_color(const char* field, Fl_Color color) {
case FL_DARK_CYAN: color_name = "FL_DARK_CYAN"; break;
case FL_WHITE: color_name = "FL_WHITE"; break;
}
+ const char *var = is_class() ? "this" : name() ? name() : "o";
if (color_name) {
- write_c("%so->%s(%s);\n", indent(), field, color_name);
+ write_c("%s%s->%s(%s);\n", indent(), var, field, color_name);
} else {
- write_c("%so->%s((Fl_Color)%d);\n", indent(), field, color);
+ write_c("%s%s->%s((Fl_Color)%d);\n", indent(), var, field, color);
}
}
// this is split from write_code1() for Fl_Window_Type:
void Fl_Widget_Type::write_widget_code() {
Fl_Widget* tplate = ((Fl_Widget_Type*)factory)->o;
+ const char *var = is_class() ? "this" : name() ? name() : "o";
+
if (tooltip() && *tooltip()) {
- write_c("%so->tooltip(",indent());
+ write_c("%s%s->tooltip(",indent(), var);
switch (i18n_type) {
case 0 : /* None */
write_cstring(tooltip());
@@ -2022,92 +2127,131 @@ void Fl_Widget_Type::write_widget_code() {
write_c(");\n");
}
- if (o->type() != tplate->type() && !is_window())
- write_c("%so->type(%d);\n", indent(), o->type());
+ if (is_spinner() && ((Fl_Spinner*)o)->type() != ((Fl_Spinner*)tplate)->type())
+ write_c("%s%s->type(%d);\n", indent(), var, ((Fl_Spinner*)o)->type());
+ else if (o->type() != tplate->type() && !is_window())
+ write_c("%s%s->type(%d);\n", indent(), var, o->type());
if (o->box() != tplate->box() || subclass())
- write_c("%so->box(FL_%s);\n", indent(), boxname(o->box()));
+ write_c("%s%s->box(FL_%s);\n", indent(), var, boxname(o->box()));
if (is_button()) {
Fl_Button* b = (Fl_Button*)o;
- if (b->down_box()) write_c("%so->down_box(FL_%s);\n", indent(),
+ if (b->down_box()) write_c("%s%s->down_box(FL_%s);\n", indent(), var,
boxname(b->down_box()));
- if (b->value()) write_c("%so->value(1);\n", indent());
- if (b->shortcut())
- write_c("%so->shortcut(0x%x);\n", indent(), b->shortcut());
+ if (b->value()) write_c("%s%s->value(1);\n", indent(), var);
+ if (b->shortcut()) {
+ int s = b->shortcut();
+ if (use_FL_COMMAND && (s & (FL_CTRL|FL_META))) {
+ write_c("%s%s->shortcut(FL_COMMAND|0x%x);\n", indent(), var, s & ~(FL_CTRL|FL_META));
+ } else {
+ write_c("%s%s->shortcut(0x%x);\n", indent(), var, s);
+ }
+ }
} else if (!strcmp(type_name(), "Fl_Input_Choice")) {
Fl_Input_Choice* b = (Fl_Input_Choice*)o;
- if (b->down_box()) write_c("%so->down_box(FL_%s);\n", indent(),
+ if (b->down_box()) write_c("%s%s->down_box(FL_%s);\n", indent(), var,
boxname(b->down_box()));
} else if (is_menu_button()) {
Fl_Menu_* b = (Fl_Menu_*)o;
- if (b->down_box()) write_c("%so->down_box(FL_%s);\n", indent(),
+ if (b->down_box()) write_c("%s%s->down_box(FL_%s);\n", indent(), var,
boxname(b->down_box()));
}
if (o->color() != tplate->color() || subclass())
write_color("color", o->color());
if (o->selection_color() != tplate->selection_color() || subclass())
write_color("selection_color", o->selection_color());
- if (image) image->write_code();
- if (inactive) inactive->write_code(1);
+ if (image) image->write_code(var);
+ if (inactive) inactive->write_code(var, 1);
if (o->labeltype() != tplate->labeltype() || subclass())
- write_c("%so->labeltype(FL_%s);\n", indent(),
+ write_c("%s%s->labeltype(FL_%s);\n", indent(), var,
item_name(labeltypemenu, o->labeltype()));
if (o->labelfont() != tplate->labelfont() || subclass())
- write_c("%so->labelfont(%d);\n", indent(), o->labelfont());
+ write_c("%s%s->labelfont(%d);\n", indent(), var, o->labelfont());
if (o->labelsize() != tplate->labelsize() || subclass())
- write_c("%so->labelsize(%d);\n", indent(), o->labelsize());
+ write_c("%s%s->labelsize(%d);\n", indent(), var, o->labelsize());
if (o->labelcolor() != tplate->labelcolor() || subclass())
write_color("labelcolor", o->labelcolor());
if (is_valuator()) {
Fl_Valuator* v = (Fl_Valuator*)o;
Fl_Valuator* f = (Fl_Valuator*)(tplate);
if (v->minimum()!=f->minimum())
- write_c("%so->minimum(%g);\n", indent(), v->minimum());
+ write_c("%s%s->minimum(%g);\n", indent(), var, v->minimum());
if (v->maximum()!=f->maximum())
- write_c("%so->maximum(%g);\n", indent(), v->maximum());
+ write_c("%s%s->maximum(%g);\n", indent(), var, v->maximum());
if (v->step()!=f->step())
- write_c("%so->step(%g);\n", indent(), v->step());
- if (v->value())
- write_c("%so->value(%g);\n", indent(), v->value());
- if (is_valuator()==2) {
+ write_c("%s%s->step(%g);\n", indent(), var, v->step());
+ if (v->value()) {
+ if (is_valuator()==3) { // Fl_Scrollbar::value(double) is nott available
+ write_c("%s%s->Fl_Slider::value(%g);\n", indent(), var, v->value());
+ } else {
+ write_c("%s%s->value(%g);\n", indent(), var, v->value());
+ }
+ }
+ if (is_valuator()>=2) {
double x = ((Fl_Slider*)v)->slider_size();
double y = ((Fl_Slider*)f)->slider_size();
- if (x != y) write_c("%so->slider_size(%g);\n", indent(), x);
+ if (x != y) write_c("%s%s->slider_size(%g);\n", indent(), var, x);
}
}
+ if (is_spinner()) {
+ Fl_Spinner* v = (Fl_Spinner*)o;
+ Fl_Spinner* f = (Fl_Spinner*)(tplate);
+ if (v->minimum()!=f->minimum())
+ write_c("%s%s->minimum(%g);\n", indent(), var, v->minimum());
+ if (v->maximum()!=f->maximum())
+ write_c("%s%s->maximum(%g);\n", indent(), var, v->maximum());
+ if (v->step()!=f->step())
+ write_c("%s%s->step(%g);\n", indent(), var, v->step());
+ if (v->value())
+ write_c("%s%s->value(%g);\n", indent(), var, v->value());
+ }
+
{Fl_Font ff; int fs; Fl_Color fc; if (textstuff(4,ff,fs,fc)) {
Fl_Font f; int s; Fl_Color c; textstuff(0,f,s,c);
- if (f != ff) write_c("%so->textfont(%d);\n", indent(), f);
- if (s != fs) write_c("%so->textsize(%d);\n", indent(), s);
- if (c != fc) write_c("%so->textcolor(%d);\n",indent(), c);
+ if (f != ff) write_c("%s%s->textfont(%d);\n", indent(), var, f);
+ if (s != fs) write_c("%s%s->textsize(%d);\n", indent(), var, s);
+ if (c != fc) write_c("%s%s->textcolor(%d);\n",indent(), var, c);
}}
const char* ud = user_data();
if (class_name(1) && !parent->is_widget()) ud = "this";
if (callback()) {
- write_c("%so->callback((Fl_Callback*)%s", indent(), callback_name());
+ write_c("%s%s->callback((Fl_Callback*)%s", indent(), var, callback_name());
if (ud)
write_c(", (void*)(%s));\n", ud);
else
write_c(");\n");
} else if (ud) {
- write_c("%so->user_data((void*)(%s));\n", indent(), ud);
+ write_c("%s%s->user_data((void*)(%s));\n", indent(), var, ud);
}
if (o->align() != tplate->align() || subclass()) {
int i = o->align();
- write_c("%so->align(%s", indent(),
+ write_c("%s%s->align(%s", indent(), var,
item_name(alignmenu, i & ~FL_ALIGN_INSIDE));
if (i & FL_ALIGN_INSIDE) write_c("|FL_ALIGN_INSIDE");
write_c(");\n");
}
- if (o->when() != tplate->when() || subclass())
- write_c("%so->when(%s);\n", indent(),item_name(whensymbolmenu, o->when()));
+ // avoid the unsupported combination of flegs when user sets
+ // "when" to "FL_WHEN_NEVER", but keeps the "no change" set.
+ // FIXME: This could be reflected in the GUI by graying out the button.
+ Fl_When ww = o->when();
+ if (ww==FL_WHEN_NOT_CHANGED)
+ ww = FL_WHEN_NEVER;
+ if (ww != tplate->when() || subclass())
+ write_c("%s%s->when(%s);\n", indent(), var,
+ item_name(whensymbolmenu, ww));
if (!o->visible() && o->parent())
- write_c("%so->hide();\n", indent());
+ write_c("%s%s->hide();\n", indent(), var);
if (!o->active())
- write_c("%so->deactivate();\n", indent());
+ write_c("%s%s->deactivate();\n", indent(), var);
if (!is_group() && resizable())
- write_c("%sFl_Group::current()->resizable(o);\n",indent());
- if (hotspot())
- write_c("%sw->hotspot(o);\n", indent());
+ write_c("%sFl_Group::current()->resizable(%s);\n", indent(), var);
+ if (hotspot()) {
+ if (is_class())
+ write_c("%shotspot(%s);\n", indent(), var);
+ else if (is_window())
+ write_c("%s%s->hotspot(%s);\n", indent(), var, var);
+ else
+ write_c("%s%s->window()->hotspot(%s);\n", indent(), var, var);
+ }
}
void Fl_Widget_Type::write_extra_code() {
@@ -2118,7 +2262,8 @@ void Fl_Widget_Type::write_extra_code() {
void Fl_Widget_Type::write_block_close() {
indentation -= 2;
- if (is_parent() || varused) write_c("%s}\n", indent());
+ write_c("%s} // %s* %s\n", indent(), subclassname(this),
+ name() ? name() : "o");
}
void Fl_Widget_Type::write_code2() {
@@ -2146,7 +2291,10 @@ void Fl_Widget_Type::write_properties() {
}
write_string("xywh {%d %d %d %d}", o->x(), o->y(), o->w(), o->h());
Fl_Widget* tplate = ((Fl_Widget_Type*)factory)->o;
- if (o->type() != tplate->type() || is_window()) {
+ if (is_spinner() && ((Fl_Spinner*)o)->type() != ((Fl_Spinner*)tplate)->type()) {
+ write_string("type");
+ write_word(item_name(subtypes(), ((Fl_Spinner*)o)->type()));
+ } else if (o->type() != tplate->type() || is_window()) {
write_string("type");
write_word(item_name(subtypes(), o->type()));
}
@@ -2192,12 +2340,20 @@ void Fl_Widget_Type::write_properties() {
if (v->maximum()!=f->maximum()) write_string("maximum %g",v->maximum());
if (v->step()!=f->step()) write_string("step %g",v->step());
if (v->value()!=0.0) write_string("value %g",v->value());
- if (is_valuator()==2) {
+ if (is_valuator()>=2) {
double x = ((Fl_Slider*)v)->slider_size();
double y = ((Fl_Slider*)f)->slider_size();
if (x != y) write_string("slider_size %g", x);
}
}
+ if (is_spinner()) {
+ Fl_Spinner* v = (Fl_Spinner*)o;
+ Fl_Spinner* f = (Fl_Spinner*)(tplate);
+ if (v->minimum()!=f->minimum()) write_string("minimum %g",v->minimum());
+ if (v->maximum()!=f->maximum()) write_string("maximum %g",v->maximum());
+ if (v->step()!=f->step()) write_string("step %g",v->step());
+ if (v->value()!=0.0) write_string("value %g",v->value());
+ }
{Fl_Font ff; int fs; Fl_Color fc; if (textstuff(4,ff,fs,fc)) {
Fl_Font f; int s; Fl_Color c; textstuff(0,f,s,c);
if (f != ff) write_string("textfont %d", f);
@@ -2239,7 +2395,10 @@ void Fl_Widget_Type::read_property(const char *c) {
} else if (!strcmp(c,"deimage")) {
inactive_name(read_word());
} else if (!strcmp(c,"type")) {
- o->type(item_number(subtypes(), read_word()));
+ if (is_spinner())
+ ((Fl_Spinner*)o)->type(item_number(subtypes(), read_word()));
+ else
+ o->type(item_number(subtypes(), read_word()));
} else if (!strcmp(c,"box")) {
const char* value = read_word();
if ((x = boxnumber(value))) {
@@ -2298,14 +2457,18 @@ void Fl_Widget_Type::read_property(const char *c) {
if (sscanf(read_word(),"%d",&x) == 1) o->align(x);
} else if (!strcmp(c,"when")) {
if (sscanf(read_word(),"%d",&x) == 1) o->when(x);
- } else if (!strcmp(c,"minimum") && is_valuator()) {
- ((Fl_Valuator*)o)->minimum(strtod(read_word(),0));
- } else if (!strcmp(c,"maximum") && is_valuator()) {
- ((Fl_Valuator*)o)->maximum(strtod(read_word(),0));
- } else if (!strcmp(c,"step") && is_valuator()) {
- ((Fl_Valuator*)o)->step(strtod(read_word(),0));
- } else if (!strcmp(c,"value") && is_valuator()) {
- ((Fl_Valuator*)o)->value(strtod(read_word(),0));
+ } else if (!strcmp(c,"minimum")) {
+ if (is_valuator()) ((Fl_Valuator*)o)->minimum(strtod(read_word(),0));
+ if (is_spinner()) ((Fl_Spinner*)o)->minimum(strtod(read_word(),0));
+ } else if (!strcmp(c,"maximum")) {
+ if (is_valuator()) ((Fl_Valuator*)o)->maximum(strtod(read_word(),0));
+ if (is_spinner()) ((Fl_Spinner*)o)->maximum(strtod(read_word(),0));
+ } else if (!strcmp(c,"step")) {
+ if (is_valuator()) ((Fl_Valuator*)o)->step(strtod(read_word(),0));
+ if (is_spinner()) ((Fl_Spinner*)o)->step(strtod(read_word(),0));
+ } else if (!strcmp(c,"value")) {
+ if (is_valuator()) ((Fl_Valuator*)o)->value(strtod(read_word(),0));
+ if (is_spinner()) ((Fl_Spinner*)o)->value(strtod(read_word(),0));
} else if ((!strcmp(c,"slider_size")||!strcmp(c,"size"))&&is_valuator()==2) {
((Fl_Slider*)o)->slider_size(strtod(read_word(),0));
} else if (!strcmp(c,"textfont")) {
@@ -2503,11 +2666,20 @@ void Fl_Widget_Type::copy_properties() {
d->maximum(s->maximum());
d->step(s->step());
d->value(s->value());
- if (is_valuator()==2) {
+ if (is_valuator()>=2) {
Fl_Slider *d = (Fl_Slider*)live_widget, *s = (Fl_Slider*)o;
d->slider_size(s->slider_size());
}
}
+
+ // copy all attributes specific to Fl_Spinner and derived classes
+ if (is_spinner()) {
+ Fl_Spinner* d = (Fl_Spinner*)live_widget, *s = (Fl_Spinner*)o;
+ d->minimum(s->minimum());
+ d->maximum(s->maximum());
+ d->step(s->step());
+ d->value(s->value());
+ }
/* TODO: implement this
{Fl_Font ff; int fs; Fl_Color fc; if (textstuff(4,ff,fs,fc)) {
@@ -2533,5 +2705,5 @@ void Fl_Pack_Type::copy_properties()
}
//
-// End of "$Id: Fl_Widget_Type.cxx 4723 2005-12-30 10:13:17Z matt $".
+// End of "$Id: Fl_Widget_Type.cxx 5808 2007-05-10 12:06:31Z matt $".
//
diff --git a/fluid/Fl_Window_Type.cxx b/fluid/Fl_Window_Type.cxx
index e4a3881..bcd4e16 100644
--- a/fluid/Fl_Window_Type.cxx
+++ b/fluid/Fl_Window_Type.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Window_Type.cxx 4639 2005-11-04 15:21:26Z matt $"
+// "$Id: Fl_Window_Type.cxx 5808 2007-05-10 12:06:31Z matt $"
//
// Window type code for the Fast Light Tool Kit (FLTK).
//
@@ -7,7 +7,7 @@
// for interacting with the overlay, which allows the user to
// select, move, and resize the children widgets.
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -49,6 +49,7 @@ extern int snap;
extern int show_guides;
int include_H_from_C = 1;
+int use_FL_COMMAND = 0;
extern int i18n_type;
extern const char* i18n_include;
extern const char* i18n_function;
@@ -183,6 +184,7 @@ extern const char* code_file_name;
void show_project_cb(Fl_Widget *, void *) {
if(project_window==0) make_project_window();
include_H_from_C_button->value(include_H_from_C);
+ use_FL_COMMAND_button->value(use_FL_COMMAND);
header_file_input->value(header_file_name);
code_file_input->value(code_file_name);
i18n_type_chooser->value(i18n_type);
@@ -247,13 +249,20 @@ void code_input_cb(Fl_Input* i, void*) {
code_file_name = i->value();
}
-void include_H_from_C_button_cb(Fl_Light_Button* b, void*) {
+void include_H_from_C_button_cb(Fl_Check_Button* b, void*) {
if (include_H_from_C != b->value()) {
set_modflag(1);
include_H_from_C = b->value();
}
}
+void use_FL_COMMAND_button_cb(Fl_Check_Button* b, void*) {
+ if (use_FL_COMMAND != b->value()) {
+ set_modflag(1);
+ use_FL_COMMAND = b->value();
+ }
+}
+
////////////////////////////////////////////////////////////////
Fl_Menu_Item window_type_menu[] = {
@@ -1279,23 +1288,27 @@ void Fl_Window_Type::write_code1() {
}
void Fl_Window_Type::write_code2() {
+ const char *var = is_class() ? "this" : name() ? name() : "o";
write_extra_code();
- if (modal) write_c("%so->set_modal();\n", indent());
- else if (non_modal) write_c("%so->set_non_modal();\n", indent());
- if (!((Fl_Window*)o)->border()) write_c("%so->clear_border();\n", indent());
+ if (modal) write_c("%s%s->set_modal();\n", indent(), var);
+ else if (non_modal) write_c("%s%s->set_non_modal();\n", indent(), var);
+ if (!((Fl_Window*)o)->border()) {
+ write_c("%s%s->clear_border();\n", indent(), var);
+ }
if (xclass) {
- write_c("%so->xclass(", indent());
+ write_c("%s%s->xclass(", indent(), var);
write_cstring(xclass);
write_c(");\n");
}
if (sr_max_w || sr_max_h) {
- write_c("%so->size_range(%d, %d, %d, %d);\n", indent(), sr_min_w, sr_min_h, sr_max_w, sr_max_h);
+ write_c("%s%s->size_range(%d, %d, %d, %d);\n", indent(), var,
+ sr_min_w, sr_min_h, sr_max_w, sr_max_h);
} else if (sr_min_w || sr_min_h) {
- write_c("%so->size_range(%d, %d);\n", indent(), sr_min_w, sr_min_h);
+ write_c("%s%s->size_range(%d, %d);\n", indent(), var, sr_min_w, sr_min_h);
}
- write_c("%so->end();\n", indent());
+ write_c("%s%s->end();\n", indent(), var);
if (((Fl_Window*)o)->resizable() == o)
- write_c("%so->resizable(o);\n", indent());
+ write_c("%s%s->resizable(%s);\n", indent(), var, var);
write_block_close();
}
@@ -1414,10 +1427,7 @@ void Fl_Widget_Class_Type::write_code1() {
if (!c) c = "Fl_Group";
write_h("\nclass %s : public %s {\n", name(), c);
- if (!strcmp(c, "Fl_Window") ||
- !strcmp(c, "Fl_Double_Window") ||
- !strcmp(c, "Fl_Gl_Window") ||
- !strcmp(c, "Fl_Overlay_Window")) {
+ if (strstr(c, "Window")) {
write_h(" void _%s();\n", name());
write_h("public:\n");
write_h(" %s(int X, int Y, int W, int H, const char *L = 0);\n", name());
@@ -1435,7 +1445,7 @@ void Fl_Widget_Class_Type::write_code1() {
write_c("}\n\n");
write_c("void %s::_%s() {\n", name(), name());
- write_c(" %s *w = this;\n", name());
+// write_c(" %s *w = this;\n", name());
} else {
write_h("public:\n");
write_h(" %s(int X, int Y, int W, int H, const char *L = 0);\n", name());
@@ -1447,7 +1457,7 @@ void Fl_Widget_Class_Type::write_code1() {
write_c(" : %s(X, Y, W, H, L) {\n", c);
}
- write_c(" %s *o = this;\n", name());
+// write_c(" %s *o = this;\n", name());
write_widget_code();
}
@@ -1500,5 +1510,5 @@ void Fl_Window_Type::copy_properties() {
//
-// End of "$Id: Fl_Window_Type.cxx 4639 2005-11-04 15:21:26Z matt $".
+// End of "$Id: Fl_Window_Type.cxx 5808 2007-05-10 12:06:31Z matt $".
//
diff --git a/fluid/Fluid_Image.cxx b/fluid/Fluid_Image.cxx
index c385190..5733614 100644
--- a/fluid/Fluid_Image.cxx
+++ b/fluid/Fluid_Image.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fluid_Image.cxx 4607 2005-10-26 09:08:01Z matt $"
+// "$Id: Fluid_Image.cxx 5266 2006-07-26 19:52:28Z mike $"
//
// Pixmap label support for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -118,9 +118,9 @@ void Fluid_Image::write_static() {
}
}
-void Fluid_Image::write_code(int inactive) {
+void Fluid_Image::write_code(const char *var, int inactive) {
if (!img) return;
- write_c("%so->%s(%s);\n", indent(), inactive ? "deimage" : "image",
+ write_c("%s%s->%s(%s);\n", indent(), var, inactive ? "deimage" : "image",
unique_id(this, "image", fl_filename_name(name()), 0));
}
@@ -225,5 +225,5 @@ Fluid_Image *ui_find_image(const char *oldname) {
//
-// End of "$Id: Fluid_Image.cxx 4607 2005-10-26 09:08:01Z matt $".
+// End of "$Id: Fluid_Image.cxx 5266 2006-07-26 19:52:28Z mike $".
//
diff --git a/fluid/Fluid_Image.h b/fluid/Fluid_Image.h
index 063fa1e..985b8e4 100644
--- a/fluid/Fluid_Image.h
+++ b/fluid/Fluid_Image.h
@@ -1,5 +1,5 @@
//
-// "$Id: Fluid_Image.h 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fluid_Image.h 5266 2006-07-26 19:52:28Z mike $"
//
// Image header file for the Fast Light Tool Kit (FLTK).
//
@@ -50,7 +50,7 @@ public:
void image(Fl_Widget *); // set the image of this widget
void deimage(Fl_Widget *); // set the deimage of this widget
void write_static();
- void write_code(int inactive = 0);
+ void write_code(const char *var, int inactive = 0);
const char *name() const {return name_;}
};
@@ -62,5 +62,5 @@ extern const char *ui_find_image_name;
#endif
//
-// End of "$Id: Fluid_Image.h 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fluid_Image.h 5266 2006-07-26 19:52:28Z mike $".
//
diff --git a/fluid/Makefile b/fluid/Makefile
index 18f4716..59d4b57 100644
--- a/fluid/Makefile
+++ b/fluid/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 4759 2006-01-15 19:26:08Z mike $"
+# "$Id: Makefile 5728 2007-03-06 17:03:25Z matt $"
#
# FLUID makefile for the Fast Light Tool Kit (FLTK).
#
-# Copyright 1998-2005 by Bill Spitzak and others.
+# Copyright 1998-2007 by Bill Spitzak and others.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -57,19 +57,20 @@ all: $(FLUID) fluid$(EXEEXT)
fluid$(EXEEXT): $(OBJECTS) ../lib/$(LIBNAME) ../lib/$(FLLIBNAME) \
../lib/$(IMGLIBNAME)
echo Linking $@...
- $(CXX) $(CXXFLAGS) -o $@ $(OBJECTS) $(LINKFLTKFORMS) $(LINKFLTKIMG) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ $(OBJECTS) $(LINKFLTKFORMS) $(LINKFLTKIMG) $(LDLIBS)
+ $(INSTALL_BIN) fluid fluid.app/Contents/MacOS
$(POSTBUILD) $@ ../FL/mac.r
- $(CP) $@ fluid.app/Contents/MacOS
fluid-shared$(EXEEXT): $(OBJECTS) ../src/$(DSONAME) ../src/$(FLDSONAME) \
../src/$(IMGDSONAME)
echo Linking $@...
- $(CXX) $(CXXFLAGS) -o $@ $(OBJECTS) $(LINKSHARED) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ $(OBJECTS) $(LINKSHARED) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
clean:
-$(RM) *.o core.* *~ *.bck *.bck
-$(RM) core fluid$(EXEEXT) fluid-shared$(EXEEXT)
+ -$(RM) fluid.app/Contents/MacOS/fluid
depend: $(CPPFILES)
makedepend -Y -I.. -f makedepend $(CPPFILES)
@@ -79,33 +80,32 @@ include makedepend
install: all
echo "Installing FLUID in $(DESTDIR)$(bindir)..."
- -$(MKDIR) $(DESTDIR)$(bindir)
- $(CP) $(FLUID) $(DESTDIR)$(bindir)/fluid$(EXEEXT)
- $(STRIP) $(DESTDIR)$(bindir)/fluid$(EXEEXT)
- $(DESTDIR)$(bindir)/fltk-config --post $(DESTDIR)$(bindir)/fluid$(EXEEXT)
- $(CHMOD) 755 $(DESTDIR)$(bindir)/fluid$(EXEEXT)
+ -$(INSTALL_DIR) $(DESTDIR)$(bindir)
+ $(INSTALL_BIN) $(FLUID) $(DESTDIR)$(bindir)/fluid$(EXEEXT)
install-linux:
- -$(MKDIR) $(DESTDIR)/usr/share/applnk/Development
- $(CP) fluid.desktop $(DESTDIR)/usr/share/applnk/Development
+ -$(INSTALL_DIR) $(DESTDIR)/usr/share/applnk/Development
+ $(INSTALL_DATA) fluid.desktop $(DESTDIR)/usr/share/applnk/Development
for size in 16 32 48 64 128; do \
if test ! -d $(DESTDIR)/usr/share/icons/hicolor/$${size}x$${size}/apps; then \
- $(MKDIR) $(DESTDIR)/usr/share/icons/hicolor/$${size}x$${size}/apps; \
+ $(INSTALL_DIR) $(DESTDIR)/usr/share/icons/hicolor/$${size}x$${size}/apps; \
fi; \
- $(CP) icons/fluid-$$size.png $(DESTDIR)/usr/share/icons/hicolor/$${size}x$${size}/apps/fluid.png; \
+ $(INSTALL_DATA) icons/fluid-$$size.png $(DESTDIR)/usr/share/icons/hicolor/$${size}x$${size}/apps/fluid.png; \
done
- -$(MKDIR) $(DESTDIR)/usr/share/mimelnk/application
- $(CP) x-fluid.desktop $(DESTDIR)/usr/share/mimelnk/application
+ -$(INSTALL_DIR) $(DESTDIR)/usr/share/mimelnk/application
+ $(INSTALL_DATA) x-fluid.desktop $(DESTDIR)/usr/share/mimelnk/application
install-osx:
- -$(MKDIR) $(DESTDIR)/Applications/fluid.app
- -$(MKDIR) $(DESTDIR)/Applications/fluid.app/Contents
- $(CP) fluid.app/Contents/Info.plist $(DESTDIR)/Applications/fluid.app/Contents/Info.plist
- $(CP) fluid.app/Contents/PkgInfo $(DESTDIR)/Applications/fluid.app/Contents/PkgInfo
- -$(MKDIR) $(DESTDIR)/Applications/fluid.app/Contents/MacOS
- $(LN) $(bindir)/fluid $(DESTDIR)/Application/fluid.app/Contents/MacOS/fluid
- -$(MKDIR) $(DESTDIR)/Applications/fluid.app/Contents/Resources
- $(CP) fluid.app/Contents/Resources/fluid.icns $(DESTDIR)/Applications/fluid.app/Contents/Resources
+ echo Installing Fluid in $(DESTDIR)/Applications...
+ -$(INSTALL_DIR) $(DESTDIR)/Applications/fluid.app
+ -$(INSTALL_DIR) $(DESTDIR)/Applications/fluid.app/Contents
+ $(INSTALL_DATA) fluid.app/Contents/Info.plist $(DESTDIR)/Applications/fluid.app/Contents/Info.plist
+ $(INSTALL_DATA) fluid.app/Contents/PkgInfo $(DESTDIR)/Applications/fluid.app/Contents/PkgInfo
+ -$(INSTALL_DIR) $(DESTDIR)/Applications/fluid.app/Contents/MacOS
+ $(RM) $(DESTDIR)/Applications/fluid.app/Contents/MacOS/fluid
+ $(LN) $(bindir)/fluid $(DESTDIR)/Applications/fluid.app/Contents/MacOS/fluid
+ -$(INSTALL_DIR) $(DESTDIR)/Applications/fluid.app/Contents/Resources
+ $(INSTALL_DATA) fluid.app/Contents/Resources/fluid.icns $(DESTDIR)/Applications/fluid.app/Contents/Resources
uninstall:
$(RM) $(DESTDIR)$(bindir)/fluid$(EXEEXT)
@@ -133,5 +133,5 @@ rebuild:
./fluid -c widget_panel.fl
#
-# End of "$Id: Makefile 4759 2006-01-15 19:26:08Z mike $".
+# End of "$Id: Makefile 5728 2007-03-06 17:03:25Z matt $".
#
diff --git a/fluid/about_panel.cxx b/fluid/about_panel.cxx
index e742f99..b3088f7 100644
--- a/fluid/about_panel.cxx
+++ b/fluid/about_panel.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: about_panel.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: about_panel.cxx 5438 2006-09-17 14:58:25Z mike $"
//
// About dialog for the Fast Light Tool Kit (FLTK).
//
@@ -25,10 +25,10 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#include "about_panel.h"
-void show_help(const char *name);
+void show_help(const char *name);
Fl_Double_Window *about_panel=(Fl_Double_Window *)0;
@@ -271,38 +271,36 @@ static void cb_Close(Fl_Return_Button* o, void*) {
}
Fl_Double_Window* make_about_panel() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = about_panel = new Fl_Double_Window(315, 175, "About FLUID");
- w = o;
- o->color(FL_LIGHT1);
- o->selection_color(FL_DARK1);
- w->hotspot(o);
+ { about_panel = new Fl_Double_Window(315, 175, "About FLUID");
+ about_panel->color(FL_LIGHT1);
+ about_panel->selection_color(FL_DARK1);
+ about_panel->hotspot(about_panel);
{ Fl_Box* o = new Fl_Box(10, 10, 115, 120);
o->image(image_fluid);
- }
- { Fl_Box* o = new Fl_Box(135, 10, 170, 69, "FLTK User\nInterface Designer\nVersion 1.1.7");
+ } // Fl_Box* o
+ { Fl_Box* o = new Fl_Box(135, 10, 170, 69, "FLTK User\nInterface Designer\nVersion 1.1.8");
o->color((Fl_Color)12);
o->selection_color(FL_DARK1);
o->labelfont(1);
o->labelsize(18);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
- }
+ } // Fl_Box* o
{ Fl_Box* o = new Fl_Box(135, 89, 170, 42, "Copyright 1998-2006 by\nBill Spitzak and others");
o->align(132|FL_ALIGN_INSIDE);
- }
+ } // Fl_Box* o
{ Fl_Button* o = new Fl_Button(89, 141, 123, 25, "View License...");
o->labelcolor(FL_DARK_BLUE);
o->callback((Fl_Callback*)cb_View);
- }
+ } // Fl_Button* o
{ Fl_Return_Button* o = new Fl_Return_Button(222, 141, 83, 25, "Close");
o->callback((Fl_Callback*)cb_Close);
- }
- o->set_non_modal();
- o->end();
- }
- return w;
+ } // Fl_Return_Button* o
+ about_panel->set_non_modal();
+ about_panel->end();
+ } // Fl_Double_Window* about_panel
+ return about_panel;
}
//
-// End of "$Id: about_panel.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: about_panel.cxx 5438 2006-09-17 14:58:25Z mike $".
//
diff --git a/fluid/about_panel.fl b/fluid/about_panel.fl
index e068ba6..03ee041 100644
--- a/fluid/about_panel.fl
+++ b/fluid/about_panel.fl
@@ -1,9 +1,9 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0107
+version 1.0108
header_name {.h}
code_name {.cxx}
comment {//
-// "$Id: about_panel.fl 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: about_panel.fl 5438 2006-09-17 14:58:25Z mike $"
//
// About dialog for the Fast Light Tool Kit (FLTK).
//
@@ -28,7 +28,7 @@ comment {//
//
// http://www.fltk.org/str.php
//
-} {selected in_source in_header
+} {in_source in_header
}
decl {void show_help(const char *name);} {public
@@ -46,7 +46,7 @@ Function {make_about_panel()} {open
Fl_Box {} {
label {FLTK User
Interface Designer
-Version 1.1.7}
+Version 1.1.8} selected
xywh {135 10 170 69} color 12 selection_color 47 labelfont 1 labelsize 18 align 21
}
Fl_Box {} {
@@ -69,6 +69,6 @@ Bill Spitzak and others}
comment {
//
-// End of "$Id: about_panel.fl 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: about_panel.fl 5438 2006-09-17 14:58:25Z mike $".
//} {in_source in_header
}
diff --git a/fluid/about_panel.h b/fluid/about_panel.h
index 13c9eaa..7063851 100644
--- a/fluid/about_panel.h
+++ b/fluid/about_panel.h
@@ -1,5 +1,5 @@
//
-// "$Id: about_panel.h 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: about_panel.h 5412 2006-09-04 20:01:15Z matt $"
//
// About dialog for the Fast Light Tool Kit (FLTK).
//
@@ -25,12 +25,12 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#ifndef about_panel_h
#define about_panel_h
#include <FL/Fl.H>
-extern void show_help(const char *name);
+extern void show_help(const char *name);
#include <FL/Fl_Double_Window.H>
extern Fl_Double_Window *about_panel;
#include <FL/Fl_Box.H>
@@ -40,5 +40,5 @@ Fl_Double_Window* make_about_panel();
#endif
//
-// End of "$Id: about_panel.h 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: about_panel.h 5412 2006-09-04 20:01:15Z matt $".
//
diff --git a/fluid/alignment_panel.cxx b/fluid/alignment_panel.cxx
index cc480cc..0fa1402 100644
--- a/fluid/alignment_panel.cxx
+++ b/fluid/alignment_panel.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: alignment_panel.cxx 4632 2005-11-03 22:16:52Z mike $"
+// "$Id: alignment_panel.cxx 5808 2007-05-10 12:06:31Z matt $"
//
// Setting and shell dialogs for the Fast Light Tool Kit (FLTK).
//
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#include "alignment_panel.h"
@@ -39,7 +39,9 @@ Fl_Input *header_file_input=(Fl_Input *)0;
Fl_Input *code_file_input=(Fl_Input *)0;
-Fl_Light_Button *include_H_from_C_button=(Fl_Light_Button *)0;
+Fl_Check_Button *include_H_from_C_button=(Fl_Check_Button *)0;
+
+Fl_Check_Button *use_FL_COMMAND_button=(Fl_Check_Button *)0;
Fl_Choice *i18n_type_chooser=(Fl_Choice *)0;
@@ -59,112 +61,116 @@ Fl_Input *i18n_set_input=(Fl_Input *)0;
Fl_Input *i18n_function_input=(Fl_Input *)0;
Fl_Double_Window* make_project_window() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = project_window = new Fl_Double_Window(345, 185, "Project Settings");
- w = o;
- { Fl_Button* o = new Fl_Button(293, 156, 42, 20, "Close");
+ { project_window = new Fl_Double_Window(358, 207, "Project Settings");
+ { Fl_Button* o = new Fl_Button(293, 175, 52, 20, "Close");
o->tooltip("Close this dialog.");
o->labelsize(11);
o->callback((Fl_Callback*)cb_Close);
- }
- { Fl_Tabs* o = new Fl_Tabs(10, 10, 325, 138);
- o->selection_color((Fl_Color)4);
+ } // Fl_Button* o
+ { Fl_Tabs* o = new Fl_Tabs(10, 10, 335, 151);
+ o->selection_color((Fl_Color)12);
o->labelsize(11);
- { Fl_Group* o = new Fl_Group(10, 30, 325, 116, "Output");
+ { Fl_Group* o = new Fl_Group(10, 30, 335, 131, "Output");
o->labelsize(11);
- { Fl_Box* o = new Fl_Box(20, 40, 304, 15, "Use \"name.ext\" to set name or just \".ext\" to set extension.");
- o->labelsize(11);
- o->align(132|FL_ALIGN_INSIDE);
- }
- { Fl_Input* o = header_file_input = new Fl_Input(96, 60, 228, 20, "Header File:");
- o->tooltip("The name of the generated header file.");
- o->box(FL_THIN_DOWN_BOX);
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)header_input_cb, (void*)(1));
- o->when(FL_WHEN_CHANGED);
- }
- { Fl_Input* o = code_file_input = new Fl_Input(97, 85, 227, 20, "Code File:");
- o->tooltip("The name of the generated code file.");
- o->box(FL_THIN_DOWN_BOX);
- o->labelfont(1);
+ { Fl_Box* o = new Fl_Box(15, 40, 325, 15, "Use \"name.ext\" to set name or just \".ext\" to set extension.");
o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)code_input_cb, (void*)(1));
- o->when(FL_WHEN_CHANGED);
- }
- { Fl_Light_Button* o = include_H_from_C_button = new Fl_Light_Button(166, 110, 158, 20, "Include Header from Code");
- o->tooltip("Include the header file from the code file.");
- o->value(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)include_H_from_C_button_cb);
- }
+ o->align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE);
+ } // Fl_Box* o
+ { header_file_input = new Fl_Input(96, 60, 228, 20, "Header File:");
+ header_file_input->tooltip("The name of the generated header file.");
+ header_file_input->box(FL_THIN_DOWN_BOX);
+ header_file_input->labelfont(1);
+ header_file_input->labelsize(11);
+ header_file_input->textfont(4);
+ header_file_input->textsize(11);
+ header_file_input->callback((Fl_Callback*)header_input_cb, (void*)(1));
+ header_file_input->when(FL_WHEN_CHANGED);
+ } // Fl_Input* header_file_input
+ { code_file_input = new Fl_Input(97, 85, 227, 20, "Code File:");
+ code_file_input->tooltip("The name of the generated code file.");
+ code_file_input->box(FL_THIN_DOWN_BOX);
+ code_file_input->labelfont(1);
+ code_file_input->labelsize(11);
+ code_file_input->textfont(4);
+ code_file_input->textsize(11);
+ code_file_input->callback((Fl_Callback*)code_input_cb, (void*)(1));
+ code_file_input->when(FL_WHEN_CHANGED);
+ } // Fl_Input* code_file_input
+ { include_H_from_C_button = new Fl_Check_Button(95, 110, 145, 20, "Include Header from Code");
+ include_H_from_C_button->tooltip("Include the header file from the code file.");
+ include_H_from_C_button->down_box(FL_DOWN_BOX);
+ include_H_from_C_button->labelsize(11);
+ include_H_from_C_button->callback((Fl_Callback*)include_H_from_C_button_cb);
+ } // Fl_Check_Button* include_H_from_C_button
+ { use_FL_COMMAND_button = new Fl_Check_Button(95, 130, 245, 20, "Generate menu shortcuts using FL_COMMAND");
+ use_FL_COMMAND_button->tooltip("Replace FL_CTRL with FL_COMMAND when generating menu shortcut code.");
+ use_FL_COMMAND_button->down_box(FL_DOWN_BOX);
+ use_FL_COMMAND_button->labelsize(11);
+ use_FL_COMMAND_button->callback((Fl_Callback*)use_FL_COMMAND_button_cb);
+ } // Fl_Check_Button* use_FL_COMMAND_button
o->end();
- }
- { Fl_Group* o = new Fl_Group(10, 30, 325, 116, "Internationalization");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(10, 30, 335, 131, "Internationalization");
o->labelsize(11);
o->hide();
- { Fl_Choice* o = i18n_type_chooser = new Fl_Choice(80, 42, 100, 20, "Use:");
- o->tooltip("Type of internationalization to use.");
- o->box(FL_THIN_UP_BOX);
- o->down_box(FL_BORDER_BOX);
- o->labelfont(1);
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)i18n_type_cb);
- o->menu(menu_i18n_type_chooser);
- }
- { Fl_Input* o = i18n_include_input = new Fl_Input(80, 67, 245, 20, "#include:");
- o->tooltip("The include file for internationalization.");
- o->box(FL_THIN_DOWN_BOX);
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)i18n_text_cb);
- }
- { Fl_Input* o = i18n_file_input = new Fl_Input(80, 92, 245, 20, "File:");
- o->tooltip("The name of the message catalog.");
- o->box(FL_THIN_DOWN_BOX);
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)i18n_text_cb);
- }
- { Fl_Input* o = i18n_set_input = new Fl_Input(80, 117, 245, 20, "Set:");
- o->tooltip("The message set number.");
- o->type(2);
- o->box(FL_THIN_DOWN_BOX);
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)i18n_text_cb);
- }
- { Fl_Input* o = i18n_function_input = new Fl_Input(80, 92, 245, 20, "Function:");
- o->tooltip("The function to call to internationalize the labels and tooltips.");
- o->box(FL_THIN_DOWN_BOX);
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)i18n_text_cb);
- }
+ { i18n_type_chooser = new Fl_Choice(80, 42, 100, 20, "Use:");
+ i18n_type_chooser->tooltip("Type of internationalization to use.");
+ i18n_type_chooser->box(FL_THIN_UP_BOX);
+ i18n_type_chooser->down_box(FL_BORDER_BOX);
+ i18n_type_chooser->labelfont(1);
+ i18n_type_chooser->labelsize(11);
+ i18n_type_chooser->textsize(11);
+ i18n_type_chooser->callback((Fl_Callback*)i18n_type_cb);
+ i18n_type_chooser->menu(menu_i18n_type_chooser);
+ } // Fl_Choice* i18n_type_chooser
+ { i18n_include_input = new Fl_Input(80, 67, 245, 20, "#include:");
+ i18n_include_input->tooltip("The include file for internationalization.");
+ i18n_include_input->box(FL_THIN_DOWN_BOX);
+ i18n_include_input->labelfont(1);
+ i18n_include_input->labelsize(11);
+ i18n_include_input->textfont(4);
+ i18n_include_input->textsize(11);
+ i18n_include_input->callback((Fl_Callback*)i18n_text_cb);
+ } // Fl_Input* i18n_include_input
+ { i18n_file_input = new Fl_Input(80, 92, 245, 20, "File:");
+ i18n_file_input->tooltip("The name of the message catalog.");
+ i18n_file_input->box(FL_THIN_DOWN_BOX);
+ i18n_file_input->labelfont(1);
+ i18n_file_input->labelsize(11);
+ i18n_file_input->textfont(4);
+ i18n_file_input->textsize(11);
+ i18n_file_input->callback((Fl_Callback*)i18n_text_cb);
+ } // Fl_Input* i18n_file_input
+ { i18n_set_input = new Fl_Input(80, 117, 245, 20, "Set:");
+ i18n_set_input->tooltip("The message set number.");
+ i18n_set_input->type(2);
+ i18n_set_input->box(FL_THIN_DOWN_BOX);
+ i18n_set_input->labelfont(1);
+ i18n_set_input->labelsize(11);
+ i18n_set_input->textfont(4);
+ i18n_set_input->textsize(11);
+ i18n_set_input->callback((Fl_Callback*)i18n_text_cb);
+ } // Fl_Input* i18n_set_input
+ { i18n_function_input = new Fl_Input(80, 92, 245, 20, "Function:");
+ i18n_function_input->tooltip("The function to call to internationalize the labels and tooltips.");
+ i18n_function_input->box(FL_THIN_DOWN_BOX);
+ i18n_function_input->labelfont(1);
+ i18n_function_input->labelsize(11);
+ i18n_function_input->textfont(4);
+ i18n_function_input->textsize(11);
+ i18n_function_input->callback((Fl_Callback*)i18n_text_cb);
+ } // Fl_Input* i18n_function_input
o->end();
- }
+ } // Fl_Group* o
o->end();
- }
- o->set_modal();
- o->end();
- }
- return w;
+ } // Fl_Tabs* o
+ project_window->set_modal();
+ project_window->end();
+ } // Fl_Double_Window* project_window
+ return project_window;
}
-Fl_Text_Buffer *shell_run_buffer;
-void scheme_cb(Fl_Choice *, void *);
+Fl_Text_Buffer *shell_run_buffer;
+void scheme_cb(Fl_Choice *, void *);
Fl_Double_Window *settings_window=(Fl_Double_Window *)0;
@@ -174,6 +180,7 @@ Fl_Menu_Item menu_scheme_choice[] = {
{"Default", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{"None", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{"Plastic", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
+ {"GTK+", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0}
};
@@ -214,70 +221,69 @@ load_history();
}
Fl_Double_Window* make_settings_window() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = settings_window = new Fl_Double_Window(340, 225, "GUI Settings");
- w = o;
- { Fl_Choice* o = scheme_choice = new Fl_Choice(116, 10, 115, 25, "Scheme:");
- o->down_box(FL_BORDER_BOX);
- o->labelfont(1);
- o->callback((Fl_Callback*)scheme_cb);
- o->menu(menu_scheme_choice);
+ { settings_window = new Fl_Double_Window(340, 225, "GUI Settings");
+ { scheme_choice = new Fl_Choice(116, 10, 115, 25, "Scheme:");
+ scheme_choice->down_box(FL_BORDER_BOX);
+ scheme_choice->labelfont(1);
+ scheme_choice->callback((Fl_Callback*)scheme_cb);
+ scheme_choice->menu(menu_scheme_choice);
int s;
fluid_prefs.get("scheme", s, 0);
scheme_choice->value(s);
scheme_cb(0, 0);
- }
+ } // Fl_Choice* scheme_choice
{ Fl_Group* o = new Fl_Group(116, 45, 215, 100, "Options:\n\n\n\n\n");
o->labelfont(1);
o->align(FL_ALIGN_LEFT);
- { Fl_Check_Button* o = tooltips_button = new Fl_Check_Button(116, 45, 113, 25, "Show Tooltips");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)cb_tooltips_button);
+ { tooltips_button = new Fl_Check_Button(116, 45, 113, 25, "Show Tooltips");
+ tooltips_button->down_box(FL_DOWN_BOX);
+ tooltips_button->callback((Fl_Callback*)cb_tooltips_button);
int b;
fluid_prefs.get("show_tooltips", b, 1);
tooltips_button->value(b);
Fl_Tooltip::enable(b);
- }
- { Fl_Check_Button* o = completion_button = new Fl_Check_Button(116, 70, 186, 25, "Show Completion Dialogs");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)cb_completion_button);
+ } // Fl_Check_Button* tooltips_button
+ { completion_button = new Fl_Check_Button(116, 70, 186, 25, "Show Completion Dialogs");
+ completion_button->down_box(FL_DOWN_BOX);
+ completion_button->callback((Fl_Callback*)cb_completion_button);
int b;
fluid_prefs.get("show_completion_dialogs", b, 1);
completion_button->value(b);
- }
- { Fl_Check_Button* o = openlast_button = new Fl_Check_Button(116, 95, 215, 25, "Open Previous File on Startup");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)cb_openlast_button);
+ } // Fl_Check_Button* completion_button
+ { openlast_button = new Fl_Check_Button(116, 95, 215, 25, "Open Previous File on Startup");
+ openlast_button->down_box(FL_DOWN_BOX);
+ openlast_button->callback((Fl_Callback*)cb_openlast_button);
int b;
fluid_prefs.get("open_previous_file", b, 0);
openlast_button->value(b);
- }
- { Fl_Check_Button* o = prevpos_button = new Fl_Check_Button(116, 120, 210, 25, "Remember Window Positions");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)cb_prevpos_button);
+ } // Fl_Check_Button* openlast_button
+ { prevpos_button = new Fl_Check_Button(116, 120, 210, 25, "Remember Window Positions");
+ prevpos_button->down_box(FL_DOWN_BOX);
+ prevpos_button->callback((Fl_Callback*)cb_prevpos_button);
int b;
fluid_prefs.get("prev_window_pos", b, 1);
prevpos_button->value(b);
- }
+ } // Fl_Check_Button* prevpos_button
o->end();
- }
+ } // Fl_Group* o
{ Fl_Button* o = new Fl_Button(266, 190, 64, 25, "Close");
o->tooltip("Close this dialog.");
o->callback((Fl_Callback*)cb_Close1);
- }
- { Fl_Spinner* o = recent_spinner = new Fl_Spinner(116, 155, 40, 25, "# Recent Files:");
- o->labelfont(1);
- o->callback((Fl_Callback*)cb_recent_spinner);
- o->when(FL_WHEN_CHANGED);
+ } // Fl_Button* o
+ { recent_spinner = new Fl_Spinner(116, 155, 40, 25, "# Recent Files:");
+ recent_spinner->labelfont(1);
+ recent_spinner->value(1);
+ recent_spinner->callback((Fl_Callback*)cb_recent_spinner);
+ recent_spinner->when(FL_WHEN_CHANGED);
int c;
fluid_prefs.get("recent_files", c, 5);
recent_spinner->maximum(10);
recent_spinner->value(c);
- }
- o->set_non_modal();
- o->end();
- }
- return w;
+ } // Fl_Spinner* recent_spinner
+ settings_window->set_non_modal();
+ settings_window->end();
+ } // Fl_Double_Window* settings_window
+ return settings_window;
}
Fl_Double_Window *shell_window=(Fl_Double_Window *)0;
@@ -321,61 +327,58 @@ static void cb_shell_run_button(Fl_Return_Button*, void*) {
}
Fl_Double_Window* make_shell_window() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = shell_window = new Fl_Double_Window(365, 125, "Shell Command");
- w = o;
- { Fl_Input* o = shell_command_input = new Fl_Input(10, 27, 347, 25, "Command:");
- o->labelfont(1);
- o->callback((Fl_Callback*)cb_shell_command_input);
- o->align(FL_ALIGN_TOP_LEFT);
+ { shell_window = new Fl_Double_Window(365, 125, "Shell Command");
+ { shell_command_input = new Fl_Input(10, 27, 347, 25, "Command:");
+ shell_command_input->labelfont(1);
+ shell_command_input->callback((Fl_Callback*)cb_shell_command_input);
+ shell_command_input->align(FL_ALIGN_TOP_LEFT);
char buf[1024];
fluid_prefs.get("shell_command", buf, "", sizeof(buf));
shell_command_input->value(buf);
- }
- { Fl_Check_Button* o = shell_writecode_button = new Fl_Check_Button(128, 61, 93, 19, "Write Code");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)cb_shell_writecode_button);
+ } // Fl_Input* shell_command_input
+ { shell_writecode_button = new Fl_Check_Button(128, 61, 93, 19, "Write Code");
+ shell_writecode_button->down_box(FL_DOWN_BOX);
+ shell_writecode_button->callback((Fl_Callback*)cb_shell_writecode_button);
int b;
fluid_prefs.get("shell_writecode", b, 1);
shell_writecode_button->value(b);
- }
- { Fl_Check_Button* o = shell_writemsgs_button = new Fl_Check_Button(231, 61, 126, 19, "Write Messages");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)cb_shell_writemsgs_button);
+ } // Fl_Check_Button* shell_writecode_button
+ { shell_writemsgs_button = new Fl_Check_Button(231, 61, 126, 19, "Write Messages");
+ shell_writemsgs_button->down_box(FL_DOWN_BOX);
+ shell_writemsgs_button->callback((Fl_Callback*)cb_shell_writemsgs_button);
int b;
fluid_prefs.get("shell_writemsgs", b, 0);
shell_writemsgs_button->value(b);
- }
- { Fl_Check_Button* o = shell_savefl_button = new Fl_Check_Button(10, 62, 108, 19, "Save .FL File");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)cb_shell_savefl_button);
+ } // Fl_Check_Button* shell_writemsgs_button
+ { shell_savefl_button = new Fl_Check_Button(10, 62, 108, 19, "Save .FL File");
+ shell_savefl_button->down_box(FL_DOWN_BOX);
+ shell_savefl_button->callback((Fl_Callback*)cb_shell_savefl_button);
int b;
fluid_prefs.get("shell_savefl", b, 1);
shell_savefl_button->value(b);
- }
+ } // Fl_Check_Button* shell_savefl_button
{ Fl_Return_Button* o = new Fl_Return_Button(132, 90, 143, 25, "Run Command");
o->callback((Fl_Callback*)do_shell_command);
- }
+ } // Fl_Return_Button* o
{ Fl_Button* o = new Fl_Button(285, 90, 72, 25, "Cancel");
o->callback((Fl_Callback*)cb_Cancel);
- }
- o->end();
- }
- { Fl_Double_Window* o = shell_run_window = new Fl_Double_Window(555, 430, "Shell Command Output");
- w = o;
- { Fl_Text_Display* o = shell_run_display = new Fl_Text_Display(10, 10, 535, 375);
- o->box(FL_DOWN_BOX);
- o->textfont(4);
- Fl_Group::current()->resizable(o);
+ } // Fl_Button* o
+ shell_window->end();
+ } // Fl_Double_Window* shell_window
+ { shell_run_window = new Fl_Double_Window(555, 430, "Shell Command Output");
+ { shell_run_display = new Fl_Text_Display(10, 10, 535, 375);
+ shell_run_display->box(FL_DOWN_BOX);
+ shell_run_display->textfont(4);
+ Fl_Group::current()->resizable(shell_run_display);
shell_run_buffer = new Fl_Text_Buffer();
shell_run_display->buffer(shell_run_buffer);
- }
- { Fl_Return_Button* o = shell_run_button = new Fl_Return_Button(468, 395, 77, 25, "Close");
- o->callback((Fl_Callback*)cb_shell_run_button);
- }
- o->end();
- }
- return w;
+ } // Fl_Text_Display* shell_run_display
+ { shell_run_button = new Fl_Return_Button(468, 395, 77, 25, "Close");
+ shell_run_button->callback((Fl_Callback*)cb_shell_run_button);
+ } // Fl_Return_Button* shell_run_button
+ shell_run_window->end();
+ } // Fl_Double_Window* shell_run_window
+ return shell_run_window;
}
Fl_Double_Window *grid_window=(Fl_Double_Window *)0;
@@ -395,112 +398,110 @@ static void cb_Close2(Fl_Button*, void*) {
Fl_Round_Button *def_widget_size[6]={(Fl_Round_Button *)0};
Fl_Double_Window* make_layout_window() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = grid_window = new Fl_Double_Window(285, 245, "Layout Settings");
- w = o;
+ { grid_window = new Fl_Double_Window(285, 245, "Layout Settings");
{ Fl_Input* o = horizontal_input = new Fl_Input(106, 10, 50, 25, "x");
- o->tooltip("Horizontal grid spacing.");
- o->type(2);
- o->box(FL_THIN_DOWN_BOX);
- o->callback((Fl_Callback*)grid_cb, (void*)(1));
- o->align(FL_ALIGN_RIGHT);
+ horizontal_input->tooltip("Horizontal grid spacing.");
+ horizontal_input->type(2);
+ horizontal_input->box(FL_THIN_DOWN_BOX);
+ horizontal_input->callback((Fl_Callback*)grid_cb, (void*)(1));
+ horizontal_input->align(FL_ALIGN_RIGHT);
o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY);
- }
+ } // Fl_Input* horizontal_input
{ Fl_Input* o = vertical_input = new Fl_Input(166, 10, 50, 25, "pixels");
- o->tooltip("Vertical grid spacing.");
- o->type(2);
- o->box(FL_THIN_DOWN_BOX);
- o->callback((Fl_Callback*)grid_cb, (void*)(2));
- o->align(FL_ALIGN_RIGHT);
+ vertical_input->tooltip("Vertical grid spacing.");
+ vertical_input->type(2);
+ vertical_input->box(FL_THIN_DOWN_BOX);
+ vertical_input->callback((Fl_Callback*)grid_cb, (void*)(2));
+ vertical_input->align(FL_ALIGN_RIGHT);
o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY);
- }
+ } // Fl_Input* vertical_input
{ Fl_Input* o = snap_input = new Fl_Input(106, 45, 50, 25, "pixel snap");
- o->tooltip("Snap to grid within this many pixels.");
- o->type(2);
- o->box(FL_THIN_DOWN_BOX);
- o->callback((Fl_Callback*)grid_cb, (void*)(3));
- o->align(FL_ALIGN_RIGHT);
+ snap_input->tooltip("Snap to grid within this many pixels.");
+ snap_input->type(2);
+ snap_input->box(FL_THIN_DOWN_BOX);
+ snap_input->callback((Fl_Callback*)grid_cb, (void*)(3));
+ snap_input->align(FL_ALIGN_RIGHT);
o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY);
- }
- { Fl_Check_Button* o = guides_toggle = new Fl_Check_Button(106, 80, 110, 25, "Show Guides");
- o->tooltip("Show distance and alignment guides in overlay");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)guides_cb, (void*)(4));
- }
+ } // Fl_Input* snap_input
+ { guides_toggle = new Fl_Check_Button(106, 80, 110, 25, "Show Guides");
+ guides_toggle->tooltip("Show distance and alignment guides in overlay");
+ guides_toggle->down_box(FL_DOWN_BOX);
+ guides_toggle->callback((Fl_Callback*)guides_cb, (void*)(4));
+ } // Fl_Check_Button* guides_toggle
{ Fl_Button* o = new Fl_Button(215, 210, 60, 25, "Close");
o->tooltip("Close this dialog.");
o->callback((Fl_Callback*)cb_Close2);
- }
+ } // Fl_Button* o
{ Fl_Box* o = new Fl_Box(26, 10, 70, 25, "Grid:");
o->labelfont(1);
o->align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE);
- }
+ } // Fl_Box* o
{ Fl_Box* o = new Fl_Box(-1, 115, 97, 25, "Widget Size:");
o->labelfont(1);
o->align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE);
- }
+ } // Fl_Box* o
{ Fl_Group* o = new Fl_Group(105, 115, 170, 75);
- { Fl_Round_Button* o = def_widget_size[0] = new Fl_Round_Button(105, 115, 70, 25);
- o->type(102);
- o->down_box(FL_ROUND_DOWN_BOX);
- o->callback((Fl_Callback*)default_widget_size_cb, (void*)(8));
- }
+ { def_widget_size[0] = new Fl_Round_Button(105, 115, 70, 25);
+ def_widget_size[0]->type(102);
+ def_widget_size[0]->down_box(FL_ROUND_DOWN_BOX);
+ def_widget_size[0]->callback((Fl_Callback*)default_widget_size_cb, (void*)(8));
+ } // Fl_Round_Button* def_widget_size[0]
{ Fl_Box* o = new Fl_Box(120, 115, 50, 25, "tiny");
o->labelsize(8);
o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
- }
- { Fl_Round_Button* o = def_widget_size[1] = new Fl_Round_Button(180, 115, 70, 25);
- o->type(102);
- o->down_box(FL_ROUND_DOWN_BOX);
- o->callback((Fl_Callback*)default_widget_size_cb, (void*)(11));
- }
+ } // Fl_Box* o
+ { def_widget_size[1] = new Fl_Round_Button(180, 115, 70, 25);
+ def_widget_size[1]->type(102);
+ def_widget_size[1]->down_box(FL_ROUND_DOWN_BOX);
+ def_widget_size[1]->callback((Fl_Callback*)default_widget_size_cb, (void*)(11));
+ } // Fl_Round_Button* def_widget_size[1]
{ Fl_Box* o = new Fl_Box(195, 115, 50, 25, "small");
o->labelsize(11);
o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
- }
- { Fl_Round_Button* o = def_widget_size[2] = new Fl_Round_Button(105, 140, 70, 25);
- o->type(102);
- o->down_box(FL_ROUND_DOWN_BOX);
- o->callback((Fl_Callback*)default_widget_size_cb, (void*)(14));
- }
+ } // Fl_Box* o
+ { def_widget_size[2] = new Fl_Round_Button(105, 140, 70, 25);
+ def_widget_size[2]->type(102);
+ def_widget_size[2]->down_box(FL_ROUND_DOWN_BOX);
+ def_widget_size[2]->callback((Fl_Callback*)default_widget_size_cb, (void*)(14));
+ } // Fl_Round_Button* def_widget_size[2]
{ Fl_Box* o = new Fl_Box(120, 140, 50, 25, "normal");
o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
- }
- { Fl_Round_Button* o = def_widget_size[3] = new Fl_Round_Button(180, 140, 90, 25);
- o->type(102);
- o->down_box(FL_ROUND_DOWN_BOX);
- o->callback((Fl_Callback*)default_widget_size_cb, (void*)(18));
- }
+ } // Fl_Box* o
+ { def_widget_size[3] = new Fl_Round_Button(180, 140, 90, 25);
+ def_widget_size[3]->type(102);
+ def_widget_size[3]->down_box(FL_ROUND_DOWN_BOX);
+ def_widget_size[3]->callback((Fl_Callback*)default_widget_size_cb, (void*)(18));
+ } // Fl_Round_Button* def_widget_size[3]
{ Fl_Box* o = new Fl_Box(195, 140, 68, 25, "medium");
o->labelsize(18);
o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
- }
- { Fl_Round_Button* o = def_widget_size[4] = new Fl_Round_Button(105, 165, 75, 25);
- o->type(102);
- o->down_box(FL_ROUND_DOWN_BOX);
- o->callback((Fl_Callback*)default_widget_size_cb, (void*)(24));
- }
+ } // Fl_Box* o
+ { def_widget_size[4] = new Fl_Round_Button(105, 165, 75, 25);
+ def_widget_size[4]->type(102);
+ def_widget_size[4]->down_box(FL_ROUND_DOWN_BOX);
+ def_widget_size[4]->callback((Fl_Callback*)default_widget_size_cb, (void*)(24));
+ } // Fl_Round_Button* def_widget_size[4]
{ Fl_Box* o = new Fl_Box(120, 165, 64, 25, "large");
o->labelsize(24);
o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
- }
- { Fl_Round_Button* o = def_widget_size[5] = new Fl_Round_Button(180, 165, 95, 25);
- o->type(102);
- o->down_box(FL_ROUND_DOWN_BOX);
- o->callback((Fl_Callback*)default_widget_size_cb, (void*)(32));
- }
+ } // Fl_Box* o
+ { def_widget_size[5] = new Fl_Round_Button(180, 165, 95, 25);
+ def_widget_size[5]->type(102);
+ def_widget_size[5]->down_box(FL_ROUND_DOWN_BOX);
+ def_widget_size[5]->callback((Fl_Callback*)default_widget_size_cb, (void*)(32));
+ } // Fl_Round_Button* def_widget_size[5]
{ Fl_Box* o = new Fl_Box(195, 165, 76, 25, "huge");
o->labelsize(32);
o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
- }
+ } // Fl_Box* o
o->end();
- }
- o->set_non_modal();
- o->end();
- }
- return w;
+ } // Fl_Group* o
+ grid_window->set_non_modal();
+ grid_window->end();
+ } // Fl_Double_Window* grid_window
+ return grid_window;
}
//
-// End of "$Id: alignment_panel.cxx 4632 2005-11-03 22:16:52Z mike $".
+// End of "$Id: alignment_panel.cxx 5808 2007-05-10 12:06:31Z matt $".
//
diff --git a/fluid/alignment_panel.fl b/fluid/alignment_panel.fl
index 34cfefa..5965bae 100644
--- a/fluid/alignment_panel.fl
+++ b/fluid/alignment_panel.fl
@@ -1,9 +1,9 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0107
+version 1.0108
header_name {.h}
code_name {.cxx}
comment {//
-// "$Id: alignment_panel.fl 4632 2005-11-03 22:16:52Z mike $"
+// "$Id: alignment_panel.fl 5808 2007-05-10 12:06:31Z matt $"
//
// Setting and shell dialogs for the Fast Light Tool Kit (FLTK).
//
@@ -44,25 +44,25 @@ Function {make_project_window()} {open
} {
Fl_Window project_window {
label {Project Settings}
- xywh {312 395 345 185} type Double
+ xywh {312 395 358 207} type Double
code0 {\#include <FL/Fl_Preferences.H>}
code1 {\#include <FL/Fl_Tooltip.H>} modal visible
} {
Fl_Button {} {
label Close
callback {project_window->hide();}
- tooltip {Close this dialog.} xywh {293 156 42 20} labelsize 11
+ tooltip {Close this dialog.} xywh {293 175 52 20} labelsize 11
}
Fl_Tabs {} {open
- xywh {10 10 325 138} selection_color 4 labelsize 11
+ xywh {10 10 335 151} selection_color 12 labelsize 11
} {
Fl_Group {} {
label Output open
- xywh {10 30 325 116} labelsize 11
+ xywh {10 30 335 131} labelsize 11
} {
Fl_Box {} {
label {Use "name.ext" to set name or just ".ext" to set extension.}
- xywh {20 40 304 15} labelsize 11 align 148
+ xywh {15 40 325 15} labelsize 11 align 144
}
Fl_Input header_file_input {
label {Header File:}
@@ -76,15 +76,20 @@ Function {make_project_window()} {open
callback code_input_cb
tooltip {The name of the generated code file.} xywh {97 85 227 20} box THIN_DOWN_BOX labelfont 1 labelsize 11 when 1 textfont 4 textsize 11
}
- Fl_Light_Button include_H_from_C_button {
+ Fl_Check_Button include_H_from_C_button {
label {Include Header from Code}
callback include_H_from_C_button_cb
- tooltip {Include the header file from the code file.} xywh {166 110 158 20} value 1 labelsize 11
+ tooltip {Include the header file from the code file.} xywh {95 110 145 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button use_FL_COMMAND_button {
+ label {Generate menu shortcuts using FL_COMMAND}
+ callback use_FL_COMMAND_button_cb selected
+ tooltip {Replace FL_CTRL with FL_COMMAND when generating menu shortcut code.} xywh {95 130 245 20} down_box DOWN_BOX labelsize 11
}
}
Fl_Group {} {
label Internationalization open
- xywh {10 30 325 116} labelsize 11 hide
+ xywh {10 30 335 131} labelsize 11 hide
} {
Fl_Choice i18n_type_chooser {
label {Use:}
@@ -144,12 +149,12 @@ decl {void scheme_cb(Fl_Choice *, void *);} {public
Function {make_settings_window()} {open
} {
Fl_Window settings_window {
- label {GUI Settings}
+ label {GUI Settings} open
xywh {326 145 340 225} type Double non_modal visible
} {
Fl_Choice scheme_choice {
label {Scheme:}
- callback scheme_cb
+ callback scheme_cb open
xywh {116 10 115 25} down_box BORDER_BOX labelfont 1
code0 {int s;}
code1 {fluid_prefs.get("scheme", s, 0);}
@@ -168,6 +173,10 @@ Function {make_settings_window()} {open
label Plastic
xywh {0 0 35 25}
}
+ MenuItem {} {
+ label {GTK+}
+ xywh {10 10 35 25}
+ }
}
Fl_Group {} {
label {Options:
@@ -222,7 +231,7 @@ fluid_prefs.set("show_tooltips", tooltips_button->value());}
label {\# Recent Files:}
callback {fluid_prefs.set("recent_files", recent_spinner->value());
load_history();}
- xywh {116 155 40 25} labelfont 1 when 1
+ xywh {116 155 40 25} labelfont 1 when 1 value 1
code0 {int c;}
code1 {fluid_prefs.get("recent_files", c, 5);}
code2 {recent_spinner->maximum(10);}
@@ -300,7 +309,7 @@ Function {make_shell_window()} {open
Function {make_layout_window()} {open
} {
Fl_Window grid_window {
- label {Layout Settings} selected
+ label {Layout Settings}
xywh {676 337 285 245} type Double non_modal visible
} {
Fl_Input horizontal_input {
@@ -406,6 +415,6 @@ Function {make_layout_window()} {open
comment {
//
-// End of "$Id: alignment_panel.fl 4632 2005-11-03 22:16:52Z mike $".
+// End of "$Id: alignment_panel.fl 5808 2007-05-10 12:06:31Z matt $".
//} {in_source in_header
}
diff --git a/fluid/alignment_panel.h b/fluid/alignment_panel.h
index c622960..650b5b9 100644
--- a/fluid/alignment_panel.h
+++ b/fluid/alignment_panel.h
@@ -1,5 +1,5 @@
//
-// "$Id: alignment_panel.h 4561 2005-09-09 11:36:36Z matt $"
+// "$Id: alignment_panel.h 5808 2007-05-10 12:06:31Z matt $"
//
// Setting and shell dialogs for the Fast Light Tool Kit (FLTK).
//
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#ifndef alignment_panel_h
#define alignment_panel_h
@@ -46,9 +46,11 @@ extern void header_input_cb(Fl_Input*, void*);
extern Fl_Input *header_file_input;
extern void code_input_cb(Fl_Input*, void*);
extern Fl_Input *code_file_input;
-#include <FL/Fl_Light_Button.H>
-extern void include_H_from_C_button_cb(Fl_Light_Button*, void*);
-extern Fl_Light_Button *include_H_from_C_button;
+#include <FL/Fl_Check_Button.H>
+extern void include_H_from_C_button_cb(Fl_Check_Button*, void*);
+extern Fl_Check_Button *include_H_from_C_button;
+extern void use_FL_COMMAND_button_cb(Fl_Check_Button*, void*);
+extern Fl_Check_Button *use_FL_COMMAND_button;
#include <FL/Fl_Choice.H>
extern void i18n_type_cb(Fl_Choice*, void*);
extern Fl_Choice *i18n_type_chooser;
@@ -61,12 +63,11 @@ Fl_Double_Window* make_project_window();
extern Fl_Menu_Item menu_i18n_type_chooser[];
extern void i18n_cb(Fl_Choice *,void *);
extern Fl_Preferences fluid_prefs;
-extern Fl_Text_Buffer *shell_run_buffer;
-extern void scheme_cb(Fl_Choice *, void *);
+extern Fl_Text_Buffer *shell_run_buffer;
+extern void scheme_cb(Fl_Choice *, void *);
extern Fl_Double_Window *settings_window;
extern void scheme_cb(Fl_Choice*, void*);
extern Fl_Choice *scheme_choice;
-#include <FL/Fl_Check_Button.H>
extern Fl_Check_Button *tooltips_button;
extern Fl_Check_Button *completion_button;
extern Fl_Check_Button *openlast_button;
@@ -101,5 +102,5 @@ Fl_Double_Window* make_layout_window();
#endif
//
-// End of "$Id: alignment_panel.h 4561 2005-09-09 11:36:36Z matt $".
+// End of "$Id: alignment_panel.h 5808 2007-05-10 12:06:31Z matt $".
//
diff --git a/fluid/code.cxx b/fluid/code.cxx
index 0c39071..4f70a69 100644
--- a/fluid/code.cxx
+++ b/fluid/code.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: code.cxx 4630 2005-11-03 20:43:19Z matt $"
+// "$Id: code.cxx 5441 2006-09-17 18:34:17Z mike $"
//
// Code output routines for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -155,13 +155,16 @@ int write_declare(const char *format, ...) {
// silly thing to prevent declaring unused variables:
// When this symbol is on, all attempts to write code don't write
-// anything, but set a variable if it looks like the varaible "o" is used:
+// anything, but set a variable if it looks like the variable "o" is used:
int varused_test;
int varused;
// write an array of C characters (adds a null):
void write_cstring(const char *w, int length) {
- if (varused_test) return;
+ if (varused_test) {
+ varused = 1;
+ return;
+ }
const char *e = w+length;
int linelength = 1;
putc('\"', code_file);
@@ -228,7 +231,10 @@ void write_cstring(const char *w) {write_cstring(w,strlen(w));}
// write an array of C binary data (does not add a null):
void write_cdata(const char *s, int length) {
- if (varused_test) return;
+ if (varused_test) {
+ varused = 1;
+ return;
+ }
const unsigned char *w = (const unsigned char *)s;
const unsigned char *e = w+length;
int linelength = 1;
@@ -246,7 +252,10 @@ void write_cdata(const char *s, int length) {
}
void write_c(const char* format,...) {
- if (varused_test) {varused = 1; return;}
+ if (varused_test) {
+ varused = 1;
+ return;
+ }
va_list args;
va_start(args, format);
vfprintf(code_file, format, args);
@@ -264,6 +273,7 @@ void write_h(const char* format,...) {
#include <FL/filename.H>
int write_number;
int write_sourceview;
+extern Fl_Widget_Class_Type *current_widget_class;
// recursively dump code, putting children between the two parts
// of the parent code:
@@ -305,6 +315,7 @@ static Fl_Type* write_code(Fl_Type* p) {
}
write_h("};\n");
+ current_widget_class = 0L;
} else {
for (q = p->next; q && q->level > p->level;) q = write_code(q);
// write all code that come after the children
@@ -574,5 +585,5 @@ void Fl_Type::write_code1() {
void Fl_Type::write_code2() {}
//
-// End of "$Id: code.cxx 4630 2005-11-03 20:43:19Z matt $".
+// End of "$Id: code.cxx 5441 2006-09-17 18:34:17Z mike $".
//
diff --git a/fluid/factory.cxx b/fluid/factory.cxx
index 57a68d6..0058209 100644
--- a/fluid/factory.cxx
+++ b/fluid/factory.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: factory.cxx 4436 2005-07-20 11:11:51Z matt $"
+// "$Id: factory.cxx 5658 2007-02-02 20:09:53Z mike $"
//
// Widget factory code for the Fast Light Tool Kit (FLTK).
//
@@ -11,7 +11,7 @@
// to a factory instance for every class (both the ones defined
// here and ones in other files)
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -378,8 +378,12 @@ int Fl_Counter_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
////////////////////////////////////////////////////////////////
#include <FL/Fl_Spinner.H>
+static Fl_Menu_Item spinner_type_menu[] = {
+ {"Integer",0,0,(void*)FL_INT_INPUT},
+ {"Float", 0,0,(void*)FL_FLOAT_INPUT},
+ {0}};
class Fl_Spinner_Type : public Fl_Widget_Type {
- Fl_Menu_Item *subtypes() {return 0;}
+ Fl_Menu_Item *subtypes() {return spinner_type_menu;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c);
int pixmapID() { return 47; }
public:
@@ -394,6 +398,7 @@ public:
if (w < 40) w = 40 ;
}
virtual const char *type_name() {return "Fl_Spinner";}
+ int is_spinner() const { return 1; }
Fl_Widget *widget(int x,int y,int w,int h) {
return new Fl_Spinner(x,y,w,h,"spinner:");}
Fl_Widget_Type *_make() {return new Fl_Spinner_Type();}
@@ -619,8 +624,10 @@ public:
virtual const char *type_name() {return "Fl_Help_View";}
Fl_Widget *widget(int x,int y,int w,int h) {
Fl_Help_View *myo = new Fl_Help_View(x,y,w,h);
- myo->value("<HTML><BODY><H1>Fl_Help_View Widget</H1>"
- "<P>This is a Fl_Help_View widget.</P></BODY></HTML>");
+ if (!compile_only) {
+ myo->value("<HTML><BODY><H1>Fl_Help_View Widget</H1>"
+ "<P>This is a Fl_Help_View widget.</P></BODY></HTML>");
+ }
return myo;}
Fl_Widget_Type *_make() {return new Fl_Help_View_Type();}
int pixmapID() { return 35; }
@@ -724,6 +731,7 @@ static Fl_Menu_Item scrollbar_type_menu[] = {
{0}};
class Fl_Scrollbar_Type : public Fl_Slider_Type {
Fl_Menu_Item *subtypes() {return scrollbar_type_menu;}
+ int is_valuator() const {return 3;}
public:
virtual const char *type_name() {return "Fl_Scrollbar";}
Fl_Widget *widget(int x,int y,int w,int h) {
@@ -1198,5 +1206,5 @@ int lookup_symbol(const char *name, int &v, int numberok) {
}
//
-// End of "$Id: factory.cxx 4436 2005-07-20 11:11:51Z matt $".
+// End of "$Id: factory.cxx 5658 2007-02-02 20:09:53Z mike $".
//
diff --git a/fluid/file.cxx b/fluid/file.cxx
index dc49811..95f2f42 100644
--- a/fluid/file.cxx
+++ b/fluid/file.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: file.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: file.cxx 5808 2007-05-10 12:06:31Z matt $"
//
// Fluid file routines for the Fast Light Tool Kit (FLTK).
//
@@ -8,7 +8,7 @@
// They are somewhat similar to tcl, using matching { and }
// to quote strings.
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -101,7 +101,7 @@ void write_string(const char *format, ...) {
if (needspace) fputc(' ',fout);
vfprintf(fout, format, args);
va_end(args);
- needspace = !isspace(format[strlen(format)-1]);
+ needspace = !isspace(format[strlen(format)-1] & 255);
}
// start a new line and indent it for a given nesting level:
@@ -238,7 +238,7 @@ const char *read_word(int wantbrace) {
// skip all the whitespace before it:
for (;;) {
x = getc(fin);
- if (x < 0) { // eof
+ if (x < 0 && feof(fin)) { // eof
return 0;
} else if (x == '#') { // comment
do x = getc(fin); while (x >= 0 && x != '\n');
@@ -246,7 +246,7 @@ const char *read_word(int wantbrace) {
continue;
} else if (x == '\n') {
lineno++;
- } else if (!isspace(x)) {
+ } else if (!isspace(x & 255)) {
break;
}
}
@@ -287,7 +287,7 @@ const char *read_word(int wantbrace) {
int length = 0;
for (;;) {
if (x == '\\') {x = read_quoted(); if (x<0) continue;}
- else if (x<0 || isspace(x) || x=='{' || x=='}' || x=='#') break;
+ else if (x<0 || isspace(x & 255) || x=='{' || x=='}' || x=='#') break;
buffer[length++] = x;
expand_buffer(length);
x = getc(fin);
@@ -323,6 +323,8 @@ int write_file(const char *filename, int selected_only) {
"version %.4f",FL_VERSION);
if(!include_H_from_C)
write_string("\ndo_not_include_H_from_C");
+ if(use_FL_COMMAND)
+ write_string("\nuse_FL_COMMAND");
if (i18n_type) {
write_string("\ni18n_type %d", i18n_type);
write_string("\ni18n_include %s", i18n_include);
@@ -404,6 +406,10 @@ static void read_children(Fl_Type *p, int paste) {
include_H_from_C=0;
goto CONTINUE;
}
+ if (!strcmp(c,"use_FL_COMMAND")) {
+ use_FL_COMMAND=1;
+ goto CONTINUE;
+ }
if (!strcmp(c,"i18n_type")) {
i18n_type = atoi(read_word());
goto CONTINUE;
@@ -504,6 +510,7 @@ int read_file(const char *filename, int merge) {
if (o->is_menu_button()) o->add_child(0,0);
for (o = Fl_Type::first; o; o = o->next)
if (o->selected) {Fl_Type::current = o; break;}
+ selection_changed(Fl_Type::current);
return close_read();
}
@@ -517,9 +524,9 @@ int read_fdesign_line(const char*& name, const char*& value) {
// find a colon:
for (;;) {
x = getc(fin);
- if (x < 0) return 0;
+ if (x < 0 && feof(fin)) return 0;
if (x == '\n') {length = 0; continue;} // no colon this line...
- if (!isspace(x)) {
+ if (!isspace(x & 255)) {
buffer[length++] = x;
expand_buffer(length);
}
@@ -531,7 +538,7 @@ int read_fdesign_line(const char*& name, const char*& value) {
// skip to start of value:
for (;;) {
x = getc(fin);
- if (x < 0 || x == '\n' || !isspace(x)) break;
+ if ((x < 0 && feof(fin)) || x == '\n' || !isspace(x & 255)) break;
}
// read the value:
@@ -639,5 +646,5 @@ void read_fdesign() {
}
//
-// End of "$Id: file.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: file.cxx 5808 2007-05-10 12:06:31Z matt $".
//
diff --git a/fluid/fluid.cxx b/fluid/fluid.cxx
index d849c6e..628b343 100644
--- a/fluid/fluid.cxx
+++ b/fluid/fluid.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: fluid.cxx 4660 2005-11-27 14:45:48Z mike $"
+// "$Id: fluid.cxx 5701 2007-02-20 18:43:10Z mike $"
//
// FLUID main entry for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -59,11 +59,13 @@
# include <io.h>
# include <commdlg.h>
# include <FL/x.H>
+# ifndef __WATCOMC__
// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
// on Windows, which is supposed to be POSIX compliant...
-# define access _access
-# define chdir _chdir
-# define getcwd _getcwd
+# define access _access
+# define chdir _chdir
+# define getcwd _getcwd
+# endif // !__WATCOMC__
#else
# include <unistd.h>
#endif
@@ -1567,48 +1569,48 @@ void toggle_sourceview_cb(Fl_Double_Window *, void *);
Fl_Menu_Item Main_Menu[] = {
{"&File",0,0,0,FL_SUBMENU},
- {"&New...", FL_CTRL+'n', new_cb, 0},
- {"&Open...", FL_CTRL+'o', open_cb, 0},
- {"&Insert...", FL_CTRL+'i', open_cb, (void*)1, FL_MENU_DIVIDER},
+ {"&New...", FL_COMMAND+'n', new_cb, 0},
+ {"&Open...", FL_COMMAND+'o', open_cb, 0},
+ {"&Insert...", FL_COMMAND+'i', open_cb, (void*)1, FL_MENU_DIVIDER},
#define SAVE_ITEM 4
- {"&Save", FL_CTRL+'s', save_cb, 0},
- {"Save &As...", FL_CTRL+FL_SHIFT+'s', save_cb, (void*)1},
+ {"&Save", FL_COMMAND+'s', save_cb, 0},
+ {"Save &As...", FL_COMMAND+FL_SHIFT+'s', save_cb, (void*)1},
{"Sa&ve A Copy...", 0, save_cb, (void*)2},
{"Save &Template...", 0, save_template_cb},
{"&Revert...", 0, revert_cb, 0, FL_MENU_DIVIDER},
- {"&Print...", FL_CTRL+'p', print_menu_cb},
- {"Write &Code...", FL_CTRL+FL_SHIFT+'c', write_cb, 0},
- {"&Write Strings...", FL_CTRL+FL_SHIFT+'w', write_strings_cb, 0, FL_MENU_DIVIDER},
+ {"&Print...", FL_COMMAND+'p', print_menu_cb},
+ {"Write &Code...", FL_COMMAND+FL_SHIFT+'c', write_cb, 0},
+ {"&Write Strings...", FL_COMMAND+FL_SHIFT+'w', write_strings_cb, 0, FL_MENU_DIVIDER},
#define HISTORY_ITEM 12
- {relative_history[0], FL_CTRL+'0', open_history_cb, absolute_history[0]},
- {relative_history[1], FL_CTRL+'1', open_history_cb, absolute_history[1]},
- {relative_history[2], FL_CTRL+'2', open_history_cb, absolute_history[2]},
- {relative_history[3], FL_CTRL+'3', open_history_cb, absolute_history[3]},
- {relative_history[4], FL_CTRL+'4', open_history_cb, absolute_history[4]},
- {relative_history[5], FL_CTRL+'5', open_history_cb, absolute_history[5]},
- {relative_history[6], FL_CTRL+'6', open_history_cb, absolute_history[6]},
- {relative_history[7], FL_CTRL+'7', open_history_cb, absolute_history[7]},
- {relative_history[8], FL_CTRL+'8', open_history_cb, absolute_history[8]},
- {relative_history[9], FL_CTRL+'9', open_history_cb, absolute_history[9], FL_MENU_DIVIDER},
- {"&Quit", FL_CTRL+'q', exit_cb},
+ {relative_history[0], FL_COMMAND+'0', open_history_cb, absolute_history[0]},
+ {relative_history[1], FL_COMMAND+'1', open_history_cb, absolute_history[1]},
+ {relative_history[2], FL_COMMAND+'2', open_history_cb, absolute_history[2]},
+ {relative_history[3], FL_COMMAND+'3', open_history_cb, absolute_history[3]},
+ {relative_history[4], FL_COMMAND+'4', open_history_cb, absolute_history[4]},
+ {relative_history[5], FL_COMMAND+'5', open_history_cb, absolute_history[5]},
+ {relative_history[6], FL_COMMAND+'6', open_history_cb, absolute_history[6]},
+ {relative_history[7], FL_COMMAND+'7', open_history_cb, absolute_history[7]},
+ {relative_history[8], FL_COMMAND+'8', open_history_cb, absolute_history[8]},
+ {relative_history[9], FL_COMMAND+'9', open_history_cb, absolute_history[9], FL_MENU_DIVIDER},
+ {"&Quit", FL_COMMAND+'q', exit_cb},
{0},
{"&Edit",0,0,0,FL_SUBMENU},
- {"&Undo", FL_CTRL+'z', undo_cb},
- {"&Redo", FL_CTRL+FL_SHIFT+'z', redo_cb, 0, FL_MENU_DIVIDER},
- {"C&ut", FL_CTRL+'x', cut_cb},
- {"&Copy", FL_CTRL+'c', copy_cb},
- {"&Paste", FL_CTRL+'v', paste_cb},
- {"Dup&licate", FL_CTRL+'u', duplicate_cb},
+ {"&Undo", FL_COMMAND+'z', undo_cb},
+ {"&Redo", FL_COMMAND+FL_SHIFT+'z', redo_cb, 0, FL_MENU_DIVIDER},
+ {"C&ut", FL_COMMAND+'x', cut_cb},
+ {"&Copy", FL_COMMAND+'c', copy_cb},
+ {"&Paste", FL_COMMAND+'v', paste_cb},
+ {"Dup&licate", FL_COMMAND+'u', duplicate_cb},
{"&Delete", FL_Delete, delete_cb, 0, FL_MENU_DIVIDER},
- {"Select &All", FL_CTRL+'a', select_all_cb},
- {"Select &None", FL_CTRL+FL_SHIFT+'a', select_none_cb, 0, FL_MENU_DIVIDER},
+ {"Select &All", FL_COMMAND+'a', select_all_cb},
+ {"Select &None", FL_COMMAND+FL_SHIFT+'a', select_none_cb, 0, FL_MENU_DIVIDER},
{"Pr&operties...", FL_F+1, openwidget_cb},
{"&Sort",0,sort_cb},
{"&Earlier", FL_F+2, earlier_cb},
{"&Later", FL_F+3, later_cb},
{"&Group", FL_F+7, group_cb},
{"Ung&roup", FL_F+8, ungroup_cb,0, FL_MENU_DIVIDER},
- {"Hide O&verlays",FL_CTRL+FL_SHIFT+'o',toggle_overlays},
+ {"Hide O&verlays",FL_COMMAND+FL_SHIFT+'o',toggle_overlays},
#define WIDGETBIN_ITEM 41
{"Show Widget &Bin...",FL_ALT+'b',toggle_widgetbin_cb},
#define SOURCEVIEW_ITEM 42
@@ -1647,7 +1649,7 @@ Fl_Menu_Item Main_Menu[] = {
{"&Large",FL_ALT+'5',(Fl_Callback *)widget_size_cb,(void*)24,0,FL_NORMAL_LABEL,FL_HELVETICA,24},
{"&Huge",FL_ALT+'6',(Fl_Callback *)widget_size_cb,(void*)32,0,FL_NORMAL_LABEL,FL_HELVETICA,32},
{0},
- {"&Grid and Size Settings...",FL_CTRL+'g',show_grid_cb},
+ {"&Grid and Size Settings...",FL_COMMAND+'g',show_grid_cb},
{0},
{"&Shell",0,0,0,FL_SUBMENU},
{"Execute &Command...",FL_ALT+'x',(Fl_Callback *)show_shell_window},
@@ -1682,6 +1684,9 @@ void scheme_cb(Fl_Choice *, void *) {
case 2 : // Plastic
Fl::scheme("plastic");
break;
+ case 3 : // GTK+
+ Fl::scheme("gtk+");
+ break;
}
fluid_prefs.set("scheme", scheme_choice->value());
@@ -2236,5 +2241,5 @@ int main(int argc,char **argv) {
}
//
-// End of "$Id: fluid.cxx 4660 2005-11-27 14:45:48Z mike $".
+// End of "$Id: fluid.cxx 5701 2007-02-20 18:43:10Z mike $".
//
diff --git a/fluid/function_panel.cxx b/fluid/function_panel.cxx
index 977822a..7df9c95 100644
--- a/fluid/function_panel.cxx
+++ b/fluid/function_panel.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: function_panel.cxx 4632 2005-11-03 22:16:52Z mike $"
+// "$Id: function_panel.cxx 5440 2006-09-17 18:31:35Z matt $"
//
// Code dialogs for the Fast Light Tool Kit (FLTK).
//
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#include "function_panel.h"
#include <FL/Fl_Pixmap.H>
@@ -50,64 +50,62 @@ Fl_Return_Button *f_panel_ok=(Fl_Return_Button *)0;
Fl_Button *f_panel_cancel=(Fl_Button *)0;
Fl_Double_Window* make_function_panel() {
- Fl_Double_Window* w;
{ Fl_Double_Window* o = function_panel = new Fl_Double_Window(290, 150, "Function/Method Properties");
- w = o;
{ Fl_Group* o = new Fl_Group(10, 10, 270, 20);
- { Fl_Light_Button* o = f_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
- o->tooltip("Make the function or method publicly accessible.");
- o->labelsize(11);
- o->when(FL_WHEN_NEVER);
- }
- { Fl_Light_Button* o = f_c_button = new Fl_Light_Button(80, 10, 80, 20, "C declaration");
- o->tooltip("Declare with a C interface instead of C++.");
- o->labelsize(11);
- }
+ { f_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
+ f_public_button->tooltip("Make the function or method publicly accessible.");
+ f_public_button->labelsize(11);
+ f_public_button->when(FL_WHEN_NEVER);
+ } // Fl_Light_Button* f_public_button
+ { f_c_button = new Fl_Light_Button(80, 10, 80, 20, "C declaration");
+ f_c_button->tooltip("Declare with a C interface instead of C++.");
+ f_c_button->labelsize(11);
+ } // Fl_Light_Button* f_c_button
{ Fl_Box* o = new Fl_Box(170, 10, 110, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_Input* o = f_name_input = new Fl_Input(10, 50, 270, 20, "Name(args): (blank for main())");
- o->tooltip("The name of the function or method.");
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP_LEFT);
- o->when(FL_WHEN_NEVER);
- Fl_Group::current()->resizable(o);
- }
- { Fl_Input* o = f_return_type_input = new Fl_Input(10, 90, 270, 20, "Return Type: (blank to return outermost widget)");
- o->tooltip("The return type of the function or method.");
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP_LEFT);
- o->when(FL_WHEN_NEVER);
- }
+ } // Fl_Group* o
+ { f_name_input = new Fl_Input(10, 50, 270, 20, "Name(args): (blank for main())");
+ f_name_input->tooltip("The name of the function or method.");
+ f_name_input->labelfont(1);
+ f_name_input->labelsize(11);
+ f_name_input->textfont(4);
+ f_name_input->textsize(11);
+ f_name_input->align(FL_ALIGN_TOP_LEFT);
+ f_name_input->when(FL_WHEN_NEVER);
+ Fl_Group::current()->resizable(f_name_input);
+ } // Fl_Input* f_name_input
+ { f_return_type_input = new Fl_Input(10, 90, 270, 20, "Return Type: (blank to return outermost widget)");
+ f_return_type_input->tooltip("The return type of the function or method.");
+ f_return_type_input->labelfont(1);
+ f_return_type_input->labelsize(11);
+ f_return_type_input->textfont(4);
+ f_return_type_input->textsize(11);
+ f_return_type_input->align(FL_ALIGN_TOP_LEFT);
+ f_return_type_input->when(FL_WHEN_NEVER);
+ } // Fl_Input* f_return_type_input
{ Fl_Group* o = new Fl_Group(10, 120, 270, 20);
- { Fl_Return_Button* o = f_panel_ok = new Fl_Return_Button(170, 120, 50, 20, "OK");
- o->tooltip("Apply the changes.");
- o->labelsize(11);
- w->hotspot(o);
- }
- { Fl_Button* o = f_panel_cancel = new Fl_Button(230, 120, 50, 20, "Cancel");
- o->tooltip("Cancel the changes.");
- o->shortcut(0xff1b);
- o->labelsize(11);
- }
+ { f_panel_ok = new Fl_Return_Button(170, 120, 50, 20, "OK");
+ f_panel_ok->tooltip("Apply the changes.");
+ f_panel_ok->labelsize(11);
+ f_panel_ok->window()->hotspot(f_panel_ok);
+ } // Fl_Return_Button* f_panel_ok
+ { f_panel_cancel = new Fl_Button(230, 120, 50, 20, "Cancel");
+ f_panel_cancel->tooltip("Cancel the changes.");
+ f_panel_cancel->shortcut(0xff1b);
+ f_panel_cancel->labelsize(11);
+ } // Fl_Button* f_panel_cancel
{ Fl_Box* o = new Fl_Box(10, 120, 150, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
o->size_range(o->w(), o->h(), Fl::w(), o->h());
- o->set_modal();
- o->end();
- }
- return w;
+ function_panel->set_modal();
+ function_panel->end();
+ } // Fl_Double_Window* function_panel
+ return function_panel;
}
Fl_Double_Window *code_panel=(Fl_Double_Window *)0;
@@ -119,46 +117,44 @@ Fl_Return_Button *code_panel_ok=(Fl_Return_Button *)0;
Fl_Button *code_panel_cancel=(Fl_Button *)0;
Fl_Double_Window* make_code_panel() {
- Fl_Double_Window* w;
{ Fl_Double_Window* o = code_panel = new Fl_Double_Window(540, 180, "Code Properties");
- w = o;
- o->labelsize(11);
+ code_panel->labelsize(11);
{ CodeEditor* o = code_input = new CodeEditor(10, 10, 520, 130);
- o->box(FL_DOWN_BOX);
- o->color(FL_BACKGROUND2_COLOR);
- o->selection_color(FL_SELECTION_COLOR);
- o->labeltype(FL_NORMAL_LABEL);
- o->labelfont(0);
- o->labelsize(11);
- o->labelcolor(FL_FOREGROUND_COLOR);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP);
- o->when(FL_WHEN_RELEASE);
- Fl_Group::current()->resizable(o);
+ code_input->box(FL_DOWN_BOX);
+ code_input->color(FL_BACKGROUND2_COLOR);
+ code_input->selection_color(FL_SELECTION_COLOR);
+ code_input->labeltype(FL_NORMAL_LABEL);
+ code_input->labelfont(0);
+ code_input->labelsize(11);
+ code_input->labelcolor(FL_FOREGROUND_COLOR);
+ code_input->textfont(4);
+ code_input->textsize(11);
+ code_input->align(FL_ALIGN_TOP);
+ code_input->when(FL_WHEN_RELEASE);
+ Fl_Group::current()->resizable(code_input);
o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);
- }
+ } // CodeEditor* code_input
{ Fl_Group* o = new Fl_Group(10, 150, 520, 20);
o->labelsize(11);
- { Fl_Return_Button* o = code_panel_ok = new Fl_Return_Button(400, 150, 60, 20, "OK");
- o->labelsize(11);
- w->hotspot(o);
- }
- { Fl_Button* o = code_panel_cancel = new Fl_Button(470, 150, 60, 20, "Cancel");
- o->shortcut(0xff1b);
- o->labelsize(11);
- }
+ { code_panel_ok = new Fl_Return_Button(400, 150, 60, 20, "OK");
+ code_panel_ok->labelsize(11);
+ code_panel_ok->window()->hotspot(code_panel_ok);
+ } // Fl_Return_Button* code_panel_ok
+ { code_panel_cancel = new Fl_Button(470, 150, 60, 20, "Cancel");
+ code_panel_cancel->shortcut(0xff1b);
+ code_panel_cancel->labelsize(11);
+ } // Fl_Button* code_panel_cancel
{ Fl_Box* o = new Fl_Box(10, 150, 380, 20);
o->labelsize(11);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
o->size_range(200, 150);
- o->set_modal();
- o->end();
- }
- return w;
+ code_panel->set_modal();
+ code_panel->end();
+ } // Fl_Double_Window* code_panel
+ return code_panel;
}
Fl_Double_Window *codeblock_panel=(Fl_Double_Window *)0;
@@ -172,46 +168,44 @@ Fl_Return_Button *codeblock_panel_ok=(Fl_Return_Button *)0;
Fl_Button *codeblock_panel_cancel=(Fl_Button *)0;
Fl_Double_Window* make_codeblock_panel() {
- Fl_Double_Window* w;
{ Fl_Double_Window* o = codeblock_panel = new Fl_Double_Window(300, 115, "Code Block Properties");
- w = o;
- o->labelsize(11);
- { Fl_Input* o = code_before_input = new Fl_Input(10, 15, 280, 20, "Conditional code block");
- o->tooltip("#ifdef or similar conditional code block.");
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP_LEFT);
- o->when(FL_WHEN_NEVER);
- }
- { Fl_Input* o = code_after_input = new Fl_Input(10, 55, 280, 20, "\"{...child code...}\" is inserted here");
- o->tooltip("#endif or similar conditional code block.");
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP_LEFT);
- o->when(FL_WHEN_NEVER);
- Fl_Group::current()->resizable(o);
- }
+ codeblock_panel->labelsize(11);
+ { code_before_input = new Fl_Input(10, 15, 280, 20, "Conditional code block");
+ code_before_input->tooltip("#ifdef or similar conditional code block.");
+ code_before_input->labelsize(11);
+ code_before_input->textfont(4);
+ code_before_input->textsize(11);
+ code_before_input->align(FL_ALIGN_TOP_LEFT);
+ code_before_input->when(FL_WHEN_NEVER);
+ } // Fl_Input* code_before_input
+ { code_after_input = new Fl_Input(10, 55, 280, 20, "\"{...child code...}\" is inserted here");
+ code_after_input->tooltip("#endif or similar conditional code block.");
+ code_after_input->labelsize(11);
+ code_after_input->textfont(4);
+ code_after_input->textsize(11);
+ code_after_input->align(FL_ALIGN_TOP_LEFT);
+ code_after_input->when(FL_WHEN_NEVER);
+ Fl_Group::current()->resizable(code_after_input);
+ } // Fl_Input* code_after_input
{ Fl_Group* o = new Fl_Group(10, 85, 280, 20);
- { Fl_Return_Button* o = codeblock_panel_ok = new Fl_Return_Button(160, 85, 60, 20, "OK");
- o->labelsize(11);
- w->hotspot(o);
- }
- { Fl_Button* o = codeblock_panel_cancel = new Fl_Button(230, 85, 60, 20, "Cancel");
- o->shortcut(0xff1b);
- o->labelsize(11);
- }
+ { codeblock_panel_ok = new Fl_Return_Button(160, 85, 60, 20, "OK");
+ codeblock_panel_ok->labelsize(11);
+ codeblock_panel_ok->window()->hotspot(codeblock_panel_ok);
+ } // Fl_Return_Button* codeblock_panel_ok
+ { codeblock_panel_cancel = new Fl_Button(230, 85, 60, 20, "Cancel");
+ codeblock_panel_cancel->shortcut(0xff1b);
+ codeblock_panel_cancel->labelsize(11);
+ } // Fl_Button* codeblock_panel_cancel
{ Fl_Box* o = new Fl_Box(10, 85, 140, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
o->size_range(o->w(), o->h(), Fl::w(), o->h());
- o->set_modal();
- o->end();
- }
- return w;
+ codeblock_panel->set_modal();
+ codeblock_panel->end();
+ } // Fl_Double_Window* codeblock_panel
+ return codeblock_panel;
}
Fl_Double_Window *declblock_panel=(Fl_Double_Window *)0;
@@ -227,63 +221,63 @@ Fl_Button *declblock_panel_cancel=(Fl_Button *)0;
Fl_Light_Button *declblock_public_button=(Fl_Light_Button *)0;
Fl_Double_Window* make_declblock_panel() {
- Fl_Double_Window* w;
{ Fl_Double_Window* o = declblock_panel = new Fl_Double_Window(300, 135, "Declaration Block Properties");
- w = o;
- o->labelsize(11);
- { Fl_Input* o = decl_before_input = new Fl_Input(10, 40, 280, 20);
- o->tooltip("#ifdef or similar conditional declaration block.");
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP_LEFT);
- o->when(FL_WHEN_NEVER);
- Fl_Group::current()->resizable(o);
- }
- { Fl_Input* o = decl_after_input = new Fl_Input(10, 75, 280, 20, "\"\\n...child code...\\n\" is inserted here");
- o->tooltip("#endif or similar declaration code block.");
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP_LEFT);
- o->when(FL_WHEN_NEVER);
- }
+ declblock_panel->labelsize(11);
+ { decl_before_input = new Fl_Input(10, 40, 280, 20);
+ decl_before_input->tooltip("#ifdef or similar conditional declaration block.");
+ decl_before_input->labelsize(11);
+ decl_before_input->textfont(4);
+ decl_before_input->textsize(11);
+ decl_before_input->align(FL_ALIGN_TOP_LEFT);
+ decl_before_input->when(FL_WHEN_NEVER);
+ Fl_Group::current()->resizable(decl_before_input);
+ } // Fl_Input* decl_before_input
+ { decl_after_input = new Fl_Input(10, 75, 280, 20, "\"\\n...child code...\\n\" is inserted here");
+ decl_after_input->tooltip("#endif or similar declaration code block.");
+ decl_after_input->labelsize(11);
+ decl_after_input->textfont(4);
+ decl_after_input->textsize(11);
+ decl_after_input->align(FL_ALIGN_TOP_LEFT);
+ decl_after_input->when(FL_WHEN_NEVER);
+ } // Fl_Input* decl_after_input
{ Fl_Group* o = new Fl_Group(10, 105, 280, 20);
- { Fl_Return_Button* o = declblock_panel_ok = new Fl_Return_Button(160, 105, 60, 20, "OK");
- o->labelsize(11);
- w->hotspot(o);
- }
- { Fl_Button* o = declblock_panel_cancel = new Fl_Button(230, 105, 60, 20, "Cancel");
- o->shortcut(0xff1b);
- o->labelsize(11);
- }
+ { declblock_panel_ok = new Fl_Return_Button(160, 105, 60, 20, "OK");
+ declblock_panel_ok->labelsize(11);
+ declblock_panel_ok->window()->hotspot(declblock_panel_ok);
+ } // Fl_Return_Button* declblock_panel_ok
+ { declblock_panel_cancel = new Fl_Button(230, 105, 60, 20, "Cancel");
+ declblock_panel_cancel->shortcut(0xff1b);
+ declblock_panel_cancel->labelsize(11);
+ } // Fl_Button* declblock_panel_cancel
{ Fl_Box* o = new Fl_Box(10, 105, 140, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
{ Fl_Group* o = new Fl_Group(10, 10, 280, 20);
- { Fl_Light_Button* o = declblock_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
- o->tooltip("Make the declaration publicly accessible.");
- o->labelsize(11);
- o->when(FL_WHEN_NEVER);
- }
+ { declblock_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
+ declblock_public_button->tooltip("Make the declaration publicly accessible.");
+ declblock_public_button->labelsize(11);
+ declblock_public_button->when(FL_WHEN_NEVER);
+ } // Fl_Light_Button* declblock_public_button
{ Fl_Box* o = new Fl_Box(80, 10, 210, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
o->size_range(o->w(), o->h(), Fl::w(), o->h());
- o->set_modal();
- o->end();
- }
- return w;
+ declblock_panel->set_modal();
+ declblock_panel->end();
+ } // Fl_Double_Window* declblock_panel
+ return declblock_panel;
}
Fl_Double_Window *decl_panel=(Fl_Double_Window *)0;
Fl_Light_Button *decl_public_button=(Fl_Light_Button *)0;
+Fl_Light_Button *decl_static_button=(Fl_Light_Button *)0;
+
Fl_Input *decl_input=(Fl_Input *)0;
Fl_Return_Button *decl_panel_ok=(Fl_Return_Button *)0;
@@ -291,49 +285,54 @@ Fl_Return_Button *decl_panel_ok=(Fl_Return_Button *)0;
Fl_Button *decl_panel_cancel=(Fl_Button *)0;
Fl_Double_Window* make_decl_panel() {
- Fl_Double_Window* w;
{ Fl_Double_Window* o = decl_panel = new Fl_Double_Window(290, 150, "Declaration Properties");
- w = o;
+ decl_panel->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
{ Fl_Group* o = new Fl_Group(10, 10, 270, 20);
- { Fl_Light_Button* o = decl_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
- o->tooltip("Make the declaration publicly accessible.");
- o->labelsize(11);
- o->when(FL_WHEN_NEVER);
- }
- { Fl_Box* o = new Fl_Box(80, 10, 200, 20);
+ { decl_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
+ decl_public_button->tooltip("Make the declaration publicly accessible.");
+ decl_public_button->labelsize(11);
+ decl_public_button->when(FL_WHEN_NEVER);
+ } // Fl_Light_Button* decl_public_button
+ { decl_static_button = new Fl_Light_Button(80, 10, 60, 20, "static");
+ decl_static_button->tooltip("Prepend \'static\' to private declarations in the source code, or \'extern\' \
+to public declarations in the header file.");
+ decl_static_button->labelsize(11);
+ decl_static_button->when(FL_WHEN_NEVER);
+ } // Fl_Light_Button* decl_static_button
+ { Fl_Box* o = new Fl_Box(150, 10, 130, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_Input* o = decl_input = new Fl_Input(10, 40, 270, 20, "Can be any declaration, like \"int x;\", an external symbol like \"extern int\
+ } // Fl_Group* o
+ { decl_input = new Fl_Input(10, 40, 270, 20, "Can be any declaration, like \"int x;\", an external symbol like \"extern int\
foo();\", a #directive like \"#include <foo.h>\", a comment like \"//foo\" or\
\"/*foo*/\", or typedef like \"typedef char byte;\" or \"using std::list;\".");
- o->tooltip("Declaration text.");
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(134);
- o->when(FL_WHEN_NEVER);
- Fl_Group::current()->resizable(o);
- }
+ decl_input->tooltip("Declaration text.");
+ decl_input->labelsize(11);
+ decl_input->textfont(4);
+ decl_input->textsize(11);
+ decl_input->align(134);
+ decl_input->when(FL_WHEN_NEVER);
+ Fl_Group::current()->resizable(decl_input);
+ } // Fl_Input* decl_input
{ Fl_Group* o = new Fl_Group(10, 120, 270, 20);
- { Fl_Return_Button* o = decl_panel_ok = new Fl_Return_Button(150, 120, 60, 20, "OK");
- o->labelsize(11);
- w->hotspot(o);
- }
- { Fl_Button* o = decl_panel_cancel = new Fl_Button(220, 120, 60, 20, "Cancel");
- o->shortcut(0xff1b);
- o->labelsize(11);
- }
+ { decl_panel_ok = new Fl_Return_Button(150, 120, 60, 20, "OK");
+ decl_panel_ok->labelsize(11);
+ decl_panel_ok->window()->hotspot(decl_panel_ok);
+ } // Fl_Return_Button* decl_panel_ok
+ { decl_panel_cancel = new Fl_Button(220, 120, 60, 20, "Cancel");
+ decl_panel_cancel->shortcut(0xff1b);
+ decl_panel_cancel->labelsize(11);
+ } // Fl_Button* decl_panel_cancel
{ Fl_Box* o = new Fl_Box(10, 120, 130, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
o->size_range(o->w(), o->h(), Fl::w(), o->h());
- o->end();
- }
- return w;
+ decl_panel->end();
+ } // Fl_Double_Window* decl_panel
+ return decl_panel;
}
Fl_Double_Window *class_panel=(Fl_Double_Window *)0;
@@ -349,59 +348,57 @@ Fl_Return_Button *c_panel_ok=(Fl_Return_Button *)0;
Fl_Button *c_panel_cancel=(Fl_Button *)0;
Fl_Double_Window* make_class_panel() {
- Fl_Double_Window* w;
{ Fl_Double_Window* o = class_panel = new Fl_Double_Window(300, 140, "Class Properties");
- w = o;
- o->labelsize(11);
+ class_panel->labelsize(11);
{ Fl_Group* o = new Fl_Group(10, 10, 280, 20);
- { Fl_Light_Button* o = c_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
- o->tooltip("Make the class publicly accessible.");
- o->labelsize(11);
- o->when(FL_WHEN_NEVER);
- }
+ { c_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
+ c_public_button->tooltip("Make the class publicly accessible.");
+ c_public_button->labelsize(11);
+ c_public_button->when(FL_WHEN_NEVER);
+ } // Fl_Light_Button* c_public_button
{ Fl_Box* o = new Fl_Box(80, 10, 210, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_Input* o = c_name_input = new Fl_Input(10, 45, 280, 20, "Name:");
- o->tooltip("Name of class.");
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP_LEFT);
- o->when(FL_WHEN_NEVER);
- Fl_Group::current()->resizable(o);
- }
- { Fl_Input* o = c_subclass_input = new Fl_Input(10, 80, 280, 20, "Subclass of (text between : and {)");
- o->tooltip("Name of subclass.");
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP_LEFT);
- o->when(FL_WHEN_NEVER);
- }
+ } // Fl_Group* o
+ { c_name_input = new Fl_Input(10, 45, 280, 20, "Name:");
+ c_name_input->tooltip("Name of class.");
+ c_name_input->labelfont(1);
+ c_name_input->labelsize(11);
+ c_name_input->textfont(4);
+ c_name_input->textsize(11);
+ c_name_input->align(FL_ALIGN_TOP_LEFT);
+ c_name_input->when(FL_WHEN_NEVER);
+ Fl_Group::current()->resizable(c_name_input);
+ } // Fl_Input* c_name_input
+ { c_subclass_input = new Fl_Input(10, 80, 280, 20, "Subclass of (text between : and {)");
+ c_subclass_input->tooltip("Name of subclass.");
+ c_subclass_input->labelfont(1);
+ c_subclass_input->labelsize(11);
+ c_subclass_input->textfont(4);
+ c_subclass_input->textsize(11);
+ c_subclass_input->align(FL_ALIGN_TOP_LEFT);
+ c_subclass_input->when(FL_WHEN_NEVER);
+ } // Fl_Input* c_subclass_input
{ Fl_Group* o = new Fl_Group(10, 110, 280, 20);
- { Fl_Return_Button* o = c_panel_ok = new Fl_Return_Button(160, 110, 60, 20, "OK");
- o->labelsize(11);
- w->hotspot(o);
- }
- { Fl_Button* o = c_panel_cancel = new Fl_Button(230, 110, 60, 20, "Cancel");
- o->shortcut(0xff1b);
- o->labelsize(11);
- }
+ { c_panel_ok = new Fl_Return_Button(160, 110, 60, 20, "OK");
+ c_panel_ok->labelsize(11);
+ c_panel_ok->window()->hotspot(c_panel_ok);
+ } // Fl_Return_Button* c_panel_ok
+ { c_panel_cancel = new Fl_Button(230, 110, 60, 20, "Cancel");
+ c_panel_cancel->shortcut(0xff1b);
+ c_panel_cancel->labelsize(11);
+ } // Fl_Button* c_panel_cancel
{ Fl_Box* o = new Fl_Box(10, 110, 140, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
o->size_range(o->w(), o->h(), Fl::w(), o->h());
- o->set_modal();
- o->end();
- }
- return w;
+ class_panel->set_modal();
+ class_panel->end();
+ } // Fl_Double_Window* class_panel
+ return class_panel;
}
Fl_Double_Window *comment_panel=(Fl_Double_Window *)0;
@@ -421,71 +418,69 @@ Fl_Menu_Button *comment_predefined=(Fl_Menu_Button *)0;
Fl_Button *comment_load=(Fl_Button *)0;
Fl_Double_Window* make_comment_panel() {
- Fl_Double_Window* w;
{ Fl_Double_Window* o = comment_panel = new Fl_Double_Window(550, 280, "Comment Properties");
- w = o;
- o->labelsize(11);
+ comment_panel->labelsize(11);
{ CodeEditor* o = comment_input = new CodeEditor(110, 10, 430, 230);
- o->box(FL_DOWN_BOX);
- o->color(FL_BACKGROUND2_COLOR);
- o->selection_color(FL_SELECTION_COLOR);
- o->labeltype(FL_NORMAL_LABEL);
- o->labelfont(0);
- o->labelsize(11);
- o->labelcolor(FL_FOREGROUND_COLOR);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP);
- o->when(FL_WHEN_RELEASE);
- Fl_Group::current()->resizable(o);
+ comment_input->box(FL_DOWN_BOX);
+ comment_input->color(FL_BACKGROUND2_COLOR);
+ comment_input->selection_color(FL_SELECTION_COLOR);
+ comment_input->labeltype(FL_NORMAL_LABEL);
+ comment_input->labelfont(0);
+ comment_input->labelsize(11);
+ comment_input->labelcolor(FL_FOREGROUND_COLOR);
+ comment_input->textfont(4);
+ comment_input->textsize(11);
+ comment_input->align(FL_ALIGN_TOP);
+ comment_input->when(FL_WHEN_RELEASE);
+ Fl_Group::current()->resizable(comment_input);
o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);
- }
+ } // CodeEditor* comment_input
{ Fl_Group* o = new Fl_Group(110, 250, 430, 20);
o->labelsize(11);
- { Fl_Return_Button* o = comment_panel_ok = new Fl_Return_Button(370, 250, 80, 20, "OK");
- o->labelsize(11);
- w->hotspot(o);
- }
- { Fl_Button* o = comment_panel_cancel = new Fl_Button(460, 250, 80, 20, "Cancel");
- o->shortcut(0xff1b);
- o->labelsize(11);
- }
+ { comment_panel_ok = new Fl_Return_Button(370, 250, 80, 20, "OK");
+ comment_panel_ok->labelsize(11);
+ comment_panel_ok->window()->hotspot(comment_panel_ok);
+ } // Fl_Return_Button* comment_panel_ok
+ { comment_panel_cancel = new Fl_Button(460, 250, 80, 20, "Cancel");
+ comment_panel_cancel->shortcut(0xff1b);
+ comment_panel_cancel->labelsize(11);
+ } // Fl_Button* comment_panel_cancel
{ Fl_Box* o = new Fl_Box(110, 250, 250, 20);
o->labelsize(11);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
{ Fl_Group* o = new Fl_Group(10, 10, 90, 243);
o->labelsize(11);
- { Fl_Light_Button* o = comment_in_source = new Fl_Light_Button(10, 10, 90, 20, "In Source");
- o->tooltip("Put the comment into the source (.cxx) file.");
- o->labelsize(11);
- o->when(FL_WHEN_NEVER);
- }
- { Fl_Light_Button* o = comment_in_header = new Fl_Light_Button(10, 40, 90, 20, "In Header");
- o->tooltip("Put the comment into the header (.h) file.");
- o->labelsize(11);
- o->when(FL_WHEN_NEVER);
- }
- { Fl_Menu_Button* o = comment_predefined = new Fl_Menu_Button(10, 70, 90, 20, "Predefined");
- o->labelsize(11);
- o->textsize(11);
- }
- { Fl_Button* o = comment_load = new Fl_Button(10, 100, 90, 20, "Import...");
- o->labelsize(11);
- }
+ { comment_in_source = new Fl_Light_Button(10, 10, 90, 20, "In Source");
+ comment_in_source->tooltip("Put the comment into the source (.cxx) file.");
+ comment_in_source->labelsize(11);
+ comment_in_source->when(FL_WHEN_NEVER);
+ } // Fl_Light_Button* comment_in_source
+ { comment_in_header = new Fl_Light_Button(10, 40, 90, 20, "In Header");
+ comment_in_header->tooltip("Put the comment into the header (.h) file.");
+ comment_in_header->labelsize(11);
+ comment_in_header->when(FL_WHEN_NEVER);
+ } // Fl_Light_Button* comment_in_header
+ { comment_predefined = new Fl_Menu_Button(10, 70, 90, 20, "Predefined");
+ comment_predefined->labelsize(11);
+ comment_predefined->textsize(11);
+ } // Fl_Menu_Button* comment_predefined
+ { comment_load = new Fl_Button(10, 100, 90, 20, "Import...");
+ comment_load->labelsize(11);
+ } // Fl_Button* comment_load
{ Fl_Box* o = new Fl_Box(10, 132, 90, 121);
o->labelsize(11);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
o->size_range(320, 180);
- o->set_modal();
- o->end();
- }
- return w;
+ comment_panel->set_modal();
+ comment_panel->end();
+ } // Fl_Double_Window* comment_panel
+ return comment_panel;
}
void type_make_cb(Fl_Widget*w,void*d) {
@@ -504,430 +499,420 @@ void type_make_cb(Fl_Widget*w,void*d) {
Fl_Window *widgetbin_panel=(Fl_Window *)0;
Fl_Window* make_widgetbin() {
- Fl_Window* w;
- { Fl_Window* o = widgetbin_panel = new Fl_Window(520, 85, "Widget Bin");
- w = o;
+ { widgetbin_panel = new Fl_Window(551, 85, "Widget Bin");
+ widgetbin_panel->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
{ Fl_Group* o = new Fl_Group(3, 3, 79, 79);
- o->box(FL_THIN_DOWN_BOX);
- { Fl_Button* o = new Fl_Button(5, 5, 25, 25);
+ { Fl_Button* o = new Fl_Button(5, 5, 24, 24);
o->tooltip("Function");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Function"));
o->image(pixmap[7]);
- }
- { Fl_Button* o = new Fl_Button(30, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(30, 5, 24, 24);
o->tooltip("Class");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Class"));
o->image(pixmap[12]);
- }
- { Fl_Button* o = new Fl_Button(55, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(55, 5, 24, 24);
o->tooltip("Comment");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("comment"));
o->image(pixmap[46]);
- }
- { Fl_Button* o = new Fl_Button(5, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(5, 30, 24, 24);
o->tooltip("Code");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Code"));
o->image(pixmap[8]);
- }
- { Fl_Button* o = new Fl_Button(30, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(30, 30, 24, 24);
o->tooltip("Code Block");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("CodeBlock"));
o->image(pixmap[9]);
- }
- { Fl_Button* o = new Fl_Button(55, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(55, 30, 24, 24);
o->tooltip("Widget Class");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("widget_class"));
o->image(pixmap[48]);
- }
- { Fl_Button* o = new Fl_Button(5, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(5, 55, 24, 24);
o->tooltip("Declaration");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("decl"));
o->image(pixmap[10]);
- }
- { Fl_Button* o = new Fl_Button(30, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(30, 55, 24, 24);
o->tooltip("Declaration Block");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("declblock"));
o->image(pixmap[11]);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(83, 3, 79, 79);
- o->box(FL_THIN_DOWN_BOX);
- { Fl_Button* o = new Fl_Button(85, 5, 25, 25);
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(87, 3, 79, 79);
+ { Fl_Button* o = new Fl_Button(89, 5, 24, 24);
o->tooltip("Window");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Window"));
o->image(pixmap[1]);
- }
- { Fl_Button* o = new Fl_Button(110, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(114, 5, 24, 24);
o->tooltip("Group");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Group"));
o->image(pixmap[6]);
- }
- { Fl_Button* o = new Fl_Button(135, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(139, 5, 24, 24);
o->tooltip("Pack");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Pack"));
o->image(pixmap[22]);
- }
- { Fl_Button* o = new Fl_Button(85, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(89, 30, 24, 24);
o->tooltip("Tabs");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Tabs"));
o->image(pixmap[13]);
- }
- { Fl_Button* o = new Fl_Button(110, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(114, 30, 24, 24);
o->tooltip("Scroll");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Scroll"));
o->image(pixmap[19]);
- }
- { Fl_Button* o = new Fl_Button(85, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(89, 55, 24, 24);
o->tooltip("Tile");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Tile"));
o->image(pixmap[20]);
- }
- { Fl_Button* o = new Fl_Button(110, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(114, 55, 24, 24);
o->tooltip("Wizard");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Wizard"));
o->image(pixmap[21]);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(163, 3, 54, 79);
- o->box(FL_THIN_DOWN_BOX);
- { Fl_Button* o = new Fl_Button(165, 5, 25, 25);
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(171, 3, 54, 79);
+ { Fl_Button* o = new Fl_Button(173, 5, 24, 24);
o->tooltip("Button");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Button"));
o->image(pixmap[2]);
- }
- { Fl_Button* o = new Fl_Button(190, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(198, 5, 24, 24);
o->tooltip("Return Button");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Return_Button"));
o->image(pixmap[23]);
- }
- { Fl_Button* o = new Fl_Button(165, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(173, 30, 24, 24);
o->tooltip("Light Button");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Light_Button"));
o->image(pixmap[24]);
- }
- { Fl_Button* o = new Fl_Button(190, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(198, 30, 24, 24);
o->tooltip("Repeat Button");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Repeat_Button"));
o->image(pixmap[25]);
- }
- { Fl_Button* o = new Fl_Button(165, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(173, 55, 24, 24);
o->tooltip("Check Button");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Check_Button"));
o->image(pixmap[3]);
- }
- { Fl_Button* o = new Fl_Button(190, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(198, 55, 24, 24);
o->tooltip("Round Button");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Round_Button"));
o->image(pixmap[4]);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(218, 3, 104, 79);
- o->box(FL_THIN_DOWN_BOX);
- { Fl_Button* o = new Fl_Button(220, 5, 25, 25);
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(230, 3, 104, 79);
+ { Fl_Button* o = new Fl_Button(232, 5, 24, 24);
o->tooltip("Slider");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Slider"));
o->image(pixmap[37]);
- }
- { Fl_Button* o = new Fl_Button(245, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(257, 5, 24, 24);
o->tooltip("Scroll Bar");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Scrollbar"));
o->image(pixmap[38]);
- }
- { Fl_Button* o = new Fl_Button(270, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(282, 5, 24, 24);
o->tooltip("Value Slider");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Value_Slider"));
o->image(pixmap[39]);
- }
- { Fl_Button* o = new Fl_Button(295, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(307, 5, 24, 24);
o->tooltip("Value Output");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Value_Output"));
o->image(pixmap[45]);
- }
- { Fl_Button* o = new Fl_Button(220, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(232, 30, 24, 24);
o->tooltip("Adjuster");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Adjuster"));
o->image(pixmap[40]);
- }
- { Fl_Button* o = new Fl_Button(245, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(257, 30, 24, 24);
o->tooltip("Counter");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Counter"));
o->image(pixmap[41]);
- }
- { Fl_Button* o = new Fl_Button(270, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(282, 30, 24, 24);
o->tooltip("Dial");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Dial"));
o->image(pixmap[42]);
- }
- { Fl_Button* o = new Fl_Button(220, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(232, 55, 24, 24);
o->tooltip("Roller");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Roller"));
o->image(pixmap[43]);
- }
- { Fl_Button* o = new Fl_Button(245, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(257, 55, 24, 24);
o->tooltip("Spinner");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Spinner"));
o->image(pixmap[47]);
- }
- { Fl_Button* o = new Fl_Button(270, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(282, 55, 24, 24);
o->tooltip("Value Input");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Value_Input"));
o->image(pixmap[44]);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(323, 3, 54, 79);
- o->box(FL_THIN_DOWN_BOX);
- { Fl_Button* o = new Fl_Button(325, 5, 25, 25);
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(339, 3, 54, 79);
+ { Fl_Button* o = new Fl_Button(341, 5, 24, 24);
o->tooltip("Input");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Input"));
o->image(pixmap[14]);
- }
- { Fl_Button* o = new Fl_Button(350, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(366, 5, 24, 24);
o->tooltip("Output");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Output"));
o->image(pixmap[27]);
- }
- { Fl_Button* o = new Fl_Button(325, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(341, 30, 24, 24);
o->tooltip("Text Edit");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Text_Editor"));
o->image(pixmap[29]);
- }
- { Fl_Button* o = new Fl_Button(350, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(366, 30, 24, 24);
o->tooltip("Text Display");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Text_Display"));
o->image(pixmap[28]);
- }
- { Fl_Button* o = new Fl_Button(325, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(341, 55, 24, 24);
o->tooltip("File Input");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_File_Input"));
o->image(pixmap[30]);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(378, 3, 54, 79);
- o->box(FL_THIN_DOWN_BOX);
- { Fl_Button* o = new Fl_Button(380, 5, 25, 25);
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(398, 3, 54, 79);
+ { Fl_Button* o = new Fl_Button(400, 5, 24, 24);
o->tooltip("Menu Bar");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Menu_Bar"));
o->image(pixmap[17]);
- }
- { Fl_Button* o = new Fl_Button(405, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(425, 5, 24, 24);
o->tooltip("Input Choice");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Input_Choice"));
o->image(pixmap[15]);
- }
- { Fl_Button* o = new Fl_Button(380, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(400, 30, 24, 24);
o->tooltip("Menu Button");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Menu_Button"));
o->image(pixmap[26]);
- }
- { Fl_Button* o = new Fl_Button(405, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(425, 30, 24, 24);
o->tooltip("Menu Item");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("menuitem"));
o->image(pixmap[16]);
- }
- { Fl_Button* o = new Fl_Button(380, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(400, 55, 24, 24);
o->tooltip("Choice");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Choice"));
o->image(pixmap[15]);
- }
- { Fl_Button* o = new Fl_Button(405, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(425, 55, 24, 24);
o->tooltip("Sub Menu");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("submenu"));
o->image(pixmap[18]);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(433, 3, 29, 79);
- o->box(FL_THIN_DOWN_BOX);
- { Fl_Button* o = new Fl_Button(435, 5, 25, 25);
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(457, 3, 29, 79);
+ { Fl_Button* o = new Fl_Button(459, 5, 24, 24);
o->tooltip("Browser");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Browser"));
o->image(pixmap[31]);
- }
- { Fl_Button* o = new Fl_Button(435, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(459, 30, 24, 24);
o->tooltip("Check Browser");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Check_Browser"));
o->image(pixmap[32]);
- }
- { Fl_Button* o = new Fl_Button(435, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(459, 55, 24, 24);
o->tooltip("File Browser");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_File_Browser"));
o->image(pixmap[33]);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(463, 3, 54, 79);
- o->box(FL_THIN_DOWN_BOX);
- { Fl_Button* o = new Fl_Button(465, 5, 25, 25);
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(491, 3, 55, 79);
+ { Fl_Button* o = new Fl_Button(493, 5, 24, 24);
o->tooltip("Box");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Box"));
o->image(pixmap[5]);
- }
- { Fl_Button* o = new Fl_Button(490, 5, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(518, 5, 24, 24);
o->tooltip("Clock");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Clock"));
o->image(pixmap[34]);
- }
- { Fl_Button* o = new Fl_Button(465, 30, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(493, 30, 24, 24);
o->tooltip("Help Browser");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Help_View"));
o->image(pixmap[35]);
- }
- { Fl_Button* o = new Fl_Button(465, 55, 25, 25);
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(493, 55, 24, 24);
o->tooltip("Progress");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Progress"));
o->image(pixmap[36]);
- }
+ } // Fl_Button* o
o->end();
- }
- o->set_non_modal();
- o->end();
- }
- return w;
+ } // Fl_Group* o
+ widgetbin_panel->set_non_modal();
+ widgetbin_panel->end();
+ } // Fl_Window* widgetbin_panel
+ return widgetbin_panel;
}
Fl_Double_Window *sourceview_panel=(Fl_Double_Window *)0;
Fl_Tabs *sv_tab=(Fl_Tabs *)0;
-CodeEditor *sv_source=(CodeEditor *)0;
+CodeViewer *sv_source=(CodeViewer *)0;
-CodeEditor *sv_header=(CodeEditor *)0;
+CodeViewer *sv_header=(CodeViewer *)0;
Fl_Light_Button *sv_autorefresh=(Fl_Light_Button *)0;
Fl_Light_Button *sv_autoposition=(Fl_Light_Button *)0;
Fl_Double_Window* make_sourceview() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = sourceview_panel = new Fl_Double_Window(520, 490, "Code View");
- w = o;
- o->callback((Fl_Callback*)toggle_sourceview_cb);
- { Fl_Tabs* o = sv_tab = new Fl_Tabs(10, 10, 500, 440);
- o->selection_color((Fl_Color)4);
- o->labelcolor(FL_BACKGROUND2_COLOR);
- o->callback((Fl_Callback*)update_sourceview_position_cb);
+ { sourceview_panel = new Fl_Double_Window(520, 490, "Code View");
+ sourceview_panel->callback((Fl_Callback*)toggle_sourceview_cb);
+ sourceview_panel->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
+ { sv_tab = new Fl_Tabs(10, 10, 500, 440);
+ sv_tab->selection_color((Fl_Color)4);
+ sv_tab->labelcolor(FL_BACKGROUND2_COLOR);
+ sv_tab->callback((Fl_Callback*)update_sourceview_position_cb);
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Source");
o->labelsize(13);
o->hide();
- { CodeEditor* o = sv_source = new CodeEditor(20, 50, 480, 390);
- o->box(FL_DOWN_FRAME);
- o->color(FL_BACKGROUND2_COLOR);
- o->selection_color(FL_SELECTION_COLOR);
- o->labeltype(FL_NORMAL_LABEL);
- o->labelfont(0);
- o->labelsize(14);
- o->labelcolor(FL_FOREGROUND_COLOR);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP);
- o->when(FL_WHEN_RELEASE);
- Fl_Group::current()->resizable(o);
- }
+ { sv_source = new CodeViewer(20, 50, 480, 390);
+ sv_source->box(FL_DOWN_FRAME);
+ sv_source->color(FL_BACKGROUND2_COLOR);
+ sv_source->selection_color(FL_SELECTION_COLOR);
+ sv_source->labeltype(FL_NORMAL_LABEL);
+ sv_source->labelfont(0);
+ sv_source->labelsize(14);
+ sv_source->labelcolor(FL_FOREGROUND_COLOR);
+ sv_source->textfont(4);
+ sv_source->textsize(11);
+ sv_source->align(FL_ALIGN_TOP);
+ sv_source->when(FL_WHEN_RELEASE);
+ Fl_Group::current()->resizable(sv_source);
+ } // CodeViewer* sv_source
o->end();
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Group* o
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Header");
o->labelsize(13);
- { CodeEditor* o = sv_header = new CodeEditor(20, 50, 480, 390);
- o->box(FL_DOWN_FRAME);
- o->color(FL_BACKGROUND2_COLOR);
- o->selection_color(FL_SELECTION_COLOR);
- o->labeltype(FL_NORMAL_LABEL);
- o->labelfont(0);
- o->labelsize(14);
- o->labelcolor(FL_FOREGROUND_COLOR);
- o->textfont(4);
- o->textsize(11);
- o->align(FL_ALIGN_TOP);
- o->when(FL_WHEN_RELEASE);
- Fl_Group::current()->resizable(o);
- }
+ { sv_header = new CodeViewer(20, 50, 480, 390);
+ sv_header->box(FL_DOWN_FRAME);
+ sv_header->color(FL_BACKGROUND2_COLOR);
+ sv_header->selection_color(FL_SELECTION_COLOR);
+ sv_header->labeltype(FL_NORMAL_LABEL);
+ sv_header->labelfont(0);
+ sv_header->labelsize(14);
+ sv_header->labelcolor(FL_FOREGROUND_COLOR);
+ sv_header->textfont(4);
+ sv_header->textsize(11);
+ sv_header->align(FL_ALIGN_TOP);
+ sv_header->when(FL_WHEN_RELEASE);
+ Fl_Group::current()->resizable(sv_header);
+ } // CodeViewer* sv_header
o->end();
- }
- o->end();
- Fl_Group::current()->resizable(o);
- }
+ } // Fl_Group* o
+ sv_tab->end();
+ Fl_Group::current()->resizable(sv_tab);
+ } // Fl_Tabs* sv_tab
{ Fl_Group* o = new Fl_Group(10, 460, 500, 20);
{ Fl_Button* o = new Fl_Button(10, 460, 61, 20, "Refresh");
o->labelsize(11);
o->callback((Fl_Callback*)update_sourceview_cb);
- }
+ } // Fl_Button* o
{ Fl_Light_Button* o = sv_autorefresh = new Fl_Light_Button(76, 460, 91, 20, "Auto-Refresh");
- o->labelsize(11);
+ sv_autorefresh->labelsize(11);
o->callback((Fl_Callback*)update_sourceview_cb);
- }
- { Fl_Light_Button* o = sv_autoposition = new Fl_Light_Button(172, 460, 89, 20, "Auto-Position");
- o->labelsize(11);
- }
+ } // Fl_Light_Button* sv_autorefresh
+ { sv_autoposition = new Fl_Light_Button(172, 460, 89, 20, "Auto-Position");
+ sv_autoposition->labelsize(11);
+ } // Fl_Light_Button* sv_autoposition
{ Fl_Button* o = new Fl_Button(460, 460, 50, 20, "Close");
o->labelsize(11);
o->callback((Fl_Callback*)toggle_sourceview_b_cb);
- }
+ } // Fl_Button* o
{ Fl_Box* o = new Fl_Box(265, 460, 190, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- o->size_range(384, 120);
- o->end();
- }
- return w;
+ } // Fl_Group* o
+ sourceview_panel->size_range(384, 120);
+ sourceview_panel->end();
+ } // Fl_Double_Window* sourceview_panel
+ return sourceview_panel;
}
//
-// End of "$Id: function_panel.cxx 4632 2005-11-03 22:16:52Z mike $".
+// End of "$Id: function_panel.cxx 5440 2006-09-17 18:31:35Z matt $".
//
diff --git a/fluid/function_panel.fl b/fluid/function_panel.fl
index 05528ce..0c767f6 100644
--- a/fluid/function_panel.fl
+++ b/fluid/function_panel.fl
@@ -1,9 +1,9 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0107
+version 1.0108
header_name {.h}
code_name {.cxx}
comment {//
-// "$Id: function_panel.fl 4638 2005-11-04 15:16:24Z matt $"
+// "$Id: function_panel.fl 5440 2006-09-17 18:31:35Z matt $"
//
// Code dialogs for the Fast Light Tool Kit (FLTK).
//
@@ -201,9 +201,9 @@ Function {make_declblock_panel()} {open
Function {make_decl_panel()} {open
} {
Fl_Window decl_panel {
- label {Declaration Properties}
- xywh {412 206 290 150} type Double hide resizable
- code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());}
+ label {Declaration Properties} open
+ xywh {412 206 290 150} type Double align 80 resizable
+ code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} visible
} {
Fl_Group {} {open
xywh {10 10 270 20}
@@ -212,8 +212,12 @@ Function {make_decl_panel()} {open
label public
tooltip {Make the declaration publicly accessible.} xywh {10 10 60 20} labelsize 11 when 0
}
+ Fl_Light_Button decl_static_button {
+ label static
+ tooltip {Prepend 'static' to private declarations in the source code, or 'extern' to public declarations in the header file.} xywh {80 10 60 20} labelsize 11 when 0
+ }
Fl_Box {} {
- xywh {80 10 200 20} resizable
+ xywh {150 10 130 20} resizable
}
}
Fl_Input decl_input {
@@ -352,332 +356,332 @@ Function {type_make_cb(Fl_Widget*w,void*d)} {open return_type void
Function {make_widgetbin()} {open
} {
Fl_Window widgetbin_panel {
- label {Widget Bin}
- xywh {413 185 520 85} type Single non_modal visible
+ label {Widget Bin} selected
+ xywh {411 171 551 85} type Single align 80 non_modal visible
} {
Fl_Group {} {
- xywh {3 3 79 79} box THIN_DOWN_BOX
+ xywh {3 3 79 79}
} {
Fl_Button {} {
user_data {"Function"}
callback type_make_cb
- tooltip Function xywh {5 5 25 25} box THIN_UP_BOX
+ tooltip Function xywh {5 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[7]);}
}
Fl_Button {} {
user_data {"Class"}
callback type_make_cb
- tooltip Class xywh {30 5 25 25} box THIN_UP_BOX
+ tooltip Class xywh {30 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[12]);}
}
Fl_Button {} {
user_data {"comment"}
callback type_make_cb
- tooltip Comment xywh {55 5 25 25} box THIN_UP_BOX
+ tooltip Comment xywh {55 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[46]);}
}
Fl_Button {} {
user_data {"Code"}
callback type_make_cb
- tooltip Code xywh {5 30 25 25} box THIN_UP_BOX
+ tooltip Code xywh {5 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[8]);}
}
Fl_Button {} {
user_data {"CodeBlock"}
callback type_make_cb
- tooltip {Code Block} xywh {30 30 25 25} box THIN_UP_BOX
+ tooltip {Code Block} xywh {30 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[9]);}
}
Fl_Button {} {
user_data {"widget_class"}
callback type_make_cb
- tooltip {Widget Class} xywh {55 30 25 25} box THIN_UP_BOX
+ tooltip {Widget Class} xywh {55 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[48]);}
}
Fl_Button {} {
user_data {"decl"}
callback type_make_cb
- tooltip Declaration xywh {5 55 25 25} box THIN_UP_BOX
+ tooltip Declaration xywh {5 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[10]);}
}
Fl_Button {} {
user_data {"declblock"}
- callback type_make_cb selected
- tooltip {Declaration Block} xywh {30 55 25 25} box THIN_UP_BOX
+ callback type_make_cb
+ tooltip {Declaration Block} xywh {30 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[11]);}
}
}
Fl_Group {} {
- xywh {83 3 79 79} box THIN_DOWN_BOX
+ xywh {87 3 79 79}
} {
Fl_Button {} {
user_data {"Fl_Window"}
callback type_make_cb
- tooltip Window xywh {85 5 25 25} box THIN_UP_BOX
+ tooltip Window xywh {89 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[1]);}
}
Fl_Button {} {
user_data {"Fl_Group"}
callback type_make_cb
- tooltip Group xywh {110 5 25 25} box THIN_UP_BOX
+ tooltip Group xywh {114 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[6]);}
}
Fl_Button {} {
user_data {"Fl_Pack"}
callback type_make_cb
- tooltip Pack xywh {135 5 25 25} box THIN_UP_BOX
+ tooltip Pack xywh {139 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[22]);}
}
Fl_Button {} {
user_data {"Fl_Tabs"}
callback type_make_cb
- tooltip Tabs xywh {85 30 25 25} box THIN_UP_BOX
+ tooltip Tabs xywh {89 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[13]);}
}
Fl_Button {} {
user_data {"Fl_Scroll"}
callback type_make_cb
- tooltip Scroll xywh {110 30 25 25} box THIN_UP_BOX
+ tooltip Scroll xywh {114 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[19]);}
}
Fl_Button {} {
user_data {"Fl_Tile"}
callback type_make_cb
- tooltip Tile xywh {85 55 25 25} box THIN_UP_BOX
+ tooltip Tile xywh {89 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[20]);}
}
Fl_Button {} {
user_data {"Fl_Wizard"}
callback type_make_cb
- tooltip Wizard xywh {110 55 25 25} box THIN_UP_BOX
+ tooltip Wizard xywh {114 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[21]);}
}
}
Fl_Group {} {
- xywh {163 3 54 79} box THIN_DOWN_BOX
+ xywh {171 3 54 79}
} {
Fl_Button {} {
user_data {"Fl_Button"}
callback type_make_cb
- tooltip Button xywh {165 5 25 25} box THIN_UP_BOX
+ tooltip Button xywh {173 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[2]);}
}
Fl_Button {} {
user_data {"Fl_Return_Button"}
callback type_make_cb
- tooltip {Return Button} xywh {190 5 25 25} box THIN_UP_BOX
+ tooltip {Return Button} xywh {198 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[23]);}
}
Fl_Button {} {
user_data {"Fl_Light_Button"}
callback type_make_cb
- tooltip {Light Button} xywh {165 30 25 25} box THIN_UP_BOX
+ tooltip {Light Button} xywh {173 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[24]);}
}
Fl_Button {} {
user_data {"Fl_Repeat_Button"}
callback type_make_cb
- tooltip {Repeat Button} xywh {190 30 25 25} box THIN_UP_BOX
+ tooltip {Repeat Button} xywh {198 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[25]);}
}
Fl_Button {} {
user_data {"Fl_Check_Button"}
callback type_make_cb
- tooltip {Check Button} xywh {165 55 25 25} box THIN_UP_BOX
+ tooltip {Check Button} xywh {173 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[3]);}
}
Fl_Button {} {
user_data {"Fl_Round_Button"}
callback type_make_cb
- tooltip {Round Button} xywh {190 55 25 25} box THIN_UP_BOX
+ tooltip {Round Button} xywh {198 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[4]);}
}
}
Fl_Group {} {
- xywh {218 3 104 79} box THIN_DOWN_BOX
+ xywh {230 3 104 79}
} {
Fl_Button {} {
user_data {"Fl_Slider"}
callback type_make_cb
- tooltip Slider xywh {220 5 25 25} box THIN_UP_BOX
+ tooltip Slider xywh {232 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[37]);}
}
Fl_Button {} {
user_data {"Fl_Scrollbar"}
callback type_make_cb
- tooltip {Scroll Bar} xywh {245 5 25 25} box THIN_UP_BOX
+ tooltip {Scroll Bar} xywh {257 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[38]);}
}
Fl_Button {} {
user_data {"Fl_Value_Slider"}
callback type_make_cb
- tooltip {Value Slider} xywh {270 5 25 25} box THIN_UP_BOX
+ tooltip {Value Slider} xywh {282 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[39]);}
}
Fl_Button {} {
user_data {"Fl_Value_Output"}
callback type_make_cb
- tooltip {Value Output} xywh {295 5 25 25} box THIN_UP_BOX
+ tooltip {Value Output} xywh {307 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[45]);}
}
Fl_Button {} {
user_data {"Fl_Adjuster"}
callback type_make_cb
- tooltip Adjuster xywh {220 30 25 25} box THIN_UP_BOX
+ tooltip Adjuster xywh {232 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[40]);}
}
Fl_Button {} {
user_data {"Fl_Counter"}
callback type_make_cb
- tooltip Counter xywh {245 30 25 25} box THIN_UP_BOX
+ tooltip Counter xywh {257 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[41]);}
}
Fl_Button {} {
user_data {"Fl_Dial"}
callback type_make_cb
- tooltip Dial xywh {270 30 25 25} box THIN_UP_BOX
+ tooltip Dial xywh {282 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[42]);}
}
Fl_Button {} {
user_data {"Fl_Roller"}
callback type_make_cb
- tooltip Roller xywh {220 55 25 25} box THIN_UP_BOX
+ tooltip Roller xywh {232 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[43]);}
}
Fl_Button {} {
user_data {"Fl_Spinner"}
callback type_make_cb
- tooltip Spinner xywh {245 55 25 25} box THIN_UP_BOX
+ tooltip Spinner xywh {257 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[47]);}
}
Fl_Button {} {
user_data {"Fl_Value_Input"}
callback type_make_cb
- tooltip {Value Input} xywh {270 55 25 25} box THIN_UP_BOX
+ tooltip {Value Input} xywh {282 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[44]);}
}
}
Fl_Group {} {
- xywh {323 3 54 79} box THIN_DOWN_BOX
+ xywh {339 3 54 79}
} {
Fl_Button {} {
user_data {"Fl_Input"}
callback type_make_cb
- tooltip Input xywh {325 5 25 25} box THIN_UP_BOX
+ tooltip Input xywh {341 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[14]);}
}
Fl_Button {} {
user_data {"Fl_Output"}
callback type_make_cb
- tooltip Output xywh {350 5 25 25} box THIN_UP_BOX
+ tooltip Output xywh {366 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[27]);}
}
Fl_Button {} {
user_data {"Fl_Text_Editor"}
callback type_make_cb
- tooltip {Text Edit} xywh {325 30 25 25} box THIN_UP_BOX
+ tooltip {Text Edit} xywh {341 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[29]);}
}
Fl_Button {} {
user_data {"Fl_Text_Display"}
callback type_make_cb
- tooltip {Text Display} xywh {350 30 25 25} box THIN_UP_BOX
+ tooltip {Text Display} xywh {366 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[28]);}
}
Fl_Button {} {
user_data {"Fl_File_Input"}
callback type_make_cb
- tooltip {File Input} xywh {325 55 25 25} box THIN_UP_BOX
+ tooltip {File Input} xywh {341 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[30]);}
}
}
Fl_Group {} {
- xywh {378 3 54 79} box THIN_DOWN_BOX
+ xywh {398 3 54 79}
} {
Fl_Button {} {
user_data {"Fl_Menu_Bar"}
callback type_make_cb
- tooltip {Menu Bar} xywh {380 5 25 25} box THIN_UP_BOX
+ tooltip {Menu Bar} xywh {400 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[17]);}
}
Fl_Button {} {
user_data {"Fl_Input_Choice"}
callback type_make_cb
- tooltip {Input Choice} xywh {405 5 25 25} box THIN_UP_BOX
+ tooltip {Input Choice} xywh {425 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[15]);}
}
Fl_Button {} {
user_data {"Fl_Menu_Button"}
callback type_make_cb
- tooltip {Menu Button} xywh {380 30 25 25} box THIN_UP_BOX
+ tooltip {Menu Button} xywh {400 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[26]);}
}
Fl_Button {} {
user_data {"menuitem"}
callback type_make_cb
- tooltip {Menu Item} xywh {405 30 25 25} box THIN_UP_BOX
+ tooltip {Menu Item} xywh {425 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[16]);}
}
Fl_Button {} {
user_data {"Fl_Choice"}
callback type_make_cb
- tooltip Choice xywh {380 55 25 25} box THIN_UP_BOX
+ tooltip Choice xywh {400 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[15]);}
}
Fl_Button {} {
user_data {"submenu"}
callback type_make_cb
- tooltip {Sub Menu} xywh {405 55 25 25} box THIN_UP_BOX
+ tooltip {Sub Menu} xywh {425 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[18]);}
}
}
Fl_Group {} {
- xywh {433 3 29 79} box THIN_DOWN_BOX
+ xywh {457 3 29 79}
} {
Fl_Button {} {
user_data {"Fl_Browser"}
callback type_make_cb
- tooltip Browser xywh {435 5 25 25} box THIN_UP_BOX
+ tooltip Browser xywh {459 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[31]);}
}
Fl_Button {} {
user_data {"Fl_Check_Browser"}
callback type_make_cb
- tooltip {Check Browser} xywh {435 30 25 25} box THIN_UP_BOX
+ tooltip {Check Browser} xywh {459 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[32]);}
}
Fl_Button {} {
user_data {"Fl_File_Browser"}
callback type_make_cb
- tooltip {File Browser} xywh {435 55 25 25} box THIN_UP_BOX
+ tooltip {File Browser} xywh {459 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[33]);}
}
}
Fl_Group {} {
- xywh {463 3 54 79} box THIN_DOWN_BOX
+ xywh {491 3 55 79}
} {
Fl_Button {} {
user_data {"Fl_Box"}
callback type_make_cb
- tooltip Box xywh {465 5 25 25} box THIN_UP_BOX
+ tooltip Box xywh {493 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[5]);}
}
Fl_Button {} {
user_data {"Fl_Clock"}
callback type_make_cb
- tooltip Clock xywh {490 5 25 25} box THIN_UP_BOX
+ tooltip Clock xywh {518 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[34]);}
}
Fl_Button {} {
user_data {"Fl_Help_View"}
callback type_make_cb
- tooltip {Help Browser} xywh {465 30 25 25} box THIN_UP_BOX
+ tooltip {Help Browser} xywh {493 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[35]);}
}
Fl_Button {} {
user_data {"Fl_Progress"}
callback type_make_cb
- tooltip Progress xywh {465 55 25 25} box THIN_UP_BOX
+ tooltip Progress xywh {493 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[36]);}
}
}
@@ -689,7 +693,7 @@ Function {make_sourceview()} {open
Fl_Window sourceview_panel {
label {Code View}
callback toggle_sourceview_cb
- xywh {533 374 520 490} type Double resizable size_range {384 120 0 0} visible
+ xywh {533 374 520 490} type Double align 80 resizable size_range {384 120 0 0} visible
} {
Fl_Tabs sv_tab {
callback update_sourceview_position_cb
@@ -702,7 +706,7 @@ Function {make_sourceview()} {open
Fl_Text_Editor sv_source {
xywh {20 50 480 390} textfont 4 textsize 11 resizable
code0 {\#include "CodeEditor.h"}
- class CodeEditor
+ class CodeViewer
}
}
Fl_Group {} {
@@ -712,7 +716,7 @@ Function {make_sourceview()} {open
Fl_Text_Editor sv_header {
xywh {20 50 480 390} textfont 4 textsize 11 resizable
code0 {\#include "CodeEditor.h"}
- class CodeEditor
+ class CodeViewer
}
}
}
@@ -747,6 +751,6 @@ Function {make_sourceview()} {open
comment {
//
-// End of "$Id: function_panel.fl 4638 2005-11-04 15:16:24Z matt $".
+// End of "$Id: function_panel.fl 5440 2006-09-17 18:31:35Z matt $".
//} {in_source in_header
}
diff --git a/fluid/function_panel.h b/fluid/function_panel.h
index 9094725..1f65611 100644
--- a/fluid/function_panel.h
+++ b/fluid/function_panel.h
@@ -1,5 +1,5 @@
//
-// "$Id: function_panel.h 4630 2005-11-03 20:43:19Z matt $"
+// "$Id: function_panel.h 5440 2006-09-17 18:31:35Z matt $"
//
// Code dialogs for the Fast Light Tool Kit (FLTK).
//
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#ifndef function_panel_h
#define function_panel_h
@@ -66,6 +66,7 @@ extern Fl_Light_Button *declblock_public_button;
Fl_Double_Window* make_declblock_panel();
extern Fl_Double_Window *decl_panel;
extern Fl_Light_Button *decl_public_button;
+extern Fl_Light_Button *decl_static_button;
extern Fl_Input *decl_input;
extern Fl_Return_Button *decl_panel_ok;
extern Fl_Button *decl_panel_cancel;
@@ -97,8 +98,8 @@ extern Fl_Double_Window *sourceview_panel;
#include <FL/Fl_Tabs.H>
extern void update_sourceview_position_cb(Fl_Tabs*, void*);
extern Fl_Tabs *sv_tab;
-extern CodeEditor *sv_source;
-extern CodeEditor *sv_header;
+extern CodeViewer *sv_source;
+extern CodeViewer *sv_header;
extern void update_sourceview_cb(Fl_Button*, void*);
extern Fl_Light_Button *sv_autorefresh;
extern Fl_Light_Button *sv_autoposition;
@@ -107,5 +108,5 @@ Fl_Double_Window* make_sourceview();
#endif
//
-// End of "$Id: function_panel.h 4630 2005-11-03 20:43:19Z matt $".
+// End of "$Id: function_panel.h 5440 2006-09-17 18:31:35Z matt $".
//
diff --git a/fluid/makedepend b/fluid/makedepend
index 86b86c1..2e02082 100644
--- a/fluid/makedepend
+++ b/fluid/makedepend
@@ -1,327 +1,294 @@
-# DO NOT DELETE
-
-CodeEditor.o: CodeEditor.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-CodeEditor.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
-CodeEditor.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Group.H
-CodeEditor.o: ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-CodeEditor.o: ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H
-Fl_Function_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Function_Type.o: ../FL/Fl_Preferences.H ../FL/Fl_File_Chooser.H
-Fl_Function_Type.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-Fl_Function_Type.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H
-Fl_Function_Type.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-Fl_Function_Type.o: ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H
-Fl_Function_Type.o: ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H
-Fl_Function_Type.o: ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-Fl_Function_Type.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-Fl_Function_Type.o: ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H
-Fl_Function_Type.o: ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-Fl_Function_Type.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-Fl_Function_Type.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fl_Function_Type.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H Fl_Type.h
-Fl_Function_Type.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H Fluid_Image.h
-Fl_Function_Type.o: ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H
-Fl_Function_Type.o: ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
-Fl_Function_Type.o: ../FL/Fl_Input_Choice.H ../FL/Fl_Window.H
-Fl_Function_Type.o: ../FL/Fl_Menu_Bar.H ../FL/fl_show_input.H ../FL/fl_ask.H
-Fl_Function_Type.o: ../src/flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Function_Type.o: function_panel.h ../FL/Fl_Light_Button.H CodeEditor.h
-Fl_Function_Type.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
-Fl_Function_Type.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H
-Fl_Function_Type.o: ../FL/Fl_Text_Buffer.H comments.h
-Fl_Group_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Group_Type.o: ../FL/Fl_Group.H ../FL/fl_message.H ../FL/fl_ask.H
-Fl_Group_Type.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
-Fl_Group_Type.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-Fl_Group_Type.o: Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/fl_draw.H
-Fl_Group_Type.o: ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Pack.H
-Fl_Group_Type.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
-Fl_Group_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H
-Fl_Group_Type.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Window.H
-Fl_Group_Type.o: ../FL/Fl_Menu_Bar.H ../src/flstring.h ../FL/Fl_Export.H
-Fl_Group_Type.o: ../config.h ../FL/Fl_Scroll.H ../FL/Fl_Scrollbar.H
-Fl_Group_Type.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_Menu_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Menu_Type.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
-Fl_Menu_Type.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-Fl_Menu_Type.o: Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/fl_draw.H
-Fl_Menu_Type.o: ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Pack.H
-Fl_Menu_Type.o: ../FL/Fl_Group.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
-Fl_Menu_Type.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H
-Fl_Menu_Type.o: ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fl_Menu_Type.o: ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H alignment_panel.h
-Fl_Menu_Type.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H
-Fl_Menu_Type.o: ../FL/fl_draw.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-Fl_Menu_Type.o: ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H
-Fl_Menu_Type.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-Fl_Menu_Type.o: ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H ../FL/Fl_Button.H
-Fl_Menu_Type.o: ../FL/Fl_Box.H ../FL/Fl_Light_Button.H
-Fl_Menu_Type.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
-Fl_Menu_Type.o: ../FL/Fl_Button.H ../FL/Fl_Spinner.H ../FL/Fl_Repeat_Button.H
-Fl_Menu_Type.o: ../FL/Fl.H ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H
-Fl_Menu_Type.o: ../FL/fl_message.H ../FL/fl_ask.H ../src/flstring.h
-Fl_Menu_Type.o: ../FL/Fl_Export.H ../config.h ../FL/Fl_Output.H
-Fl_Menu_Type.o: ../FL/Fl_Input.H Shortcut_Button.h
-Fl_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Type.o: ../FL/Fl_Browser_.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-Fl_Type.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_Type.o: ../FL/fl_draw.H ../src/flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Type.o: Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H
-Fl_Type.o: ../FL/Fl_Image.H Fluid_Image.h ../FL/Fl_Shared_Image.H
-Fl_Type.o: ../FL/Fl_Tabs.H ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H
-Fl_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-Fl_Type.o: ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H
-Fl_Type.o: ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H undo.h
-Fl_Type.o: ../FL/Fl_Pixmap.H pixmaps/lock.xpm pixmaps/flWindow.xpm
-Fl_Type.o: pixmaps/flButton.xpm pixmaps/flCheckButton.xpm
-Fl_Type.o: pixmaps/flRoundButton.xpm pixmaps/flBox.xpm pixmaps/flGroup.xpm
-Fl_Type.o: pixmaps/flFunction.xpm pixmaps/flCode.xpm pixmaps/flCodeBlock.xpm
-Fl_Type.o: pixmaps/flComment.xpm pixmaps/flDeclaration.xpm
-Fl_Type.o: pixmaps/flDeclarationBlock.xpm pixmaps/flClass.xpm
-Fl_Type.o: pixmaps/flTabs.xpm pixmaps/flInput.xpm pixmaps/flChoice.xpm
-Fl_Type.o: pixmaps/flMenuitem.xpm pixmaps/flMenubar.xpm pixmaps/flSubmenu.xpm
-Fl_Type.o: pixmaps/flScroll.xpm pixmaps/flTile.xpm pixmaps/flWizard.xpm
-Fl_Type.o: pixmaps/flPack.xpm pixmaps/flReturnButton.xpm
-Fl_Type.o: pixmaps/flLightButton.xpm pixmaps/flRepeatButton.xpm
-Fl_Type.o: pixmaps/flMenuButton.xpm pixmaps/flOutput.xpm
-Fl_Type.o: pixmaps/flTextDisplay.xpm pixmaps/flTextEdit.xpm
-Fl_Type.o: pixmaps/flFileInput.xpm pixmaps/flBrowser.xpm
-Fl_Type.o: pixmaps/flCheckBrowser.xpm pixmaps/flFileBrowser.xpm
-Fl_Type.o: pixmaps/flClock.xpm pixmaps/flHelp.xpm pixmaps/flProgress.xpm
-Fl_Type.o: pixmaps/flSlider.xpm pixmaps/flScrollBar.xpm
-Fl_Type.o: pixmaps/flValueSlider.xpm pixmaps/flAdjuster.xpm
-Fl_Type.o: pixmaps/flCounter.xpm pixmaps/flDial.xpm pixmaps/flRoller.xpm
-Fl_Type.o: pixmaps/flValueInput.xpm pixmaps/flValueOutput.xpm
-Fl_Type.o: pixmaps/flSpinner.xpm pixmaps/flWidgetClass.xpm
-Fl_Widget_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Widget_Type.o: ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fl_Widget_Type.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H
-Fl_Widget_Type.o: ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H
-Fl_Widget_Type.o: ../FL/Fl_Image.H Fluid_Image.h ../FL/Fl_Shared_Image.H
-Fl_Widget_Type.o: ../FL/fl_draw.H ../FL/Fl_Tabs.H ../FL/Fl_Group.H
-Fl_Widget_Type.o: ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
-Fl_Widget_Type.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H
-Fl_Widget_Type.o: ../FL/Fl_Input_Choice.H ../FL/Fl_Window.H
-Fl_Widget_Type.o: ../FL/Fl_Menu_Bar.H alignment_panel.h
-Fl_Widget_Type.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H
-Fl_Widget_Type.o: ../FL/fl_draw.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-Fl_Widget_Type.o: ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H
-Fl_Widget_Type.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-Fl_Widget_Type.o: ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H ../FL/Fl_Button.H
-Fl_Widget_Type.o: ../FL/Fl_Box.H ../FL/Fl_Light_Button.H
-Fl_Widget_Type.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
-Fl_Widget_Type.o: ../FL/Fl_Button.H ../FL/Fl_Spinner.H
-Fl_Widget_Type.o: ../FL/Fl_Repeat_Button.H ../FL/Fl.H
-Fl_Widget_Type.o: ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H
-Fl_Widget_Type.o: ../FL/fl_message.H ../FL/fl_ask.H ../FL/Fl_Slider.H
-Fl_Widget_Type.o: ../src/flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Widget_Type.o: widget_panel.h ../FL/Fl_Value_Input.H ../FL/Fl_Input.H
-Fl_Widget_Type.o: Shortcut_Button.h CodeEditor.h ../FL/Fl_Text_Editor.H
-Fl_Widget_Type.o: ../FL/Fl_Text_Display.H ../FL/fl_show_colormap.H
-Fl_Window_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Window_Type.o: ../FL/Fl_Overlay_Window.H ../FL/Fl_Double_Window.H
-Fl_Window_Type.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-Fl_Window_Type.o: ../FL/fl_message.H ../FL/fl_ask.H ../FL/fl_draw.H ../FL/x.H
-Fl_Window_Type.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H
-Fl_Window_Type.o: ../FL/Fl_Round_Button.H ../FL/Fl_Light_Button.H
-Fl_Window_Type.o: ../FL/Fl_Button.H Fl_Widget_Type.h Fl_Type.h
-Fl_Window_Type.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H
-Fl_Window_Type.o: Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/Fl_Tabs.H
-Fl_Window_Type.o: ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H
-Fl_Window_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-Fl_Window_Type.o: ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H
-Fl_Window_Type.o: ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H
-Fl_Window_Type.o: undo.h alignment_panel.h ../FL/Fl_Text_Buffer.H
-Fl_Window_Type.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H
-Fl_Window_Type.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_Window_Type.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Double_Window.H
-Fl_Window_Type.o: ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H ../FL/Fl_Button.H
-Fl_Window_Type.o: ../FL/Fl_Box.H ../FL/Fl_Light_Button.H
-Fl_Window_Type.o: ../FL/Fl_Check_Button.H ../FL/Fl_Spinner.H
-Fl_Window_Type.o: ../FL/Fl_Repeat_Button.H ../FL/Fl.H
-Fl_Window_Type.o: ../FL/Fl_Return_Button.H widget_panel.h
-Fl_Window_Type.o: ../FL/Fl_Value_Input.H ../FL/Fl_Input.H Shortcut_Button.h
-Fl_Window_Type.o: CodeEditor.h ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H
-Fl_Window_Type.o: ../src/flstring.h ../FL/Fl_Export.H ../config.h
-Fluid_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fluid_Image.o: ../FL/Fl_Widget.H Fl_Type.h ../FL/Fl_Menu.H
-Fluid_Image.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-Fluid_Image.o: Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/fl_draw.H
-Fluid_Image.o: ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Pack.H
-Fluid_Image.o: ../FL/Fl_Group.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
-Fluid_Image.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H
-Fluid_Image.o: ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fluid_Image.o: ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H ../src/flstring.h
-Fluid_Image.o: ../FL/Fl_Export.H ../config.h ../FL/filename.H
-Fluid_Image.o: ../FL/Fl_File_Chooser.H ../FL/Fl_Double_Window.H
-Fluid_Image.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H
-Fluid_Image.o: ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H
-Fluid_Image.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-Fluid_Image.o: ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H
-Fluid_Image.o: ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-Fluid_Image.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-Fluid_Image.o: ../FL/Fl_File_Input.H ../FL/Fl_Return_Button.H ../FL/fl_ask.H
-about_panel.o: about_panel.h ../FL/Fl.H ../FL/Enumerations.H
-about_panel.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-about_panel.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H
-about_panel.o: ../FL/Fl_Button.H ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
-about_panel.o: ../FL/Fl_Pixmap.H ../FL/Fl_Image.H
-align_widget.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-align_widget.o: ../FL/Fl_Window.H Fl_Widget_Type.h Fl_Type.h
-align_widget.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H
-align_widget.o: ../FL/Fl_Widget.H ../FL/Fl_Image.H Fluid_Image.h
-align_widget.o: ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H
-align_widget.o: ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
-align_widget.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
-align_widget.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H
-align_widget.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Menu_Bar.H undo.h
-alignment_panel.o: alignment_panel.h ../FL/Fl.H ../FL/Enumerations.H
-alignment_panel.o: ../FL/Fl_Export.H ../FL/Fl_Text_Buffer.H
-alignment_panel.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Group.H
-alignment_panel.o: ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-alignment_panel.o: ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H
-alignment_panel.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-alignment_panel.o: ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H
-alignment_panel.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Tabs.H
-alignment_panel.o: ../FL/Fl_Group.H ../FL/Fl_Box.H ../FL/Fl_Input.H
-alignment_panel.o: ../FL/Fl_Input_.H ../FL/Fl_Light_Button.H
-alignment_panel.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-alignment_panel.o: ../FL/Fl_Image.H ../FL/Fl_Check_Button.H
-alignment_panel.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-alignment_panel.o: ../FL/Fl_Spinner.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H
-alignment_panel.o: ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H
-code.o: ../src/flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-code.o: ../FL/Enumerations.H ../FL/Fl_Export.H Fl_Type.h ../FL/Fl_Widget.H
-code.o: ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H
-code.o: ../FL/Fl_Image.H Fluid_Image.h ../FL/Fl_Shared_Image.H
-code.o: ../FL/fl_draw.H ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Pack.H
-code.o: ../FL/Fl_Group.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
-code.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H
-code.o: ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-code.o: ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H alignment_panel.h
-code.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H
-code.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-code.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-code.o: ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H ../FL/Fl_Button.H
-code.o: ../FL/Fl_Box.H ../FL/Fl_Light_Button.H ../FL/Fl_Check_Button.H
-code.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Spinner.H
-code.o: ../FL/Fl_Repeat_Button.H ../FL/Fl.H ../FL/Fl_Return_Button.H
-code.o: ../FL/Fl_Round_Button.H ../FL/filename.H
-factory.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H
-factory.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-factory.o: ../FL/Fl_Pixmap.H ../src/flstring.h ../FL/Fl_Export.H ../config.h
-factory.o: undo.h Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H
-factory.o: ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h
-factory.o: ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H
-factory.o: ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H
-factory.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-factory.o: ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H
-factory.o: ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H
-factory.o: ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H
-factory.o: ../FL/Fl_Button.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H
-factory.o: ../FL/Fl_Light_Button.H ../FL/Fl_Check_Button.H
-factory.o: ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Browser.H
-factory.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-factory.o: ../FL/Fl_Valuator.H ../FL/Fl_Check_Browser.H
-factory.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H ../FL/Fl_File_Icon.H
-factory.o: ../FL/filename.H ../FL/Fl_Counter.H ../FL/Fl_Spinner.H
-factory.o: ../FL/Fl_File_Input.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H
-factory.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
-factory.o: ../FL/Fl_Text_Display.H ../FL/Fl_Clock.H ../FL/Fl_Help_View.H
-factory.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Progress.H ../FL/Fl_Adjuster.H
-factory.o: ../FL/Fl_Dial.H ../FL/Fl_Roller.H ../FL/Fl_Scrollbar.H
-factory.o: ../FL/Fl_Output.H ../FL/Fl_Input.H ../FL/Fl_Value_Input.H
-factory.o: ../FL/Fl_Value_Output.H ../FL/Fl_Value_Slider.H
-factory.o: ../FL/Fl_Multi_Label.H
-file.o: ../src/flstring.h ../FL/Fl_Export.H ../config.h alignment_panel.h
-file.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-file.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H
-file.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-file.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H
-file.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Preferences.H
-file.o: ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H ../FL/Fl_Button.H
-file.o: ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Box.H ../FL/Fl_Input.H
-file.o: ../FL/Fl_Input_.H ../FL/Fl_Light_Button.H ../FL/Fl_Choice.H
-file.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H
-file.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-file.o: ../FL/Fl_Spinner.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H
-file.o: ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H ../FL/fl_message.H
-file.o: ../FL/fl_ask.H Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Menu.H
-file.o: Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Pack.H
-file.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
-file.o: ../FL/Fl_Input_Choice.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H
-fluid.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fluid.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-fluid.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Button.H
-fluid.o: ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/Fl_Help_Dialog.H
-fluid.o: ../FL/Fl_Help_View.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-fluid.o: ../FL/Fl_Valuator.H ../FL/fl_draw.H ../FL/Fl_Shared_Image.H
-fluid.o: ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-fluid.o: ../FL/Fl_Hold_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-fluid.o: ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-fluid.o: ../FL/Fl_Image.H ../FL/fl_ask.H ../FL/fl_draw.H
-fluid.o: ../FL/Fl_File_Chooser.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-fluid.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H
-fluid.o: ../FL/Fl_File_Icon.H ../FL/filename.H ../FL/Fl_Check_Button.H
-fluid.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_File_Input.H
-fluid.o: ../FL/Fl_Return_Button.H ../FL/fl_message.H ../FL/fl_ask.H
-fluid.o: ../FL/filename.H ../src/flstring.h ../FL/Fl_Export.H ../config.h
-fluid.o: alignment_panel.h ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H
-fluid.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H
-fluid.o: ../FL/Fl_Tabs.H ../FL/Fl_Light_Button.H ../FL/Fl_Spinner.H
-fluid.o: ../FL/Fl_Repeat_Button.H ../FL/Fl_Round_Button.H function_panel.h
-fluid.o: CodeEditor.h ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H
-fluid.o: ../FL/Fl_Window.H template_panel.h ../FL/Fl_Browser.H
-fluid.o: print_panel.cxx print_panel.h ../FL/Fl_Progress.H ../FL/Fl_Pixmap.H
-fluid.o: about_panel.h undo.h Fl_Type.h ../FL/Fl_Menu.H Fluid_Image.h
-fluid.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H
-fluid.o: ../FL/Fl_Menu_.H ../FL/Fl_Input_Choice.H
-function_panel.o: function_panel.h ../FL/Fl.H ../FL/Enumerations.H
-function_panel.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H
-function_panel.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-function_panel.o: ../FL/Fl_Group.H ../FL/Fl_Light_Button.H ../FL/Fl_Box.H
-function_panel.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H
-function_panel.o: ../FL/Fl_Button.H ../FL/Fl_Button.H CodeEditor.h
-function_panel.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
-function_panel.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H
-function_panel.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-function_panel.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Menu_Button.H
-function_panel.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H
-function_panel.o: ../FL/Fl_Window.H ../FL/Fl_Tabs.H ../FL/Fl_Pixmap.H
-function_panel.o: Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H Fluid_Image.h
-function_panel.o: ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Pack.H
-function_panel.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H
-function_panel.o: ../FL/Fl_Input_Choice.H ../FL/Fl_Menu_Bar.H undo.h
-template_panel.o: template_panel.h ../FL/Fl.H ../FL/Enumerations.H
-template_panel.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H
-template_panel.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-template_panel.o: ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H
-template_panel.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Box.H
-template_panel.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Group.H
-template_panel.o: ../FL/Fl_Button.H ../FL/Fl_Return_Button.H
-template_panel.o: ../FL/Fl_Button.H ../src/flstring.h ../FL/Fl_Export.H
-template_panel.o: ../config.h ../FL/filename.H ../FL/fl_ask.H
-template_panel.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-template_panel.o: ../FL/Fl_Preferences.H
-undo.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H Fl_Type.h
-undo.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H
-undo.o: ../FL/Fl_Widget.H ../FL/Fl_Image.H Fluid_Image.h
-undo.o: ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H
-undo.o: ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H
-undo.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-undo.o: ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H
-undo.o: ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H undo.h
-undo.o: ../FL/Fl_Preferences.H ../src/flstring.h ../FL/Fl_Export.H
-undo.o: ../config.h
-widget_panel.o: widget_panel.h ../FL/Fl.H ../FL/Enumerations.H
-widget_panel.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-widget_panel.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Tabs.H
-widget_panel.o: ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-widget_panel.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-widget_panel.o: ../FL/Fl_Image.H ../FL/Fl_Button.H ../FL/Fl_Box.H
-widget_panel.o: ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H ../FL/Fl_Input.H
-widget_panel.o: ../FL/Fl_Light_Button.H Shortcut_Button.h CodeEditor.h
-widget_panel.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
-widget_panel.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Scrollbar.H
-widget_panel.o: ../FL/Fl_Slider.H ../FL/Fl_Text_Buffer.H
-widget_panel.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+CodeEditor.o: CodeEditor.cxx CodeEditor.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H \
+ ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H
+Fl_Function_Type.o: Fl_Function_Type.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Preferences.H ../FL/Fl_File_Chooser.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H \
+ ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H \
+ Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H \
+ ../FL/fl_show_input.H ../FL/fl_ask.H ../src/flstring.h \
+ ../FL/Fl_Export.H ../config.h function_panel.h ../FL/Fl_Light_Button.H \
+ CodeEditor.h ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H \
+ ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Text_Buffer.H \
+ comments.h
+Fl_Group_Type.o: Fl_Group_Type.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_message.H \
+ ../FL/fl_ask.H Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H ../src/flstring.h \
+ ../FL/Fl_Export.H ../config.h ../FL/Fl_Scroll.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
+Fl_Menu_Type.o: Fl_Menu_Type.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H \
+ Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H \
+ alignment_panel.h ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H \
+ ../FL/fl_draw.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H \
+ ../FL/Fl_Button.H ../FL/Fl_Box.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Spinner.H ../FL/Enumerations.H ../FL/Fl_Repeat_Button.H \
+ ../FL/Fl.H ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H \
+ ../FL/fl_message.H ../FL/fl_ask.H ../src/flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/Fl_Output.H ../FL/Fl_Input.H Shortcut_Button.h
+Fl_Type.o: Fl_Type.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Browser_.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/fl_draw.H ../src/flstring.h ../FL/Fl_Export.H ../config.h \
+ Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H undo.h ../FL/Fl_Pixmap.H \
+ pixmaps/lock.xpm pixmaps/flWindow.xpm pixmaps/flButton.xpm \
+ pixmaps/flCheckButton.xpm pixmaps/flRoundButton.xpm pixmaps/flBox.xpm \
+ pixmaps/flGroup.xpm pixmaps/flFunction.xpm pixmaps/flCode.xpm \
+ pixmaps/flCodeBlock.xpm pixmaps/flComment.xpm pixmaps/flDeclaration.xpm \
+ pixmaps/flDeclarationBlock.xpm pixmaps/flClass.xpm pixmaps/flTabs.xpm \
+ pixmaps/flInput.xpm pixmaps/flChoice.xpm pixmaps/flMenuitem.xpm \
+ pixmaps/flMenubar.xpm pixmaps/flSubmenu.xpm pixmaps/flScroll.xpm \
+ pixmaps/flTile.xpm pixmaps/flWizard.xpm pixmaps/flPack.xpm \
+ pixmaps/flReturnButton.xpm pixmaps/flLightButton.xpm \
+ pixmaps/flRepeatButton.xpm pixmaps/flMenuButton.xpm \
+ pixmaps/flOutput.xpm pixmaps/flTextDisplay.xpm pixmaps/flTextEdit.xpm \
+ pixmaps/flFileInput.xpm pixmaps/flBrowser.xpm \
+ pixmaps/flCheckBrowser.xpm pixmaps/flFileBrowser.xpm \
+ pixmaps/flClock.xpm pixmaps/flHelp.xpm pixmaps/flProgress.xpm \
+ pixmaps/flSlider.xpm pixmaps/flScrollBar.xpm pixmaps/flValueSlider.xpm \
+ pixmaps/flAdjuster.xpm pixmaps/flCounter.xpm pixmaps/flDial.xpm \
+ pixmaps/flRoller.xpm pixmaps/flValueInput.xpm pixmaps/flValueOutput.xpm \
+ pixmaps/flSpinner.xpm pixmaps/flWidgetClass.xpm
+Fl_Widget_Type.o: Fl_Widget_Type.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H \
+ alignment_panel.h ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H \
+ ../FL/fl_draw.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H \
+ ../FL/Fl_Button.H ../FL/Fl_Box.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Spinner.H ../FL/Enumerations.H ../FL/Fl_Repeat_Button.H \
+ ../FL/Fl.H ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H \
+ ../FL/fl_message.H ../FL/fl_ask.H ../FL/Fl_Slider.H ../src/flstring.h \
+ ../FL/Fl_Export.H ../config.h widget_panel.h ../FL/Fl_Value_Input.H \
+ ../FL/Fl_Input.H Shortcut_Button.h CodeEditor.h ../FL/Fl_Text_Editor.H \
+ ../FL/Fl_Text_Display.H ../FL/fl_show_colormap.H
+Fl_Window_Type.o: Fl_Window_Type.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Overlay_Window.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_message.H \
+ ../FL/fl_ask.H ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Round_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/Fl_Tabs.H ../FL/Fl_Pack.H \
+ ../FL/Fl_Group.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H undo.h alignment_panel.h \
+ ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Text_Buffer.H ../FL/Fl_Double_Window.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tooltip.H ../FL/Fl_Button.H ../FL/Fl_Box.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Check_Button.H ../FL/Fl_Spinner.H \
+ ../FL/Enumerations.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H \
+ ../FL/Fl_Return_Button.H widget_panel.h ../FL/Fl_Value_Input.H \
+ ../FL/Fl_Input.H Shortcut_Button.h CodeEditor.h ../FL/Fl_Text_Editor.H \
+ ../FL/Fl_Text_Display.H ../src/flstring.h ../FL/Fl_Export.H ../config.h
+Fluid_Image.o: Fluid_Image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Widget.H Fl_Type.h ../FL/Fl_Menu.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H \
+ ../src/flstring.h ../FL/Fl_Export.H ../config.h ../FL/filename.H \
+ ../FL/Fl_File_Chooser.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H \
+ ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H ../FL/Fl_Box.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_File_Input.H ../FL/Fl_Return_Button.H ../FL/fl_ask.H
+about_panel.o: about_panel.cxx about_panel.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H \
+ ../FL/Fl_Button.H ../FL/Fl_Return_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Pixmap.H ../FL/Fl_Image.H
+align_widget.o: align_widget.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H ../FL/Fl_Pack.H \
+ ../FL/Fl_Group.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Menu_Bar.H undo.h
+alignment_panel.o: alignment_panel.cxx alignment_panel.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Text_Buffer.H \
+ ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Tabs.H ../FL/Fl_Group.H \
+ ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Spinner.H \
+ ../FL/Enumerations.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H
+code.o: code.cxx ../src/flstring.h ../FL/Fl_Export.H ../config.h \
+ ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H Fl_Type.h \
+ ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Image.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H \
+ alignment_panel.h ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H \
+ ../FL/fl_draw.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H \
+ ../FL/Fl_Button.H ../FL/Fl_Box.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Spinner.H ../FL/Enumerations.H ../FL/Fl_Repeat_Button.H \
+ ../FL/Fl.H ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H \
+ ../FL/filename.H
+factory.o: factory.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Pixmap.H ../src/flstring.h ../FL/Fl_Export.H \
+ ../config.h undo.h Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Box.H ../FL/Fl_Button.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/Fl_Repeat_Button.H \
+ ../FL/Fl.H ../FL/Fl_Light_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Browser.H \
+ ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Check_Browser.H ../FL/Fl_File_Browser.H \
+ ../FL/Fl_Browser.H ../FL/Fl_File_Icon.H ../FL/filename.H \
+ ../FL/Fl_Counter.H ../FL/Fl_Spinner.H ../FL/Enumerations.H \
+ ../FL/Fl_File_Input.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H \
+ ../FL/Fl_Clock.H ../FL/Fl_Help_View.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Progress.H ../FL/Fl_Adjuster.H ../FL/Fl_Dial.H \
+ ../FL/Fl_Roller.H ../FL/Fl_Scrollbar.H ../FL/Fl_Output.H \
+ ../FL/Fl_Input.H ../FL/Fl_Value_Input.H ../FL/Fl_Value_Output.H \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Multi_Label.H
+file.o: file.cxx ../src/flstring.h ../FL/Fl_Export.H ../config.h \
+ alignment_panel.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Spinner.H \
+ ../FL/Enumerations.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Round_Button.H ../FL/fl_message.H \
+ ../FL/fl_ask.H Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Menu.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Pack.H \
+ ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H
+fluid.o: fluid.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl.H ../FL/Fl_Help_Dialog.H ../FL/Fl_Group.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Help_View.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H \
+ ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/Fl_Hold_Browser.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Menu_Bar.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/fl_ask.H ../FL/fl_draw.H \
+ ../FL/Fl_File_Chooser.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H \
+ ../FL/Fl_File_Icon.H ../FL/filename.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Return_Button.H ../FL/fl_message.H ../FL/fl_ask.H \
+ ../FL/filename.H ../src/flstring.h ../FL/Fl_Export.H ../config.h \
+ alignment_panel.h ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H \
+ ../FL/Fl_Text_Buffer.H ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Tabs.H ../FL/Fl_Light_Button.H ../FL/Fl_Spinner.H \
+ ../FL/Enumerations.H ../FL/Fl_Repeat_Button.H ../FL/Fl_Round_Button.H \
+ function_panel.h CodeEditor.h ../FL/Fl_Text_Editor.H \
+ ../FL/Fl_Text_Display.H ../FL/Fl_Window.H template_panel.h \
+ ../FL/Fl_Browser.H print_panel.cxx print_panel.h ../FL/Fl_Progress.H \
+ ../FL/Fl_Pixmap.H about_panel.h undo.h Fl_Type.h ../FL/Fl_Menu.H \
+ Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Input_Choice.H
+function_panel.o: function_panel.cxx function_panel.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Box.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H CodeEditor.h ../FL/Fl_Text_Buffer.H \
+ ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Text_Buffer.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Window.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Pixmap.H Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H \
+ Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Pack.H \
+ ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Input_Choice.H ../FL/Fl_Menu_Bar.H undo.h
+template_panel.o: template_panel.cxx template_panel.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Browser.H \
+ ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Group.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H ../src/flstring.h ../FL/Fl_Export.H ../config.h \
+ ../FL/filename.H ../FL/fl_ask.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Image.H ../FL/Fl_Preferences.H
+undo.o: undo.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Image.H Fluid_Image.h \
+ ../FL/Fl_Shared_Image.H ../FL/fl_draw.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Choice.H ../FL/Fl_Input_Choice.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H undo.h \
+ ../FL/Fl_Preferences.H ../src/flstring.h ../FL/Fl_Export.H ../config.h
+widget_panel.o: widget_panel.cxx widget_panel.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Tabs.H \
+ ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H \
+ ../FL/Fl_Button.H ../FL/Fl_Box.H ../FL/Fl_Value_Input.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Input.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H Shortcut_Button.h CodeEditor.h ../FL/Fl_Text_Buffer.H \
+ ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Text_Buffer.H \
+ ../FL/Fl_Return_Button.H
diff --git a/fluid/makefile.wat b/fluid/makefile.wat
index 8a1a5d9..436038f 100644
--- a/fluid/makefile.wat
+++ b/fluid/makefile.wat
@@ -1,5 +1,5 @@
#
-# "$Id: makefile.wat 4359 2005-05-19 16:07:13Z mike $"
+# "$Id: makefile.wat 5699 2007-02-20 17:02:41Z matt $"
#
# FLUID makefile for the Fast Light Tool Kit (FLTK).
#
@@ -24,21 +24,24 @@
#
OBJECTS = &
+ CodeEditor.obj &
Fl_Function_Type.obj &
- Fl_Menu_Type.obj &
Fl_Group_Type.obj &
- Fl_Widget_Type.obj &
+ Fl_Menu_Type.obj &
Fl_Type.obj &
+ Fl_Widget_Type.obj &
Fl_Window_Type.obj &
Fluid_Image.obj &
+ about_panel.obj &
+ align_widget.obj &
+ alignment_panel.obj &
code.obj &
factory.obj &
file.obj &
- align_widget.obj &
- about_panel.obj &
- widget_panel.obj &
- alignment_panel.obj &
- function_panel.obj
+ function_panel.obj &
+ template_panel.obj &
+ undo.obj &
+ widget_panel.obj
# fluid.obj should not be in the list, because the watcom.mif file
# assumes an object file with the same name as the target executable
@@ -72,5 +75,5 @@ rebuild:
./fluid -c widget_panel.fl
#
-# End of "$Id: makefile.wat 4359 2005-05-19 16:07:13Z mike $".
+# End of "$Id: makefile.wat 5699 2007-02-20 17:02:41Z matt $".
#
diff --git a/fluid/pixmaps/.cvsignore b/fluid/pixmaps/.cvsignore
deleted file mode 100644
index 3df5b20..0000000
--- a/fluid/pixmaps/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.bck
diff --git a/fluid/undo.cxx b/fluid/undo.cxx
index e23b6ca..1b88eea 100644
--- a/fluid/undo.cxx
+++ b/fluid/undo.cxx
@@ -3,7 +3,7 @@
//
// FLUID undo support for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -34,9 +34,11 @@
# include <io.h>
# include <windows.h>
# define getpid (int)GetCurrentProcessId
+# ifndef __WATCOMC__
// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
// on Windows, which is supposed to be POSIX compliant...
-# define unlink _unlink
+# define unlink _unlink
+# endif // !__WATCOMC__
#else
# include <unistd.h>
#endif // WIN32 && !__CYGWIN__
@@ -124,6 +126,7 @@ void undo_cb(Fl_Widget *, void *) {
// Update undo/redo menu items...
if (undo_current <= 0) Main_Menu[UNDO_ITEM].deactivate();
Main_Menu[REDO_ITEM].activate();
+ undo_resume();
}
// Save current file to undo buffer
diff --git a/fluid/widget_panel.cxx b/fluid/widget_panel.cxx
index 395504d..ab06ee2 100644
--- a/fluid/widget_panel.cxx
+++ b/fluid/widget_panel.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: widget_panel.cxx 4625 2005-11-02 13:55:13Z matt $"
+// "$Id: widget_panel.cxx 5438 2006-09-17 14:58:25Z mike $"
//
// Widget panel for the Fast Light Tool Kit (FLTK).
//
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#include "widget_panel.h"
@@ -47,26 +47,27 @@ Fl_Button *wLiveMode=(Fl_Button *)0;
Fl_Double_Window* make_widget_panel() {
Fl_Double_Window* w;
- { Fl_Double_Window* o = new Fl_Double_Window(410, 355);
+ { Fl_Double_Window* o = new Fl_Double_Window(420, 360);
w = o;
o->labelsize(11);
- w->hotspot(o);
- { Fl_Tabs* o = new Fl_Tabs(5, 5, 400, 310);
- o->selection_color((Fl_Color)4);
+ o->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
+ o->hotspot(o);
+ { Fl_Tabs* o = new Fl_Tabs(10, 10, 400, 310);
+ o->selection_color((Fl_Color)12);
o->labelsize(11);
o->labelcolor(FL_BACKGROUND2_COLOR);
o->callback((Fl_Callback*)cb_);
o->when(FL_WHEN_NEVER);
- { Fl_Group* o = new Fl_Group(5, 25, 400, 290, "GUI");
+ { Fl_Group* o = new Fl_Group(10, 30, 400, 290, "GUI");
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->when(FL_WHEN_NEVER);
- { Fl_Group* o = new Fl_Group(90, 35, 300, 20, "Label:");
+ { Fl_Group* o = new Fl_Group(95, 40, 309, 20, "Label:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Input* o = new Fl_Input(90, 35, 180, 20);
+ { Fl_Input* o = new Fl_Input(95, 40, 190, 20);
o->tooltip("The label text for the widget.");
o->labelfont(1);
o->labelsize(11);
@@ -74,8 +75,8 @@ Fl_Double_Window* make_widget_panel() {
o->callback((Fl_Callback*)label_cb);
o->when(FL_WHEN_CHANGED);
Fl_Group::current()->resizable(o);
- }
- { Fl_Choice* o = new Fl_Choice(270, 35, 120, 20);
+ } // Fl_Input* o
+ { Fl_Choice* o = new Fl_Choice(284, 40, 120, 20);
o->tooltip("The label style for the widget.");
o->box(FL_THIN_UP_BOX);
o->down_box(FL_BORDER_BOX);
@@ -84,228 +85,228 @@ Fl_Double_Window* make_widget_panel() {
o->textsize(11);
o->callback((Fl_Callback*)labeltype_cb);
o->menu(labeltypemenu);
- }
+ } // Fl_Choice* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 60, 300, 20, "Image:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 65, 309, 20, "Image:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Input* o = new Fl_Input(90, 60, 230, 20);
+ { Fl_Input* o = new Fl_Input(95, 65, 240, 20);
o->tooltip("The active image for the widget.");
o->labelfont(1);
o->labelsize(11);
o->textsize(11);
o->callback((Fl_Callback*)image_cb);
Fl_Group::current()->resizable(o);
- }
- { Fl_Button* o = new Fl_Button(320, 60, 70, 20, "Browse...");
+ } // Fl_Input* o
+ { Fl_Button* o = new Fl_Button(334, 65, 70, 20, "Browse...");
o->tooltip("Click to choose the active image.");
o->labelsize(11);
o->callback((Fl_Callback*)image_browse_cb);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 85, 300, 20, "Inactive:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 90, 309, 20, "Inactive:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Input* o = new Fl_Input(90, 85, 230, 20);
+ { Fl_Input* o = new Fl_Input(95, 90, 240, 20);
o->tooltip("The inactive image for the widget.");
o->labelfont(1);
o->labelsize(11);
o->textsize(11);
o->callback((Fl_Callback*)inactive_cb);
Fl_Group::current()->resizable(o);
- }
- { Fl_Button* o = new Fl_Button(320, 85, 70, 20, "Browse...");
+ } // Fl_Input* o
+ { Fl_Button* o = new Fl_Button(334, 90, 70, 20, "Browse...");
o->tooltip("Click to choose the inactive image.");
o->labelsize(11);
o->callback((Fl_Callback*)inactive_browse_cb);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 110, 300, 20, "Alignment:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 115, 300, 20, "Alignment:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Button* o = new Fl_Button(90, 110, 45, 20, "Clip");
+ { Fl_Button* o = new Fl_Button(95, 115, 45, 20, "Clip");
o->tooltip("Clip the label to the inside of the widget.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_CLIP));
o->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
- }
- { Fl_Button* o = new Fl_Button(140, 110, 50, 20, "Wrap");
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(145, 115, 50, 20, "Wrap");
o->tooltip("Wrap the label text.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_WRAP));
- }
- { Fl_Button* o = new Fl_Button(195, 110, 65, 20, "Text/Image");
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(200, 115, 65, 20, "Text/Image");
o->tooltip("Show the label text over the image.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_TEXT_OVER_IMAGE));
- }
- { Fl_Button* o = new Fl_Button(265, 110, 20, 20, "@-1<-");
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(270, 115, 20, 20, "@-1<-");
o->tooltip("Left-align the label.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_LEFT));
- }
- { Fl_Button* o = new Fl_Button(290, 110, 20, 20, "@-1->");
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(295, 115, 20, 20, "@-1->");
o->tooltip("Right-align the label.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_RIGHT));
- }
- { Fl_Button* o = new Fl_Button(315, 110, 20, 20, "@-18");
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(320, 115, 20, 20, "@-18");
o->tooltip("Top-align the label.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_TOP));
- }
- { Fl_Button* o = new Fl_Button(340, 110, 20, 20, "@-12");
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(345, 115, 20, 20, "@-12");
o->tooltip("Bottom-align the label.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_BOTTOM));
- }
- { Fl_Button* o = new Fl_Button(365, 110, 20, 20, "@-3square");
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(370, 115, 20, 20, "@-3square");
o->tooltip("Show the label inside the widget.");
o->type(1);
o->selection_color(FL_INACTIVE_COLOR);
o->labelsize(11);
o->labelcolor(FL_INACTIVE_COLOR);
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_INSIDE));
- }
- { Fl_Box* o = new Fl_Box(390, 110, 0, 20);
+ } // Fl_Button* o
+ { Fl_Box* o = new Fl_Box(395, 115, 0, 20);
o->labelsize(11);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 145, 300, 20, "Position:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 150, 300, 20, "Position:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Value_Input* o = widget_x_input = new Fl_Value_Input(90, 145, 55, 20, "X:");
- o->tooltip("The X position of the widget.");
- o->labelsize(11);
- o->maximum(2048);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)x_cb);
- o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = widget_y_input = new Fl_Value_Input(150, 145, 55, 20, "Y:");
- o->tooltip("The Y position of the widget.");
- o->labelsize(11);
- o->maximum(2048);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)y_cb);
- o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = widget_w_input = new Fl_Value_Input(210, 145, 55, 20, "Width:");
- o->tooltip("The width of the widget.");
- o->labelsize(11);
- o->maximum(2048);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)w_cb);
- o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = widget_h_input = new Fl_Value_Input(270, 145, 55, 20, "Height:");
- o->tooltip("The height of the widget.");
- o->labelsize(11);
- o->maximum(2048);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)h_cb);
- o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(330, 145, 55, 20, "Relative");
+ { widget_x_input = new Fl_Value_Input(95, 150, 55, 20, "X:");
+ widget_x_input->tooltip("The X position of the widget.");
+ widget_x_input->labelsize(11);
+ widget_x_input->maximum(2048);
+ widget_x_input->step(1);
+ widget_x_input->textsize(11);
+ widget_x_input->callback((Fl_Callback*)x_cb);
+ widget_x_input->align(FL_ALIGN_TOP_LEFT);
+ } // Fl_Value_Input* widget_x_input
+ { widget_y_input = new Fl_Value_Input(155, 150, 55, 20, "Y:");
+ widget_y_input->tooltip("The Y position of the widget.");
+ widget_y_input->labelsize(11);
+ widget_y_input->maximum(2048);
+ widget_y_input->step(1);
+ widget_y_input->textsize(11);
+ widget_y_input->callback((Fl_Callback*)y_cb);
+ widget_y_input->align(FL_ALIGN_TOP_LEFT);
+ } // Fl_Value_Input* widget_y_input
+ { widget_w_input = new Fl_Value_Input(215, 150, 55, 20, "Width:");
+ widget_w_input->tooltip("The width of the widget.");
+ widget_w_input->labelsize(11);
+ widget_w_input->maximum(2048);
+ widget_w_input->step(1);
+ widget_w_input->textsize(11);
+ widget_w_input->callback((Fl_Callback*)w_cb);
+ widget_w_input->align(FL_ALIGN_TOP_LEFT);
+ } // Fl_Value_Input* widget_w_input
+ { widget_h_input = new Fl_Value_Input(275, 150, 55, 20, "Height:");
+ widget_h_input->tooltip("The height of the widget.");
+ widget_h_input->labelsize(11);
+ widget_h_input->maximum(2048);
+ widget_h_input->step(1);
+ widget_h_input->textsize(11);
+ widget_h_input->callback((Fl_Callback*)h_cb);
+ widget_h_input->align(FL_ALIGN_TOP_LEFT);
+ } // Fl_Value_Input* widget_h_input
+ { Fl_Light_Button* o = new Fl_Light_Button(335, 150, 55, 20, "Relative");
o->tooltip("If set, widgets inside a widget class of type Fl_Group are repositioned relat\
ive to the origin at construction time");
o->labelsize(11);
o->callback((Fl_Callback*)wc_relative_cb);
- }
- { Fl_Box* o = new Fl_Box(389, 145, 1, 20);
+ } // Fl_Light_Button* o
+ { Fl_Box* o = new Fl_Box(394, 150, 1, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 180, 300, 20, "Values:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 185, 300, 20, "Values:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Value_Input* o = new Fl_Value_Input(90, 180, 55, 20, "Size:");
+ { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Size:");
o->tooltip("The size of the slider.");
o->labelsize(11);
o->step(0.010101);
o->textsize(11);
o->callback((Fl_Callback*)slider_size_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(150, 180, 55, 20, "Minimum:");
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20, "Minimum:");
o->tooltip("The minimum value of the widget.");
o->labelsize(11);
o->textsize(11);
o->callback((Fl_Callback*)min_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(210, 180, 55, 20, "Maximum:");
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(215, 185, 55, 20, "Maximum:");
o->tooltip("The maximum value of the widget.");
o->labelsize(11);
o->value(1);
o->textsize(11);
o->callback((Fl_Callback*)max_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(270, 180, 55, 20, "Step:");
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(275, 185, 55, 20, "Step:");
o->tooltip("The resolution of the widget value.");
o->labelsize(11);
o->textsize(11);
o->callback((Fl_Callback*)step_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(330, 180, 55, 20, "Value:");
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(335, 185, 55, 20, "Value:");
o->tooltip("The current widget value.");
o->labelsize(11);
o->textsize(11);
o->callback((Fl_Callback*)value_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Box* o = new Fl_Box(390, 180, 0, 20);
+ } // Fl_Value_Input* o
+ { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 180, 300, 20, "Size Range:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 185, 300, 20, "Size Range:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
o->hide();
- { Fl_Value_Input* o = new Fl_Value_Input(90, 180, 55, 20, "Minimum Size:");
+ { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Minimum Size:");
o->tooltip("The size of the slider.");
o->labelsize(11);
o->maximum(2048);
@@ -313,8 +314,8 @@ ive to the origin at construction time");
o->textsize(11);
o->callback((Fl_Callback*)min_w_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(150, 180, 55, 20);
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20);
o->tooltip("The minimum value of the widget.");
o->labelsize(11);
o->maximum(2048);
@@ -322,12 +323,12 @@ ive to the origin at construction time");
o->textsize(11);
o->callback((Fl_Callback*)min_h_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Button* o = new Fl_Button(210, 180, 25, 20, "set");
+ } // Fl_Value_Input* o
+ { Fl_Button* o = new Fl_Button(215, 185, 25, 20, "set");
o->labelsize(11);
o->callback((Fl_Callback*)set_min_size_cb);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(240, 180, 55, 20, "Maximum Size:");
+ } // Fl_Button* o
+ { Fl_Value_Input* o = new Fl_Value_Input(245, 185, 55, 20, "Maximum Size:");
o->tooltip("The maximum value of the widget.");
o->labelsize(11);
o->maximum(2048);
@@ -335,8 +336,8 @@ ive to the origin at construction time");
o->textsize(11);
o->callback((Fl_Callback*)max_w_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(300, 180, 55, 20);
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(305, 185, 55, 20);
o->tooltip("The resolution of the widget value.");
o->labelsize(11);
o->maximum(2048);
@@ -344,17 +345,17 @@ ive to the origin at construction time");
o->textsize(11);
o->callback((Fl_Callback*)max_h_cb);
o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Button* o = new Fl_Button(360, 180, 25, 20, "set");
+ } // Fl_Value_Input* o
+ { Fl_Button* o = new Fl_Button(365, 185, 25, 20, "set");
o->labelsize(11);
o->callback((Fl_Callback*)set_max_size_cb);
- }
- { Fl_Box* o = new Fl_Box(390, 180, 0, 20);
+ } // Fl_Button* o
+ { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Shortcut_Button* o = new Shortcut_Button(90, 205, 300, 20, "Shortcut:");
+ } // Fl_Group* o
+ { Shortcut_Button* o = new Shortcut_Button(95, 210, 310, 20, "Shortcut:");
o->tooltip("The shortcut key for the widget.");
o->box(FL_DOWN_BOX);
o->color(FL_BACKGROUND2_COLOR);
@@ -366,103 +367,103 @@ ive to the origin at construction time");
o->callback((Fl_Callback*)shortcut_in_cb);
o->align(FL_ALIGN_LEFT);
o->when(FL_WHEN_RELEASE);
- }
- { Fl_Group* o = new Fl_Group(90, 230, 300, 20, "X Class:");
+ } // Shortcut_Button* o
+ { Fl_Group* o = new Fl_Group(95, 235, 300, 20, "X Class:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Input* o = new Fl_Input(90, 230, 95, 20, ":");
+ { Fl_Input* o = new Fl_Input(95, 235, 95, 20, ":");
o->tooltip("The X resource class.");
o->labelfont(1);
o->labelsize(11);
o->textsize(11);
o->callback((Fl_Callback*)xclass_cb);
Fl_Group::current()->resizable(o);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(190, 230, 60, 20, "Border");
+ } // Fl_Input* o
+ { Fl_Light_Button* o = new Fl_Light_Button(195, 235, 60, 20, "Border");
o->tooltip("Add a border around the window.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)border_cb);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(255, 230, 55, 20, "Modal");
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(260, 235, 55, 20, "Modal");
o->tooltip("Make the window modal.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)modal_cb);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(315, 230, 75, 20, "Nonmodal");
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(320, 235, 75, 20, "Nonmodal");
o->tooltip("Make the window non-modal.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)non_modal_cb);
o->align(132|FL_ALIGN_INSIDE);
- }
+ } // Fl_Light_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 255, 305, 20, "Attributes:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 260, 305, 20, "Attributes:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Light_Button* o = new Fl_Light_Button(90, 255, 60, 20, "Visible");
+ { Fl_Light_Button* o = new Fl_Light_Button(95, 260, 60, 20, "Visible");
o->tooltip("Show the widget.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)visible_cb);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(155, 255, 60, 20, "Active");
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(160, 260, 60, 20, "Active");
o->tooltip("Activate the widget.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)active_cb);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(220, 255, 75, 20, "Resizable");
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(225, 260, 75, 20, "Resizable");
o->tooltip("Make the widget resizable.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)resizable_cb);
o->when(FL_WHEN_CHANGED);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(300, 255, 70, 20, "Hotspot");
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(305, 260, 70, 20, "Hotspot");
o->tooltip("Center the window under this widget.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)hotspot_cb);
o->when(FL_WHEN_CHANGED);
- }
- { Fl_Box* o = new Fl_Box(390, 255, 0, 20);
+ } // Fl_Light_Button* o
+ { Fl_Box* o = new Fl_Box(395, 260, 0, 20);
o->labelsize(11);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_Input* o = new Fl_Input(90, 280, 300, 20, "Tooltip:");
+ } // Fl_Group* o
+ { Fl_Input* o = new Fl_Input(95, 285, 310, 20, "Tooltip:");
o->tooltip("The tooltip text for the widget.");
o->labelfont(1);
o->labelsize(11);
o->textsize(11);
o->callback((Fl_Callback*)tooltip_cb);
- }
- { Fl_Box* o = new Fl_Box(90, 300, 300, 5);
+ } // Fl_Input* o
+ { Fl_Box* o = new Fl_Box(95, 305, 300, 5);
o->labelsize(11);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
Fl_Group::current()->resizable(o);
- }
- { Fl_Group* o = new Fl_Group(5, 25, 400, 290, "Style");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(10, 30, 400, 290, "Style");
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->when(FL_WHEN_NEVER);
o->hide();
- { Fl_Group* o = new Fl_Group(90, 35, 300, 20, "Label Font:");
+ { Fl_Group* o = new Fl_Group(95, 40, 309, 20, "Label Font:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Choice* o = new Fl_Choice(90, 35, 160, 20);
+ { Fl_Choice* o = new Fl_Choice(95, 40, 170, 20);
o->tooltip("The style of the label text.");
o->box(FL_THIN_UP_BOX);
o->down_box(FL_BORDER_BOX);
@@ -471,8 +472,8 @@ ive to the origin at construction time");
o->callback((Fl_Callback*)labelfont_cb);
Fl_Group::current()->resizable(o);
o->menu(fontmenu);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(250, 35, 50, 20);
+ } // Fl_Choice* o
+ { Fl_Value_Input* o = new Fl_Value_Input(264, 40, 50, 20);
o->tooltip("The size of the label text.");
o->labelsize(11);
o->maximum(100);
@@ -480,20 +481,20 @@ ive to the origin at construction time");
o->value(14);
o->textsize(11);
o->callback((Fl_Callback*)labelsize_cb);
- }
- { Fl_Button* o = new Fl_Button(300, 35, 90, 20, "Label Color");
+ } // Fl_Value_Input* o
+ { Fl_Button* o = new Fl_Button(314, 40, 90, 20, "Label Color");
o->tooltip("The color of the label text.");
o->labelsize(11);
o->callback((Fl_Callback*)labelcolor_cb);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 60, 300, 20, "Box:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 65, 309, 20, "Box:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Choice* o = new Fl_Choice(90, 60, 210, 20);
+ { Fl_Choice* o = new Fl_Choice(95, 65, 219, 20);
o->tooltip("The \"up\" box of the widget.");
o->box(FL_THIN_UP_BOX);
o->down_box(FL_BORDER_BOX);
@@ -502,20 +503,20 @@ ive to the origin at construction time");
o->callback((Fl_Callback*)box_cb);
Fl_Group::current()->resizable(o);
o->menu(boxmenu);
- }
- { Fl_Button* o = new Fl_Button(300, 60, 90, 20, "Color");
+ } // Fl_Choice* o
+ { Fl_Button* o = new Fl_Button(314, 65, 90, 20, "Color");
o->tooltip("The background color of the widget.");
o->labelsize(11);
o->callback((Fl_Callback*)color_cb);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 85, 300, 20, "Down Box:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 90, 309, 20, "Down Box:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Choice* o = new Fl_Choice(90, 85, 210, 20);
+ { Fl_Choice* o = new Fl_Choice(95, 90, 219, 20);
o->tooltip("The \"down\" box of the widget.");
o->box(FL_THIN_UP_BOX);
o->down_box(FL_BORDER_BOX);
@@ -524,20 +525,20 @@ ive to the origin at construction time");
o->callback((Fl_Callback*)down_box_cb);
Fl_Group::current()->resizable(o);
o->menu(boxmenu);
- }
- { Fl_Button* o = new Fl_Button(300, 85, 90, 20, "Select Color");
+ } // Fl_Choice* o
+ { Fl_Button* o = new Fl_Button(314, 90, 90, 20, "Select Color");
o->tooltip("The selection color of the widget.");
o->labelsize(11);
o->callback((Fl_Callback*)color2_cb);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 110, 300, 20, "Text Font:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 115, 309, 20, "Text Font:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Choice* o = new Fl_Choice(90, 110, 160, 20);
+ { Fl_Choice* o = new Fl_Choice(95, 115, 170, 20);
o->tooltip("The value text style.");
o->box(FL_DOWN_BOX);
o->down_box(FL_BORDER_BOX);
@@ -546,8 +547,8 @@ ive to the origin at construction time");
o->callback((Fl_Callback*)textfont_cb);
Fl_Group::current()->resizable(o);
o->menu(fontmenu);
- }
- { Fl_Value_Input* o = new Fl_Value_Input(250, 110, 50, 20);
+ } // Fl_Choice* o
+ { Fl_Value_Input* o = new Fl_Value_Input(264, 115, 50, 20);
o->tooltip("The value text size.");
o->labelsize(11);
o->maximum(100);
@@ -555,31 +556,31 @@ ive to the origin at construction time");
o->value(14);
o->textsize(11);
o->callback((Fl_Callback*)textsize_cb);
- }
- { Fl_Button* o = new Fl_Button(300, 110, 90, 20, "Text Color");
+ } // Fl_Value_Input* o
+ { Fl_Button* o = new Fl_Button(314, 115, 90, 20, "Text Color");
o->tooltip("The value text color.");
o->labelsize(11);
o->callback((Fl_Callback*)textcolor_cb);
- }
+ } // Fl_Button* o
o->end();
- }
- { Fl_Box* o = new Fl_Box(90, 135, 300, 40);
+ } // Fl_Group* o
+ { Fl_Box* o = new Fl_Box(95, 140, 300, 40);
o->labelsize(11);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(5, 25, 400, 290, "C++");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(10, 30, 400, 290, "C++");
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->when(FL_WHEN_NEVER);
o->hide();
- { Fl_Group* o = new Fl_Group(90, 35, 300, 20, "Class:");
+ { Fl_Group* o = new Fl_Group(95, 40, 310, 20, "Class:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Input* o = new Fl_Input(90, 35, 160, 20);
+ { Fl_Input* o = new Fl_Input(95, 40, 172, 20);
o->tooltip("The widget subclass.");
o->labelfont(1);
o->labelsize(11);
@@ -587,68 +588,68 @@ ive to the origin at construction time");
o->textsize(11);
o->callback((Fl_Callback*)subclass_cb, (void*)(4));
Fl_Group::current()->resizable(o);
- }
- { Fl_Choice* o = new Fl_Choice(250, 35, 140, 20);
+ } // Fl_Input* o
+ { Fl_Choice* o = new Fl_Choice(265, 40, 140, 20);
o->tooltip("The widget subtype.");
o->box(FL_THIN_UP_BOX);
o->down_box(FL_BORDER_BOX);
o->labelsize(11);
o->callback((Fl_Callback*)subtype_cb);
- }
+ } // Fl_Choice* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 60, 300, 20, "Name:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 65, 310, 20, "Name:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Input* o = new Fl_Input(90, 60, 240, 20);
+ { Fl_Input* o = new Fl_Input(95, 65, 250, 20);
o->tooltip("The name of the widget.");
o->labelfont(1);
o->labelsize(11);
o->textsize(11);
o->callback((Fl_Callback*)name_cb);
Fl_Group::current()->resizable(o);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(330, 60, 60, 20, "public");
+ } // Fl_Input* o
+ { Fl_Light_Button* o = new Fl_Light_Button(345, 65, 60, 20, "public");
o->tooltip("Make the widget publicly accessible.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)name_public_cb);
o->when(FL_WHEN_CHANGED);
- }
+ } // Fl_Light_Button* o
o->end();
- }
- { Fl_Input* o = v_input[0] = new Fl_Input(90, 85, 300, 20, "Extra Code:");
- o->tooltip("Extra initialization code for the widget.");
- o->labelfont(1);
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)v_input_cb, (void*)(0));
- }
- { Fl_Input* o = v_input[1] = new Fl_Input(90, 105, 300, 20);
- o->tooltip("Extra initialization code for the widget.");
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)v_input_cb, (void*)(1));
- }
- { Fl_Input* o = v_input[2] = new Fl_Input(90, 125, 300, 20);
- o->tooltip("Extra initialization code for the widget.");
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)v_input_cb, (void*)(2));
- }
- { Fl_Input* o = v_input[3] = new Fl_Input(90, 145, 300, 20);
- o->tooltip("Extra initialization code for the widget.");
- o->labelsize(11);
- o->textfont(4);
- o->textsize(11);
- o->callback((Fl_Callback*)v_input_cb, (void*)(3));
- }
- { CodeEditor* o = new CodeEditor(90, 170, 300, 90, "Callback:");
+ } // Fl_Group* o
+ { v_input[0] = new Fl_Input(95, 90, 310, 20, "Extra Code:");
+ v_input[0]->tooltip("Extra initialization code for the widget.");
+ v_input[0]->labelfont(1);
+ v_input[0]->labelsize(11);
+ v_input[0]->textfont(4);
+ v_input[0]->textsize(11);
+ v_input[0]->callback((Fl_Callback*)v_input_cb, (void*)(0));
+ } // Fl_Input* v_input[0]
+ { v_input[1] = new Fl_Input(95, 110, 310, 20);
+ v_input[1]->tooltip("Extra initialization code for the widget.");
+ v_input[1]->labelsize(11);
+ v_input[1]->textfont(4);
+ v_input[1]->textsize(11);
+ v_input[1]->callback((Fl_Callback*)v_input_cb, (void*)(1));
+ } // Fl_Input* v_input[1]
+ { v_input[2] = new Fl_Input(95, 130, 310, 20);
+ v_input[2]->tooltip("Extra initialization code for the widget.");
+ v_input[2]->labelsize(11);
+ v_input[2]->textfont(4);
+ v_input[2]->textsize(11);
+ v_input[2]->callback((Fl_Callback*)v_input_cb, (void*)(2));
+ } // Fl_Input* v_input[2]
+ { v_input[3] = new Fl_Input(95, 150, 310, 20);
+ v_input[3]->tooltip("Extra initialization code for the widget.");
+ v_input[3]->labelsize(11);
+ v_input[3]->textfont(4);
+ v_input[3]->textsize(11);
+ v_input[3]->callback((Fl_Callback*)v_input_cb, (void*)(3));
+ } // Fl_Input* v_input[3]
+ { CodeEditor* o = new CodeEditor(95, 175, 310, 90, "Callback:");
o->tooltip("The callback function or code for the widget. Use the variable name \'o\' to \
access the Widget pointer and \'v\' to access the user value.");
o->box(FL_DOWN_BOX);
@@ -664,13 +665,13 @@ access the Widget pointer and \'v\' to access the user value.");
o->align(FL_ALIGN_LEFT);
o->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(o);
- }
- { Fl_Group* o = new Fl_Group(90, 265, 300, 20, "User Data:");
+ } // CodeEditor* o
+ { Fl_Group* o = new Fl_Group(95, 270, 310, 20, "User Data:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Input* o = new Fl_Input(90, 265, 140, 20);
+ { Fl_Input* o = new Fl_Input(95, 270, 158, 20);
o->tooltip("The user data to pass into the callback code.");
o->labelfont(1);
o->labelsize(11);
@@ -678,8 +679,8 @@ access the Widget pointer and \'v\' to access the user value.");
o->textsize(11);
o->callback((Fl_Callback*)user_data_cb);
Fl_Group::current()->resizable(o);
- }
- { Fl_Choice* o = new Fl_Choice(285, 265, 105, 20, "When:");
+ } // Fl_Input* o
+ { Fl_Choice* o = new Fl_Choice(300, 270, 105, 20, "When:");
o->tooltip("When to call the callback function.");
o->box(FL_THIN_UP_BOX);
o->down_box(FL_BORDER_BOX);
@@ -688,15 +689,15 @@ access the Widget pointer and \'v\' to access the user value.");
o->callback((Fl_Callback*)when_cb);
o->when(FL_WHEN_CHANGED);
o->menu(whenmenu);
- }
+ } // Fl_Choice* o
o->end();
- }
- { Fl_Group* o = new Fl_Group(90, 290, 300, 20, "Type:");
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 295, 310, 20, "Type:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(FL_ALIGN_LEFT);
- { Fl_Input* o = new Fl_Input(90, 290, 140, 20);
+ { Fl_Input* o = new Fl_Input(95, 295, 158, 20);
o->tooltip("The type of the user data.");
o->labelfont(1);
o->labelsize(11);
@@ -704,61 +705,61 @@ access the Widget pointer and \'v\' to access the user value.");
o->textsize(11);
o->callback((Fl_Callback*)user_data_type_cb);
Fl_Group::current()->resizable(o);
- }
- { Fl_Light_Button* o = new Fl_Light_Button(285, 290, 105, 20, "No Change");
+ } // Fl_Input* o
+ { Fl_Light_Button* o = new Fl_Light_Button(300, 295, 105, 20, "No Change");
o->tooltip("Call the callback even if the value has not changed.");
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)when_button_cb);
- }
+ } // Fl_Light_Button* o
o->end();
- }
+ } // Fl_Group* o
o->end();
- }
+ } // Fl_Group* o
o->end();
Fl_Group::current()->resizable(o);
- }
- { Fl_Group* o = new Fl_Group(8, 321, 391, 24);
+ } // Fl_Tabs* o
+ { Fl_Group* o = new Fl_Group(9, 330, 400, 20);
o->labelsize(11);
- { Fl_Box* o = new Fl_Box(8, 325, 20, 20);
+ { Fl_Box* o = new Fl_Box(9, 330, 20, 20);
o->labelsize(11);
Fl_Group::current()->resizable(o);
- }
- { Fl_Button* o = new Fl_Button(231, 325, 99, 20, "Hide &Overlays");
+ } // Fl_Box* o
+ { Fl_Button* o = new Fl_Button(240, 330, 99, 20, "Hide &Overlays");
o->tooltip("Hide the widget overlay box.");
o->labelsize(11);
o->labelcolor((Fl_Color)1);
o->callback((Fl_Callback*)overlay_cb);
- }
- { Fl_Button* o = new Fl_Button(80, 325, 80, 20, "Revert");
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(66, 330, 80, 20, "Revert");
o->labelsize(11);
o->callback((Fl_Callback*)revert_cb);
o->hide();
- }
- { Fl_Return_Button* o = new Fl_Return_Button(335, 325, 64, 20, "Close");
+ } // Fl_Button* o
+ { Fl_Return_Button* o = new Fl_Return_Button(344, 330, 64, 20, "Close");
o->labelsize(11);
o->callback((Fl_Callback*)ok_cb);
- }
- { Fl_Button* o = new Fl_Button(329, 325, 70, 20, "Cancel");
+ } // Fl_Return_Button* o
+ { Fl_Button* o = new Fl_Button(339, 330, 70, 20, "Cancel");
o->labelsize(11);
o->callback((Fl_Callback*)cancel_cb);
o->hide();
- }
- { Fl_Button* o = wLiveMode = new Fl_Button(142, 325, 84, 20, "Live &Mode");
- o->tooltip("Create a live duplicate of the selected widgets to test resizing and menu beh\
+ } // Fl_Button* o
+ { wLiveMode = new Fl_Button(151, 330, 84, 20, "Live &Mode");
+ wLiveMode->tooltip("Create a live duplicate of the selected widgets to test resizing and menu beh\
avior.");
- o->type(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)live_mode_cb);
- }
+ wLiveMode->type(1);
+ wLiveMode->labelsize(11);
+ wLiveMode->callback((Fl_Callback*)live_mode_cb);
+ } // Fl_Button* wLiveMode
o->end();
- }
+ } // Fl_Group* o
o->size_range(o->w(), o->h());
o->end();
- }
+ } // Fl_Double_Window* o
return w;
}
//
-// End of "$Id: widget_panel.cxx 4625 2005-11-02 13:55:13Z matt $".
+// End of "$Id: widget_panel.cxx 5438 2006-09-17 14:58:25Z mike $".
//
diff --git a/fluid/widget_panel.fl b/fluid/widget_panel.fl
index df6da02..861d2d9 100644
--- a/fluid/widget_panel.fl
+++ b/fluid/widget_panel.fl
@@ -1,9 +1,9 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0107
+version 1.0108
header_name {.h}
code_name {.cxx}
comment {//
-// "$Id: widget_panel.fl 4625 2005-11-02 13:55:13Z matt $"
+// "$Id: widget_panel.fl 5438 2006-09-17 14:58:25Z mike $"
//
// Widget panel for the Fast Light Tool Kit (FLTK).
//
@@ -33,31 +33,31 @@ comment {//
Function {make_widget_panel()} {open
} {
- Fl_Window {} {open
- xywh {353 184 410 355} type Double labelsize 11 resizable hotspot
+ Fl_Window {} {open selected
+ xywh {711 172 420 360} type Double labelsize 11 align 80 resizable hotspot
code0 {o->size_range(o->w(), o->h());} visible
} {
Fl_Tabs {} {
callback {propagate_load((Fl_Group *)o,v);} open
- xywh {5 5 400 310} selection_color 4 labelsize 11 labelcolor 7 when 0 resizable
+ xywh {10 10 400 310} selection_color 12 labelsize 11 labelcolor 7 when 0 resizable
} {
Fl_Group {} {
label GUI
callback propagate_load
- xywh {5 25 400 290} labelsize 11 when 0 resizable
+ xywh {10 30 400 290} labelsize 11 when 0 resizable
} {
Fl_Group {} {
label {Label:}
callback propagate_load
- xywh {90 35 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 40 309 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
callback label_cb
- tooltip {The label text for the widget.} xywh {90 35 180 20} labelfont 1 labelsize 11 when 1 textsize 11 resizable
+ tooltip {The label text for the widget.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 1 textsize 11 resizable
}
Fl_Choice {} {
callback labeltype_cb open
- tooltip {The label style for the widget.} xywh {270 35 120 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11
+ tooltip {The label style for the widget.} xywh {284 40 120 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11
code0 {extern Fl_Menu_Item labeltypemenu[];}
code1 {o->menu(labeltypemenu);}
} {}
@@ -65,427 +65,427 @@ Function {make_widget_panel()} {open
Fl_Group {} {
label {Image:}
callback propagate_load
- xywh {90 60 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 65 309 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
callback image_cb
- tooltip {The active image for the widget.} xywh {90 60 230 20} labelfont 1 labelsize 11 textsize 11 resizable
+ tooltip {The active image for the widget.} xywh {95 65 240 20} labelfont 1 labelsize 11 textsize 11 resizable
}
Fl_Button {} {
label {Browse...}
callback image_browse_cb
- tooltip {Click to choose the active image.} xywh {320 60 70 20} labelsize 11
+ tooltip {Click to choose the active image.} xywh {334 65 70 20} labelsize 11
}
}
Fl_Group {} {
label {Inactive:}
callback propagate_load
- xywh {90 85 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 90 309 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
callback inactive_cb
- tooltip {The inactive image for the widget.} xywh {90 85 230 20} labelfont 1 labelsize 11 textsize 11 resizable
+ tooltip {The inactive image for the widget.} xywh {95 90 240 20} labelfont 1 labelsize 11 textsize 11 resizable
}
Fl_Button {} {
label {Browse...}
callback inactive_browse_cb
- tooltip {Click to choose the inactive image.} xywh {320 85 70 20} labelsize 11
+ tooltip {Click to choose the inactive image.} xywh {334 90 70 20} labelsize 11
}
}
Fl_Group {} {
label {Alignment:}
callback propagate_load
- xywh {90 110 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 115 300 20} labelfont 1 labelsize 11 align 4
} {
Fl_Button {} {
label Clip
user_data FL_ALIGN_CLIP
callback align_cb
- tooltip {Clip the label to the inside of the widget.} xywh {90 110 45 20} type Toggle selection_color 8 labelsize 11 align 16
+ tooltip {Clip the label to the inside of the widget.} xywh {95 115 45 20} type Toggle selection_color 8 labelsize 11 align 16
}
Fl_Button {} {
label Wrap
user_data FL_ALIGN_WRAP
- callback align_cb selected
- tooltip {Wrap the label text.} xywh {140 110 50 20} type Toggle selection_color 8 labelsize 11
+ callback align_cb
+ tooltip {Wrap the label text.} xywh {145 115 50 20} type Toggle selection_color 8 labelsize 11
}
Fl_Button {} {
label {Text/Image}
user_data FL_ALIGN_TEXT_OVER_IMAGE
callback align_cb
- tooltip {Show the label text over the image.} xywh {195 110 65 20} type Toggle selection_color 8 labelsize 11
+ tooltip {Show the label text over the image.} xywh {200 115 65 20} type Toggle selection_color 8 labelsize 11
}
Fl_Button {} {
label {@-1<-}
user_data FL_ALIGN_LEFT
callback align_cb
- tooltip {Left-align the label.} xywh {265 110 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
+ tooltip {Left-align the label.} xywh {270 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
}
Fl_Button {} {
label {@-1->}
user_data FL_ALIGN_RIGHT
callback align_cb
- tooltip {Right-align the label.} xywh {290 110 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
+ tooltip {Right-align the label.} xywh {295 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
}
Fl_Button {} {
label {@-18}
user_data FL_ALIGN_TOP
callback align_cb
- tooltip {Top-align the label.} xywh {315 110 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
+ tooltip {Top-align the label.} xywh {320 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
}
Fl_Button {} {
label {@-12}
user_data FL_ALIGN_BOTTOM
callback align_cb
- tooltip {Bottom-align the label.} xywh {340 110 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
+ tooltip {Bottom-align the label.} xywh {345 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
}
Fl_Button {} {
label {@-3square}
user_data FL_ALIGN_INSIDE
callback align_cb
- tooltip {Show the label inside the widget.} xywh {365 110 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
+ tooltip {Show the label inside the widget.} xywh {370 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
}
Fl_Box {} {
- xywh {390 110 0 20} labelsize 11 resizable
+ xywh {395 115 0 20} labelsize 11 resizable
}
}
Fl_Group {} {
label {Position:}
callback propagate_load open
- xywh {90 145 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 150 300 20} labelfont 1 labelsize 11 align 4
} {
Fl_Value_Input widget_x_input {
label {X:}
callback x_cb
- tooltip {The X position of the widget.} xywh {90 145 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ tooltip {The X position of the widget.} xywh {95 150 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
}
Fl_Value_Input widget_y_input {
label {Y:}
callback y_cb
- tooltip {The Y position of the widget.} xywh {150 145 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ tooltip {The Y position of the widget.} xywh {155 150 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
}
Fl_Value_Input widget_w_input {
label {Width:}
callback w_cb
- tooltip {The width of the widget.} xywh {210 145 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ tooltip {The width of the widget.} xywh {215 150 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
}
Fl_Value_Input widget_h_input {
label {Height:}
callback h_cb
- tooltip {The height of the widget.} xywh {270 145 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ tooltip {The height of the widget.} xywh {275 150 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
}
Fl_Light_Button {} {
label Relative
callback wc_relative_cb
- tooltip {If set, widgets inside a widget class of type Fl_Group are repositioned relative to the origin at construction time} xywh {330 145 55 20} labelsize 11
+ tooltip {If set, widgets inside a widget class of type Fl_Group are repositioned relative to the origin at construction time} xywh {335 150 55 20} labelsize 11
}
Fl_Box {} {
- xywh {389 145 1 20} resizable
+ xywh {394 150 1 20} resizable
}
}
Fl_Group {} {
label {Values:}
callback propagate_load
- xywh {90 180 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 185 300 20} labelfont 1 labelsize 11 align 4
} {
Fl_Value_Input {} {
label {Size:}
callback slider_size_cb
- tooltip {The size of the slider.} xywh {90 180 55 20} labelsize 11 align 5 step 0.010101 textsize 11
+ tooltip {The size of the slider.} xywh {95 185 55 20} labelsize 11 align 5 step 0.010101 textsize 11
}
Fl_Value_Input {} {
label {Minimum:}
callback min_cb
- tooltip {The minimum value of the widget.} xywh {150 180 55 20} labelsize 11 align 5 textsize 11
+ tooltip {The minimum value of the widget.} xywh {155 185 55 20} labelsize 11 align 5 textsize 11
}
Fl_Value_Input {} {
label {Maximum:}
callback max_cb
- tooltip {The maximum value of the widget.} xywh {210 180 55 20} labelsize 11 align 5 value 1 textsize 11
+ tooltip {The maximum value of the widget.} xywh {215 185 55 20} labelsize 11 align 5 value 1 textsize 11
}
Fl_Value_Input {} {
label {Step:}
callback step_cb
- tooltip {The resolution of the widget value.} xywh {270 180 55 20} labelsize 11 align 5 textsize 11
+ tooltip {The resolution of the widget value.} xywh {275 185 55 20} labelsize 11 align 5 textsize 11
}
Fl_Value_Input {} {
label {Value:}
callback value_cb
- tooltip {The current widget value.} xywh {330 180 55 20} labelsize 11 align 5 textsize 11
+ tooltip {The current widget value.} xywh {335 185 55 20} labelsize 11 align 5 textsize 11
}
Fl_Box {} {
- xywh {390 180 0 20} resizable
+ xywh {395 185 0 20} resizable
}
}
Fl_Group {} {
label {Size Range:}
callback propagate_load
- xywh {90 180 300 20} labelfont 1 labelsize 11 align 4 hide
+ xywh {95 185 300 20} labelfont 1 labelsize 11 align 4 hide
} {
Fl_Value_Input {} {
label {Minimum Size:}
callback min_w_cb
- tooltip {The size of the slider.} xywh {90 180 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ tooltip {The size of the slider.} xywh {95 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
}
Fl_Value_Input {} {
callback min_h_cb
- tooltip {The minimum value of the widget.} xywh {150 180 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ tooltip {The minimum value of the widget.} xywh {155 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
}
Fl_Button {} {
label set
callback set_min_size_cb
- xywh {210 180 25 20} labelsize 11
+ xywh {215 185 25 20} labelsize 11
}
Fl_Value_Input {} {
label {Maximum Size:}
callback max_w_cb
- tooltip {The maximum value of the widget.} xywh {240 180 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ tooltip {The maximum value of the widget.} xywh {245 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
}
Fl_Value_Input {} {
callback max_h_cb
- tooltip {The resolution of the widget value.} xywh {300 180 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ tooltip {The resolution of the widget value.} xywh {305 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
}
Fl_Button {} {
label set
callback set_max_size_cb
- xywh {360 180 25 20} labelsize 11
+ xywh {365 185 25 20} labelsize 11
}
Fl_Box {} {
- xywh {390 180 0 20} resizable
+ xywh {395 185 0 20} resizable
}
}
Fl_Button {} {
label {Shortcut:}
callback shortcut_in_cb
- tooltip {The shortcut key for the widget.} xywh {90 205 300 20} box DOWN_BOX color 7 selection_color 7 labelfont 1 labelsize 11 align 4
+ tooltip {The shortcut key for the widget.} xywh {95 210 310 20} box DOWN_BOX color 7 selection_color 7 labelfont 1 labelsize 11 align 4
code0 {\#include "Shortcut_Button.h"}
class Shortcut_Button
}
Fl_Group {} {
label {X Class:}
callback propagate_load
- xywh {90 230 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 235 300 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
label {:}
callback xclass_cb
- tooltip {The X resource class.} xywh {90 230 95 20} labelfont 1 labelsize 11 textsize 11 resizable
+ tooltip {The X resource class.} xywh {95 235 95 20} labelfont 1 labelsize 11 textsize 11 resizable
}
Fl_Light_Button {} {
label Border
callback border_cb
- tooltip {Add a border around the window.} xywh {190 230 60 20} selection_color 1 labelsize 11
+ tooltip {Add a border around the window.} xywh {195 235 60 20} selection_color 1 labelsize 11
}
Fl_Light_Button {} {
label Modal
callback modal_cb
- tooltip {Make the window modal.} xywh {255 230 55 20} selection_color 1 labelsize 11
+ tooltip {Make the window modal.} xywh {260 235 55 20} selection_color 1 labelsize 11
}
Fl_Light_Button {} {
label Nonmodal
callback non_modal_cb
- tooltip {Make the window non-modal.} xywh {315 230 75 20} selection_color 1 labelsize 11 align 148
+ tooltip {Make the window non-modal.} xywh {320 235 75 20} selection_color 1 labelsize 11 align 148
}
}
Fl_Group {} {
label {Attributes:}
callback propagate_load
- xywh {90 255 305 20} labelfont 1 labelsize 11 align 4
+ xywh {95 260 305 20} labelfont 1 labelsize 11 align 4
} {
Fl_Light_Button {} {
label Visible
callback visible_cb
- tooltip {Show the widget.} xywh {90 255 60 20} selection_color 1 labelsize 11
+ tooltip {Show the widget.} xywh {95 260 60 20} selection_color 1 labelsize 11
}
Fl_Light_Button {} {
label Active
callback active_cb
- tooltip {Activate the widget.} xywh {155 255 60 20} selection_color 1 labelsize 11
+ tooltip {Activate the widget.} xywh {160 260 60 20} selection_color 1 labelsize 11
}
Fl_Light_Button {} {
label Resizable
callback resizable_cb
- tooltip {Make the widget resizable.} xywh {220 255 75 20} selection_color 1 labelsize 11 when 1
+ tooltip {Make the widget resizable.} xywh {225 260 75 20} selection_color 1 labelsize 11 when 1
}
Fl_Light_Button {} {
label Hotspot
callback hotspot_cb
- tooltip {Center the window under this widget.} xywh {300 255 70 20} selection_color 1 labelsize 11 when 1
+ tooltip {Center the window under this widget.} xywh {305 260 70 20} selection_color 1 labelsize 11 when 1
}
Fl_Box {} {
- xywh {390 255 0 20} labelsize 11 resizable
+ xywh {395 260 0 20} labelsize 11 resizable
}
}
Fl_Input {} {
label {Tooltip:}
callback tooltip_cb
- tooltip {The tooltip text for the widget.} xywh {90 280 300 20} labelfont 1 labelsize 11 textsize 11
+ tooltip {The tooltip text for the widget.} xywh {95 285 310 20} labelfont 1 labelsize 11 textsize 11
}
Fl_Box {} {
- xywh {90 300 300 5} labelsize 11 resizable
+ xywh {95 305 300 5} labelsize 11 resizable
}
}
Fl_Group {} {
label Style
callback propagate_load
- xywh {5 25 400 290} labelsize 11 when 0 hide
+ xywh {10 30 400 290} labelsize 11 when 0 hide
} {
Fl_Group {} {
label {Label Font:}
callback propagate_load open
- xywh {90 35 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 40 309 20} labelfont 1 labelsize 11 align 4
} {
Fl_Choice {} {
callback labelfont_cb open
- tooltip {The style of the label text.} xywh {90 35 160 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
+ tooltip {The style of the label text.} xywh {95 40 170 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
code0 {extern Fl_Menu_Item fontmenu[];}
code1 {o->menu(fontmenu);}
} {}
Fl_Value_Input {} {
callback labelsize_cb
- tooltip {The size of the label text.} xywh {250 35 50 20} labelsize 11 maximum 100 step 1 value 14 textsize 11
+ tooltip {The size of the label text.} xywh {264 40 50 20} labelsize 11 maximum 100 step 1 value 14 textsize 11
}
Fl_Button {} {
label {Label Color}
callback labelcolor_cb
- tooltip {The color of the label text.} xywh {300 35 90 20} labelsize 11
+ tooltip {The color of the label text.} xywh {314 40 90 20} labelsize 11
}
}
Fl_Group {} {
label {Box:}
callback propagate_load open
- xywh {90 60 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 65 309 20} labelfont 1 labelsize 11 align 4
} {
Fl_Choice {} {
callback box_cb open
- tooltip {The "up" box of the widget.} xywh {90 60 210 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
+ tooltip {The "up" box of the widget.} xywh {95 65 219 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
code0 {extern Fl_Menu_Item boxmenu[];}
code1 {o->menu(boxmenu);}
} {}
Fl_Button {} {
label Color
callback color_cb
- tooltip {The background color of the widget.} xywh {300 60 90 20} labelsize 11
+ tooltip {The background color of the widget.} xywh {314 65 90 20} labelsize 11
}
}
Fl_Group {} {
label {Down Box:}
callback propagate_load open
- xywh {90 85 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 90 309 20} labelfont 1 labelsize 11 align 4
} {
Fl_Choice {} {
callback down_box_cb open
- tooltip {The "down" box of the widget.} xywh {90 85 210 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
+ tooltip {The "down" box of the widget.} xywh {95 90 219 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
code0 {extern Fl_Menu_Item boxmenu[];}
code1 {o->menu(boxmenu);}
} {}
Fl_Button {} {
label {Select Color}
callback color2_cb
- tooltip {The selection color of the widget.} xywh {300 85 90 20} labelsize 11
+ tooltip {The selection color of the widget.} xywh {314 90 90 20} labelsize 11
}
}
Fl_Group {} {
label {Text Font:}
callback propagate_load open
- xywh {90 110 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 115 309 20} labelfont 1 labelsize 11 align 4
} {
Fl_Choice {} {
callback textfont_cb open
- tooltip {The value text style.} xywh {90 110 160 20} box DOWN_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
+ tooltip {The value text style.} xywh {95 115 170 20} box DOWN_BOX down_box BORDER_BOX labelfont 1 labelsize 11 resizable
code0 {extern Fl_Menu_Item fontmenu[];}
code1 {o->menu(fontmenu);}
} {}
Fl_Value_Input {} {
callback textsize_cb
- tooltip {The value text size.} xywh {250 110 50 20} labelsize 11 maximum 100 step 1 value 14 textsize 11
+ tooltip {The value text size.} xywh {264 115 50 20} labelsize 11 maximum 100 step 1 value 14 textsize 11
}
Fl_Button {} {
label {Text Color}
callback textcolor_cb
- tooltip {The value text color.} xywh {300 110 90 20} labelsize 11
+ tooltip {The value text color.} xywh {314 115 90 20} labelsize 11
}
}
Fl_Box {} {
- xywh {90 135 300 40} labelsize 11 resizable
+ xywh {95 140 300 40} labelsize 11 resizable
}
}
Fl_Group {} {
label {C++}
callback propagate_load
- xywh {5 25 400 290} labelsize 11 when 0 hide
+ xywh {10 30 400 290} labelsize 11 when 0 hide
} {
Fl_Group {} {
label {Class:}
callback propagate_load
- xywh {90 35 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 40 310 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
user_data 4
callback subclass_cb
- tooltip {The widget subclass.} xywh {90 35 160 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
+ tooltip {The widget subclass.} xywh {95 40 172 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
}
Fl_Choice {} {
callback subtype_cb open
- tooltip {The widget subtype.} xywh {250 35 140 20} box THIN_UP_BOX down_box BORDER_BOX labelsize 11
+ tooltip {The widget subtype.} xywh {265 40 140 20} box THIN_UP_BOX down_box BORDER_BOX labelsize 11
} {}
}
Fl_Group {} {
label {Name:}
callback propagate_load
- xywh {90 60 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 65 310 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
callback name_cb
- tooltip {The name of the widget.} xywh {90 60 240 20} labelfont 1 labelsize 11 textsize 11 resizable
+ tooltip {The name of the widget.} xywh {95 65 250 20} labelfont 1 labelsize 11 textsize 11 resizable
}
Fl_Light_Button {} {
label public
callback name_public_cb
- tooltip {Make the widget publicly accessible.} xywh {330 60 60 20} selection_color 1 labelsize 11 when 1
+ tooltip {Make the widget publicly accessible.} xywh {345 65 60 20} selection_color 1 labelsize 11 when 1
}
}
Fl_Input {v_input[0]} {
label {Extra Code:}
user_data 0
callback v_input_cb
- tooltip {Extra initialization code for the widget.} xywh {90 85 300 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ tooltip {Extra initialization code for the widget.} xywh {95 90 310 20} labelfont 1 labelsize 11 textfont 4 textsize 11
}
Fl_Input {v_input[1]} {
user_data 1
callback v_input_cb
- tooltip {Extra initialization code for the widget.} xywh {90 105 300 20} labelsize 11 textfont 4 textsize 11
+ tooltip {Extra initialization code for the widget.} xywh {95 110 310 20} labelsize 11 textfont 4 textsize 11
}
Fl_Input {v_input[2]} {
user_data 2
callback v_input_cb
- tooltip {Extra initialization code for the widget.} xywh {90 125 300 20} labelsize 11 textfont 4 textsize 11
+ tooltip {Extra initialization code for the widget.} xywh {95 130 310 20} labelsize 11 textfont 4 textsize 11
}
Fl_Input {v_input[3]} {
user_data 3
callback v_input_cb
- tooltip {Extra initialization code for the widget.} xywh {90 145 300 20} labelsize 11 textfont 4 textsize 11
+ tooltip {Extra initialization code for the widget.} xywh {95 150 310 20} labelsize 11 textfont 4 textsize 11
}
Fl_Text_Editor {} {
label {Callback:}
callback callback_cb
- tooltip {The callback function or code for the widget. Use the variable name 'o' to access the Widget pointer and 'v' to access the user value.} xywh {90 170 300 90} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
+ tooltip {The callback function or code for the widget. Use the variable name 'o' to access the Widget pointer and 'v' to access the user value.} xywh {95 175 310 90} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
code0 {\#include "CodeEditor.h"}
class CodeEditor
}
Fl_Group {} {
label {User Data:}
callback propagate_load
- xywh {90 265 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 270 310 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
callback user_data_cb
- tooltip {The user data to pass into the callback code.} xywh {90 265 140 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
+ tooltip {The user data to pass into the callback code.} xywh {95 270 158 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
}
Fl_Choice {} {
label {When:}
callback when_cb open
- tooltip {When to call the callback function.} xywh {285 265 105 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 when 1
+ tooltip {When to call the callback function.} xywh {300 270 105 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 when 1
code0 {extern Fl_Menu_Item whenmenu[];}
code1 {o->menu(whenmenu);}
} {}
@@ -493,50 +493,50 @@ Function {make_widget_panel()} {open
Fl_Group {} {
label {Type:}
callback propagate_load
- xywh {90 290 300 20} labelfont 1 labelsize 11 align 4
+ xywh {95 295 310 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
callback user_data_type_cb
- tooltip {The type of the user data.} xywh {90 290 140 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
+ tooltip {The type of the user data.} xywh {95 295 158 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
}
Fl_Light_Button {} {
label {No Change}
callback when_button_cb
- tooltip {Call the callback even if the value has not changed.} xywh {285 290 105 20} selection_color 1 labelsize 11
+ tooltip {Call the callback even if the value has not changed.} xywh {300 295 105 20} selection_color 1 labelsize 11
}
}
}
}
- Fl_Group {} {
- xywh {8 321 391 24} labelsize 11
+ Fl_Group {} {open
+ xywh {9 330 400 20} labelsize 11
} {
Fl_Box {} {
- xywh {8 325 20 20} labelsize 11 resizable
+ xywh {9 330 20 20} labelsize 11 resizable
}
Fl_Button {} {
label {Hide &Overlays}
callback overlay_cb
- tooltip {Hide the widget overlay box.} xywh {231 325 99 20} labelsize 11 labelcolor 1
+ tooltip {Hide the widget overlay box.} xywh {240 330 99 20} labelsize 11 labelcolor 1
}
Fl_Button {} {
label Revert
callback revert_cb
- xywh {80 325 80 20} labelsize 11 hide
+ xywh {66 330 80 20} labelsize 11 hide
}
Fl_Return_Button {} {
label Close
callback ok_cb
- xywh {335 325 64 20} labelsize 11
+ xywh {344 330 64 20} labelsize 11
}
Fl_Button {} {
label Cancel
callback cancel_cb
- xywh {329 325 70 20} labelsize 11 hide
+ xywh {339 330 70 20} labelsize 11 hide
}
Fl_Button wLiveMode {
label {Live &Mode}
callback live_mode_cb
- tooltip {Create a live duplicate of the selected widgets to test resizing and menu behavior.} xywh {142 325 84 20} type Toggle labelsize 11
+ tooltip {Create a live duplicate of the selected widgets to test resizing and menu behavior.} xywh {151 330 84 20} type Toggle labelsize 11
}
}
}
@@ -544,6 +544,6 @@ Function {make_widget_panel()} {open
comment {
//
-// End of "$Id: widget_panel.fl 4625 2005-11-02 13:55:13Z matt $".
+// End of "$Id: widget_panel.fl 5438 2006-09-17 14:58:25Z mike $".
//} {in_source in_header
}
diff --git a/fluid/widget_panel.h b/fluid/widget_panel.h
index 61d6b64..ecdb8e8 100644
--- a/fluid/widget_panel.h
+++ b/fluid/widget_panel.h
@@ -1,5 +1,5 @@
//
-// "$Id: widget_panel.h 4554 2005-08-30 21:57:23Z matt $"
+// "$Id: widget_panel.h 5438 2006-09-17 14:58:25Z mike $"
//
// Widget panel for the Fast Light Tool Kit (FLTK).
//
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#ifndef widget_panel_h
#define widget_panel_h
@@ -115,5 +115,5 @@ Fl_Double_Window* make_widget_panel();
#endif
//
-// End of "$Id: widget_panel.h 4554 2005-08-30 21:57:23Z matt $".
+// End of "$Id: widget_panel.h 5438 2006-09-17 14:58:25Z mike $".
//
diff --git a/install-sh b/install-sh
index 89fc9b0..ab74c88 100644
--- a/install-sh
+++ b/install-sh
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5.
diff --git a/jpeg/Makefile b/jpeg/Makefile
index 715d9cd..c86315f 100644
--- a/jpeg/Makefile
+++ b/jpeg/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 4058 2005-02-28 00:11:07Z mike $"
+# "$Id: Makefile 5663 2007-02-06 19:35:28Z mike $"
#
# JPEG library makefile for the Fast Light Toolkit (FLTK).
#
@@ -64,15 +64,17 @@ clean:
# Install everything...
#
-install:
- echo "Installing libfltk_jpeg$(LIBEXT) in $(libdir)..."
- -$(MKDIR) $(libdir)
- $(RM) $(libdir)/libfltk_jpeg$(LIBEXT)
- $(CP) $(LIBJPEG) $(libdir)
- $(RANLIB) $(libdir)/libfltk_jpeg$(LIBEXT)
+install: $(LIBJPEG)
+ echo "Installing $(LIBJPEG) in $(libdir)..."
+ -$(INSTALL_DIR) $(DESTDIR)$(libdir)
+ $(INSTALL_LIB) $(LIBJPEG) $(DESTDIR)$(libdir)
+ $(RANLIB) $(DESTDIR)$(libdir)/libfltk_jpeg$(LIBEXT)
echo "Installing jpeg headers in $(includedir)/FL/images..."
- -$(MKDIR) $(includedir)/FL/images
- $(CP) jconfig.h jerror.h jmorecfg.h jpeglib.h $(includedir)/FL/images
+ -$(INSTALL_DIR) $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) jconfig.h $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) jerror.h $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) jmorecfg.h $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) jpeglib.h $(DESTDIR)$(includedir)/FL/images
#
@@ -112,5 +114,5 @@ include makedepend
$(OBJS): ../makeinclude
#
-# End of "$Id: Makefile 4058 2005-02-28 00:11:07Z mike $".
+# End of "$Id: Makefile 5663 2007-02-06 19:35:28Z mike $".
#
diff --git a/makeinclude.in b/makeinclude.in
index 2a31bc3..b4451d5 100644
--- a/makeinclude.in
+++ b/makeinclude.in
@@ -1,9 +1,9 @@
#
-# "$Id: makeinclude.in 4756 2006-01-15 18:36:16Z mike $"
+# "$Id: makeinclude.in 5800 2007-05-03 15:49:59Z matt $"
#
# Make include file for the Fast Light Tool Kit (FLTK).
#
-# Copyright 1998-2006 by Bill Spitzak and others.
+# Copyright 1998-2007 by Bill Spitzak and others.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -29,6 +29,7 @@ prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
datadir = @datadir@
+datarootdir = @datarootdir@
includedir = @includedir@
libdir = @libdir@
mandir = @mandir@
@@ -37,11 +38,9 @@ docdir = $(datadir)/doc/fltk
VPATH = @srcdir@
# programs we use...
-CHMOD = chmod
-CP = cp
HTMLDOC = @HTMLDOC@
+INSTALL = @INSTALL@
LN = ln -s
-MKDIR = mkdir -p
NROFF = @NROFF@
RM = rm -f
RMDIR = rm -rf
@@ -54,9 +53,10 @@ CC = @CC@
MAKEDEPEND = @MAKEDEPEND@
# flags for C++ compiler:
+ARCHFLAGS = @ARCHFLAGS@
OPTIM = @OPTIM@
-CFLAGS = $(OPTIM) @LARGEFILE@ @CPPFLAGS@ @CFLAGS@
-CXXFLAGS = $(OPTIM) @LARGEFILE@ @CPPFLAGS@ @CXXFLAGS@
+CFLAGS = $(OPTIM) @LARGEFILE@ @PTHREAD_FLAGS@ @CPPFLAGS@ @CFLAGS@
+CXXFLAGS = $(OPTIM) @LARGEFILE@ @PTHREAD_FLAGS@ @CPPFLAGS@ @CXXFLAGS@
# program to make the archive:
LIBNAME = @LIBNAME@
@@ -74,8 +74,10 @@ DSOCOMMAND = @DSOCOMMAND@
# libraries to link with:
AUDIOLIBS = @AUDIOLIBS@
-LDLIBS = @LDFLAGS@ @LIBS@
-GLDLIBS = @LDFLAGS@ @GLLIB@ @LIBS@
+DSOFLAGS = @DSOFLAGS@
+LDFLAGS = $(OPTIM) @LDFLAGS@
+LDLIBS = @LIBS@
+GLDLIBS = @GLLIB@ @LIBS@
LINKFLTK = @LINKFLTK@
LINKFLTKGL = @LINKFLTKGL@
LINKFLTKFORMS = @LINKFLTKFORMS@ @LINKFLTK@
@@ -106,6 +108,17 @@ CAT1EXT = @CAT1EXT@
CAT3EXT = @CAT3EXT@
CAT6EXT = @CAT6EXT@
+#
+# Installation programs...
+#
+
+INSTALL_BIN = $(INSTALL) -m 755
+INSTALL_DATA = $(INSTALL) -m 644
+INSTALL_DIR = $(INSTALL) -d
+INSTALL_LIB = $(INSTALL) -m 755
+INSTALL_MAN = $(INSTALL) -m 644
+INSTALL_SCRIPT = $(INSTALL) -m 755
+
# Additional GUI install/uninstall targets...
INSTALL_DESKTOP = @INSTALL_DESKTOP@
UNINSTALL_DESKTOP = @UNINSTALL_DESKTOP@
@@ -114,22 +127,22 @@ UNINSTALL_DESKTOP = @UNINSTALL_DESKTOP@
.SILENT:
# Build commands and filename extensions...
-.SUFFIXES: .0 .1 .3 .c .cxx .h .fl .man .o .z $(EXEEXT)
+.SUFFIXES: .0 .1 .3 .6 .c .cxx .h .fl .man .o .z $(EXEEXT)
.o$(EXEEXT):
echo Linking $@...
- $(CXX) $(CXXFLAGS) $< $(LINKFLTK) $(LDLIBS) -o $@
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) $< $(LINKFLTK) $(LDLIBS) -o $@
$(POSTBUILD) $@ ../FL/mac.r
.c.o:
echo Compiling $<...
- $(CC) -I.. @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CFLAGS) -c $<
+ $(CC) -I.. $(ARCHFLAGS) @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CFLAGS) -c $<
.cxx.o:
echo Compiling $<...
- $(CXX) -I.. @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CXXFLAGS) -c $<
+ $(CXX) -I.. $(ARCHFLAGS) @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CXXFLAGS) -c $<
-.man.0 .man.1 .man.3:
+.man.0 .man.1 .man.3 .man.6:
echo Formatting $<...
rm -f $@
$(NROFF) -man $< >$@
@@ -142,5 +155,5 @@ UNINSTALL_DESKTOP = @UNINSTALL_DESKTOP@
mv t.z $@
#
-# End of "$Id: makeinclude.in 4756 2006-01-15 18:36:16Z mike $".
+# End of "$Id: makeinclude.in 5800 2007-05-03 15:49:59Z matt $".
#
diff --git a/makesrcdist b/makesrcdist
new file mode 100755
index 0000000..babab3c
--- /dev/null
+++ b/makesrcdist
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# makesrcdist - make a distribution of FLTK.
+#
+
+echo "Getting distribution..."
+
+if test $# = 0 -o "x$1" = xsnapshot; then
+ echo Updating for snapshot...
+ svn up
+ rev=`svnversion . | sed -e '1,$s/[a-zA-Z]//g'`
+ version="1.1svn"
+ fileversion="1.1svn-r$rev"
+ fileurl="ftp://ftp.easysw.com/pub/fltk/snapshots/fltk-$fileversion-source.tar.bz2"
+ url="."
+else
+ echo Creating tag for release...
+ rev="1"
+ version=$1
+ fileversion=$1
+ fileurl="ftp://ftp.easysw.com/pub/fltk/$version/fltk-$fileversion-source.tar.bz2"
+ url="https://svn.easysw.com/public/fltk/fltk/tags/release-$version"
+
+ svn copy https://svn.easysw.com/public/fltk/fltk/branches/branch-1.1 "$url" \
+ -m "Tag $version" || exit 1
+fi
+
+echo Exporting $version...
+rm -rf /tmp/fltk-$version
+svn export $url /tmp/fltk-$version
+
+echo Applying version number...
+cd /tmp/fltk-$version
+
+fileurl=`echo $fileurl | sed -e '1,$s/\\//\\\\\\//g'`
+sed -e '1,$s/@VERSION@/'$version'/' \
+ -e '1,$s/@RELEASE@/'$rev'/' \
+ -e '1,$s/^Source:.*/Source: '$fileurl'/' \
+ <fltk.spec.in >fltk.spec
+
+echo Creating configure script...
+autoconf -f
+
+echo Cleaning developer files...
+rm -rf OpenGL autom4te* bc5 config forms gl glut images packages themes
+rm -f makesrcdist
+
+cd ..
+
+echo "Making UNIX distribution..."
+
+gtar czf fltk-$fileversion-source.tar.gz fltk-$version
+
+echo "Making BZ2 distribution..."
+gtar cjf fltk-$fileversion-source.tar.bz2 fltk-$version
+
+echo "Making Windows distribution..."
+
+rm -f fltk-$fileversion-source.zip
+zip -r9 fltk-$fileversion-source.zip fltk-$version
+
+echo "Removing distribution directory..."
+
+rm -rf fltk-$version
+
+echo "Done!"
diff --git a/png/ANNOUNCE b/png/ANNOUNCE
index 6370130..c0b8188 100644
--- a/png/ANNOUNCE
+++ b/png/ANNOUNCE
@@ -1,28 +1,50 @@
-Libpng 1.2.7 - September 12, 2004
+Libpng 1.2.16 - January 31, 2007
This is a public release of libpng, intended for use in production codes.
-Changes since the last public release (1.2.6):
-
- Revised pngtest so memory allocation testing is only done when PNG_DEBUG==1.
- Removed unused pngasmrd.h file.
- Removed references to uu.net for archived files. Added references to
- PNG Spec (second edition) and the PNG ISO/IEC Standard.
- Added "test-dd" target in 15 makefiles, to run pngtest in DESTDIR.
- Fixed bug with "optimized window size" in the IDAT datastream, that
- causes libpng to write PNG files with incorrect zlib header bytes.
- Fixed bug with sCAL chunk and big-endian machines (David Munro).
- Undid new code added in 1.2.6 to update the color_type in
- png_set_filler().
- Added png_set_add_alpha() that updates color type.
- Revised png_set_strip_filler() to not remove alpha if color_type has alpha.
- Added makefile.hp64
- Changed projects/msvc/png32ms.def to scripts/png32ms.def in makefile.cygwin
-
-Send comments/corrections/commendations to
-png-implement@ccrc.wustl.edu (subscription required; write to
-majordomo@ccrc.wustl.edu with "subscribe png-implement" in the message)
-or to glennrp@users.sourceforge.net
+Files available for download:
+
+Source files with LF line endings (for Unix/Linux) and with a
+"configure" script
+
+ libpng-1.2.16.tar.gz
+ libpng-1.2.16.tar.bz2
+
+Source files with LF line endings (for Unix/Linux) without the
+"configure" script
+
+ libpng-1.2.16-no-config.tar.gz
+ libpng-1.2.16-no-config.tar.bz2
+
+Source files with CRLF line endings (for Windows), without the
+"configure" script
+
+ lpng1216.zip
+ lpng1216.tar.bz2
+
+Project files
+
+ libpng-1.2.16-project-netware.zip
+ libpng-1.2.16-project-wince.zip
+
+Other information:
+
+ libpng-1.2.16-README.txt
+ libpng-1.2.16-KNOWNBUGS.txt
+ libpng-1.2.16-LICENSE.txt
+ libpng-1.2.16-Y2K-compliance.txt
+
+Changes since the last public release (1.2.15):
+
+version 1.2.16 [January 31, 2007]
+
+ Fix bugs in makefile.nommx
+ Revised scripts/CMakeLists.txt
+
+Send comments/corrections/commendations to png-mng-implement at lists.sf.net
+(subscription required; visit
+https://lists.sourceforge.net/lists/listinfo/png-mng-implement
+to subscribe) or to glennrp at users.sourceforge.net
Glenn R-P
diff --git a/png/CHANGES b/png/CHANGES
index b34597f..8c8abcc 100644
--- a/png/CHANGES
+++ b/png/CHANGES
@@ -10,7 +10,7 @@ version 0.3
split up pngwrite.c to several files
added pnglib.txt
added example.c
- cleaned up writer, adding a few new tranformations
+ cleaned up writer, adding a few new transformations
fixed some bugs in writer
interfaced with zlib 0.5
added K&R support
@@ -22,7 +22,7 @@ version 0.4
created png_color_16 and png_color_8 to handle color needs
cleaned up color type defines
fixed various bugs
- made various names more consistant
+ made various names more consistent
interfaced with zlib 0.71
cleaned up zTXt reader and writer (using zlib's Reset functions)
split transformations into pngrtran.c and pngwtran.c
@@ -151,7 +151,7 @@ version 0.95 [March, 1997]
added "packswap" transformation, which changes the endianness of
packed-pixel bytes (Kevin Bracey)
added "strip_alpha" transformation, which removes the alpha channel of
- input images without using it (not neccesarily a good idea)
+ input images without using it (not necessarily a good idea)
added "swap_alpha" transformation, which puts the alpha channel in front
of the color bytes instead of after
removed all implicit variable tests which assume NULL == 0 (I think)
@@ -172,7 +172,7 @@ version 0.95 [March, 1997]
more chunk types tested in pngtest.c
renamed pngrcb.c to pngset.c, and all png_read_<chunk> functions to be
png_set_<chunk>. We now have corresponding png_get_<chunk>
- functions in pngget.c to get infomation in info_ptr. This isolates
+ functions in pngget.c to get information in info_ptr. This isolates
the application from the internal organization of png_info_struct
(good for shared library implementations).
@@ -522,9 +522,9 @@ version 1.0.5b [November 23, 1999]
Updated scripts/makevms.com and added makevms.com to contrib/gregbook
and contrib/pngminus (Martin Zinser)
version 1.0.5c [November 26, 1999]
- Moved png_get_header_version from png.h to png.c, to accomodate ansi2knr.
+ Moved png_get_header_version from png.h to png.c, to accommodate ansi2knr.
Removed all global arrays (according to PNG_NO_GLOBAL_ARRAYS macro), to
- accomodate making DLL's: Moved usr_png_ver from global variable to function
+ accommodate making DLL's: Moved usr_png_ver from global variable to function
png_get_header_ver() in png.c. Moved png_sig to png_sig_bytes in png.c and
eliminated use of png_sig in pngwutil.c. Moved the various png_CHNK arrays
into pngtypes.h. Eliminated use of global png_pass arrays. Declared the
@@ -1345,7 +1345,7 @@ version 1.0.16rc5 and 1.2.6rc5 [August 10, 2004]
Moved "PNG_HANDLE_CHUNK_*" macros out of PNG_ASSEMBLER_CODE_SUPPORTED
section of png.h where they were inadvertently placed in version rc3.
-version 1.0.16 and 1.2.6 [August 15, 2004]
+version 1.2.6 and 1.0.16 [August 15, 2004]
Revised pngtest so memory allocation testing is only done when PNG_DEBUG==1.
version 1.2.7beta1 [August 26, 2004]
Removed unused pngasmrd.h file.
@@ -1361,13 +1361,338 @@ version 1.2.7beta2 [August 28, 2004]
Added png_set_add_alpha() that updates color type.
version 1.0.17rc1 and 1.2.7rc1 [September 4, 2004]
Revised png_set_strip_filler() to not remove alpha if color_type has alpha.
-version 1.0.17 and 1.2.7 [September 12, 2004]
+
+version 1.2.7 and 1.0.17 [September 12, 2004]
Added makefile.hp64
Changed projects/msvc/png32ms.def to scripts/png32ms.def in makefile.cygwin
+version 1.2.8beta1 [November 1, 2004]
+ Fixed bug in png_text_compress() that would fail to complete a large block.
+ Fixed bug, introduced in libpng-1.2.7, that overruns a buffer during
+ strip alpha operation in png_do_strip_filler().
+ Added PNG_1_2_X definition in pngconf.h
+ #ifdef out png_info_init in png.c and png_read_init in pngread.c (as of 1.3.0)
+version 1.2.8beta2 [November 2, 2004]
+ Reduce color_type to a nonalpha type after strip alpha operation in
+ png_do_strip_filler().
+version 1.2.8beta3 [November 3, 2004]
+ Revised definitions of PNG_MAX_UINT_32, PNG_MAX_SIZE, and PNG_MAXSUM
+version 1.2.8beta4 [November 12, 2004]
+ Fixed (again) definition of PNG_LIBPNG_VER_DLLNUM in png.h (Cosmin).
+ Added PNG_LIBPNG_BUILD_PRIVATE in png.h (Cosmin).
+ Set png_ptr->zstream.data_type to Z_BINARY, to avoid unnecessary detection
+ of data type in deflate (Cosmin).
+ Deprecated but continue to support SPECIALBUILD and PRIVATEBUILD in favor of
+ PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING.
+version 1.2.8beta5 [November 20, 2004]
+ Use png_ptr->flags instead of png_ptr->transformations to pass
+ PNG_STRIP_ALPHA info to png_do_strip_filler(), to preserve ABI
+ compatibility.
+ Revised handling of SPECIALBUILD, PRIVATEBUILD,
+ PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING.
+version 1.2.8rc1 [November 24, 2004]
+ Moved handling of BUILD macros from pngconf.h to png.h
+ Added definition of PNG_LIBPNG_BASE_TYPE in png.h, inadvertently
+ omitted from beta5.
+ Revised scripts/pngw32.rc
+ Despammed mailing addresses by masking "@" with "at".
+ Inadvertently installed a supposedly faster test version of pngrutil.c
+version 1.2.8rc2 [November 26, 2004]
+ Added two missing "\" in png.h
+ Change tests in pngread.c and pngpread.c to
+ if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
+ png_do_read_transformations(png_ptr);
+version 1.2.8rc3 [November 28, 2004]
+ Reverted pngrutil.c to version libpng-1.2.8beta5.
+ Added scripts/makefile.elf with supporting code in pngconf.h for symbol
+ versioning (John Bowler).
+version 1.2.8rc4 [November 29, 2004]
+ Added projects/visualc7 (Simon-pierre).
+version 1.2.8rc5 [November 29, 2004]
+ Fixed new typo in scripts/pngw32.rc
+
+version 1.2.8 [December 3, 2004]
+ Removed projects/visualc7, added projects/visualc71.
+
+version 1.2.9beta1 [February 21, 2006]
+
+ Initialized some structure members in pngwutil.c to avoid gcc-4.0.0 complaints
+ Revised man page and libpng.txt to make it clear that one should not call
+ png_read_end or png_write_end after png_read_png or png_write_png.
+ Updated references to png-mng-implement mailing list.
+ Fixed an incorrect typecast in pngrutil.c
+ Added PNG_NO_READ_SUPPORTED conditional for making a write-only library.
+ Added PNG_NO_WRITE_INTERLACING_SUPPORTED conditional.
+ Optimized alpha-inversion loops in pngwtran.c
+ Moved test for nonzero gamma outside of png_build_gamma_table() in pngrtran.c
+ Make sure num_trans is <= 256 before copying data in png_set_tRNS().
+ Make sure num_palette is <= 256 before copying data in png_set_PLTE().
+ Interchanged order of write_swap_alpha and write_invert_alpha transforms.
+ Added parentheses in the definition of PNG_LIBPNG_BUILD_TYPE (Cosmin).
+ Optimized zlib window flag (CINFO) in contrib/pngsuite/*.png (Cosmin).
+ Updated scripts/makefile.bc32 for Borland C++ 5.6 (Cosmin).
+ Exported png_get_uint_32, png_save_uint_32, png_get_uint_16, png_save_uint_16,
+ png_get_int_32, png_save_int_32, png_get_uint_31 (Cosmin).
+ Added type cast (png_byte) in png_write_sCAL() (Cosmin).
+ Fixed scripts/makefile.cygwin (Christian Biesinger, Cosmin).
+ Default iTXt support was inadvertently enabled.
+
+version 1.2.9beta2 [February 21, 2006]
+
+ Check for png_rgb_to_gray and png_gray_to_rgb read transformations before
+ checking for png_read_dither in pngrtran.c
+ Revised checking of chromaticity limits to accommodate extended RGB
+ colorspace (John Denker).
+ Changed line endings in some of the project files to CRLF, even in the
+ "Unix" tar distributions (Cosmin).
+ Made png_get_int_32 and png_save_int_32 always available (Cosmin).
+ Updated scripts/pngos2.def, scripts/pngw32.def and projects/wince/png32ce.def
+ with the newly exported functions.
+ Eliminated distributions without the "configure" script.
+ Updated INSTALL instructions.
+
+version 1.2.9beta3 [February 24, 2006]
+
+ Fixed CRCRLF line endings in contrib/visupng/VisualPng.dsp
+ Made libpng.pc respect EXEC_PREFIX (D. P. Kreil, J. Bowler)
+ Removed reference to pngasmrd.h from Makefile.am
+ Renamed CHANGES to ChangeLog.
+ Renamed LICENSE to COPYING.
+ Renamed ANNOUNCE to NEWS.
+ Created AUTHORS file.
+
+version 1.2.9beta4 [March 3, 2006]
+
+ Changed definition of PKGCONFIG from $prefix/lib to $libdir in configure.ac
+ Reverted to filenames LICENSE and ANNOUNCE; removed AUTHORS and COPYING.
+ Removed newline from the end of some error and warning messages.
+ Removed test for sqrt() from configure.ac and configure.
+ Made swap tables in pngtrans.c PNG_CONST (Carlo Bramix).
+ Disabled default iTXt support that was inadvertently enabled in
+ libpng-1.2.9beta1.
+ Added "OS2" to list of systems that don't need underscores, in pnggccrd.c
+ Removed libpng version and date from *.c files.
+
+version 1.2.9beta5 [March 4, 2006]
+ Removed trailing blanks from source files.
+ Put version and date of latest change in each source file, and changed
+ copyright year accordingly.
+ More cleanup of configure.ac, Makefile.ac, and associated scripts.
+ Restored scripts/makefile.elf which was inadvertently deleted.
+
+version 1.2.9beta6 [March 6, 2006]
+ Fixed typo (16) in configuration files.
+
+version 1.2.9beta7 [March 7, 2006]
+ Removed libpng.vers and libpng.sym from libpng12_la_SOURCES in Makefile.am
+ Fixed inconsistent #ifdef's around png_sig_bytes() and png_set_sCAL_s()
+ in png.h.
+ Updated makefile.elf as suggested by debian.
+ Made cosmetic changes to some makefiles, adding LN_SF and other macros.
+ Made some makefiles accept "exec_prefix".
+
+version 1.2.9beta8 [March 9, 2006]
+ Fixed some "#if defined (..." which should be "#if defined(..."
+ Bug introduced in libpng-1.2.8.
+ Fixed inconsistency in definition of png_default_read_data()
+ Restored blank that was lost from makefile.sggcc "clean" target in beta7.
+ Revised calculation of "current" and "major" for irix in ltmain.sh
+ Changed "mkdir" to "MKDIR_P" in some makefiles.
+ Separated PNG_EXPAND and PNG_EXPAND_tRNS.
+ Added png_set_expand_gray_1_2_4_to_8() and deprecated
+ png_set_gray_1_2_4_to_8() which also expands tRNS to alpha.
+
+version 1.2.9beta9 [March 10, 2006]
+ Include "config.h" in pngconf.h when available.
+ Added some checks for NULL png_ptr or NULL info_ptr (timeless)
+
+version 1.2.9beta10 [March 20, 2006]
+ Removed extra CR from contrib/visualpng/VisualPng.dsw (Cosmin)
+ Made pnggccrd.c PIC-compliant (Christian Aichinger).
+ Added makefile.mingw (Wolfgang Glas).
+ Revised pngconf.h MMX checking.
+
+version 1.2.9beta11 [March 22, 2006]
+ Fixed out-of-order declaration in pngwrite.c that was introduced in beta9
+ Simplified some makefiles by using LIBSO, LIBSOMAJ, and LIBSOVER macros.
+
+version 1.2.9rc1 [March 31, 2006]
+ Defined PNG_USER_PRIVATEBUILD when including "pngusr.h" (Cosmin).
+ Removed nonsensical assertion check from pngtest.c (Cosmin).
+
+version 1.2.9 [April 14, 2006]
+ Revised makefile.beos and added "none" selector in ltmain.sh
+
+version 1.2.10beta1 [April 15, 2006]
+ Renamed "config.h" to "png_conf.h" and revised Makefile.am to add
+ -DPNG_BUILDING_LIBPNG to compile directive, and modified pngconf.h
+ to include png_conf.h only when PNG_BUILDING_LIBPNG is defined.
+
+version 1.2.10beta2 [April 15, 2006]
+ Manually updated Makefile.in and configure. Changed png_conf.h.in
+ back to config.h.
+
+version 1.2.10beta3 [April 15, 2006]
+ Change png_conf.h back to config.h in pngconf.h.
+
+version 1.2.10beta4 [April 16, 2006]
+ Change PNG_BUILDING_LIBPNG to PNG_CONFIGURE_LIBPNG in config/Makefile*.
+
+version 1.2.10beta5 [April 16, 2006]
+ Added a configure check for compiling assembler code in pnggccrd.c
+
+version 1.2.10beta6 [April 17, 2006]
+ Revised the configure check for pnggccrd.c
+ Moved -DPNG_CONFIGURE_LIBPNG into @LIBPNG_DEFINES@
+ Added @LIBPNG_DEFINES@ to arguments when building libpng.sym
+
+version 1.2.10beta7 [April 18, 2006]
+ Change "exec_prefix=$prefix" to "exec_prefix=$(prefix)" in makefiles.
+
+version 1.2.10rc1 [April 19, 2006]
+ Ensure pngconf.h doesn't define both PNG_USE_PNGGCCRD and PNG_USE_PNGVCRD
+ Fixed "LN_FS" typo in makefile.sco and makefile.solaris.
+
+version 1.2.10rc2 [April 20, 2006]
+ Added a backslash between -DPNG_CONFIGURE_LIBPNG and -DPNG_NO_ASSEMBLER_CODE
+ in configure.ac and configure
+ Made the configure warning about versioned symbols less arrogant.
+
+version 1.2.10rc3 [April 21, 2006]
+ Added a note in libpng.txt that png_set_sig_bytes(8) can be used when
+ writing an embedded PNG without the 8-byte signature.
+ Revised makefiles and configure to avoid making links to libpng.so.*
+
+version 1.2.10 [April 23, 2006]
+ Reverted configure to "rc2" state.
+
+version 1.2.11beta1 [May 31, 2006]
+ scripts/libpng.pc.in contained "configure" style version info and would
+ not work with makefiles.
+ The shared-library makefiles were linking to libpng.so.0 instead of
+ libpng.so.3 compatibility as the library.
+
+version 1.2.11beta2 [June 2, 2006]
+ Increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid
+ buffer overflow.
+ Fixed bug in example.c (png_set_palette_rgb -> png_set_palette_to_rgb)
+
+version 1.2.11beta3 [June 5, 2006]
+ Prepended "#! /bin/sh" to ltmail.sh and contrib/pngminus/*.sh (Cosmin).
+ Removed the accidental leftover Makefile.in~ (Cosmin).
+ Avoided potential buffer overflow and optimized buffer in
+ png_write_sCAL(), png_write_sCAL_s() (Cosmin).
+ Removed the include directories and libraries from CFLAGS and LDFLAGS
+ in scripts/makefile.gcc (Nelson A. de Oliveira, Cosmin).
+
+version 1.2.11beta4 [June 6, 2006]
+ Allow zero-length IDAT chunks after the entire zlib datastream, but not
+ after another intervening chunk type.
+
+version 1.0.19rc1, 1.2.11rc1 [June 13, 2006]
+ Deleted extraneous square brackets from [config.h] in configure.ac
+
+version 1.0.19rc2, 1.2.11rc2 [June 14, 2006]
+ Added prototypes for PNG_INCH_CONVERSIONS functions to png.h
+ Revised INSTALL and autogen.sh
+ Fixed typo in several makefiles (-W1 should be -Wl)
+ Added typedef for png_int_32 and png_uint_32 on 64-bit systems.
+
+version 1.0.19rc3, 1.2.11rc3 [June 15, 2006]
+ Removed the new typedefs for 64-bit systems (delay until version 1.4.0)
+ Added one zero element to png_gamma_shift[] array in pngrtran.c to avoid
+ reading out of bounds.
+
+version 1.0.19rc4, 1.2.11rc4 [June 15, 2006]
+ Really removed the new typedefs for 64-bit systems.
+
+version 1.0.19rc5, 1.2.11rc5 [June 22, 2006]
+ Removed png_sig_bytes entry from scripts/pngw32.def
+
+version 1.0.19, 1.2.11 [June 26, 2006]
+ None.
+
+version 1.0.20, 1.2.12 [June 27, 2006]
+ Really increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid
+ buffer overflow.
+
+version 1.2.13beta1 [October 2, 2006]
+ Removed AC_FUNC_MALLOC from configure.ac
+ Work around Intel-Mac compiler bug by setting PNG_NO_MMX_CODE in pngconf.h
+ Change "logical" to "bitwise" throughout documentation.
+ Detect and fix attempt to write wrong iCCP profile length.
+
+version 1.0.21, 1.2.13 [November 14, 2006]
+ Fix potential buffer overflow in sPLT chunk handler.
+ Fix Makefile.am to not try to link to noexistent files.
+ Check all exported functions for NULL png_ptr.
+
+version 1.2.14beta1 [November 17, 2006]
+ Relocated three misplaced tests for NULL png_ptr.
+ Built Makefile.in with automake-1.9.6 instead of 1.9.2.
+ Build configure with autoconf-2.60 instead of 2.59
+
+version 1.2.14beta2 [November 17, 2006]
+ Added some typecasts in png_zalloc().
+
+version 1.2.14rc1 [November 20, 2006]
+ Changed "strtod" to "png_strtod" in pngrutil.c
+
+version 1.0.22, 1.2.14 [November 27, 2006]
+ Added missing "$(srcdir)" in Makefile.am and Makefile.in
+
+version 1.2.15beta1 [December 3, 2006]
+ Generated configure with autoconf-2.61 instead of 2.60
+ Revised configure.ac to update libpng.pc and libpng-config.
+
+version 1.2.15beta2 [December 3, 2006]
+ Always export MMX asm functions, just stubs if not building pnggccrd.c
+
+version 1.2.15beta3 [December 4, 2006]
+ Add "png_bytep" typecast to profile while calculating length in pngwutil.c
+
+version 1.2.15beta4 [December 7, 2006]
+ Added scripts/CMakeLists.txt
+ Changed PNG_NO_ASSEMBLER_CODE to PNG_NO_MMX_CODE in scripts, like 1.4.0beta
+
+version 1.2.15beta5 [December 7, 2006]
+ Changed some instances of PNG_ASSEMBLER_* to PNG_MMX_* in pnggccrd.c
+ Revised scripts/CMakeLists.txt
+
+version 1.2.15beta6 [December 13, 2006]
+ Revised scripts/CMakeLists.txt and configure.ac
+
+version 1.2.15rc1 [December 18, 2006]
+ Revised scripts/CMakeLists.txt
+
+version 1.2.15rc2 [December 21, 2006]
+ Added conditional #undef jmpbuf in pngtest.c to undo #define in AIX headers.
+ Added scripts/makefile.nommx
+
+version 1.2.15rc3 [December 25, 2006]
+ Fixed shared library numbering error that was intruduced in 1.2.15beta6.
+
+version 1.2.15rc4 [December 27, 2006]
+ Fixed handling of rgb_to_gray when png_ptr->color.gray isn't set.
+
+version 1.2.15rc5 [December 31, 2006]
+ Revised handling of rgb_to_gray.
+
+version 1.2.15 [January 5, 2007]
+ Added some (unsigned long) typecasts in pngtest.c to avoid printing errors.
+
+version 1.2.16beta1 [January 6, 2007]
+ Fix bugs in makefile.nommx
-Send comments/corrections/commendations to
-png-implement@ccrc.wustl.edu (subscription required; write to
-majordomo@ccrc.wustl.edu with "subscribe png-implement" in the message)
-or to glennrp@users.sourceforge.net
+version 1.2.16beta2 [January 16, 2007]
+ Revised scripts/CMakeLists.txt
+
+version 1.2.16 [January 31, 2007]
+ No changes.
+
+Send comments/corrections/commendations to png-mng-implement at lists.sf.net
+(subscription required; visit
+https://lists.sourceforge.net/lists/listinfo/png-mng-implement
+to subscribe)
+or to glennrp at users.sourceforge.net
Glenn R-P
diff --git a/png/INSTALL b/png/INSTALL
index 9876e9d..3d502f9 100644
--- a/png/INSTALL
+++ b/png/INSTALL
@@ -1,16 +1,50 @@
-Installing libpng version 1.2.7 - September 12, 2004
+Installing libpng version 1.2.16 - January 31, 2007
-Before installing libpng, you must first install zlib. zlib
-can usually be found wherever you got libpng. zlib can be
-placed in another directory, at the same level as libpng.
-Note that your system might already have a preinstalled
-zlib, but you will still need to have access to the
-zlib.h and zconf.h include files that correspond to the
-version of zlib that's installed.
+On Unix/Linux and similar systems, you can simply type
+
+ ./configure [--prefix=/path]
+ make check
+ make install
+
+and ignore the rest of this document.
+
+If configure does not work on your system and you have a reasonably
+up-to-date set of tools, running ./autogen.sh before running ./configure
+may fix the problem. You can also run the individual commands in
+autogen.sh with the --force option, if supported by your version of
+the tools. If you run 'libtoolize --force', though, this will replace
+the distributed, patched, version of ltmain.sh with an unpatched version
+and your shared library builds may fail to produce libraries with the
+correct version numbers.
+
+Instead, you can use one of the custom-built makefiles in the
+"scripts" directory
+
+ cp scripts/makefile.system makefile
+ make test
+ make install
+
+Or you can use one of the "projects" in the "projects" directory.
+
+If you want to use "cmake" (see www.cmake.org), copy CMakeLists.txt
+from the "scripts" directory to this directory and type
+
+ cmake . [-DPNG_MMX=YES] -DCMAKE_INSTALL_PREFIX=/path
+ make
+ make install
+
+Before installing libpng, you must first install zlib, if it
+is not already on your system. zlib can usually be found
+wherever you got libpng. zlib can be placed in another directory,
+at the same level as libpng.
+
+If your system already has a preinstalled zlib you will still need
+to have access to the zlib.h and zconf.h include files that
+correspond to the version of zlib that's installed.
You can rename the directories that you downloaded (they
-might be called "libpng-1.2.7" or "lpng109" and "zlib-1.2.1"
+might be called "libpng-1.2.16" or "lpng109" and "zlib-1.2.1"
or "zlib121") so that you have directories called "zlib" and "libpng".
Your directory structure should look like this:
@@ -47,7 +81,6 @@ If the line endings in the files look funny, you may wish to get the other
distribution of libpng. It is available in both tar.gz (UNIX style line
endings) and zip (DOS style line endings) formats.
-
If you are building libpng with MSVC, you can enter the
libpng projects\visualc6 directory and follow the instructions in
projects\visualc6\README.txt.
@@ -59,18 +92,24 @@ build libpng for Netware or Beos as instructed in projects\netware.txt
or projects\beos.
Else enter the zlib directory and follow the instructions in zlib/README,
-then come back here and choose the appropriate makefile.sys in the scripts
-directory.
+then come back here and run "configure" or choose the appropriate
+makefile.sys in the scripts directory.
The files that are presently available in the scripts directory
include
+ CMakeLists.txt => "cmake" script
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
+ makefile.elf => Linux/ELF makefile symbol versioning,
+ gcc, creates libpng12.so.0.1.2.16)
makefile.linux => Linux/ELF makefile
- (gcc, creates libpng12.so.0.1.2.7)
+ (gcc, creates libpng12.so.0.1.2.16)
makefile.gcmmx => Linux/ELF makefile
- (gcc, creates libpng12.so.0.1.2.7,
+ (gcc, creates libpng12.so.0.1.2.16,
uses assembler code tuned for Intel MMX platform)
+ makefile.nommx => Linux/ELF makefile
+ (gcc, creates libpng12.so.0.1.2.16
+ does not use Intel MMX assembler code)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
ansi2knr (Requires ansi2knr.c from
@@ -92,12 +131,12 @@ include
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
makefile.sggcc => Silicon Graphics (gcc,
- creates libpng12.so.0.1.2.7)
+ creates libpng12.so.0.1.2.16)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile (gcc,
- creates libpng12.so.0.1.2.7)
+ creates libpng12.so.0.1.2.16)
makefile.so9 => Solaris 9 makefile (gcc,
- creates libpng12.so.0.1.2.7)
+ creates libpng12.so.0.1.2.16)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
@@ -165,3 +204,23 @@ instead, as demonstrated in contrib/visupng of the libpng distribution.
Further information can be found in the README and libpng.txt
files, in the individual makefiles, in png.h, and the manual pages
libpng.3 and png.5.
+
+
+Using the ./configure script -- 16 December 2002.
+=================================================
+
+
+The ./configure script should work compatibly with what scripts/makefile.*
+did, however there are some options you need to add to configure explicitly,
+which previously was done semi-automatically (if you didn't edit
+scripts/makefile.* yourself, that is)
+
+
+CFLAGS="-Wall -O3 -funroll-loops \
+-malign-loops=2 -malign-functions=2" ./configure --prefix=/usr/include \
+--with-pkgconfigdir=/usr/lib/pkgconfig --includedir=/usr/include
+
+You can alternatively specify --includedir=/usr/include, /usr/local/include,
+/usr/include/png12, or whatever.
+
+
diff --git a/png/KNOWNBUG b/png/KNOWNBUG
index 5323527..e81e7dc 100644
--- a/png/KNOWNBUG
+++ b/png/KNOWNBUG
@@ -1,5 +1,5 @@
-Known bugs in libpng version 1.2.7
+Known bugs in libpng version 1.2.16
1. April 22, 2001: pnggccrd.c has been reported to crash on NetBSD when
reading interlaced PNG files, when assembler code is enabled but running
@@ -9,3 +9,15 @@ Known bugs in libpng version 1.2.7
fixed a problem under FreeBSD but not the problem with NetBSD, which
still fails as of libpng-1.2.2rc1.
+2. February 23, 2006: The custom makefiles don't build libpng with -lz.
+
+ STATUS: This is a subject of debate. The change will probably be made
+ as a part of a major overhaul of the makefiles in libpng version 1.3.0.
+
+3. February 24, 2006: The Makefile generated by the "configure" script
+ fails to install symbolic links
+ libpng12.so => libpng12.so.0.1.2.9betaN
+ that are generated by the custom makefiles.
+
+ STATUS: For now, system library builders should use the custom makefiles.
+
diff --git a/png/LICENSE b/png/LICENSE
index 3e5a36a..597216f 100644
--- a/png/LICENSE
+++ b/png/LICENSE
@@ -8,8 +8,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
If you modify libpng you may insert additional notices immediately following
this sentence.
-libpng version 1.2.6, September 12, 2004, is
-Copyright (c) 2004 Glenn Randers-Pehrson, and is
+libpng versions 1.2.6, August 15, 2004, through 1.2.16, January 31, 2007, are
+Copyright (c) 2004, 2006 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
@@ -105,5 +105,5 @@ Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a
certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
-glennrp@users.sourceforge.net
-September 12, 2004
+glennrp at users.sourceforge.net
+January 31, 2007
diff --git a/png/Makefile b/png/Makefile
index bdd4852..e453ee8 100644
--- a/png/Makefile
+++ b/png/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 4052 2005-02-24 21:55:12Z mike $"
+# "$Id: Makefile 5667 2007-02-07 02:35:44Z mike $"
#
# PNG library makefile for the Fast Light Toolkit (FLTK).
#
-# Copyright 1997-2005 by Easy Software Products.
+# Copyright 1997-2007 by Easy Software Products.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -58,13 +58,13 @@ clean:
install: $(LIBPNG)
echo "Installing libfltk_png$(LIBEXT) in $(libdir)..."
- -$(MKDIR) $(libdir)
- $(RM) $(libdir)/libfltk_png$(LIBEXT)
- $(CP) $(LIBPNG) $(libdir)
- $(RANLIB) $(libdir)/libfltk_png$(LIBEXT)
+ -$(INSTALL_DIR) $(DESTDIR)$(libdir)
+ $(INSTALL_LIB) $(LIBPNG) $(DESTDIR)$(libdir)
+ $(RANLIB) $(DESTDIR)$(libdir)/libfltk_png$(LIBEXT)
echo "Installing png headers in $(includedir)/FL/images..."
- -$(MKDIR) $(includedir)/FL/images
- $(CP) png.h pngconf.h $(includedir)/FL/images
+ -$(INSTALL_DIR) $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) png.h $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) pngconf.h $(DESTDIR)$(includedir)/FL/images
#
@@ -73,10 +73,10 @@ install: $(LIBPNG)
uninstall:
echo "Uninstalling libfltk_png$(LIBEXT) in $(libdir)..."
- $(RM) $(libdir)/libfltk_png$(LIBEXT)
+ $(RM) $(DESTDIR)$(libdir)/libfltk_png$(LIBEXT)
echo "Uninstalling png headers in $(includedir)/FL/images..."
- $(RM) $(includedir)/FL/images/png.h
- $(RM) $(includedir)/FL/images/pngconf.h
+ $(RM) $(DESTDIR)$(includedir)/FL/images/png.h
+ $(RM) $(DESTDIR)$(includedir)/FL/images/pngconf.h
#
@@ -103,5 +103,5 @@ $(OBJS): ../makeinclude
#
-# End of "$Id: Makefile 4052 2005-02-24 21:55:12Z mike $".
+# End of "$Id: Makefile 5667 2007-02-07 02:35:44Z mike $".
#
diff --git a/png/README b/png/README
index 7109660..915efcf 100644
--- a/png/README
+++ b/png/README
@@ -1,4 +1,4 @@
-README for libpng version 1.2.7 - September 12, 2004 (shared library 12.0)
+README for libpng version 1.2.16 - January 31, 2007 (shared library 12.0)
See the note about version numbers near the top of png.h
See INSTALL for instructions on how to install libpng.
@@ -103,17 +103,18 @@ fix. Please mention "libpng" somewhere in the subject line. Thanks.
This release was created and will be supported by myself (of course
based in a large way on Guy's and Andreas' earlier work), and the PNG group.
-glennrp@users.sourceforge.net
-png-implement@ccrc.wustl.edu (subscription required; write to
-majordomo@ccrc.wustl.edu with "subscribe png-implement" in the message).
+Send comments/corrections/commendations to png-mng-implement at lists.sf.net
+(subscription required; visit
+https://lists.sourceforge.net/lists/listinfo/png-mng-implement
+to subscribe) or to glennrp at users.sourceforge.net
You can't reach Guy, the original libpng author, at the addresses
given in previous versions of this document. He and Andreas will read mail
addressed to the png-implement list, however.
Please do not send general questions about PNG. Send them to
-the (png-list@ccrc.wustl.edu, subscription required, write to
-majordomo@ccrc.wustl.edu with "subscribe png-list" in your message).
+the (png-list at ccrc.wustl.edu, subscription required, write to
+majordomo at ccrc.wustl.edu with "subscribe png-list" in your message).
On the other hand,
please do not send libpng questions to that address, send them to me
or to the png-implement list. I'll
@@ -188,10 +189,12 @@ Files in this distribution:
scripts => Directory containing scripts for building libpng:
descrip.mms => VMS makefile for MMS or MMK
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
+ makefile.elf => Linux/ELF makefile symbol versioning,
+ gcc, creates libpng12.so.0.1.2.16)
makefile.linux => Linux/ELF makefile
- (gcc, creates libpng12.so.0.1.2.7)
+ (gcc, creates libpng12.so.0.1.2.16)
makefile.gcmmx => Linux/ELF makefile
- (gcc, creates libpng12.so.0.1.2.7,
+ (gcc, creates libpng12.so.0.1.2.16,
uses assembler code tuned for Intel MMX platform)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
@@ -213,12 +216,12 @@ Files in this distribution:
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
makefile.sggcc => Silicon Graphics
- (gcc, creates libpng12.so.0.1.2.7)
+ (gcc, creates libpng12.so.0.1.2.16)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile
- (gcc, creates libpng12.so.0.1.2.7)
+ (gcc, creates libpng12.so.0.1.2.16)
makefile.so9 => Solaris 9 makefile
- (gcc, creates libpng12.so.0.1.2.7)
+ (gcc, creates libpng12.so.0.1.2.16)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
@@ -249,12 +252,12 @@ Files in this distribution:
Good luck, and happy coding.
-Glenn Randers-Pehrson (current maintainer)
- Internet: glennrp@users.sourceforge.net
+ Internet: glennrp at users.sourceforge.net
-Andreas Eric Dilger (former maintainer, 1996-1997)
- Internet: adilger@enel.ucalgary.ca
+ Internet: adilger at enel.ucalgary.ca
Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/
-Guy Eric Schalnat (original author and former maintainer, 1995-1996)
(formerly of Group 42, Inc)
- Internet: gschal@infinet.com
+ Internet: gschal at infinet.com
diff --git a/png/Y2KINFO b/png/Y2KINFO
index 5d1f2f7..7bf4cb5 100644
--- a/png/Y2KINFO
+++ b/png/Y2KINFO
@@ -1,13 +1,13 @@
Y2K compliance in libpng:
=========================
- September 12, 2004
+ January 31, 2007
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
- upward through 1.2.7 are Y2K compliant. It is my belief that earlier
+ upward through 1.2.16 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer
diff --git a/png/libpng.3 b/png/libpng.3
index 0d4d829..07ba888 100644
--- a/png/libpng.3
+++ b/png/libpng.3
@@ -1,775 +1,404 @@
-.TH LIBPNG 3 "September 12, 2004"
+.TH LIBPNG 3 "January 31, 2007"
.SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.2.7
+libpng \- Portable Network Graphics (PNG) Reference Library 1.2.16
.SH SYNOPSIS
-\fI\fB
-
-\fB#include <png.h>\fP
-
-\fI\fB
+\fB
+#include <png.h>\fP
\fBpng_uint_32 png_access_version_number \fI(void\fP\fB);\fP
-\fI\fB
-
\fBint png_check_sig (png_bytep \fP\fIsig\fP\fB, int \fInum\fP\fB);\fP
-\fI\fB
-
\fBvoid png_chunk_error (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fIerror\fP\fB);\fP
-\fI\fB
-
\fBvoid png_chunk_warning (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fImessage\fP\fB);\fP
-\fI\fB
-
\fBvoid png_convert_from_struct_tm (png_timep \fP\fIptime\fP\fB, struct tm FAR * \fIttime\fP\fB);\fP
-\fI\fB
-
\fBvoid png_convert_from_time_t (png_timep \fP\fIptime\fP\fB, time_t \fIttime\fP\fB);\fP
-\fI\fB
-
\fBpng_charp png_convert_to_rfc1123 (png_structp \fP\fIpng_ptr\fP\fB, png_timep \fIptime\fP\fB);\fP
-\fI\fB
-
\fBpng_infop png_create_info_struct (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_structp png_create_read_struct (png_const_charp \fP\fIuser_png_ver\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fIwarn_fn\fP\fB);\fP
-\fI\fB
-
\fBpng_structp png_create_read_struct_2(png_const_charp \fP\fIuser_png_ver\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fP\fIwarn_fn\fP\fB, png_voidp \fP\fImem_ptr\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_free_ptr \fIfree_fn\fP\fB);\fP
-\fI\fB
-
\fBpng_structp png_create_write_struct (png_const_charp \fP\fIuser_png_ver\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fIwarn_fn\fP\fB);\fP
-\fI\fB
-
\fBpng_structp png_create_write_struct_2(png_const_charp \fP\fIuser_png_ver\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fP\fIwarn_fn\fP\fB, png_voidp \fP\fImem_ptr\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_free_ptr \fIfree_fn\fP\fB);\fP
-\fI\fB
-
\fBint png_debug(int \fP\fIlevel\fP\fB, png_const_charp \fImessage\fP\fB);\fP
-\fI\fB
-
\fBint png_debug1(int \fP\fIlevel\fP\fB, png_const_charp \fP\fImessage\fP\fB, \fIp1\fP\fB);\fP
-\fI\fB
-
\fBint png_debug2(int \fP\fIlevel\fP\fB, png_const_charp \fP\fImessage\fP\fB, \fP\fIp1\fP\fB, \fIp2\fP\fB);\fP
-\fI\fB
-
\fBvoid png_destroy_info_struct (png_structp \fP\fIpng_ptr\fP\fB, png_infopp \fIinfo_ptr_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_destroy_read_struct (png_structpp \fP\fIpng_ptr_ptr\fP\fB, png_infopp \fP\fIinfo_ptr_ptr\fP\fB, png_infopp \fIend_info_ptr_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_destroy_write_struct (png_structpp \fP\fIpng_ptr_ptr\fP\fB, png_infopp \fIinfo_ptr_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_error (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fIerror\fP\fB);\fP
-\fI\fB
-
\fBvoid png_free (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fIptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_free_chunk_list (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_free_default(png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fIptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_free_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fInum\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_bit_depth (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_bKGD (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_16p \fI*background\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_channels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fP\fI*white_x\fP\fB, double \fP\fI*white_y\fP\fB, double \fP\fI*red_x\fP\fB, double \fP\fI*red_y\fP\fB, double \fP\fI*green_x\fP\fB, double \fP\fI*green_y\fP\fB, double \fP\fI*blue_x\fP\fB, double \fI*blue_y\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_cHRM_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*white_x\fP\fB, png_uint_32 \fP\fI*white_y\fP\fB, png_uint_32 \fP\fI*red_x\fP\fB, png_uint_32 \fP\fI*red_y\fP\fB, png_uint_32 \fP\fI*green_x\fP\fB, png_uint_32 \fP\fI*green_y\fP\fB, png_uint_32 \fP\fI*blue_x\fP\fB, png_uint_32 \fI*blue_y\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_color_type (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_compression_type (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_copyright (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_get_error_ptr (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_filter_type (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_gAMA (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fI*file_gamma\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_gAMA_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fI*int_file_gamma\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_header_ver (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_header_version (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_16p \fI*hist\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charpp \fP\fIname\fP\fB, int \fP\fI*compression_type\fP\fB, png_charpp \fP\fIprofile\fP\fB, png_uint_32 \fI*proflen\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*width\fP\fB, png_uint_32 \fP\fI*height\fP\fB, int \fP\fI*bit_depth\fP\fB, int \fP\fI*color_type\fP\fB, int \fP\fI*interlace_type\fP\fB, int \fP\fI*compression_type\fP\fB, int \fI*filter_type\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_image_height (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_image_width (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
+\fB#if !defined(PNG_1_0_X) png_int_32 png_get_int_32 (png_bytep buf); \fI#endif
\fBpng_byte png_get_interlace_type (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_get_io_ptr (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_byte png_get_libpng_ver (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_get_mem_ptr(png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*offset_x\fP\fB, png_uint_32 \fP\fI*offset_y\fP\fB, int \fI*unit_type\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fI*purpose\fP\fB, png_int_32 \fP\fI*X0\fP\fB, png_int_32 \fP\fI*X1\fP\fB, int \fP\fI*type\fP\fB, int \fP\fI*nparams\fP\fB, png_charp \fP\fI*units\fP\fB, png_charpp \fI*params\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*res_x\fP\fB, png_uint_32 \fP\fI*res_y\fP\fB, int \fI*unit_type\fP\fB);\fP
-\fI\fB
-
\fBfloat png_get_pixel_aspect_ratio (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_pixels_per_meter (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_get_progressive_ptr (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_colorp \fP\fI*palette\fP\fB, int \fI*num_palette\fP\fB);\fP
-\fI\fB
-
-\fBpng_byte png_get_rgb_to_gray_status (png_structp \fIpng_ptr)
-
-\fBpng_uint_32 png_get_rowbytes (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-
-\fI\fB
+\fBpng_byte png_get_rgb_to_gray_status (png_structp png_ptr) png_uint_32 png_get_rowbytes (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fBpng_bytepp png_get_rows (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_8p \fI*sig_bit\fP\fB);\fP
-\fI\fB
-
\fBpng_bytep png_get_signature (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_spalette_p \fI*splt_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_sRGB (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fI*intent\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_text (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_textp \fP\fI*text_ptr\fP\fB, int \fI*num_text\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_timep \fI*mod_time\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytep \fP\fI*trans\fP\fB, int \fP\fI*num_trans\fP\fB, png_color_16p \fI*trans_values\fP\fB);\fP
-\fI\fB
+\fB#if !defined(PNG_1_0_X) png_uint_16 png_get_uint_16 (png_bytep \fIbuf\fP\fB);\fP
-\fBpng_uint_32 png_get_unknown_chunks (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_unknown_chunkpp \fIunknowns\fP\fB);\fP
+\fBpng_uint_32 png_get_uint_31 (png_bytep \fIbuf\fP\fB);\fP
-\fI\fB
+\fBpng_uint_32 png_get_uint_32 (png_bytep buf); \fI#endif
-\fBpng_voidp png_get_user_chunk_ptr (png_structp \fIpng_ptr\fP\fB);\fP
+\fBpng_uint_32 png_get_unknown_chunks (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_unknown_chunkpp \fIunknowns\fP\fB);\fP
-\fI\fB
+\fBpng_voidp png_get_user_chunk_ptr (png_structp \fIpng_ptr\fP\fB);\fP
\fBpng_uint_32 png_get_user_height_max( png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_get_user_transform_ptr (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_user_width_max (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_valid (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIflag\fP\fB);\fP
-\fI\fB
-
\fBpng_int_32 png_get_x_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_int_32 png_get_x_offset_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_x_pixels_per_meter (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_int_32 png_get_y_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_int_32 png_get_y_offset_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_y_pixels_per_meter (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_get_compression_buffer_size (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBint png_handle_as_unknown (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIchunk_name\fP\fB);\fP
-\fI\fB
-
\fBvoid png_init_io (png_structp \fP\fIpng_ptr\fP\fB, FILE \fI*fp\fP\fB);\fP
-\fI\fB
-
\fBDEPRECATED: void png_info_init (png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBDEPRECATED: void png_info_init_2 (png_infopp \fP\fIptr_ptr\fP\fB, png_size_t \fIpng_info_struct_size\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_malloc (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_malloc_default(png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
-\fI\fB
-
\fBvoidp png_memcpy (png_voidp \fP\fIs1\fP\fB, png_voidp \fP\fIs2\fP\fB, png_size_t \fIsize\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_memcpy_check (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIs1\fP\fB, png_voidp \fP\fIs2\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
-\fI\fB
-
\fBvoidp png_memset (png_voidp \fP\fIs1\fP\fB, int \fP\fIvalue\fP\fB, png_size_t \fIsize\fP\fB);\fP
-\fI\fB
-
\fBpng_voidp png_memset_check (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIs1\fP\fB, int \fP\fIvalue\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
-\fI\fB
-
\fBDEPRECATED: void png_permit_empty_plte (png_structp \fP\fIpng_ptr\fP\fB, int \fIempty_plte_permitted\fP\fB);\fP
-\fI\fB
-
\fBvoid png_process_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_size\fP\fB);\fP
-\fI\fB
-
\fBvoid png_progressive_combine_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIold_row\fP\fB, png_bytep \fInew_row\fP\fB);\fP
-\fI\fB
-
\fBvoid png_read_destroy (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_infop \fIend_info_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_read_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_read_image (png_structp \fP\fIpng_ptr\fP\fB, png_bytepp \fIimage\fP\fB);\fP
-\fI\fB
-
\fBDEPRECATED: void png_read_init (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBDEPRECATED: void png_read_init_2 (png_structpp \fP\fIptr_ptr\fP\fB, png_const_charp \fP\fIuser_png_ver\fP\fB, png_size_t \fP\fIpng_struct_size\fP\fB, png_size_t \fIpng_info_size\fP\fB);\fP
-\fI\fB
-
\fBvoid png_read_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_read_png (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fItransforms\fP\fB, png_voidp \fIparams\fP\fB);\fP
-\fI\fB
-
\fBvoid png_read_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fIdisplay_row\fP\fB);\fP
-\fI\fB
-
\fBvoid png_read_rows (png_structp \fP\fIpng_ptr\fP\fB, png_bytepp \fP\fIrow\fP\fB, png_bytepp \fP\fIdisplay_row\fP\fB, png_uint_32 \fInum_rows\fP\fB);\fP
-\fI\fB
-
\fBvoid png_read_update_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
-\fB#if \fI!defined(PNG_1_0_X)
+\fB#if !defined(PNG_1_0_X) png_save_int_32 (png_bytep \fP\fIbuf\fP\fB, png_int_32 \fIi\fP\fB);\fP
-\fBvoid png_set_add_alpha (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, int \fIflags\fP\fB);\fP
+\fBvoid png_save_uint_16 (png_bytep \fP\fIbuf\fP\fB, unsigned int \fIi\fP\fB);\fP
-\fI\fB#endif
+\fBvoid png_save_uint_32 (png_bytep \fP\fIbuf\fP\fB, png_uint_32 \fIi\fP\fB);\fP
-\fI\fB
+\fBvoid png_set_add_alpha (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, int flags); \fI#endif
\fBvoid png_set_background (png_structp \fP\fIpng_ptr\fP\fB, png_color_16p \fP\fIbackground_color\fP\fB, int \fP\fIbackground_gamma_code\fP\fB, int \fP\fIneed_expand\fP\fB, double \fIbackground_gamma\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_bgr (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_bKGD (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_16p \fIbackground\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fP\fIwhite_x\fP\fB, double \fP\fIwhite_y\fP\fB, double \fP\fIred_x\fP\fB, double \fP\fIred_y\fP\fB, double \fP\fIgreen_x\fP\fB, double \fP\fIgreen_y\fP\fB, double \fP\fIblue_x\fP\fB, double \fIblue_y\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_cHRM_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fIwhite_x\fP\fB, png_uint_32 \fP\fIwhite_y\fP\fB, png_uint_32 \fP\fIred_x\fP\fB, png_uint_32 \fP\fIred_y\fP\fB, png_uint_32 \fP\fIgreen_x\fP\fB, png_uint_32 \fP\fIgreen_y\fP\fB, png_uint_32 \fP\fIblue_x\fP\fB, png_uint_32 \fIblue_y\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_compression_level (png_structp \fP\fIpng_ptr\fP\fB, int \fIlevel\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_compression_mem_level (png_structp \fP\fIpng_ptr\fP\fB, int \fImem_level\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_compression_method (png_structp \fP\fIpng_ptr\fP\fB, int \fImethod\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_compression_strategy (png_structp \fP\fIpng_ptr\fP\fB, int \fIstrategy\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_compression_window_bits (png_structp \fP\fIpng_ptr\fP\fB, int \fIwindow_bits\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_crc_action (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcrit_action\fP\fB, int \fIancil_action\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_dither (png_structp \fP\fIpng_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, int \fP\fInum_palette\fP\fB, int \fP\fImaximum_colors\fP\fB, png_uint_16p \fP\fIhistogram\fP\fB, int \fIfull_dither\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_error_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fIwarning_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_expand (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_set_expand_gray_1_2_4_to_8(png_structp \fIpng_ptr\fP\fB);\fP
\fBvoid png_set_filler (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, int \fIflags\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_filter (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fImethod\fP\fB, int \fIfilters\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_filter_heuristics (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIheuristic_method\fP\fB, int \fP\fInum_weights\fP\fB, png_doublep \fP\fIfilter_weights\fP\fB, png_doublep \fIfilter_costs\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_flush (png_structp \fP\fIpng_ptr\fP\fB, int \fInrows\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_gamma (png_structp \fP\fIpng_ptr\fP\fB, double \fP\fIscreen_gamma\fP\fB, double \fIdefault_file_gamma\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_gAMA (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fIfile_gamma\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_gAMA_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIfile_gamma\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_gray_1_2_4_to_8(png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_gray_to_rgb (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_16p \fIhist\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fIname\fP\fB, int \fP\fIcompression_type\fP\fB, png_charp \fP\fIprofile\fP\fB, png_uint_32 \fIproflen\fP\fB);\fP
-\fI\fB
-
\fBint png_set_interlace_handling (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_invalid (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fImask\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_invert_alpha (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_invert_mono (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fIwidth\fP\fB, png_uint_32 \fP\fIheight\fP\fB, int \fP\fIbit_depth\fP\fB, int \fP\fIcolor_type\fP\fB, int \fP\fIinterlace_type\fP\fB, int \fP\fIcompression_type\fP\fB, int \fIfilter_type\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_keep_unknown_chunks (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIkeep\fP\fB, png_bytep \fP\fIchunk_list\fP\fB, int \fInum_chunks\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_mem_fn(png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fImem_ptr\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_free_ptr \fIfree_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fIoffset_x\fP\fB, png_uint_32 \fP\fIoffset_y\fP\fB, int \fIunit_type\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_packing (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_packswap (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_palette_to_rgb(png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fIpurpose\fP\fB, png_int_32 \fP\fIX0\fP\fB, png_int_32 \fP\fIX1\fP\fB, int \fP\fItype\fP\fB, int \fP\fInparams\fP\fB, png_charp \fP\fIunits\fP\fB, png_charpp \fIparams\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fIres_x\fP\fB, png_uint_32 \fP\fIres_y\fP\fB, int \fIunit_type\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_progressive_read_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIprogressive_ptr\fP\fB, png_progressive_info_ptr \fP\fIinfo_fn\fP\fB, png_progressive_row_ptr \fP\fIrow_fn\fP\fB, png_progressive_end_ptr \fIend_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, int \fInum_palette\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_read_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIio_ptr\fP\fB, png_rw_ptr \fIread_data_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_read_status_fn (png_structp \fP\fIpng_ptr\fP\fB, png_read_status_ptr \fIread_row_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_read_user_transform_fn (png_structp \fP\fIpng_ptr\fP\fB, png_user_transform_ptr \fIread_user_transform_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_rgb_to_gray (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIerror_action\fP\fB, double \fP\fIred\fP\fB, double \fIgreen\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_rgb_to_gray_fixed (png_structp \fP\fIpng_ptr\fP\fB, int error_action png_fixed_point \fP\fIred\fP\fB, png_fixed_point \fIgreen\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_rows (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytepp \fIrow_pointers\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_8p \fIsig_bit\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, double \fP\fIwidth\fP\fB, double \fIheight\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_shift (png_structp \fP\fIpng_ptr\fP\fB, png_color_8p \fItrue_bits\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_sig_bytes (png_structp \fP\fIpng_ptr\fP\fB, int \fInum_bytes\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_spalette_p \fP\fIsplt_ptr\fP\fB, int \fInum_spalettes\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_sRGB (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fIintent\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_sRGB_gAMA_and_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fIintent\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_strip_16 (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_strip_alpha (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_swap (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_swap_alpha (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_text (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_textp \fP\fItext_ptr\fP\fB, int \fInum_text\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_timep \fImod_time\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytep \fP\fItrans\fP\fB, int \fP\fInum_trans\fP\fB, png_color_16p \fItrans_values\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_tRNS_to_alpha(png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBpng_uint_32 png_set_unknown_chunks (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_unknown_chunkp \fP\fIunknowns\fP\fB, int \fP\fInum\fP\fB, int \fIlocation\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_unknown_chunk_location(png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fIchunk\fP\fB, int \fIlocation\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_read_user_chunk_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIuser_chunk_ptr\fP\fB, png_user_chunk_ptr \fIread_user_chunk_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_user_limits (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIuser_width_max\fP\fB, png_uint_32 \fIuser_height_max\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_user_transform_info (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIuser_transform_ptr\fP\fB, int \fP\fIuser_transform_depth\fP\fB, int \fIuser_transform_channels\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_write_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIio_ptr\fP\fB, png_rw_ptr \fP\fIwrite_data_fn\fP\fB, png_flush_ptr \fIoutput_flush_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_write_status_fn (png_structp \fP\fIpng_ptr\fP\fB, png_write_status_ptr \fIwrite_row_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_write_user_transform_fn (png_structp \fP\fIpng_ptr\fP\fB, png_user_transform_ptr \fIwrite_user_transform_fn\fP\fB);\fP
-\fI\fB
-
\fBvoid png_set_compression_buffer_size(png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
-\fI\fB
-
\fBint png_sig_cmp (png_bytep \fP\fIsig\fP\fB, png_size_t \fP\fIstart\fP\fB, png_size_t \fInum_to_check\fP\fB);\fP
-\fI\fB
-
\fBvoid png_start_read_image (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_warning (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fImessage\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_chunk (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIchunk_name\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_chunk_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_chunk_end (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_chunk_start (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIchunk_name\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_destroy (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_flush (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_image (png_structp \fP\fIpng_ptr\fP\fB, png_bytepp \fIimage\fP\fB);\fP
-\fI\fB
-
\fBDEPRECATED: void png_write_init (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
\fBDEPRECATED: void png_write_init_2 (png_structpp \fP\fIptr_ptr\fP\fB, png_const_charp \fP\fIuser_png_ver\fP\fB, png_size_t \fP\fIpng_struct_size\fP\fB, png_size_t \fIpng_info_size\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_info_before_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_png (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fItransforms\fP\fB, png_voidp \fIparams\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB
-
\fBvoid png_write_rows (png_structp \fP\fIpng_ptr\fP\fB, png_bytepp \fP\fIrow\fP\fB, png_uint_32 \fInum_rows\fP\fB);\fP
-\fI\fB
-
\fBvoidpf png_zalloc (voidpf \fP\fIpng_ptr\fP\fB, uInt \fP\fIitems\fP\fB, uInt \fIsize\fP\fB);\fP
-\fI\fB
-
\fBvoid png_zfree (voidpf \fP\fIpng_ptr\fP\fB, voidpf \fIptr\fP\fB);\fP
-\fI\fB
-
.SH DESCRIPTION
The
.I libpng
@@ -781,10 +410,10 @@ Following is a copy of the libpng.txt file that accompanies libpng.
.SH LIBPNG.TXT
libpng.txt - A description on how to use and modify libpng
- libpng version 1.2.7 - September 12, 2004
+ libpng version 1.2.16 - January 31, 2007
Updated and distributed by Glenn Randers-Pehrson
- <glennrp@users.sourceforge.net>
- Copyright (c) 1998-2004 Glenn Randers-Pehrson
+ <glennrp at users.sourceforge.net>
+ Copyright (c) 1998-2005 Glenn Randers-Pehrson
For conditions of distribution and use, see copyright
notice in png.h.
@@ -1173,7 +802,7 @@ dithering, and setting filler.) If this is the case, simply do this:
png_read_png(png_ptr, info_ptr, png_transforms, NULL)
-where png_transforms is an integer containing the logical OR of
+where png_transforms is an integer containing the bitwise OR of
some set of transformation flags. This call is equivalent to png_read_info(),
followed the set of transformations indicated by the transform mask,
then png_read_image(), and finally png_read_end().
@@ -1552,9 +1181,10 @@ in RGB RGB RGB format unless png_set_filler() or png_set_add_alpha()
is called to insert filler bytes, either before or after each RGB triplet.
16-bit RGB data will be returned RRGGBB RRGGBB, with the most significant
byte of the color value first, unless png_set_strip_16() is called to
-transform it to regular RGB RGB triplets, or png_set_filler|add alpha()
-is called to insert filler bytes, either before or after each RRGGBB
-triplet. Similarly, 8-bit or 16-bit grayscale data can be modified with
+transform it to regular RGB RGB triplets, or png_set_filler() or
+png_set_add alpha() is called to insert filler bytes, either before or
+after each RRGGBB triplet. Similarly, 8-bit or 16-bit grayscale data can
+be modified with
png_set_filler(), png_set_add_alpha(), or png_set_strip_16().
The following code transforms grayscale images of less than 8 to 8 bits,
@@ -1567,7 +1197,7 @@ viewing application that wishes to treat all images in the same way.
png_set_palette_to_rgb(png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY &&
- bit_depth < 8) png_set_gray_1_2_4_to_8(png_ptr);
+ bit_depth < 8) png_set_expand_gray_1_2_4_to_8(png_ptr);
if (png_get_valid(png_ptr, info_ptr,
PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);
@@ -1577,6 +1207,11 @@ in libpng version 1.0.4, with the function names expanded to improve code
readability. In some future version they may actually do different
things.
+As of libpng version 1.2.9, png_set_expand_gray_1_2_4_to_8() was
+added. It expands the sample depth without changing tRNS to alpha.
+At the same time, png_set_gray_1_2_4_to_8() was deprecated, and it
+will be removed from a future version.
+
PNG can have files with 16 bits per channel. If you only can handle
8 bits per channel, this will strip the pixels down to 8 bit.
@@ -1648,7 +1283,7 @@ to do that, you can add a true alpha channel with
png_set_add_alpha(png_ptr, filler, PNG_FILLER_AFTER);
where "filler" contains the alpha value to assign to each pixel.
-This function became available in libpng-1.2.7.
+This function was added in libpng-1.2.7.
If you are reading an image with an alpha channel, and you need the
data as ARGB instead of the normal PNG format RGBA:
@@ -1703,7 +1338,7 @@ the normalized graylevel is computed:
The default values approximate those recommended in the Charles
Poynton's Color FAQ, <http://www.inforamp.net/~poynton/>
-Copyright (c) 1998-01-04 Charles Poynton poynton@inforamp.net
+Copyright (c) 1998-01-04 Charles Poynton <poynton at inforamp.net>
Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
@@ -2028,8 +1663,8 @@ the second parameter NULL.
.SS Finishing a sequential read
-After you are finished reading the image through either the high- or
-low-level interfaces, you can finish reading the file. If you are
+After you are finished reading the image through the
+low-level interface, you can finish reading the file. If you are
interested in comments or time, which may be stored either before or
after the image data, you should pass the separate png_info struct if
you want to keep the comments from before and after the image
@@ -2047,7 +1682,7 @@ point to libpng-allocated storage with the following function:
png_free_data(png_ptr, info_ptr, mask, seq)
mask - identifies data to be freed, a mask
- containing the logical OR of one or
+ containing the bitwise OR of one or
more of
PNG_FREE_PLTE, PNG_FREE_TRNS,
PNG_FREE_HIST, PNG_FREE_ICCP,
@@ -2109,7 +1744,7 @@ application instead of by libpng, you can use
png_set_invalid(png_ptr, info_ptr, mask);
mask - identifies the chunks to be made invalid,
- containing the logical OR of one or
+ containing the bitwise OR of one or
more of
PNG_INFO_gAMA, PNG_INFO_sBIT,
PNG_INFO_cHRM, PNG_INFO_PLTE,
@@ -2376,6 +2011,14 @@ Libpng section below.
png_init_io(png_ptr, fp);
+If you are embedding your PNG into a datastream such as MNG, and don't
+want libpng to write the 8-byte signature, or if you have already
+written the signature in your application, use
+
+ png_set_sig_bytes(png_ptr, 8);
+
+to inform libpng that it should not write a signature.
+
.SS Write callbacks
At this point, you can set up a callback function that will be
@@ -2413,7 +2056,7 @@ types.
/* turn on or off filtering, and/or choose
specific filters. You can use either a single
- PNG_FILTER_VALUE_NAME or the logical OR of one
+ PNG_FILTER_VALUE_NAME or the bitwise OR of one
or more PNG_FILTER_NAME masks. */
png_set_filter(png_ptr, 0,
PNG_FILTER_NONE | PNG_FILTER_VALUE_NONE |
@@ -2786,7 +2429,7 @@ png_set_rows() to put image data in the info structure), simply do this:
png_write_png(png_ptr, info_ptr, png_transforms, NULL)
-where png_transforms is an integer containing the logical OR of some set of
+where png_transforms is an integer containing the bitwise OR of some set of
transformation flags. This call is equivalent to png_write_info(),
followed the set of transformations indicated by the transform mask,
then png_write_image(), and finally png_write_end().
@@ -3046,7 +2689,7 @@ point to libpng-allocated storage with the following function:
png_free_data(png_ptr, info_ptr, mask, seq)
mask - identifies data to be freed, a mask
- containing the logical OR of one or
+ containing the bitwise OR of one or
more of
PNG_FREE_PLTE, PNG_FREE_TRNS,
PNG_FREE_HIST, PNG_FREE_ICCP,
@@ -3239,7 +2882,7 @@ to use the "cexcept" facility (see http://cexcept.sourceforge.net).
If you need to read or write custom chunks, you may need to get deeper
into the libpng code. The library now has mechanisms for storing
and writing chunks of unknown type; you can even declare callbacks
-for custom chunks. Hoewver, this may not be good enough if the
+for custom chunks. However, this may not be good enough if the
library code itself needs to know about interactions between your
chunk and existing `intrinsic' chunks.
@@ -3590,7 +3233,7 @@ defined:
#if defined(PNG_USE_PNGGCCRD) && defined(PNG_ASSEMBLER_CODE_SUPPORTED) \
&& defined(PNG_THREAD_UNSAFE_OK)
/* Disable thread-unsafe features of pnggccrd */
- if (png_access_version() >= 10200)
+ if (png_access_version_number() >= 10200)
{
png_uint_32 mmx_disable_mask = 0;
png_uint_32 asm_flags;
@@ -3616,12 +3259,12 @@ Libpng can support some of these extensions. To enable them, use the
png_permit_mng_features() function:
feature_set = png_permit_mng_features(png_ptr, mask)
- mask is a png_uint_32 containing the logical OR of the
+ mask is a png_uint_32 containing the bitwise OR of the
features you want to enable. These include
PNG_FLAG_MNG_EMPTY_PLTE
PNG_FLAG_MNG_FILTER_64
PNG_ALL_MNG_FEATURES
- feature_set is a png_uint_32 that is the logical AND of
+ feature_set is a png_uint_32 that is the bitwise AND of
your mask with the set of MNG features that is
supported by the version of libpng that you are using.
@@ -3684,13 +3327,13 @@ application:
.SH IX. Y2K Compliance in libpng
-September 12, 2004
+January 31, 2007
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.2.7 are Y2K compliant. It is my belief that earlier
+upward through 1.2.16 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer that
@@ -3834,10 +3477,44 @@ the first widely used release:
1.0.16 10 10016 10.so.0.1.0.16
1.2.6 13 10206 12.so.0.1.2.6
1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2
- 1.0.17rc1 10 10017 12.so.0.1.0.17rc1
+ 1.0.17rc1 10 10017 10.so.0.1.0.17rc1
1.2.7rc1 13 10207 12.so.0.1.2.7rc1
- 1.0.17 10 10017 12.so.0.1.0.17
+ 1.0.17 10 10017 10.so.0.1.0.17
1.2.7 13 10207 12.so.0.1.2.7
+ 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
+ 1.0.18rc1-5 10 10018 10.so.0.1.0.18rc1-5
+ 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5
+ 1.0.18 10 10018 10.so.0.1.0.18
+ 1.2.8 13 10208 12.so.0.1.2.8
+ 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3
+ 1.2.9beta4-11 13 10209 12.so.0.9[.0]
+ 1.2.9rc1 13 10209 12.so.0.9[.0]
+ 1.2.9 13 10209 12.so.0.9[.0]
+ 1.2.10beta1-8 13 10210 12.so.0.10[.0]
+ 1.2.10rc1-3 13 10210 12.so.0.10[.0]
+ 1.2.10 13 10210 12.so.0.10[.0]
+ 1.2.11beta1-4 13 10211 12.so.0.11[.0]
+ 1.0.19rc1-5 10 10019 10.so.0.19[.0]
+ 1.2.11rc1-5 13 10211 12.so.0.11[.0]
+ 1.0.19 10 10019 10.so.0.19[.0]
+ 1.2.11 13 10211 12.so.0.11[.0]
+ 1.0.20 10 10020 10.so.0.20[.0]
+ 1.2.12 13 10212 12.so.0.12[.0]
+ 1.2.13beta1 13 10213 12.so.0.13[.0]
+ 1.0.21 10 10021 10.so.0.21[.0]
+ 1.2.13 13 10213 12.so.0.13[.0]
+ 1.2.14beta1-2 13 10214 12.so.0.14[.0]
+ 1.0.22rc1 10 10022 10.so.0.22[.0]
+ 1.2.14rc1 13 10214 12.so.0.14[.0]
+ 1.2.15beta1-6 13 10215 12.so.0.15[.0]
+ 1.0.23rc1-5 10 10023 10.so.0.23[.0]
+ 1.2.15rc1-5 13 10215 12.so.0.15[.0]
+ 1.0.23 10 10023 10.so.0.23[.0]
+ 1.2.15 13 10215 12.so.0.15[.0]
+ 1.2.16beta1-2 13 10216 12.so.0.16[.0]
+ 1.2.16rc1 13 10216 12.so.0.16[.0]
+ 1.0.24 10 10024 10.so.0.24[.0]
+ 1.2.16 13 10216 12.so.0.16[.0]
Henceforth the source version will match the shared-library minor
and patch numbers; the shared-library major version number will be
@@ -3885,7 +3562,7 @@ and this library, the specification takes precedence.
.SH AUTHORS
This man page: Glenn Randers-Pehrson
-<glennrp@users.sourceforge.net>
+<glennrp at users.sourceforge.net>
The contributing authors would like to thank all those who helped
with testing, bug fixes, and patience. This wouldn't have been
@@ -3893,14 +3570,17 @@ possible without all of you.
Thanks to Frank J. T. Wojcik for helping with the documentation.
-Libpng version 1.2.7 - September 12, 2004:
+Libpng version 1.2.16 - January 31, 2007:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
-Currently maintained by Glenn Randers-Pehrson (glennrp@users.sourceforge.net).
+Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
Supported by the PNG development group
.br
-png-implement@ccrc.wustl.edu (subscription required; write to
-majordomo@ccrc.wustl.edu with "subscribe png-implement" in the message).
+png-mng-implement at lists.sf.net
+(subscription required; visit
+png-mng-implement at lists.sourceforge.net (subscription required; visit
+https://lists.sourceforge.net/lists/listinfo/png-mng-implement
+to subscribe).
.SH COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
@@ -3911,8 +3591,8 @@ included in the libpng distribution, the latter shall prevail.)
If you modify libpng you may insert additional notices immediately following
this sentence.
-libpng version 1.2.6, September 12, 2004, is
-Copyright (c) 2004 Glenn Randers-Pehrson, and is
+libpng versions 1.2.6, August 15, 2004, through 1.2.16, January 31, 2007, are
+Copyright (c) 2004-2006 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
@@ -4009,8 +3689,8 @@ Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a
certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
-glennrp@users.sourceforge.net
-September 12, 2004
+glennrp at users.sourceforge.net
+January 31, 2007
.\" end of man page
diff --git a/png/libpng.txt b/png/libpng.txt
index 4dec2dd..bc8aa76 100644
--- a/png/libpng.txt
+++ b/png/libpng.txt
@@ -1,9 +1,9 @@
libpng.txt - A description on how to use and modify libpng
- libpng version 1.2.7 - September 12, 2004
+ libpng version 1.2.16 - January 31, 2007
Updated and distributed by Glenn Randers-Pehrson
- <glennrp@users.sourceforge.net>
- Copyright (c) 1998-2004 Glenn Randers-Pehrson
+ <glennrp at users.sourceforge.net>
+ Copyright (c) 1998-2005 Glenn Randers-Pehrson
For conditions of distribution and use, see copyright
notice in png.h.
@@ -392,7 +392,7 @@ dithering, and setting filler.) If this is the case, simply do this:
png_read_png(png_ptr, info_ptr, png_transforms, NULL)
-where png_transforms is an integer containing the logical OR of
+where png_transforms is an integer containing the bitwise OR of
some set of transformation flags. This call is equivalent to png_read_info(),
followed the set of transformations indicated by the transform mask,
then png_read_image(), and finally png_read_end().
@@ -771,9 +771,10 @@ in RGB RGB RGB format unless png_set_filler() or png_set_add_alpha()
is called to insert filler bytes, either before or after each RGB triplet.
16-bit RGB data will be returned RRGGBB RRGGBB, with the most significant
byte of the color value first, unless png_set_strip_16() is called to
-transform it to regular RGB RGB triplets, or png_set_filler|add alpha()
-is called to insert filler bytes, either before or after each RRGGBB
-triplet. Similarly, 8-bit or 16-bit grayscale data can be modified with
+transform it to regular RGB RGB triplets, or png_set_filler() or
+png_set_add alpha() is called to insert filler bytes, either before or
+after each RRGGBB triplet. Similarly, 8-bit or 16-bit grayscale data can
+be modified with
png_set_filler(), png_set_add_alpha(), or png_set_strip_16().
The following code transforms grayscale images of less than 8 to 8 bits,
@@ -786,7 +787,7 @@ viewing application that wishes to treat all images in the same way.
png_set_palette_to_rgb(png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY &&
- bit_depth < 8) png_set_gray_1_2_4_to_8(png_ptr);
+ bit_depth < 8) png_set_expand_gray_1_2_4_to_8(png_ptr);
if (png_get_valid(png_ptr, info_ptr,
PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);
@@ -796,6 +797,11 @@ in libpng version 1.0.4, with the function names expanded to improve code
readability. In some future version they may actually do different
things.
+As of libpng version 1.2.9, png_set_expand_gray_1_2_4_to_8() was
+added. It expands the sample depth without changing tRNS to alpha.
+At the same time, png_set_gray_1_2_4_to_8() was deprecated, and it
+will be removed from a future version.
+
PNG can have files with 16 bits per channel. If you only can handle
8 bits per channel, this will strip the pixels down to 8 bit.
@@ -867,7 +873,7 @@ to do that, you can add a true alpha channel with
png_set_add_alpha(png_ptr, filler, PNG_FILLER_AFTER);
where "filler" contains the alpha value to assign to each pixel.
-This function became available in libpng-1.2.7.
+This function was added in libpng-1.2.7.
If you are reading an image with an alpha channel, and you need the
data as ARGB instead of the normal PNG format RGBA:
@@ -922,7 +928,7 @@ the normalized graylevel is computed:
The default values approximate those recommended in the Charles
Poynton's Color FAQ, <http://www.inforamp.net/~poynton/>
-Copyright (c) 1998-01-04 Charles Poynton poynton@inforamp.net
+Copyright (c) 1998-01-04 Charles Poynton <poynton at inforamp.net>
Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
@@ -1247,8 +1253,8 @@ the second parameter NULL.
Finishing a sequential read
-After you are finished reading the image through either the high- or
-low-level interfaces, you can finish reading the file. If you are
+After you are finished reading the image through the
+low-level interface, you can finish reading the file. If you are
interested in comments or time, which may be stored either before or
after the image data, you should pass the separate png_info struct if
you want to keep the comments from before and after the image
@@ -1266,7 +1272,7 @@ point to libpng-allocated storage with the following function:
png_free_data(png_ptr, info_ptr, mask, seq)
mask - identifies data to be freed, a mask
- containing the logical OR of one or
+ containing the bitwise OR of one or
more of
PNG_FREE_PLTE, PNG_FREE_TRNS,
PNG_FREE_HIST, PNG_FREE_ICCP,
@@ -1328,7 +1334,7 @@ application instead of by libpng, you can use
png_set_invalid(png_ptr, info_ptr, mask);
mask - identifies the chunks to be made invalid,
- containing the logical OR of one or
+ containing the bitwise OR of one or
more of
PNG_INFO_gAMA, PNG_INFO_sBIT,
PNG_INFO_cHRM, PNG_INFO_PLTE,
@@ -1595,6 +1601,14 @@ Libpng section below.
png_init_io(png_ptr, fp);
+If you are embedding your PNG into a datastream such as MNG, and don't
+want libpng to write the 8-byte signature, or if you have already
+written the signature in your application, use
+
+ png_set_sig_bytes(png_ptr, 8);
+
+to inform libpng that it should not write a signature.
+
Write callbacks
At this point, you can set up a callback function that will be
@@ -1632,7 +1646,7 @@ types.
/* turn on or off filtering, and/or choose
specific filters. You can use either a single
- PNG_FILTER_VALUE_NAME or the logical OR of one
+ PNG_FILTER_VALUE_NAME or the bitwise OR of one
or more PNG_FILTER_NAME masks. */
png_set_filter(png_ptr, 0,
PNG_FILTER_NONE | PNG_FILTER_VALUE_NONE |
@@ -2005,7 +2019,7 @@ png_set_rows() to put image data in the info structure), simply do this:
png_write_png(png_ptr, info_ptr, png_transforms, NULL)
-where png_transforms is an integer containing the logical OR of some set of
+where png_transforms is an integer containing the bitwise OR of some set of
transformation flags. This call is equivalent to png_write_info(),
followed the set of transformations indicated by the transform mask,
then png_write_image(), and finally png_write_end().
@@ -2265,7 +2279,7 @@ point to libpng-allocated storage with the following function:
png_free_data(png_ptr, info_ptr, mask, seq)
mask - identifies data to be freed, a mask
- containing the logical OR of one or
+ containing the bitwise OR of one or
more of
PNG_FREE_PLTE, PNG_FREE_TRNS,
PNG_FREE_HIST, PNG_FREE_ICCP,
@@ -2458,7 +2472,7 @@ Custom chunks
If you need to read or write custom chunks, you may need to get deeper
into the libpng code. The library now has mechanisms for storing
and writing chunks of unknown type; you can even declare callbacks
-for custom chunks. Hoewver, this may not be good enough if the
+for custom chunks. However, this may not be good enough if the
library code itself needs to know about interactions between your
chunk and existing `intrinsic' chunks.
@@ -2809,7 +2823,7 @@ defined:
#if defined(PNG_USE_PNGGCCRD) && defined(PNG_ASSEMBLER_CODE_SUPPORTED) \
&& defined(PNG_THREAD_UNSAFE_OK)
/* Disable thread-unsafe features of pnggccrd */
- if (png_access_version() >= 10200)
+ if (png_access_version_number() >= 10200)
{
png_uint_32 mmx_disable_mask = 0;
png_uint_32 asm_flags;
@@ -2835,12 +2849,12 @@ Libpng can support some of these extensions. To enable them, use the
png_permit_mng_features() function:
feature_set = png_permit_mng_features(png_ptr, mask)
- mask is a png_uint_32 containing the logical OR of the
+ mask is a png_uint_32 containing the bitwise OR of the
features you want to enable. These include
PNG_FLAG_MNG_EMPTY_PLTE
PNG_FLAG_MNG_FILTER_64
PNG_ALL_MNG_FEATURES
- feature_set is a png_uint_32 that is the logical AND of
+ feature_set is a png_uint_32 that is the bitwise AND of
your mask with the set of MNG features that is
supported by the version of libpng that you are using.
@@ -2903,13 +2917,13 @@ application:
IX. Y2K Compliance in libpng
-September 12, 2004
+January 31, 2007
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.2.7 are Y2K compliant. It is my belief that earlier
+upward through 1.2.16 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer that
diff --git a/png/libpngpf.3 b/png/libpngpf.3
index 9914fcf..ec4813b 100644
--- a/png/libpngpf.3
+++ b/png/libpngpf.3
@@ -1,1085 +1,263 @@
-.TH LIBPNGPF 3 "September 12, 2004"
+.TH LIBPNGPF 3 "January 31, 2007"
.SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.2.7
+libpng \- Portable Network Graphics (PNG) Reference Library 1.2.16
(private functions)
.SH SYNOPSIS
-\fB\fB#include <png.h>\fP\fP
+\fB#include <png.h>\fP
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_build_gamma_table (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_build_grayscale_palette (int \fP\fI\fP\fIbit_depth\fP\fB\fP\fB, png_colorp \fI\fIpalette\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_calculate_crc (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIptr\fP\fB\fP\fB, png_size_t \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_check_chunk_name (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fI\fIchunk_name\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBpng_size_t png_check_keyword (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_charp \fP\fI\fP\fIkey\fP\fB\fP\fB, png_charpp \fI\fInew_key\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_combine_row (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, int \fI\fImask\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_correct_palette (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_colorp \fP\fI\fP\fIpalette\fP\fB\fP\fB, int \fI\fInum_palette\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBint png_crc_error (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBint png_crc_finish (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIskip\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_crc_read (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIbuf\fP\fB\fP\fB, png_size_t \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBpng_voidp png_create_struct (int \fI\fItype\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBpng_voidp png_create_struct_2 (int \fP\fI\fP\fItype\fP\fB\fP\fB, png_malloc_ptr \fP\fI\fP\fImalloc_fn\fP\fB\fP\fB, png_voidp \fI\fImem_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBpng_charp png_decompress_chunk (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, int \fP\fI\fP\fIcomp_type\fP\fB\fP\fB, png_charp \fP\fI\fP\fIchunkdata\fP\fB\fP\fB, png_size_t \fP\fI\fP\fIchunklength\fP\fB\fP\fB, png_size_t \fP\fI\fP\fIprefix_length\fP\fB\fP\fB, png_size_t \fI\fI*data_length\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_destroy_struct (png_voidp \fI\fIstruct_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_destroy_struct_2 (png_voidp \fP\fI\fP\fIstruct_ptr\fP\fB\fP\fB, png_free_ptr \fP\fI\fP\fIfree_fn\fP\fB\fP\fB, png_voidp \fI\fImem_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_background (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_color_16p \fP\fI\fP\fItrans_values\fP\fB\fP\fB, png_color_16p \fP\fI\fP\fIbackground\fP\fB\fP\fB, png_color_16p \fP\fI\fP\fIbackground_1\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIgamma_table\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIgamma_from_1\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIgamma_to_1\fP\fB\fP\fB, png_uint_16pp \fP\fI\fP\fIgamma_16\fP\fB\fP\fB, png_uint_16pp \fP\fI\fP\fIgamma_16_from_1\fP\fB\fP\fB, png_uint_16pp \fP\fI\fP\fIgamma_16_to_1\fP\fB\fP\fB, int \fI\fIgamma_shift\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_bgr (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_chop (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_dither (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIpalette_lookup\fP\fB\fP\fB, png_bytep \fI\fIdither_lookup\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_expand (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_color_16p \fI\fItrans_value\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_expand_palette (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_colorp \fP\fI\fP\fIpalette\fP\fB\fP\fB, png_bytep \fP\fI\fP\fItrans\fP\fB\fP\fB, int \fI\fInum_trans\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_gamma (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIgamma_table\fP\fB\fP\fB, png_uint_16pp \fP\fI\fP\fIgamma_16_table\fP\fB\fP\fB, int \fI\fIgamma_shift\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_gray_to_rgb (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_invert (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_pack (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_uint_32 \fI\fIbit_depth\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_packswap (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_read_filler (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIfiller\fP\fB\fP\fB, png_uint_32 \fI\fIflags\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_read_interlace (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, int \fP\fI\fP\fIpass\fP\fB\fP\fB, png_uint_32 \fI\fItransformations\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_read_invert_alpha (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_read_swap_alpha (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_read_transformations (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBint png_do_rgb_to_gray (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_shift (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_color_8p \fI\fIbit_depth\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_strip_filler (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_uint_32 \fI\fIflags\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_swap (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_unpack (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_unshift (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_color_8p \fI\fIsig_bits\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_write_interlace (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, int \fI\fIpass\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_write_invert_alpha (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_write_swap_alpha (png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_do_write_transformations (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid *png_far_to_near (png_structp png_ptr,png_voidp \fP\fI\fP\fIptr\fP\fB\fP\fB, int \fI\fIcheck\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_flush (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBpng_int_32 png_get_int_32 (png_bytep \fI\fIbuf\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBpng_uint_16 png_get_uint_16 (png_bytep \fI\fIbuf\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBpng_uint_32 png_get_uint_31 (png_bytep \fI\fIbuf\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBpng_uint_32 png_get_uint_32 (png_bytep \fI\fIbuf\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_bKGD (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_cHRM (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_gAMA (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_hIST (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_IEND (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_IHDR (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_iCCP (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_iTXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_oFFs (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
+\fBvoid png_build_gamma_table (png_structp \fIpng_ptr\fP\fB);\fP
-\fB\fBvoid png_handle_pCAL (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
+\fBvoid png_build_grayscale_palette (int \fP\fIbit_depth\fP\fB, png_colorp \fIpalette\fP\fB);\fP
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_pHYs (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_PLTE (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_sBIT (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_sCAL (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_sPLT (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_sRGB (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_tEXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_tIME (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_tRNS (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_unknown (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_handle_zTXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_info_destroy (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_init_mmx_flags (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_init_read_transformations (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_process_IDAT_data (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIbuffer\fP\fB\fP\fB, png_size_t \fI\fIbuffer_length\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_process_some_data (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_check_crc (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_crc_finish (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_crc_skip (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_fill_buffer (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIbuffer\fP\fB\fP\fB, png_size_t \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_handle_tEXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_handle_unknown (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_handle_zTXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_have_end (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_have_info (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_have_row (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fI\fIrow\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_process_row (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_read_chunk (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
+\fBvoid png_calculate_crc (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIptr\fP\fB, png_size_t \fIlength\fP\fB);\fP
-\fI\fB
-
-\fB\fBvoid png_push_read_end (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_read_IDAT (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_read_sig (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_read_tEXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_read_zTXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_restore_buffer (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIbuffer\fP\fB\fP\fB, png_size_t \fI\fIbuffer_length\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_push_save_buffer (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_read_data (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIdata\fP\fB\fP\fB, png_size_t \fI\fIlength\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_read_filter_row (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_row_infop \fP\fI\fP\fIrow_info\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIrow\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIprev_row\fP\fB\fP\fB, int \fI\fIfilter\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_read_finish_row (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_read_push_finish_row (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_read_start_row (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_read_transform_info (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fI\fIinfo_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_reset_crc (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
+\fBvoid png_check_chunk_name (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIchunk_name\fP\fB);\fP
-\fB\fBvoid png_save_int_32 (png_bytep \fP\fI\fP\fIbuf\fP\fB\fP\fB, png_int_32 \fI\fIi\fP\fB\fP\fB);\fP\fP
+\fBpng_size_t png_check_keyword (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charpp \fInew_key\fP\fB);\fP
-\fI\fB
+\fBvoid png_combine_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fImask\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_correct_palette (png_structp \fP\fIpng_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, int \fInum_palette\fP\fB);\fP
-\fI\fB
+\fBint png_crc_error (png_structp \fIpng_ptr\fP\fB);\fP
-\fB\fBvoid png_save_uint_16 (png_bytep \fP\fI\fP\fIbuf\fP\fB\fP\fB, unsigned int \fI\fIi\fP\fB\fP\fB);\fP\fP
+\fBint png_crc_finish (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIskip\fP\fB);\fP
-\fI\fB
+\fBvoid png_crc_read (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuf\fP\fB, png_size_t \fIlength\fP\fB);\fP
-\fI\fB\fI\fB
+\fBpng_voidp png_create_struct (int \fItype\fP\fB);\fP
-\fI\fB
+\fBpng_voidp png_create_struct_2 (int \fP\fItype\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_voidp \fImem_ptr\fP\fB);\fP
-\fB\fBvoid png_save_uint_32 (png_bytep \fP\fI\fP\fIbuf\fP\fB\fP\fB, png_uint_32 \fI\fIi\fP\fB\fP\fB);\fP\fP
+\fBpng_charp png_decompress_chunk (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcomp_type\fP\fB, png_charp \fP\fIchunkdata\fP\fB, png_size_t \fP\fIchunklength\fP\fB, png_size_t \fP\fIprefix_length\fP\fB, png_size_t \fI*data_length\fP\fB);\fP
-\fI\fB
+\fBvoid png_destroy_struct (png_voidp \fIstruct_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_destroy_struct_2 (png_voidp \fP\fIstruct_ptr\fP\fB, png_free_ptr \fP\fIfree_fn\fP\fB, png_voidp \fImem_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_background (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_16p \fP\fItrans_values\fP\fB, png_color_16p \fP\fIbackground\fP\fB, png_color_16p \fP\fIbackground_1\fP\fB, png_bytep \fP\fIgamma_table\fP\fB, png_bytep \fP\fIgamma_from_1\fP\fB, png_bytep \fP\fIgamma_to_1\fP\fB, png_uint_16pp \fP\fIgamma_16\fP\fB, png_uint_16pp \fP\fIgamma_16_from_1\fP\fB, png_uint_16pp \fP\fIgamma_16_to_1\fP\fB, int \fIgamma_shift\fP\fB);\fP
-\fB\fBint png_set_text_2 (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_infop \fP\fI\fP\fIinfo_ptr\fP\fB\fP\fB, png_textp \fP\fI\fP\fItext_ptr\fP\fB\fP\fB, int \fI\fInum_text)\fP\fB\fP\fB);\fP\fP
+\fBvoid png_do_bgr (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_chop (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_do_dither (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIpalette_lookup\fP\fB, png_bytep \fIdither_lookup\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_expand (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_16p \fItrans_value\fP\fB);\fP
-\fB\fBvoid png_write_cHRM (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, double \fP\fI\fP\fIwhite_x\fP\fB\fP\fB, double \fP\fI\fP\fIwhite_y\fP\fB\fP\fB, double \fP\fI\fP\fIred_x\fP\fB\fP\fB, double \fP\fI\fP\fIred_y\fP\fB\fP\fB, double \fP\fI\fP\fIgreen_x\fP\fB\fP\fB, double \fP\fI\fP\fIgreen_y\fP\fB\fP\fB, double \fP\fI\fP\fIblue_x\fP\fB\fP\fB, double \fI\fIblue_y\fP\fB\fP\fB);\fP\fP
+\fBvoid png_do_expand_palette (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_colorp \fP\fIpalette\fP\fB, png_bytep \fP\fItrans\fP\fB, int \fInum_trans\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_gamma (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIgamma_table\fP\fB, png_uint_16pp \fP\fIgamma_16_table\fP\fB, int \fIgamma_shift\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_do_gray_to_rgb (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_invert (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fB\fBvoid png_write_cHRM_fixed (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIwhite_x\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIwhite_y\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIred_x\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIred_y\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIgreen_x\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIgreen_y\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIblue_x\fP\fB\fP\fB, png_uint_32 \fI\fIblue_y\fP\fB\fP\fB);\fP\fP
+\fBvoid png_do_pack (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fIbit_depth\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_packswap (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_do_read_filler (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, png_uint_32 \fIflags\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_read_interlace (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fP\fIpass\fP\fB, png_uint_32 \fItransformations\fP\fB);\fP
-\fB\fBvoid png_write_data (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIdata\fP\fB\fP\fB, png_size_t \fI\fIlength\fP\fB\fP\fB);\fP\fP
+\fBvoid png_do_read_invert_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_read_swap_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_do_read_transformations (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBint png_do_rgb_to_gray (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fB\fBvoid png_write_filtered_row (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fI\fIfiltered_row\fP\fB\fP\fB);\fP\fP
+\fBvoid png_do_shift (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_8p \fIbit_depth\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_strip_filler (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fIflags\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_do_swap (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_unpack (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fB\fBvoid png_write_find_filter (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_row_infop \fI\fIrow_info\fP\fB\fP\fB);\fP\fP
+\fBvoid png_do_unshift (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_8p \fIsig_bits\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_write_interlace (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fIpass\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_do_write_invert_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB
+\fBvoid png_do_write_swap_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fB\fBvoid png_write_finish_row (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
+\fBvoid png_do_write_transformations (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid *png_far_to_near (png_structp png_ptr,png_voidp \fP\fIptr\fP\fB, int \fIcheck\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_flush (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_bKGD (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fB\fBvoid png_write_gAMA (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, double \fI\fIfile_gamma\fP\fB\fP\fB);\fP\fP
+\fBvoid png_handle_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_gAMA (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_handle_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_IEND (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fB\fBvoid png_write_gAMA_fixed (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_uint_32 \fI\fIint_file_gamma\fP\fB\fP\fB);\fP\fP
+\fBvoid png_handle_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_handle_iTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fB\fBvoid png_write_hIST (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_uint_16p \fP\fI\fP\fIhist\fP\fB\fP\fB, int \fI\fInum_hist\fP\fB\fP\fB);\fP\fP
+\fBvoid png_handle_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_handle_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fB\fBvoid png_write_iCCP (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_charp \fP\fI\fP\fIname\fP\fB\fP\fB, int \fP\fI\fP\fIcompression_type\fP\fB\fP\fB, png_charp \fP\fI\fP\fIprofile\fP\fB\fP\fB, int \fI\fIproflen\fP\fB\fP\fB);\fP\fP
+\fBvoid png_handle_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_handle_sRGB (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fB\fBvoid png_write_IDAT (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fIdata\fP\fB\fP\fB, png_size_t \fI\fIlength\fP\fB\fP\fB);\fP\fP
+\fBvoid png_handle_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_handle_unknown (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_handle_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fB\fBvoid png_write_IEND (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
+\fBvoid png_info_destroy (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_init_mmx_flags (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_init_read_transformations (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_process_IDAT_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_length\fP\fB);\fP
-\fB\fBvoid png_write_IHDR (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIwidth\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIheight\fP\fB\fP\fB, int \fP\fI\fP\fIbit_depth\fP\fB\fP\fB, int \fP\fI\fP\fIcolor_type\fP\fB\fP\fB, int \fP\fI\fP\fIcompression_type\fP\fB\fP\fB, int \fP\fI\fP\fIfilter_type\fP\fB\fP\fB, int \fI\fIinterlace_type\fP\fB\fP\fB);\fP\fP
+\fBvoid png_process_some_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_check_crc (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_push_crc_finish (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_crc_skip (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fB\fBvoid png_write_iTXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, int \fP\fI\fP\fIcompression\fP\fB\fP\fB, png_charp \fP\fI\fP\fIkey\fP\fB\fP\fB, png_charp \fP\fI\fP\fIlang\fP\fB\fP\fB, png_charp \fP\fI\fP\fItranslated_key\fP\fB\fP\fB, png_charp \fI\fItext)\fP\fB\fP\fB);\fP\fP
+\fBvoid png_push_fill_buffer (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_handle_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_push_handle_unknown (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_handle_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
-\fB\fBvoid png_write_oFFs (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIx_offset\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIy_offset\fP\fB\fP\fB, int \fI\fIunit_type\fP\fB\fP\fB);\fP\fP
+\fBvoid png_push_have_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_have_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_push_have_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIrow\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_process_row (png_structp \fIpng_ptr\fP\fB);\fP
-\fB\fBvoid png_write_pCAL (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_charp \fP\fI\fP\fIpurpose\fP\fB\fP\fB, png_int_32 \fP\fI\fP\fIX0\fP\fB\fP\fB, png_int_32 \fP\fI\fP\fIX1\fP\fB\fP\fB, int \fP\fI\fP\fItype\fP\fB\fP\fB, int \fP\fI\fP\fInparams\fP\fB\fP\fB, png_charp \fP\fI\fP\fIunits\fP\fB\fP\fB, png_charpp \fI\fIparams\fP\fB\fP\fB);\fP\fP
+\fBvoid png_push_read_chunk (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_read_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_push_read_IDAT (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_read_sig (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fB\fBvoid png_write_pHYs (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIx_pixels_per_unit\fP\fB\fP\fB, png_uint_32 \fP\fI\fP\fIy_pixels_per_unit\fP\fB\fP\fB, int \fI\fIunit_type\fP\fB\fP\fB);\fP\fP
+\fBvoid png_push_read_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_read_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_push_restore_buffer (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_length\fP\fB);\fP
-\fI\fB
+\fBvoid png_push_save_buffer (png_structp \fIpng_ptr\fP\fB);\fP
-\fB\fBvoid png_write_PLTE (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_colorp \fP\fI\fP\fIpalette\fP\fB\fP\fB, png_uint_32 \fI\fInum_pal\fP\fB\fP\fB);\fP\fP
+\fBvoid png_read_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_read_filter_row (png_structp \fP\fIpng_ptr\fP\fB, png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIprev_row\fP\fB, int \fIfilter\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_read_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
-
-\fB\fBvoid png_write_sBIT (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_color_8p \fP\fI\fP\fIsbit\fP\fB\fP\fB, int \fI\fIcolor_type\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_write_sCAL (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_charp \fP\fI\fP\fIunit\fP\fB\fP\fB, double \fP\fI\fP\fIwidth\fP\fB\fP\fB, double \fI\fIheight\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_write_sCAL_s (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_charp \fP\fI\fP\fIunit\fP\fB\fP\fB, png_charp \fP\fI\fP\fIwidth\fP\fB\fP\fB, png_charp \fI\fIheight\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
-
-\fI\fB\fI\fB
-
-\fI\fB
-
-\fB\fBvoid png_write_sig (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
-
-\fI\fB
+\fBvoid png_read_push_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_read_start_row (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_read_transform_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
-\fB\fBvoid png_write_sRGB (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, int \fI\fIintent\fP\fB\fP\fB);\fP\fP
+\fBvoid png_reset_crc (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBint png_set_text_2 (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_textp \fP\fItext_ptr\fP\fB, int \fInum_text\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_write_cHRM (png_structp \fP\fIpng_ptr\fP\fB, double \fP\fIwhite_x\fP\fB, double \fP\fIwhite_y\fP\fB, double \fP\fIred_x\fP\fB, double \fP\fIred_y\fP\fB, double \fP\fIgreen_x\fP\fB, double \fP\fIgreen_y\fP\fB, double \fP\fIblue_x\fP\fB, double \fIblue_y\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_cHRM_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIwhite_x\fP\fB, png_uint_32 \fP\fIwhite_y\fP\fB, png_uint_32 \fP\fIred_x\fP\fB, png_uint_32 \fP\fIred_y\fP\fB, png_uint_32 \fP\fIgreen_x\fP\fB, png_uint_32 \fP\fIgreen_y\fP\fB, png_uint_32 \fP\fIblue_x\fP\fB, png_uint_32 \fIblue_y\fP\fB);\fP
-\fB\fBvoid png_write_sPLT (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_spalette_p \fI\fIpalette\fP\fB\fP\fB);\fP\fP
+\fBvoid png_write_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_filtered_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIfiltered_row\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_write_find_filter (png_structp \fP\fIpng_ptr\fP\fB, png_row_infop \fIrow_info\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
-\fB\fBvoid png_write_start_row (png_structp \fI\fIpng_ptr\fP\fB\fP\fB);\fP\fP
+\fBvoid png_write_gAMA (png_structp \fP\fIpng_ptr\fP\fB, double \fIfile_gamma\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_gAMA_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIint_file_gamma\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_write_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_uint_16p \fP\fIhist\fP\fB, int \fInum_hist\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIname\fP\fB, int \fP\fIcompression_type\fP\fB, png_charp \fP\fIprofile\fP\fB, int \fIproflen\fP\fB);\fP
-\fB\fBvoid png_write_tEXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_charp \fP\fI\fP\fIkey\fP\fB\fP\fB, png_charp \fP\fI\fP\fItext\fP\fB\fP\fB, png_size_t \fI\fItext_len\fP\fB\fP\fB);\fP\fP
+\fBvoid png_write_IDAT (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_IEND (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_write_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIwidth\fP\fB, png_uint_32 \fP\fIheight\fP\fB, int \fP\fIbit_depth\fP\fB, int \fP\fIcolor_type\fP\fB, int \fP\fIcompression_type\fP\fB, int \fP\fIfilter_type\fP\fB, int \fIinterlace_type\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_iTXt (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcompression\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fIlang\fP\fB, png_charp \fP\fItranslated_key\fP\fB, png_charp \fItext\fP\fB);\fP
-\fB\fBvoid png_write_tIME (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_timep \fI\fImod_time\fP\fB\fP\fB);\fP\fP
+\fBvoid png_write_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIx_offset\fP\fB, png_uint_32 \fP\fIy_offset\fP\fB, int \fIunit_type\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIpurpose\fP\fB, png_int_32 \fP\fIX0\fP\fB, png_int_32 \fP\fIX1\fP\fB, int \fP\fItype\fP\fB, int \fP\fInparams\fP\fB, png_charp \fP\fIunits\fP\fB, png_charpp \fIparams\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_write_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIx_pixels_per_unit\fP\fB, png_uint_32 \fP\fIy_pixels_per_unit\fP\fB, int \fIunit_type\fP\fB);\fP
-\fI\fB
-
-\fB\fBvoid png_write_tRNS (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_bytep \fP\fI\fP\fItrans\fP\fB\fP\fB, png_color_16p \fP\fI\fP\fIvalues\fP\fB\fP\fB, int \fP\fI\fP\fInumber\fP\fB\fP\fB, int \fI\fIcolor_type\fP\fB\fP\fB);\fP\fP
+\fBvoid png_write_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, png_uint_32 \fInum_pal\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_color_8p \fP\fIsbit\fP\fB, int \fIcolor_type\fP\fB);\fP
-\fI\fB\fI\fB
-
-\fI\fB
+\fBvoid png_write_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, double \fP\fIwidth\fP\fB, double \fIheight\fP\fB);\fP
-\fB\fBvoid png_write_zTXt (png_structp \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, png_charp \fP\fI\fP\fIkey\fP\fB\fP\fB, png_charp \fP\fI\fP\fItext\fP\fB\fP\fB, png_size_t \fP\fI\fP\fItext_len\fP\fB\fP\fB, int \fI\fIcompression\fP\fB\fP\fB);\fP\fP
+\fBvoid png_write_sCAL_s (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, png_charp \fP\fIwidth\fP\fB, png_charp \fIheight\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_sig (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_write_sRGB (png_structp \fP\fIpng_ptr\fP\fB, int \fIintent\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_spalette_p \fIpalette\fP\fB);\fP
-\fB\fBvoidpf png_zalloc (voidpf \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, uInt \fP\fI\fP\fIitems\fP\fB\fP\fB, uInt \fI\fIsize\fP\fB\fP\fB);\fP\fP
+\fBvoid png_write_start_row (png_structp \fIpng_ptr\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fItext\fP\fB, png_size_t \fItext_len\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_write_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_timep \fImod_time\fP\fB);\fP
-\fI\fB
+\fBvoid png_write_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fItrans\fP\fB, png_color_16p \fP\fIvalues\fP\fB, int \fP\fInumber\fP\fB, int \fIcolor_type\fP\fB);\fP
-\fB\fBvoid png_zfree (voidpf \fP\fI\fP\fIpng_ptr\fP\fB\fP\fB, voidpf \fI\fIptr\fP\fB\fP\fB);\fP\fP
+\fBvoid png_write_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fItext\fP\fB, png_size_t \fP\fItext_len\fP\fB, int \fIcompression\fP\fB);\fP
-\fI\fB
+\fBvoidpf png_zalloc (voidpf \fP\fIpng_ptr\fP\fB, uInt \fP\fIitems\fP\fB, uInt \fIsize\fP\fB);\fP
-\fI\fB\fI\fB
+\fBvoid png_zfree (voidpf \fP\fIpng_ptr\fP\fB, voidpf \fIptr\fP\fB);\fP
\fI\fB
diff --git a/png/png.5 b/png/png.5
index 1cc5ef4..5aba7f9 100644
--- a/png/png.5
+++ b/png/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "September 12, 2004"
+.TH PNG 5 "January 31, 2007"
.SH NAME
png \- Portable Network Graphics (PNG) format
.SH DESCRIPTION
@@ -58,7 +58,7 @@ Thomas Boutell and others (png-list).
.SH COPYRIGHT NOTICE
.LP
-This man page is Copyright (c) 1998-2004 Glenn Randers-Pehrson. See png.h
+This man page is Copyright (c) 1998-2006 Glenn Randers-Pehrson. See png.h
for conditions of use and distribution.
.LP
The PNG Specification (Second Edition) is
diff --git a/png/png.c b/png/png.c
index 75099d5..f8d6950 100644
--- a/png/png.c
+++ b/png/png.c
@@ -1,9 +1,9 @@
/* png.c - location for general purpose libpng functions
*
- * libpng version 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -13,7 +13,7 @@
#include "png.h"
/* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_2_7 Your_png_h_is_not_version_1_2_7;
+typedef version_1_2_16 Your_png_h_is_not_version_1_2_16;
/* Version information for C files. This had better match the version
* string defined in png.h. */
@@ -22,9 +22,12 @@ typedef version_1_2_7 Your_png_h_is_not_version_1_2_7;
/* png_libpng_ver was changed to a function in version 1.0.5c */
const char png_libpng_ver[18] = PNG_LIBPNG_VER_STRING;
+#ifdef PNG_READ_SUPPORTED
+
/* png_sig was changed to a function in version 1.0.5c */
/* Place to hold the signature string for a PNG file. */
const png_byte FARDATA png_sig[8] = {137, 80, 78, 71, 13, 10, 26, 10};
+#endif /* PNG_READ_SUPPORTED */
/* Invoke global declarations for constant strings for known chunk types */
PNG_IHDR;
@@ -49,6 +52,7 @@ PNG_tIME;
PNG_tRNS;
PNG_zTXt;
+#ifdef PNG_READ_SUPPORTED
/* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
/* start of interlace block */
@@ -80,7 +84,8 @@ const int FARDATA png_pass_mask[] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
const int FARDATA png_pass_dsp_mask[]
= {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
-#endif
+#endif /* PNG_READ_SUPPORTED */
+#endif /* PNG_USE_GLOBAL_ARRAYS */
/* Tells libpng that we have already handled the first "num_bytes" bytes
* of the PNG file signature. If the PNG data is embedded into another
@@ -88,9 +93,11 @@ const int FARDATA png_pass_dsp_mask[]
* or write any of the magic bytes before it starts on the IHDR.
*/
+#ifdef PNG_READ_SUPPORTED
void PNGAPI
png_set_sig_bytes(png_structp png_ptr, int num_bytes)
{
+ if(png_ptr == NULL) return;
png_debug(1, "in png_set_sig_bytes\n");
if (num_bytes > 8)
png_error(png_ptr, "Too many bytes for PNG signature.");
@@ -113,10 +120,10 @@ png_sig_cmp(png_bytep sig, png_size_t start, png_size_t num_to_check)
if (num_to_check > 8)
num_to_check = 8;
else if (num_to_check < 1)
- return (0);
+ return (-1);
if (start > 7)
- return (0);
+ return (-1);
if (start + num_to_check > 8)
num_to_check = 8 - start;
@@ -124,6 +131,7 @@ png_sig_cmp(png_bytep sig, png_size_t start, png_size_t num_to_check)
return ((int)(png_memcmp(&sig[start], &png_signature[start], num_to_check)));
}
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
/* (Obsolete) function to check signature bytes. It does not allow one
* to check a partial signature. This function might be removed in the
* future - use png_sig_cmp(). Returns true (nonzero) if the file is a PNG.
@@ -133,7 +141,10 @@ png_check_sig(png_bytep sig, int num)
{
return ((int)!png_sig_cmp(sig, (png_size_t)0, (png_size_t)num));
}
+#endif
+#endif /* PNG_READ_SUPPORTED */
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
/* Function to allocate memory for zlib and clear it to 0. */
#ifdef PNG_1_0_X
voidpf PNGAPI
@@ -143,13 +154,14 @@ voidpf /* private */
png_zalloc(voidpf png_ptr, uInt items, uInt size)
{
png_voidp ptr;
- png_structp p=png_ptr;
+ png_structp p=(png_structp)png_ptr;
png_uint_32 save_flags=p->flags;
png_uint_32 num_bytes;
+ if(png_ptr == NULL) return (NULL);
if (items > PNG_UINT_32_MAX/size)
{
- png_warning (png_ptr, "Potential overflow in png_zalloc()");
+ png_warning (p, "Potential overflow in png_zalloc()");
return (NULL);
}
num_bytes = (png_uint_32)items * size;
@@ -256,6 +268,7 @@ void PNGAPI
png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
{
png_infop info_ptr = NULL;
+ if(png_ptr == NULL) return;
png_debug(1, "in png_destroy_info_struct\n");
if (info_ptr_ptr != NULL)
@@ -279,6 +292,7 @@ png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
* and applications using it are urged to use png_create_info_struct()
* instead.
*/
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
#undef png_info_init
void PNGAPI
png_info_init(png_infop info_ptr)
@@ -286,12 +300,15 @@ png_info_init(png_infop info_ptr)
/* We only come here via pre-1.0.12-compiled applications */
png_info_init_3(&info_ptr, 0);
}
+#endif
void PNGAPI
png_info_init_3(png_infopp ptr_ptr, png_size_t png_info_struct_size)
{
png_infop info_ptr = *ptr_ptr;
+ if(info_ptr == NULL) return;
+
png_debug(1, "in png_info_init_3\n");
if(png_sizeof(png_info) > png_info_struct_size)
@@ -590,6 +607,7 @@ png_info_destroy(png_structp png_ptr, png_infop info_ptr)
png_info_init_3(&info_ptr, png_sizeof(png_info));
}
+#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
/* This function returns a pointer to the io_ptr associated with the user
* functions. The application should free any memory associated with this
@@ -598,9 +616,11 @@ png_info_destroy(png_structp png_ptr, png_infop info_ptr)
png_voidp PNGAPI
png_get_io_ptr(png_structp png_ptr)
{
+ if(png_ptr == NULL) return (NULL);
return (png_ptr->io_ptr);
}
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
#if !defined(PNG_NO_STDIO)
/* Initialize the default input/output functions for the PNG file. If you
* use your own read or write routines, you can call either png_set_read_fn()
@@ -612,6 +632,7 @@ void PNGAPI
png_init_io(png_structp png_ptr, png_FILE_p fp)
{
png_debug(1, "in png_init_io\n");
+ if(png_ptr == NULL) return;
png_ptr->io_ptr = (png_voidp)fp;
}
#endif
@@ -627,6 +648,7 @@ png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
{"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+ if(png_ptr == NULL) return (NULL);
if (png_ptr->time_buffer == NULL)
{
png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
@@ -673,13 +695,14 @@ png_sig_bytes(void)
return ((png_bytep)"\211\120\116\107\015\012\032\012");
}
#endif
+#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
png_charp PNGAPI
png_get_copyright(png_structp png_ptr)
{
if (&png_ptr != NULL) /* silence compiler warning about unused png_ptr */
- return ((png_charp) "\n libpng version 1.2.7 - September 12, 2004\n\
- Copyright (c) 1998-2005 Glenn Randers-Pehrson\n\
+ return ((png_charp) "\n libpng version 1.2.16 - January 31, 2007\n\
+ Copyright (c) 1998-2007 Glenn Randers-Pehrson\n\
Copyright (c) 1996-1997 Andreas Dilger\n\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
return ((png_charp) "");
@@ -720,6 +743,7 @@ png_get_header_version(png_structp png_ptr)
return ((png_charp) "");
}
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
int PNGAPI
png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
@@ -741,8 +765,10 @@ png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
int PNGAPI
png_reset_zstream(png_structp png_ptr)
{
+ if (png_ptr == NULL) return Z_STREAM_ERROR;
return (inflateReset(&png_ptr->zstream));
}
+#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
/* This function was added to libpng-1.0.7 */
png_uint_32 PNGAPI
@@ -753,13 +779,14 @@ png_access_version_number(void)
}
+#if defined(PNG_READ_SUPPORTED) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
#if !defined(PNG_1_0_X)
-#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
- /* GRR: could add this: && defined(PNG_MMX_CODE_SUPPORTED) */
+#if defined(PNG_MMX_CODE_SUPPORTED)
/* this INTERNAL function was added to libpng 1.2.0 */
void /* PRIVATE */
png_init_mmx_flags (png_structp png_ptr)
{
+ if(png_ptr == NULL) return;
png_ptr->mmx_rowbytes_threshold = 0;
png_ptr->mmx_bitdepth_threshold = 0;
@@ -792,7 +819,7 @@ png_init_mmx_flags (png_structp png_ptr)
| PNG_MMX_WRITE_FLAGS );
}
-# else /* !((PNGVCRD || PNGGCCRD) && PNG_ASSEMBLER_CODE_SUPPORTED)) */
+# else /* !(PNGVCRD || PNGGCCRD) */
/* clear all MMX flags; no support is compiled in */
png_ptr->asm_flags &= ~( PNG_MMX_FLAGS );
@@ -800,19 +827,21 @@ png_init_mmx_flags (png_structp png_ptr)
# endif /* ?(PNGVCRD || PNGGCCRD) */
}
-#endif /* !(PNG_ASSEMBLER_CODE_SUPPORTED) */
+#endif /* !(PNG_MMX_CODE_SUPPORTED) */
/* this function was added to libpng 1.2.0 */
#if !defined(PNG_USE_PNGGCCRD) && \
- !(defined(PNG_ASSEMBLER_CODE_SUPPORTED) && defined(PNG_USE_PNGVCRD))
+ !(defined(PNG_MMX_CODE_SUPPORTED) && defined(PNG_USE_PNGVCRD))
int PNGAPI
png_mmx_support(void)
{
return -1;
}
#endif
-#endif /* PNG_1_0_X */
+#endif /* PNG_1_0_X && PNG_ASSEMBLER_CODE_SUPPORTED */
+#endif /* PNG_READ_SUPPORTED */
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
#ifdef PNG_SIZE_T
/* Added at libpng version 1.2.6 */
PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size));
@@ -824,3 +853,4 @@ png_convert_size(size_t size)
return ((png_size_t)size);
}
#endif /* PNG_SIZE_T */
+#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
diff --git a/png/png.h b/png/png.h
index c5adadf..1567f9c 100644
--- a/png/png.h
+++ b/png/png.h
@@ -1,14 +1,15 @@
+
/* png.h - header file for PNG reference library
*
- * libpng version 1.2.7 - September 12, 2004
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * libpng version 1.2.16 - January 31, 2007
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- * libpng versions 0.97, January 1998, through 1.2.7 - September 12, 2004: Glenn
+ * libpng versions 0.97, January 1998, through 1.2.16 - January 31, 2007: Glenn
* See also "Contributing Authors", below.
*
* Note about libpng version numbers:
@@ -102,10 +103,46 @@
* 1.0.16 10 10016 10.so.0.1.0.16
* 1.2.6 13 10206 12.so.0.1.2.6
* 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2
- * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1
+ * 1.0.17rc1 10 10017 10.so.0.1.0.17rc1
* 1.2.7rc1 13 10207 12.so.0.1.2.7rc1
- * 1.0.17 10 10017 12.so.0.1.0.17
+ * 1.0.17 10 10017 10.so.0.1.0.17
* 1.2.7 13 10207 12.so.0.1.2.7
+ * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
+ * 1.0.18rc1-5 10 10018 10.so.0.1.0.18rc1-5
+ * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5
+ * 1.0.18 10 10018 10.so.0.1.0.18
+ * 1.2.8 13 10208 12.so.0.1.2.8
+ * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3
+ * 1.2.9beta4-11 13 10209 12.so.0.9[.0]
+ * 1.2.9rc1 13 10209 12.so.0.9[.0]
+ * 1.2.9 13 10209 12.so.0.9[.0]
+ * 1.2.10beta1-8 13 10210 12.so.0.10[.0]
+ * 1.2.10rc1-3 13 10210 12.so.0.10[.0]
+ * 1.2.10 13 10210 12.so.0.10[.0]
+ * 1.2.11beta1-4 13 10211 12.so.0.11[.0]
+ * 1.0.19rc1-5 10 10019 10.so.0.19[.0]
+ * 1.2.11rc1-5 13 10211 12.so.0.11[.0]
+ * 1.0.19 10 10019 10.so.0.19[.0]
+ * 1.2.11 13 10211 12.so.0.11[.0]
+ * 1.0.20 10 10020 10.so.0.20[.0]
+ * 1.2.12 13 10212 12.so.0.12[.0]
+ * 1.2.13beta1 13 10213 12.so.0.13[.0]
+ * 1.0.21 10 10021 10.so.0.21[.0]
+ * 1.2.13 13 10213 12.so.0.13[.0]
+ * 1.2.14beta1-2 13 10214 12.so.0.14[.0]
+ * 1.0.22rc1 10 10022 10.so.0.22[.0]
+ * 1.2.14rc1 13 10214 12.so.0.14[.0]
+ * 1.0.22 10 10022 10.so.0.22[.0]
+ * 1.2.14 13 10214 12.so.0.14[.0]
+ * 1.2.15beta1-6 13 10215 12.so.0.15[.0]
+ * 1.0.23rc1-5 10 10023 10.so.0.23[.0]
+ * 1.2.15rc1-5 13 10215 12.so.0.15[.0]
+ * 1.0.23 10 10023 10.so.0.23[.0]
+ * 1.2.15 13 10215 12.so.0.15[.0]
+ * 1.2.16beta1-2 13 10216 12.so.0.16[.0]
+ * 1.2.16rc1 13 10216 12.so.0.16[.0]
+ * 1.0.24 10 10024 10.so.0.24[.0]
+ * 1.2.16 13 10216 12.so.0.16[.0]
*
* Henceforth the source version will match the shared-library major
* and minor numbers; the shared-library major version number will be
@@ -135,8 +172,8 @@
* If you modify libpng you may insert additional notices immediately following
* this sentence.
*
- * libpng versions 1.2.6, August 15, 2004, through 1.2.7, September 12, 2004, are
- * Copyright (c) 2004 Glenn Randers-Pehrson, and are
+ * libpng versions 1.2.6, August 15, 2004, through 1.2.16, January 31, 2007, are
+ * Copyright (c) 2004, 2007 Glenn Randers-Pehrson, and are
* distributed according to the same disclaimer and license as libpng-1.2.5
* with the following individual added to the list of Contributing Authors:
*
@@ -247,13 +284,13 @@
* Y2K compliance in libpng:
* =========================
*
- * September 12, 2004
+ * January 31, 2007
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
- * upward through 1.2.7 are Y2K compliant. It is my belief that earlier
+ * upward through 1.2.16 are Y2K compliant. It is my belief that earlier
* versions were also Y2K compliant.
*
* Libpng only has three year fields. One is a 2-byte unsigned integer
@@ -309,45 +346,81 @@
*/
/* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.2.7"
+#define PNG_LIBPNG_VER_STRING "1.2.16"
#define PNG_HEADER_VERSION_STRING \
- " libpng version 1.2.7 - September 12, 2004 (header)\n"
+ " libpng version 1.2.16 - January 31, 2007 (header)\n"
#define PNG_LIBPNG_VER_SONUM 0
-#define PNG_LIBPNG_VER_DLLNUM %DLLNUM%
+#define PNG_LIBPNG_VER_DLLNUM 13
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
#define PNG_LIBPNG_VER_MAJOR 1
#define PNG_LIBPNG_VER_MINOR 2
-#define PNG_LIBPNG_VER_RELEASE 7
+#define PNG_LIBPNG_VER_RELEASE 16
/* This should match the numeric part of the final component of
* PNG_LIBPNG_VER_STRING, omitting any leading zero: */
#define PNG_LIBPNG_VER_BUILD 0
+/* Release Status */
#define PNG_LIBPNG_BUILD_ALPHA 1
#define PNG_LIBPNG_BUILD_BETA 2
#define PNG_LIBPNG_BUILD_RC 3
#define PNG_LIBPNG_BUILD_STABLE 4
-#define PNG_LIBPNG_BUILD_TYPEMASK 7
-#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with STABLE only */
-#define PNG_LIBPNG_BUILD_TYPE 4
+#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7
+
+/* Release-Specific Flags */
+#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with
+ PNG_LIBPNG_BUILD_STABLE only */
+#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with
+ PNG_LIBPNG_BUILD_SPECIAL */
+#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
+ PNG_LIBPNG_BUILD_PRIVATE */
+
+#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
* We must not include leading zeros.
* Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
* version 1.0.0 was mis-numbered 100 instead of 10000). From
* version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release */
-#define PNG_LIBPNG_VER 10207 /* 1.2.7 */
+#define PNG_LIBPNG_VER 10216 /* 1.2.16 */
#ifndef PNG_VERSION_INFO_ONLY
-
/* include the compression library's header */
#include "zlib.h"
+#endif
/* include all user configurable info, including optional assembler routines */
#include "pngconf.h"
+/*
+ * Added at libpng-1.2.8 */
+/* Ref MSDN: Private as priority over Special
+ * VS_FF_PRIVATEBUILD File *was not* built using standard release
+ * procedures. If this value is given, the StringFileInfo block must
+ * contain a PrivateBuild string.
+ *
+ * VS_FF_SPECIALBUILD File *was* built by the original company using
+ * standard release procedures but is a variation of the standard
+ * file of the same version number. If this value is given, the
+ * StringFileInfo block must contain a SpecialBuild string.
+ */
+
+#if defined(PNG_USER_PRIVATEBUILD)
+# define PNG_LIBPNG_BUILD_TYPE \
+ (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE)
+#else
+# if defined(PNG_LIBPNG_SPECIALBUILD)
+# define PNG_LIBPNG_BUILD_TYPE \
+ (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL)
+# else
+# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE)
+# endif
+#endif
+
+#ifndef PNG_VERSION_INFO_ONLY
+
/* Inhibit C++ name-mangling for libpng functions but not for system calls. */
#ifdef __cplusplus
extern "C" {
@@ -414,7 +487,7 @@ PNG_EXPORT_VAR (const int FARDATA) png_pass_ystart[7];
PNG_EXPORT_VAR (const int FARDATA) png_pass_yinc[7];
PNG_EXPORT_VAR (const int FARDATA) png_pass_mask[7];
PNG_EXPORT_VAR (const int FARDATA) png_pass_dsp_mask[7];
-#ifdef PNG_HAVE_ASSEMBLER_COMBINE_ROW
+#ifdef PNG_USE_PNGGCCRD
PNG_EXPORT_VAR (const int FARDATA) png_pass_width[7];
#endif
/* This isn't currently used. If you need it, see png.c for more details.
@@ -851,10 +924,12 @@ typedef png_info FAR * FAR * png_infopp;
/* Maximum positive integer used in PNG is (2^31)-1 */
#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)
-#define PNG_UINT_32_MAX (~((png_uint_32)0))
-#define PNG_SIZE_MAX (~((png_size_t)0))
+#define PNG_UINT_32_MAX ((png_uint_32)(-1))
+#define PNG_SIZE_MAX ((png_size_t)(-1))
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
/* PNG_MAX_UINT is deprecated; use PNG_UINT_31_MAX instead. */
#define PNG_MAX_UINT PNG_UINT_31_MAX
+#endif
/* These describe the color_type field in png_info. */
/* color type masks */
@@ -1276,10 +1351,14 @@ struct png_struct_def
#endif
/* New members added in libpng-1.2.0 */
-#if !defined(PNG_1_0_X) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
+#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
+# if !defined(PNG_1_0_X)
+# if defined(PNG_MMX_CODE_SUPPORTED)
png_byte mmx_bitdepth_threshold;
png_uint_32 mmx_rowbytes_threshold;
+# endif
png_uint_32 asm_flags;
+# endif
#endif
/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
@@ -1315,7 +1394,7 @@ struct png_struct_def
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
-typedef png_structp version_1_2_7;
+typedef png_structp version_1_2_16;
typedef png_struct FAR * FAR * png_structpp;
@@ -1401,11 +1480,14 @@ extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(png_infop,png_create_info_struct)
PNGARG((png_structp png_ptr));
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
/* Initialize the info structure (old interface - DEPRECATED) */
extern PNG_EXPORT(void,png_info_init) PNGARG((png_infop info_ptr));
#undef png_info_init
#define png_info_init(info_ptr) png_info_init_3(&info_ptr,\
png_sizeof(png_info));
+#endif
+
extern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr,
png_size_t png_info_struct_size));
@@ -1442,9 +1524,16 @@ extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime,
#if defined(PNG_READ_EXPAND_SUPPORTED)
/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */
extern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr));
-extern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp png_ptr));
+#if !defined(PNG_1_0_X)
+extern PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp
+ png_ptr));
+#endif
extern PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr));
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+/* Deprecated */
+extern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp png_ptr));
+#endif
#endif
#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
@@ -1565,6 +1654,7 @@ extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr,
#endif
#endif
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
/* Permit or disallow empty PLTE (0: not permitted, 1: permitted) */
@@ -1572,6 +1662,7 @@ extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr,
extern PNG_EXPORT(void,png_permit_empty_plte) PNGARG((png_structp png_ptr,
int empty_plte_permitted));
#endif
+#endif
#if defined(PNG_WRITE_FLUSH_SUPPORTED)
/* Set how many lines between output flushes - 0 for no flushing */
@@ -2286,11 +2377,12 @@ extern PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr,
#ifdef PNG_FLOATING_POINT_SUPPORTED
extern PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr,
png_infop info_ptr, int unit, double width, double height));
-#endif
+#else
#ifdef PNG_FIXED_POINT_SUPPORTED
extern PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr,
png_infop info_ptr, int unit, png_charp swidth, png_charp sheight));
#endif
+#endif
#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
@@ -2386,7 +2478,9 @@ extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr,
#define png_debug2(l, m, p1, p2)
#endif
+#if 0
extern PNG_EXPORT(png_bytep,png_sig_bytes) PNGARG((void));
+#endif
extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr));
@@ -2406,6 +2500,7 @@ extern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp
/* Added to version 1.2.0 */
#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
+#if defined(PNG_MMX_CODE_SUPPORTED)
#define PNG_ASM_FLAG_MMX_SUPPORT_COMPILED 0x01 /* not user-settable */
#define PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU 0x02 /* not user-settable */
#define PNG_ASM_FLAG_MMX_READ_COMBINE_ROW 0x04
@@ -2431,6 +2526,7 @@ extern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp
#define PNG_SELECT_READ 1
#define PNG_SELECT_WRITE 2
+#endif /* PNG_MMX_CODE_SUPPORTED */
#if !defined(PNG_1_0_X)
/* pngget.c */
@@ -2463,11 +2559,11 @@ extern PNG_EXPORT(void,png_set_mmx_thresholds)
png_uint_32 mmx_rowbytes_threshold));
#endif /* PNG_1_0_X */
-#endif /* PNG_ASSEMBLER_CODE_SUPPORTED */
#if !defined(PNG_1_0_X)
/* png.c, pnggccrd.c, or pngvcrd.c */
extern PNG_EXPORT(int,png_mmx_support) PNGARG((void));
+#endif /* PNG_ASSEMBLER_CODE_SUPPORTED */
/* Strip the prepended error numbers ("#nnn ") from error and warning
* messages before passing them to the error or warning handler. */
@@ -2531,6 +2627,44 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */
+/* Inline macros to do direct reads of bytes from the input buffer. These
+ * require that you are using an architecture that uses PNG byte ordering
+ * (MSB first) and supports unaligned data storage. I think that PowerPC
+ * in big-endian mode and 680x0 are the only ones that will support this.
+ * The x86 line of processors definitely do not. The png_get_int_32()
+ * routine also assumes we are using two's complement format for negative
+ * values, which is almost certainly true.
+ */
+#if defined(PNG_READ_BIG_ENDIAN_SUPPORTED)
+# define png_get_uint_32(buf) ( *((png_uint_32p) (buf)))
+# define png_get_uint_16(buf) ( *((png_uint_16p) (buf)))
+# define png_get_int_32(buf) ( *((png_int_32p) (buf)))
+#else
+extern PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf));
+extern PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf));
+extern PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf));
+#endif /* !PNG_READ_BIG_ENDIAN_SUPPORTED */
+extern PNG_EXPORT(png_uint_32,png_get_uint_31)
+ PNGARG((png_structp png_ptr, png_bytep buf));
+/* No png_get_int_16 -- may be added if there's a real need for it. */
+
+/* Place a 32-bit number into a buffer in PNG byte order (big-endian).
+ */
+extern PNG_EXPORT(void,png_save_uint_32)
+ PNGARG((png_bytep buf, png_uint_32 i));
+extern PNG_EXPORT(void,png_save_int_32)
+ PNGARG((png_bytep buf, png_int_32 i));
+
+/* Place a 16-bit number into a buffer in PNG byte order.
+ * The parameter is declared unsigned int, not png_uint_16,
+ * just to avoid potential problems on pre-ANSI C compilers.
+ */
+extern PNG_EXPORT(void,png_save_uint_16)
+ PNGARG((png_bytep buf, unsigned int i));
+/* No png_save_int_16 -- may be added if there's a real need for it. */
+
+/* ************************************************************************* */
+
/* These next functions are used internally in the code. They generally
* shouldn't be used unless you are writing code to add or replace some
* functionality in libpng. More information about most functions can
@@ -2545,7 +2679,7 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
#define PNG_HAVE_IHDR 0x01
#define PNG_HAVE_PLTE 0x02
#define PNG_HAVE_IDAT 0x04
-#define PNG_AFTER_IDAT 0x08
+#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */
#define PNG_HAVE_IEND 0x10
#define PNG_HAVE_gAMA 0x20
#define PNG_HAVE_cHRM 0x40
@@ -2555,6 +2689,7 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
#define PNG_WROTE_INFO_BEFORE_PLTE 0x400
#define PNG_BACKGROUND_IS_GRAY 0x800
#define PNG_HAVE_PNG_SIGNATURE 0x1000
+#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */
/* flags for the transformations the PNG library does on the image data */
#define PNG_BGR 0x0001
@@ -2581,7 +2716,14 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
#define PNG_RGB_TO_GRAY_ERR 0x200000L
#define PNG_RGB_TO_GRAY_WARN 0x400000L
#define PNG_RGB_TO_GRAY 0x600000L /* two bits, RGB_TO_GRAY_ERR|WARN */
+ /* 0x800000L Unused */
#define PNG_ADD_ALPHA 0x1000000L /* Added to libpng-1.2.7 */
+#define PNG_EXPAND_tRNS 0x2000000L /* Added to libpng-1.2.9 */
+ /* 0x4000000L unused */
+ /* 0x8000000L unused */
+ /* 0x10000000L unused */
+ /* 0x20000000L unused */
+ /* 0x40000000L unused */
/* flags for png_create_struct */
#define PNG_STRUCT_PNG 0x0001
@@ -2615,6 +2757,16 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L
#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L
#define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L
+#define PNG_FLAG_ADD_ALPHA 0x200000L /* Added to libpng-1.2.8 */
+#define PNG_FLAG_STRIP_ALPHA 0x400000L /* Added to libpng-1.2.8 */
+ /* 0x800000L unused */
+ /* 0x1000000L unused */
+ /* 0x2000000L unused */
+ /* 0x4000000L unused */
+ /* 0x8000000L unused */
+ /* 0x10000000L unused */
+ /* 0x20000000L unused */
+ /* 0x40000000L unused */
#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
PNG_FLAG_CRC_ANCILLARY_NOWARN)
@@ -2650,8 +2802,10 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
#ifdef PNG_USE_GLOBAL_ARRAYS
PNG_EXPORT_VAR (const png_byte FARDATA) png_sig[8];
#else
+#if 0
#define png_sig png_sig_bytes(NULL)
#endif
+#endif
#endif /* PNG_NO_EXTERN */
/* Constant strings for known chunk types. If you need to add a chunk,
@@ -2704,31 +2858,7 @@ PNG_EXPORT_VAR (const png_byte FARDATA) png_tRNS[5];
PNG_EXPORT_VAR (const png_byte FARDATA) png_zTXt[5];
#endif /* PNG_USE_GLOBAL_ARRAYS */
-
-/* Inline macros to do direct reads of bytes from the input buffer. These
- * require that you are using an architecture that uses PNG byte ordering
- * (MSB first) and supports unaligned data storage. I think that PowerPC
- * in big-endian mode and 680x0 are the only ones that will support this.
- * The x86 line of processors definitely do not. The png_get_int_32()
- * routine also assumes we are using two's complement format for negative
- * values, which is almost certainly true.
- */
-#if defined(PNG_READ_BIG_ENDIAN_SUPPORTED)
-# if defined(PNG_pCAL_SUPPORTED) || defined(PNG_oFFs_SUPPORTED)
-# define png_get_int_32(buf) ( *((png_int_32p) (buf)))
-# endif
-# define png_get_uint_32(buf) ( *((png_uint_32p) (buf)))
-# define png_get_uint_16(buf) ( *((png_uint_16p) (buf)))
-#else
-# if defined(PNG_pCAL_SUPPORTED) || defined(PNG_oFFs_SUPPORTED)
-PNG_EXTERN png_int_32 png_get_int_32 PNGARG((png_bytep buf));
-# endif
-PNG_EXTERN png_uint_32 png_get_uint_32 PNGARG((png_bytep buf));
-PNG_EXTERN png_uint_16 png_get_uint_16 PNGARG((png_bytep buf));
-#endif /* !PNG_READ_BIG_ENDIAN_SUPPORTED */
-PNG_EXTERN png_uint_32 png_get_uint_31 PNGARG((png_structp png_ptr,
- png_bytep buf));
-
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
/* Initialize png_ptr struct for reading, and allocate any other memory.
* (old interface - DEPRECATED - use png_create_read_struct instead).
*/
@@ -2736,12 +2866,17 @@ extern PNG_EXPORT(void,png_read_init) PNGARG((png_structp png_ptr));
#undef png_read_init
#define png_read_init(png_ptr) png_read_init_3(&png_ptr, \
PNG_LIBPNG_VER_STRING, png_sizeof(png_struct));
+#endif
+
extern PNG_EXPORT(void,png_read_init_3) PNGARG((png_structpp ptr_ptr,
png_const_charp user_png_ver, png_size_t png_struct_size));
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
extern PNG_EXPORT(void,png_read_init_2) PNGARG((png_structp png_ptr,
png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
png_info_size));
+#endif
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
/* Initialize png_ptr struct for writing, and allocate any other memory.
* (old interface - DEPRECATED - use png_create_write_struct instead).
*/
@@ -2749,6 +2884,8 @@ extern PNG_EXPORT(void,png_write_init) PNGARG((png_structp png_ptr));
#undef png_write_init
#define png_write_init(png_ptr) png_write_init_3(&png_ptr, \
PNG_LIBPNG_VER_STRING, png_sizeof(png_struct));
+#endif
+
extern PNG_EXPORT(void,png_write_init_3) PNGARG((png_structpp ptr_ptr,
png_const_charp user_png_ver, png_size_t png_struct_size));
extern PNG_EXPORT(void,png_write_init_2) PNGARG((png_structp png_ptr,
@@ -2848,23 +2985,6 @@ PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr,
PNG_EXTERN void png_flush PNGARG((png_structp png_ptr));
#endif
-
-/* Place a 32-bit number into a buffer in PNG byte order (big-endian).
- * The only currently known PNG chunks that use signed numbers are
- * the ancillary extension chunks, oFFs and pCAL.
- */
-PNG_EXTERN void png_save_uint_32 PNGARG((png_bytep buf, png_uint_32 i));
-
-#if defined(PNG_WRITE_pCAL_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED)
-PNG_EXTERN void png_save_int_32 PNGARG((png_bytep buf, png_int_32 i));
-#endif
-
-/* Place a 16-bit number into a buffer in PNG byte order.
- * The parameter is declared unsigned int, not png_uint_16,
- * just to avoid potential problems on pre-ANSI C compilers.
- */
-PNG_EXTERN void png_save_uint_16 PNGARG((png_bytep buf, unsigned int i));
-
/* simple function to write the signature */
PNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr));
@@ -3345,9 +3465,34 @@ PNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info,
#endif
#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
+#if defined(PNG_MMX_CODE_SUPPORTED)
/* png.c */ /* PRIVATE */
PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr));
#endif
+#endif
+
+#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
+PNG_EXTERN png_uint_32 png_get_pixels_per_inch PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+PNG_EXTERN png_uint_32 png_get_x_pixels_per_inch PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+PNG_EXTERN png_uint_32 png_get_y_pixels_per_inch PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+PNG_EXTERN float png_get_x_offset_inches PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+PNG_EXTERN float png_get_y_offset_inches PNGARG((png_structp png_ptr,
+png_infop info_ptr));
+
+#if defined(PNG_pHYs_SUPPORTED)
+PNG_EXTERN png_uint_32 png_get_pHYs_dpi PNGARG((png_structp png_ptr,
+png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
+#endif /* PNG_pHYs_SUPPORTED */
+#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */
+
/* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */
#endif /* PNG_INTERNAL */
diff --git a/png/pngconf.h b/png/pngconf.h
index 1267e9c..b914c21 100644
--- a/png/pngconf.h
+++ b/png/pngconf.h
@@ -1,9 +1,9 @@
/* pngconf.h - machine configurable file for libpng
*
- * libpng version 1.2.7 - September 12, 2004
+ * libpng version 1.2.16 - January 31, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -17,10 +17,64 @@
#ifndef PNGCONF_H
#define PNGCONF_H
+#define PNG_1_2_X
+
+/*
+ * PNG_USER_CONFIG has to be defined on the compiler command line. This
+ * includes the resource compiler for Windows DLL configurations.
+ */
#ifdef PNG_USER_CONFIG
+# ifndef PNG_USER_PRIVATEBUILD
+# define PNG_USER_PRIVATEBUILD
+# endif
#include "pngusr.h"
#endif
+/* PNG_CONFIGURE_LIBPNG is set by the "configure" script. */
+#ifdef PNG_CONFIGURE_LIBPNG
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#endif
+
+/*
+ * Added at libpng-1.2.8
+ *
+ * If you create a private DLL you need to define in "pngusr.h" the followings:
+ * #define PNG_USER_PRIVATEBUILD <Describes by whom and why this version of
+ * the DLL was built>
+ * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons."
+ * #define PNG_USER_DLLFNAME_POSTFIX <two-letter postfix that serve to
+ * distinguish your DLL from those of the official release. These
+ * correspond to the trailing letters that come after the version
+ * number and must match your private DLL name>
+ * e.g. // private DLL "libpng13gx.dll"
+ * #define PNG_USER_DLLFNAME_POSTFIX "gx"
+ *
+ * The following macros are also at your disposal if you want to complete the
+ * DLL VERSIONINFO structure.
+ * - PNG_USER_VERSIONINFO_COMMENTS
+ * - PNG_USER_VERSIONINFO_COMPANYNAME
+ * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS
+ */
+
+#ifdef __STDC__
+#ifdef SPECIALBUILD
+# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\
+ are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.")
+#endif
+
+#ifdef PRIVATEBUILD
+# pragma message("PRIVATEBUILD is deprecated.\
+ Use PNG_USER_PRIVATEBUILD instead.")
+# define PNG_USER_PRIVATEBUILD PRIVATEBUILD
+#endif
+#endif /* __STDC__ */
+
+#ifndef PNG_VERSION_INFO_ONLY
+
+/* End of material added to libpng-1.2.8 */
+
/* This is the size of the compression buffer, and thus the size of
* an IDAT chunk. Make this whatever size you feel is best for your
* machine. One of these will be allocated per png_struct. When this
@@ -409,21 +463,33 @@
*/
/* The size of the png_text structure changed in libpng-1.0.6 when
- * iTXt is supported. It is turned off by default, to support old apps
- * that malloc the png_text structure instead of calling png_set_text()
- * and letting libpng malloc it. It will be turned on by default in
- * libpng-1.3.0.
+ * iTXt support was added. iTXt support was turned off by default through
+ * libpng-1.2.x, to support old apps that malloc the png_text structure
+ * instead of calling png_set_text() and letting libpng malloc it. It
+ * was turned on by default in libpng-1.3.0.
*/
-#ifndef PNG_iTXt_SUPPORTED
-# if !defined(PNG_READ_iTXt_SUPPORTED) && !defined(PNG_NO_READ_iTXt)
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
+# ifndef PNG_NO_iTXt_SUPPORTED
+# define PNG_NO_iTXt_SUPPORTED
+# endif
+# ifndef PNG_NO_READ_iTXt
# define PNG_NO_READ_iTXt
# endif
-# if !defined(PNG_WRITE_iTXt_SUPPORTED) && !defined(PNG_NO_WRITE_iTXt)
+# ifndef PNG_NO_WRITE_iTXt
# define PNG_NO_WRITE_iTXt
# endif
#endif
+#if !defined(PNG_NO_iTXt_SUPPORTED)
+# if !defined(PNG_READ_iTXt_SUPPORTED) && !defined(PNG_NO_READ_iTXt)
+# define PNG_READ_iTXt
+# endif
+# if !defined(PNG_WRITE_iTXt_SUPPORTED) && !defined(PNG_NO_WRITE_iTXt)
+# define PNG_WRITE_iTXt
+# endif
+#endif
+
/* The following support, added after version 1.0.0, can be turned off here en
* masse by defining PNG_LEGACY_SUPPORTED in case you need binary compatibility
* with old applications that require the length of png_struct and png_info
@@ -541,11 +607,13 @@
# endif
#endif
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
/* Deprecated, will be removed from version 2.0.0.
Use PNG_MNG_FEATURES_SUPPORTED instead. */
#ifndef PNG_NO_READ_EMPTY_PLTE
# define PNG_READ_EMPTY_PLTE_SUPPORTED
#endif
+#endif
#endif /* PNG_READ_SUPPORTED */
@@ -589,11 +657,15 @@
# endif
#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */
+#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \
+ !defined(PNG_WRITE_INTERLACING_SUPPORTED)
#define PNG_WRITE_INTERLACING_SUPPORTED /* not required for PNG-compliant
encoders, but can cause trouble
if left undefined */
+#endif
#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \
+ !defined(PNG_WRITE_WEIGHTED_FILTER) && \
defined(PNG_FLOATING_POINT_SUPPORTED)
# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
#endif
@@ -602,10 +674,12 @@
# define PNG_WRITE_FLUSH_SUPPORTED
#endif
+#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
/* Deprecated, see PNG_MNG_FEATURES_SUPPORTED, above */
#ifndef PNG_NO_WRITE_EMPTY_PLTE
# define PNG_WRITE_EMPTY_PLTE_SUPPORTED
#endif
+#endif
#endif /* PNG_WRITE_SUPPORTED */
@@ -647,15 +721,33 @@
#endif
/* PNG_ASSEMBLER_CODE was enabled by default in version 1.2.0
- even when PNG_USE_PNGVCRD or PNG_USE_PNGGCCRD is not defined */
+ * even when PNG_USE_PNGVCRD or PNG_USE_PNGGCCRD is not defined.
+ *
+ * PNG_NO_ASSEMBLER_CODE disables use of all assembler code and optimized C,
+ * and removes or includes several functions in the API.
+ *
+ * PNG_NO_MMX_CODE disables the use of MMX code without changing the API.
+ * When MMX code is off, then optimized C replacement functions are used.
+ */
+#if 0 /* DISABLE AT ALL TIMES */
#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_ASSEMBLER_CODE)
# ifndef PNG_ASSEMBLER_CODE_SUPPORTED
# define PNG_ASSEMBLER_CODE_SUPPORTED
# endif
-# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
+# if defined(XP_MACOSX) && !defined(PNG_NO_MMX_CODE)
+ /* work around Intel-Mac compiler bug */
+# define PNG_NO_MMX_CODE
+# endif
+# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) && \
+ defined(__MMX__)
# define PNG_MMX_CODE_SUPPORTED
# endif
+# if !defined(PNG_USE_PNGGCCRD) && !defined(PNG_NO_MMX_CODE) && \
+ !defined(PNG_USE_PNGVCRD) && defined(__MMX__)
+# define PNG_USE_PNGGCCRD
+# endif
#endif
+#endif /* 0 */
/* If you are sure that you don't need thread safety and you are compiling
with PNG_USE_PNGCCRD for an MMX application, you can define this for
@@ -1121,6 +1213,9 @@ typedef double FAR * FAR * png_doublepp;
/* Pointers to pointers to pointers; i.e., pointer to array */
typedef char FAR * FAR * FAR * png_charppp;
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+/* SPC - Is this stuff deprecated? */
+/* It'll be removed as of libpng-1.3.0 - GR-P */
/* libpng typedefs for types in zlib. If zlib changes
* or another compression library is used, then change these.
* Eliminates need to change all the source files.
@@ -1128,6 +1223,7 @@ typedef char FAR * FAR * FAR * png_charppp;
typedef charf * png_zcharp;
typedef charf * FAR * png_zcharpp;
typedef z_stream FAR * png_zstreamp;
+#endif /* (PNG_1_0_X) || defined(PNG_1_2_X) */
/*
* Define PNG_BUILD_DLL if the module being built is a Windows
@@ -1274,6 +1370,17 @@ typedef z_stream FAR * png_zstreamp;
# define PNG_IMPEXP
#endif
+#ifdef PNG_BUILDSYMS
+# ifndef PNG_EXPORT
+# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END
+# endif
+# ifdef PNG_USE_GLOBAL_ARRAYS
+# ifndef PNG_EXPORT_VAR
+# define PNG_EXPORT_VAR(type) PNG_DATA_EXPORT
+# endif
+# endif
+#endif
+
#ifndef PNG_EXPORT
# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol
#endif
@@ -1372,5 +1479,7 @@ typedef z_stream FAR * png_zstreamp;
#endif /* PNG_INTERNAL */
#endif /* PNG_READ_SUPPORTED */
-#endif /* PNGCONF_H */
+/* Added at libpng-1.2.8 */
+#endif /* PNG_VERSION_INFO_ONLY */
+#endif /* PNGCONF_H */
diff --git a/png/pngerror.c b/png/pngerror.c
index c251571..c8c58b9 100644
--- a/png/pngerror.c
+++ b/png/pngerror.c
@@ -1,9 +1,9 @@
/* pngerror.c - stub functions for i/o and memory allocation
*
- * libpng version 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.13 November 13, 2006
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2006 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -16,6 +16,7 @@
#define PNG_INTERNAL
#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
static void /* PRIVATE */
png_default_error PNGARG((png_structp png_ptr,
png_const_charp error_message));
@@ -33,33 +34,37 @@ png_error(png_structp png_ptr, png_const_charp error_message)
{
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
char msg[16];
- if (png_ptr->flags&(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
+ if (png_ptr != NULL)
{
- if (*error_message == '#')
+ if (png_ptr->flags&
+ (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
{
- int offset;
- for (offset=1; offset<15; offset++)
- if (*(error_message+offset) == ' ')
- break;
- if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
- {
- int i;
- for (i=0; i<offset-1; i++)
- msg[i]=error_message[i+1];
- msg[i]='\0';
- error_message=msg;
- }
- else
- error_message+=offset;
- }
- else
- {
- if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
- {
- msg[0]='0';
- msg[1]='\0';
- error_message=msg;
- }
+ if (*error_message == '#')
+ {
+ int offset;
+ for (offset=1; offset<15; offset++)
+ if (*(error_message+offset) == ' ')
+ break;
+ if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
+ {
+ int i;
+ for (i=0; i<offset-1; i++)
+ msg[i]=error_message[i+1];
+ msg[i]='\0';
+ error_message=msg;
+ }
+ else
+ error_message+=offset;
+ }
+ else
+ {
+ if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
+ {
+ msg[0]='0';
+ msg[1]='\0';
+ error_message=msg;
+ }
+ }
}
}
#endif
@@ -80,19 +85,23 @@ void PNGAPI
png_warning(png_structp png_ptr, png_const_charp warning_message)
{
int offset = 0;
+ if (png_ptr != NULL)
+ {
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- if (png_ptr->flags&(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
+ if (png_ptr->flags&
+ (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
#endif
- {
- if (*warning_message == '#')
{
- for (offset=1; offset<15; offset++)
- if (*(warning_message+offset) == ' ')
- break;
+ if (*warning_message == '#')
+ {
+ for (offset=1; offset<15; offset++)
+ if (*(warning_message+offset) == ' ')
+ break;
+ }
}
+ if (png_ptr != NULL && png_ptr->warning_fn != NULL)
+ (*(png_ptr->warning_fn))(png_ptr, warning_message+offset);
}
- if (png_ptr != NULL && png_ptr->warning_fn != NULL)
- (*(png_ptr->warning_fn))(png_ptr, warning_message+offset);
else
png_default_warning(png_ptr, warning_message+offset);
}
@@ -146,16 +155,26 @@ void PNGAPI
png_chunk_error(png_structp png_ptr, png_const_charp error_message)
{
char msg[18+64];
- png_format_buffer(png_ptr, msg, error_message);
- png_error(png_ptr, msg);
+ if (png_ptr == NULL)
+ png_error(png_ptr, error_message);
+ else
+ {
+ png_format_buffer(png_ptr, msg, error_message);
+ png_error(png_ptr, msg);
+ }
}
void PNGAPI
png_chunk_warning(png_structp png_ptr, png_const_charp warning_message)
{
char msg[18+64];
- png_format_buffer(png_ptr, msg, warning_message);
- png_warning(png_ptr, msg);
+ if (png_ptr == NULL)
+ png_warning(png_ptr, warning_message);
+ else
+ {
+ png_format_buffer(png_ptr, msg, warning_message);
+ png_warning(png_ptr, msg);
+ }
}
/* This is the default error handling function. Note that replacements for
@@ -193,6 +212,8 @@ png_default_error(png_structp png_ptr, png_const_charp error_message)
#endif
#ifdef PNG_SETJMP_SUPPORTED
+ if (png_ptr)
+ {
# ifdef USE_FAR_KEYWORD
{
jmp_buf jmpbuf;
@@ -201,10 +222,9 @@ png_default_error(png_structp png_ptr, png_const_charp error_message)
}
# else
longjmp(png_ptr->jmpbuf, 1);
-# endif
+# endif
+ }
#else
- /* make compiler happy */ ;
- if (png_ptr)
PNG_ABORT();
#endif
#ifdef PNG_NO_CONSOLE_IO
@@ -265,6 +285,8 @@ void PNGAPI
png_set_error_fn(png_structp png_ptr, png_voidp error_ptr,
png_error_ptr error_fn, png_error_ptr warning_fn)
{
+ if (png_ptr == NULL)
+ return;
png_ptr->error_ptr = error_ptr;
png_ptr->error_fn = error_fn;
png_ptr->warning_fn = warning_fn;
@@ -278,6 +300,8 @@ png_set_error_fn(png_structp png_ptr, png_voidp error_ptr,
png_voidp PNGAPI
png_get_error_ptr(png_structp png_ptr)
{
+ if (png_ptr == NULL)
+ return NULL;
return ((png_voidp)png_ptr->error_ptr);
}
@@ -293,3 +317,4 @@ png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode)
}
}
#endif
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/png/pngget.c b/png/pngget.c
index eefd331..036e9af 100644
--- a/png/pngget.c
+++ b/png/pngget.c
@@ -1,9 +1,9 @@
/* pngget.c - retrieval of values from info struct
*
- * libpng 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -11,6 +11,8 @@
#define PNG_INTERNAL
#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+
png_uint_32 PNGAPI
png_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag)
{
@@ -557,9 +559,9 @@ png_get_IHDR(png_structp png_ptr, png_infop info_ptr,
*interlace_type = info_ptr->interlace_type;
/* check for potential overflow of rowbytes */
- if (width == 0 || *width > PNG_UINT_31_MAX)
+ if (*width == 0 || *width > PNG_UINT_31_MAX)
png_error(png_ptr, "Invalid image width");
- if (height == 0 || *height > PNG_UINT_31_MAX)
+ if (*height == 0 || *height > PNG_UINT_31_MAX)
png_error(png_ptr, "Invalid image height");
if (info_ptr->width > (PNG_UINT_32_MAX
>> 3) /* 8-byte RGBA pixels */
@@ -827,19 +829,24 @@ png_get_compression_buffer_size(png_structp png_ptr)
}
#endif
-#ifndef PNG_1_0_X
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+#ifndef PNG_1_0_X
/* this function was added to libpng 1.2.0 and should exist by default */
png_uint_32 PNGAPI
png_get_asm_flags (png_structp png_ptr)
{
+#ifdef PNG_MMX_CODE_SUPPORTED
return (png_uint_32)(png_ptr? png_ptr->asm_flags : 0L);
+#else
+ return (png_ptr? 0L: 0L);
+#endif
}
/* this function was added to libpng 1.2.0 and should exist by default */
png_uint_32 PNGAPI
png_get_asm_flagmask (int flag_select)
{
+#ifdef PNG_MMX_CODE_SUPPORTED
png_uint_32 settable_asm_flags = 0;
if (flag_select & PNG_SELECT_READ)
@@ -860,16 +867,18 @@ png_get_asm_flagmask (int flag_select)
#endif /* 0 */
return settable_asm_flags; /* _theoretically_ settable capabilities only */
+#else
+ return (0L);
+#endif /* PNG_MMX_CODE_SUPPORTED */
}
-#endif /* PNG_ASSEMBLER_CODE_SUPPORTED */
-#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
/* GRR: could add this: && defined(PNG_MMX_CODE_SUPPORTED) */
/* this function was added to libpng 1.2.0 */
png_uint_32 PNGAPI
png_get_mmx_flagmask (int flag_select, int *compilerID)
{
+#if defined(PNG_MMX_CODE_SUPPORTED)
png_uint_32 settable_mmx_flags = 0;
if (flag_select & PNG_SELECT_READ)
@@ -900,21 +909,33 @@ png_get_mmx_flagmask (int flag_select, int *compilerID)
}
return settable_mmx_flags; /* _theoretically_ settable capabilities only */
+#else
+ return (0L);
+#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
/* this function was added to libpng 1.2.0 */
png_byte PNGAPI
png_get_mmx_bitdepth_threshold (png_structp png_ptr)
{
+#if defined(PNG_MMX_CODE_SUPPORTED)
return (png_byte)(png_ptr? png_ptr->mmx_bitdepth_threshold : 0);
+#else
+ return (png_ptr? 0: 0);
+#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
/* this function was added to libpng 1.2.0 */
png_uint_32 PNGAPI
png_get_mmx_rowbytes_threshold (png_structp png_ptr)
{
+#if defined(PNG_MMX_CODE_SUPPORTED)
return (png_uint_32)(png_ptr? png_ptr->mmx_rowbytes_threshold : 0L);
+#else
+ return (png_ptr? 0L: 0L);
+#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
+#endif /* ?PNG_1_0_X */
#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
@@ -931,4 +952,4 @@ png_get_user_height_max (png_structp png_ptr)
}
#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
-#endif /* ?PNG_1_0_X */
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/png/pngmem.c b/png/pngmem.c
index 7d0c2b9..248060f 100644
--- a/png/pngmem.c
+++ b/png/pngmem.c
@@ -1,9 +1,9 @@
/* pngmem.c - stub functions for memory allocation
*
- * libpng version 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.13 November 13, 2006
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2006 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -17,6 +17,8 @@
#define PNG_INTERNAL
#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+
/* Borland DOS special memory handler */
#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
/* if you change this, be sure to change the one in png.h also */
@@ -135,6 +137,9 @@ png_malloc_default(png_structp png_ptr, png_uint_32 size)
png_voidp ret;
#endif /* PNG_USER_MEM_SUPPORTED */
+ if (png_ptr == NULL || size == 0)
+ return (NULL);
+
#ifdef PNG_MAX_MALLOC_64K
if (size > (png_uint_32)65536L)
{
@@ -288,6 +293,8 @@ png_free_default(png_structp png_ptr, png_voidp ptr)
{
#endif /* PNG_USER_MEM_SUPPORTED */
+ if(png_ptr == NULL) return;
+
if (png_ptr->offset_table != NULL)
{
int i;
@@ -534,8 +541,10 @@ png_voidp PNGAPI
png_malloc_warn(png_structp png_ptr, png_uint_32 size)
{
png_voidp ptr;
- png_uint_32 save_flags=png_ptr->flags;
+ png_uint_32 save_flags;
+ if(png_ptr == NULL) return (NULL);
+ save_flags=png_ptr->flags;
png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
ptr = (png_voidp)png_malloc((png_structp)png_ptr, size);
png_ptr->flags=save_flags;
@@ -578,9 +587,11 @@ void PNGAPI
png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
malloc_fn, png_free_ptr free_fn)
{
+ if(png_ptr != NULL) {
png_ptr->mem_ptr = mem_ptr;
png_ptr->malloc_fn = malloc_fn;
png_ptr->free_fn = free_fn;
+ }
}
/* This function returns a pointer to the mem_ptr associated with the user
@@ -590,6 +601,8 @@ png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
png_voidp PNGAPI
png_get_mem_ptr(png_structp png_ptr)
{
+ if(png_ptr == NULL) return (NULL);
return ((png_voidp)png_ptr->mem_ptr);
}
#endif /* PNG_USER_MEM_SUPPORTED */
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/png/pngpread.c b/png/pngpread.c
index ba45d13..d226c75 100644
--- a/png/pngpread.c
+++ b/png/pngpread.c
@@ -1,9 +1,9 @@
/* pngpread.c - read a png file in push mode
*
- * libpng version 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.13 November 13, 2006
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2006 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -28,6 +28,7 @@ void PNGAPI
png_process_data(png_structp png_ptr, png_infop info_ptr,
png_bytep buffer, png_size_t buffer_size)
{
+ if(png_ptr == NULL) return;
png_push_restore_buffer(png_ptr, buffer, buffer_size);
while (png_ptr->buffer_size)
@@ -42,6 +43,7 @@ png_process_data(png_structp png_ptr, png_infop info_ptr,
void /* PRIVATE */
png_process_some_data(png_structp png_ptr, png_infop info_ptr)
{
+ if(png_ptr == NULL) return;
switch (png_ptr->process_mode)
{
case PNG_READ_SIG_MODE:
@@ -214,6 +216,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
}
+ if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
+ if(png_ptr->mode & PNG_AFTER_IDAT)
+ png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
+
if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
{
if (png_ptr->push_length + 4 > png_ptr->buffer_size)
@@ -281,8 +287,9 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
if (png_ptr->mode & PNG_HAVE_IDAT)
{
- if (png_ptr->push_length == 0)
- return;
+ if (!(png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
+ if (png_ptr->push_length == 0)
+ return;
if (png_ptr->mode & PNG_AFTER_IDAT)
png_error(png_ptr, "Too many IDAT's found");
@@ -556,6 +563,7 @@ png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
{
png_bytep ptr;
+ if(png_ptr == NULL) return;
ptr = buffer;
if (png_ptr->save_buffer_size)
{
@@ -614,7 +622,7 @@ png_push_save_buffer(png_structp png_ptr)
png_size_t new_max;
png_bytep old_buffer;
- if (png_ptr->save_buffer_size > PNG_SIZE_MAX -
+ if (png_ptr->save_buffer_size > PNG_SIZE_MAX -
(png_ptr->current_buffer_size + 256))
{
png_error(png_ptr, "Potential overflow of save_buffer");
@@ -815,7 +823,7 @@ png_push_process_row(png_structp png_ptr)
png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf,
png_ptr->rowbytes + 1);
- if (png_ptr->transformations)
+ if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
png_do_read_transformations(png_ptr);
#if defined(PNG_READ_INTERLACING_SUPPORTED)
@@ -1545,6 +1553,7 @@ void PNGAPI
png_progressive_combine_row (png_structp png_ptr,
png_bytep old_row, png_bytep new_row)
{
+ if(png_ptr == NULL) return;
#ifdef PNG_USE_LOCAL_ARRAYS
const int FARDATA png_pass_dsp_mask[7] =
{0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
@@ -1558,6 +1567,7 @@ png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
png_progressive_end_ptr end_fn)
{
+ if(png_ptr == NULL) return;
png_ptr->info_fn = info_fn;
png_ptr->row_fn = row_fn;
png_ptr->end_fn = end_fn;
@@ -1568,6 +1578,7 @@ png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
png_voidp PNGAPI
png_get_progressive_ptr(png_structp png_ptr)
{
+ if(png_ptr == NULL) return (NULL);
return png_ptr->io_ptr;
}
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
diff --git a/png/pngread.c b/png/pngread.c
index 168e280..56dac8a 100644
--- a/png/pngread.c
+++ b/png/pngread.c
@@ -1,9 +1,9 @@
/* pngread.c - read a PNG file
*
- * libpng 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -14,6 +14,8 @@
#define PNG_INTERNAL
#include "png.h"
+#if defined(PNG_READ_SUPPORTED)
+
/* Create a PNG structure for reading, and allocate any memory needed. */
png_structp PNGAPI
png_create_read_struct(png_const_charp user_png_ver, png_voidp error_ptr,
@@ -54,7 +56,7 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
return (NULL);
#if !defined(PNG_1_0_X)
-#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+#ifdef PNG_MMX_CODE_SUPPORTED
png_init_mmx_flags(png_ptr); /* 1.2.0 addition */
#endif
#endif /* PNG_1_0_X */
@@ -75,7 +77,7 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
png_free(png_ptr, png_ptr->zbuf);
png_ptr->zbuf=NULL;
#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)png_ptr,
+ png_destroy_struct_2((png_voidp)png_ptr,
(png_free_ptr)free_fn, (png_voidp)mem_ptr);
#else
png_destroy_struct((png_voidp)png_ptr);
@@ -169,9 +171,10 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
return (png_ptr);
}
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
/* Initialize PNG structure for reading, and allocate any memory needed.
This interface is deprecated in favour of the png_create_read_struct(),
- and it will eventually disappear. */
+ and it will disappear as of libpng-1.3.0. */
#undef png_read_init
void PNGAPI
png_read_init(png_structp png_ptr)
@@ -185,8 +188,9 @@ png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
png_size_t png_struct_size, png_size_t png_info_size)
{
/* We only come here via pre-1.0.12-compiled applications */
+ if(png_ptr == NULL) return;
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
- if(png_sizeof(png_struct) > png_struct_size ||
+ if(png_sizeof(png_struct) > png_struct_size ||
png_sizeof(png_info) > png_info_size)
{
char msg[80];
@@ -222,6 +226,7 @@ png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
}
png_read_init_3(&png_ptr, user_png_ver, png_struct_size);
}
+#endif /* PNG_1_0_X || PNG_1_2_X */
void PNGAPI
png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
@@ -235,6 +240,8 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
png_structp png_ptr=*ptr_ptr;
+ if(png_ptr == NULL) return;
+
do
{
if(user_png_ver[i] != png_libpng_ver[i])
@@ -313,6 +320,7 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
void PNGAPI
png_read_info(png_structp png_ptr, png_infop info_ptr)
{
+ if(png_ptr == NULL) return;
png_debug(1, "in png_read_info\n");
/* If we haven't checked all of the PNG signature bytes, do so now. */
if (png_ptr->sig_bytes < 8)
@@ -393,7 +401,7 @@ png_read_info(png_structp png_ptr, png_infop info_ptr)
#if defined(PNG_READ_zTXt_SUPPORTED)
PNG_zTXt;
#endif
-#endif /* PNG_GLOBAL_ARRAYS */
+#endif /* PNG_USE_LOCAL_ARRAYS */
png_byte chunk_length[4];
png_uint_32 length;
@@ -409,6 +417,10 @@ png_read_info(png_structp png_ptr, png_infop info_ptr)
/* This should be a binary subdivision search or a hash for
* matching the chunk name rather than a linear search.
*/
+ if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
+ if(png_ptr->mode & PNG_AFTER_IDAT)
+ png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
+
if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
png_handle_IHDR(png_ptr, info_ptr, length);
else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4))
@@ -525,6 +537,7 @@ void PNGAPI
png_read_update_info(png_structp png_ptr, png_infop info_ptr)
{
png_debug(1, "in png_read_update_info\n");
+ if(png_ptr == NULL) return;
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
png_read_start_row(png_ptr);
else
@@ -543,6 +556,7 @@ void PNGAPI
png_start_read_image(png_structp png_ptr)
{
png_debug(1, "in png_start_read_image\n");
+ if(png_ptr == NULL) return;
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
png_read_start_row(png_ptr);
}
@@ -558,6 +572,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
const int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
#endif
int ret;
+ if(png_ptr == NULL) return;
png_debug2(1, "in png_read_row (row %lu, pass %d)\n",
png_ptr->row_number, png_ptr->pass);
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
@@ -734,7 +749,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf,
png_ptr->rowbytes + 1);
-
+
#if defined(PNG_MNG_FEATURES_SUPPORTED)
if((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
(png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
@@ -744,7 +759,8 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
}
#endif
- if (png_ptr->transformations)
+
+ if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
png_do_read_transformations(png_ptr);
#if defined(PNG_READ_INTERLACING_SUPPORTED)
@@ -803,7 +819,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
* not called png_set_interlace_handling(), the display_row buffer will
* be ignored, so pass NULL to it.
*
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.7
+ * [*] png_handle_alpha() does not exist yet, as of this version of libpng
*/
void PNGAPI
@@ -815,6 +831,7 @@ png_read_rows(png_structp png_ptr, png_bytepp row,
png_bytepp dp;
png_debug(1, "in png_read_rows\n");
+ if(png_ptr == NULL) return;
rp = row;
dp = display_row;
if (rp != NULL && dp != NULL)
@@ -853,7 +870,7 @@ png_read_rows(png_structp png_ptr, png_bytepp row,
* only call this function once. If you desire to have an image for
* each pass of a interlaced image, use png_read_rows() instead.
*
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.7
+ * [*] png_handle_alpha() does not exist yet, as of this version of libpng
*/
void PNGAPI
png_read_image(png_structp png_ptr, png_bytepp image)
@@ -863,6 +880,7 @@ png_read_image(png_structp png_ptr, png_bytepp image)
png_bytepp rp;
png_debug(1, "in png_read_image\n");
+ if(png_ptr == NULL) return;
#ifdef PNG_READ_INTERLACING_SUPPORTED
pass = png_set_interlace_handling(png_ptr);
@@ -901,6 +919,7 @@ png_read_end(png_structp png_ptr, png_infop info_ptr)
png_uint_32 length;
png_debug(1, "in png_read_end\n");
+ if(png_ptr == NULL) return;
png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */
do
@@ -961,7 +980,7 @@ png_read_end(png_structp png_ptr, png_infop info_ptr)
#if defined(PNG_READ_zTXt_SUPPORTED)
PNG_zTXt;
#endif
-#endif /* PNG_GLOBAL_ARRAYS */
+#endif /* PNG_USE_LOCAL_ARRAYS */
png_read_data(png_ptr, chunk_length, 4);
length = png_get_uint_31(png_ptr,chunk_length);
@@ -980,11 +999,9 @@ png_read_end(png_structp png_ptr, png_infop info_ptr)
{
if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
{
- if (length > 0 || png_ptr->mode & PNG_AFTER_IDAT)
+ if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
png_error(png_ptr, "Too many IDAT's found");
}
- else
- png_ptr->mode |= PNG_AFTER_IDAT;
png_handle_unknown(png_ptr, info_ptr, length);
if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
png_ptr->mode |= PNG_HAVE_PLTE;
@@ -995,7 +1012,7 @@ png_read_end(png_structp png_ptr, png_infop info_ptr)
/* Zero length IDATs are legal after the last IDAT has been
* read, but not after other chunks have been read.
*/
- if (length > 0 || png_ptr->mode & PNG_AFTER_IDAT)
+ if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
png_error(png_ptr, "Too many IDAT's found");
png_crc_finish(png_ptr, length);
}
@@ -1293,6 +1310,7 @@ png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr
void PNGAPI
png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
{
+ if(png_ptr == NULL) return;
png_ptr->read_row_fn = read_row_fn;
}
@@ -1306,6 +1324,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
{
int row;
+ if(png_ptr == NULL) return;
#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
/* invert the alpha channel from opacity to transparency
*/
@@ -1449,5 +1468,6 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
/* quiet compiler warnings */ return;
}
-#endif
+#endif /* PNG_INFO_IMAGE_SUPPORTED */
#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
+#endif /* PNG_READ_SUPPORTED */
diff --git a/png/pngrio.c b/png/pngrio.c
index d7675eb..7d2522f 100644
--- a/png/pngrio.c
+++ b/png/pngrio.c
@@ -1,9 +1,9 @@
/* pngrio.c - functions for data input
*
- * libpng 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.13 November 13, 2006
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2006 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -18,6 +18,8 @@
#define PNG_INTERNAL
#include "png.h"
+#if defined(PNG_READ_SUPPORTED)
+
/* Read the data from whatever input you are using. The default routine
reads from a file pointer. Note that this routine sometimes gets called
with very small lengths, so you should implement some kind of simple
@@ -44,6 +46,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
{
png_size_t check;
+ if(png_ptr == NULL) return;
/* fread() returns 0 on error, so it is OK to store this in a png_size_t
* instead of an int, which is what fread() actually returns.
*/
@@ -67,13 +70,14 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
#define NEAR_BUF_SIZE 1024
#define MIN(a,b) (a <= b ? a : b)
-static void /* PRIVATE */
+static void PNGAPI
png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
{
int check;
png_byte *n_data;
png_FILE_p io_ptr;
+ if(png_ptr == NULL) return;
/* Check if data really is near. If so, use usual code. */
n_data = (png_byte *)CVT_PTR_NOCHECK(data);
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
@@ -134,6 +138,7 @@ void PNGAPI
png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
png_rw_ptr read_data_fn)
{
+ if(png_ptr == NULL) return;
png_ptr->io_ptr = io_ptr;
#if !defined(PNG_NO_STDIO)
@@ -159,3 +164,4 @@ png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
png_ptr->output_flush_fn = NULL;
#endif
}
+#endif /* PNG_READ_SUPPORTED */
diff --git a/png/pngrtran.c b/png/pngrtran.c
index cc7d4ff..2fa96f3 100644
--- a/png/pngrtran.c
+++ b/png/pngrtran.c
@@ -1,9 +1,9 @@
/* pngrtran.c - transforms the data in a row for PNG readers
*
- * libpng version 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -16,12 +16,15 @@
#define PNG_INTERNAL
#include "png.h"
+#if defined(PNG_READ_SUPPORTED)
+
/* Set the action on getting a CRC error for an ancillary or critical chunk. */
void PNGAPI
png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action)
{
png_debug(1, "in png_set_crc_action\n");
/* Tell libpng how we react to CRC errors in critical chunks */
+ if(png_ptr == NULL) return;
switch (crit_action)
{
case PNG_CRC_NO_CHANGE: /* leave setting as is */
@@ -78,6 +81,7 @@ png_set_background(png_structp png_ptr,
int need_expand, double background_gamma)
{
png_debug(1, "in png_set_background\n");
+ if(png_ptr == NULL) return;
if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN)
{
png_warning(png_ptr, "Application must supply a known background gamma");
@@ -90,17 +94,6 @@ png_set_background(png_structp png_ptr,
png_ptr->background_gamma = (float)background_gamma;
png_ptr->background_gamma_type = (png_byte)(background_gamma_code);
png_ptr->transformations |= (need_expand ? PNG_BACKGROUND_EXPAND : 0);
-
- /* Note: if need_expand is set and color_type is either RGB or RGB_ALPHA
- * (in which case need_expand is superfluous anyway), the background color
- * might actually be gray yet not be flagged as such. This is not a problem
- * for the current code, which uses PNG_BACKGROUND_IS_GRAY only to
- * decide when to do the png_do_gray_to_rgb() transformation.
- */
- if ((need_expand && !(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) ||
- (!need_expand && background_color->red == background_color->green &&
- background_color->red == background_color->blue))
- png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
}
#endif
@@ -110,6 +103,7 @@ void PNGAPI
png_set_strip_16(png_structp png_ptr)
{
png_debug(1, "in png_set_strip_16\n");
+ if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_16_TO_8;
}
#endif
@@ -119,7 +113,8 @@ void PNGAPI
png_set_strip_alpha(png_structp png_ptr)
{
png_debug(1, "in png_set_strip_alpha\n");
- png_ptr->transformations |= PNG_STRIP_ALPHA;
+ if(png_ptr == NULL) return;
+ png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
}
#endif
@@ -148,6 +143,7 @@ png_set_dither(png_structp png_ptr, png_colorp palette,
int full_dither)
{
png_debug(1, "in png_set_dither\n");
+ if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_DITHER;
if (!full_dither)
@@ -531,6 +527,7 @@ void PNGAPI
png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
{
png_debug(1, "in png_set_gamma\n");
+ if(png_ptr == NULL) return;
if ((fabs(scrn_gamma * file_gamma - 1.0) > PNG_GAMMA_THRESHOLD) ||
(png_ptr->color_type & PNG_COLOR_MASK_ALPHA) ||
(png_ptr->color_type == PNG_COLOR_TYPE_PALETTE))
@@ -549,7 +546,8 @@ void PNGAPI
png_set_expand(png_structp png_ptr)
{
png_debug(1, "in png_set_expand\n");
- png_ptr->transformations |= PNG_EXPAND;
+ if(png_ptr == NULL) return;
+ png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
}
/* GRR 19990627: the following three functions currently are identical
@@ -564,30 +562,50 @@ png_set_expand(png_structp png_ptr)
*
* More to the point, these functions make it obvious what libpng will be
* doing, whereas "expand" can (and does) mean any number of things.
+ *
+ * GRP 20060307: In libpng-1.4.0, png_set_gray_1_2_4_to_8() was modified
+ * to expand only the sample depth but not to expand the tRNS to alpha.
*/
/* Expand paletted images to RGB. */
void PNGAPI
png_set_palette_to_rgb(png_structp png_ptr)
{
- png_debug(1, "in png_set_expand\n");
- png_ptr->transformations |= PNG_EXPAND;
+ png_debug(1, "in png_set_palette_to_rgb\n");
+ if(png_ptr == NULL) return;
+ png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
}
+#if !defined(PNG_1_0_X)
/* Expand grayscale images of less than 8-bit depth to 8 bits. */
void PNGAPI
+png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
+{
+ png_debug(1, "in png_set_expand_gray_1_2_4_to_8\n");
+ if(png_ptr == NULL) return;
+ png_ptr->transformations |= PNG_EXPAND_tRNS;
+}
+#endif
+
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+/* Expand grayscale images of less than 8-bit depth to 8 bits. */
+/* Deprecated as of libpng-1.2.9 */
+void PNGAPI
png_set_gray_1_2_4_to_8(png_structp png_ptr)
{
- png_debug(1, "in png_set_expand\n");
- png_ptr->transformations |= PNG_EXPAND;
+ png_debug(1, "in png_set_gray_1_2_4_to_8\n");
+ if(png_ptr == NULL) return;
+ png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
}
+#endif
+
/* Expand tRNS chunks to alpha channels. */
void PNGAPI
png_set_tRNS_to_alpha(png_structp png_ptr)
{
png_debug(1, "in png_set_expand\n");
- png_ptr->transformations |= PNG_EXPAND;
+ png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
}
#endif /* defined(PNG_READ_EXPAND_SUPPORTED) */
@@ -612,6 +630,7 @@ png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
{
int red_fixed = (int)((float)red*100000.0 + 0.5);
int green_fixed = (int)((float)green*100000.0 + 0.5);
+ if(png_ptr == NULL) return;
png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed);
}
#endif
@@ -621,6 +640,7 @@ png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
png_fixed_point red, png_fixed_point green)
{
png_debug(1, "in png_set_rgb_to_gray\n");
+ if(png_ptr == NULL) return;
switch(error_action)
{
case 1: png_ptr->transformations |= PNG_RGB_TO_GRAY;
@@ -671,6 +691,7 @@ png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
read_user_transform_fn)
{
png_debug(1, "in png_set_read_user_transform_fn\n");
+ if(png_ptr == NULL) return;
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
png_ptr->transformations |= PNG_USER_TRANSFORM;
png_ptr->read_user_transform_fn = read_user_transform_fn;
@@ -700,28 +721,72 @@ png_init_read_transformations(png_structp png_ptr)
#endif
#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED)
+
+#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
+ /* Detect gray background and attempt to enable optimization
+ * for gray --> RGB case */
+ /* Note: if PNG_BACKGROUND_EXPAND is set and color_type is either RGB or
+ * RGB_ALPHA (in which case need_expand is superfluous anyway), the
+ * background color might actually be gray yet not be flagged as such.
+ * This is not a problem for the current code, which uses
+ * PNG_BACKGROUND_IS_GRAY only to decide when to do the
+ * png_do_gray_to_rgb() transformation.
+ */
+ if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
+ !(color_type & PNG_COLOR_MASK_COLOR))
+ {
+ png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
+ } else if ((png_ptr->transformations & PNG_BACKGROUND) &&
+ !(png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
+ (png_ptr->transformations & PNG_GRAY_TO_RGB) &&
+ png_ptr->background.red == png_ptr->background.green &&
+ png_ptr->background.red == png_ptr->background.blue)
+ {
+ png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
+ png_ptr->background.gray = png_ptr->background.red;
+ }
+#endif
+
if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
(png_ptr->transformations & PNG_EXPAND))
{
if (!(color_type & PNG_COLOR_MASK_COLOR)) /* i.e., GRAY or GRAY_ALPHA */
{
- /* expand background chunk. */
+ /* expand background and tRNS chunks */
switch (png_ptr->bit_depth)
{
case 1:
png_ptr->background.gray *= (png_uint_16)0xff;
png_ptr->background.red = png_ptr->background.green
= png_ptr->background.blue = png_ptr->background.gray;
+ if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
+ {
+ png_ptr->trans_values.gray *= (png_uint_16)0xff;
+ png_ptr->trans_values.red = png_ptr->trans_values.green
+ = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
+ }
break;
case 2:
png_ptr->background.gray *= (png_uint_16)0x55;
png_ptr->background.red = png_ptr->background.green
= png_ptr->background.blue = png_ptr->background.gray;
+ if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
+ {
+ png_ptr->trans_values.gray *= (png_uint_16)0x55;
+ png_ptr->trans_values.red = png_ptr->trans_values.green
+ = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
+ }
break;
case 4:
png_ptr->background.gray *= (png_uint_16)0x11;
png_ptr->background.red = png_ptr->background.green
= png_ptr->background.blue = png_ptr->background.gray;
+ if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
+ {
+ png_ptr->trans_values.gray *= (png_uint_16)0x11;
+ png_ptr->trans_values.red = png_ptr->trans_values.green
+ = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
+ }
break;
case 8:
case 16:
@@ -743,7 +808,7 @@ png_init_read_transformations(png_structp png_ptr)
if (png_ptr->transformations & PNG_INVERT_ALPHA)
{
#if defined(PNG_READ_EXPAND_SUPPORTED)
- if (!(png_ptr->transformations & PNG_EXPAND))
+ if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
#endif
{
/* invert the alpha channel (in tRNS) unless the pixels are
@@ -780,7 +845,8 @@ png_init_read_transformations(png_structp png_ptr)
png_ptr->transformations &= (~PNG_GAMMA);
}
- if (png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY))
+ if ((png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY)) &&
+ png_ptr->gamma != 0.0)
{
png_build_gamma_table(png_ptr);
#if defined(PNG_READ_BACKGROUND_SUPPORTED)
@@ -788,7 +854,7 @@ png_init_read_transformations(png_structp png_ptr)
{
if (color_type == PNG_COLOR_TYPE_PALETTE)
{
- /* could skip if no transparency and
+ /* could skip if no transparency and
*/
png_color back, back_1;
png_colorp palette = png_ptr->palette;
@@ -1042,7 +1108,7 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
{
if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
{
- if (png_ptr->num_trans)
+ if (png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND_tRNS))
info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
else
info_ptr->color_type = PNG_COLOR_TYPE_RGB;
@@ -1052,7 +1118,12 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
else
{
if (png_ptr->num_trans)
- info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
+ {
+ if (png_ptr->transformations & PNG_EXPAND_tRNS)
+ info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
+ else
+ info_ptr->color_type |= PNG_COLOR_MASK_COLOR;
+ }
if (info_ptr->bit_depth < 8)
info_ptr->bit_depth = 8;
info_ptr->num_trans = 0;
@@ -1086,6 +1157,16 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
info_ptr->bit_depth = 8;
#endif
+#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
+ if (png_ptr->transformations & PNG_GRAY_TO_RGB)
+ info_ptr->color_type |= PNG_COLOR_MASK_COLOR;
+#endif
+
+#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
+ if (png_ptr->transformations & PNG_RGB_TO_GRAY)
+ info_ptr->color_type &= ~PNG_COLOR_MASK_COLOR;
+#endif
+
#if defined(PNG_READ_DITHER_SUPPORTED)
if (png_ptr->transformations & PNG_DITHER)
{
@@ -1103,16 +1184,6 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
info_ptr->bit_depth = 8;
#endif
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
- if (png_ptr->transformations & PNG_GRAY_TO_RGB)
- info_ptr->color_type |= PNG_COLOR_MASK_COLOR;
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & PNG_RGB_TO_GRAY)
- info_ptr->color_type &= ~PNG_COLOR_MASK_COLOR;
-#endif
-
if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
info_ptr->channels = 1;
else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
@@ -1121,7 +1192,7 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
info_ptr->channels = 1;
#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
- if (png_ptr->transformations & PNG_STRIP_ALPHA)
+ if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA;
#endif
@@ -1198,7 +1269,7 @@ png_do_read_transformations(png_structp png_ptr)
}
else
{
- if (png_ptr->num_trans)
+ if (png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND_tRNS))
png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
&(png_ptr->trans_values));
else
@@ -1209,9 +1280,9 @@ png_do_read_transformations(png_structp png_ptr)
#endif
#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
- if (png_ptr->transformations & PNG_STRIP_ALPHA)
+ if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
- PNG_FLAG_FILLER_AFTER);
+ PNG_FLAG_FILLER_AFTER | (png_ptr->flags & PNG_FLAG_STRIP_ALPHA));
#endif
#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
@@ -2104,7 +2175,7 @@ png_do_gray_to_rgb(png_row_infop row_info, png_bytep row)
/* reduce RGB files to grayscale, with or without alpha
* using the equation given in Poynton's ColorFAQ at
* <http://www.inforamp.net/~poynton/>
- * Copyright (c) 1998-01-04 Charles Poynton poynton@inforamp.net
+ * Copyright (c) 1998-01-04 Charles Poynton poynton at inforamp.net
*
* Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
*
@@ -3601,8 +3672,8 @@ png_do_expand_palette(png_row_infop row_info, png_bytep row,
}
}
-/* If the bit depth < 8, it is expanded to 8. Also, if the
- * transparency value is supplied, an alpha channel is built.
+/* If the bit depth < 8, it is expanded to 8. Also, if the already
+ * expanded transparency value is supplied, an alpha channel is built.
*/
void /* PRIVATE */
png_do_expand(png_row_infop row_info, png_bytep row,
@@ -3895,7 +3966,7 @@ png_do_dither(png_row_infop row_info, png_bytep row,
#ifdef PNG_FLOATING_POINT_SUPPORTED
#if defined(PNG_READ_GAMMA_SUPPORTED)
static int png_gamma_shift[] =
- {0x10, 0x21, 0x42, 0x84, 0x110, 0x248, 0x550, 0xff0};
+ {0x10, 0x21, 0x42, 0x84, 0x110, 0x248, 0x550, 0xff0, 0x00};
/* We build the 8- or 16-bit gamma tables here. Note that for 16-bit
* tables, we don't make a full table if we are reducing to 8-bit in
@@ -3906,210 +3977,208 @@ void /* PRIVATE */
png_build_gamma_table(png_structp png_ptr)
{
png_debug(1, "in png_build_gamma_table\n");
- if(png_ptr->gamma != 0.0)
+
+ if (png_ptr->bit_depth <= 8)
{
- if (png_ptr->bit_depth <= 8)
- {
- int i;
- double g;
+ int i;
+ double g;
- if (png_ptr->screen_gamma > .000001)
- g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
- else
- g = 1.0;
+ if (png_ptr->screen_gamma > .000001)
+ g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
+ else
+ g = 1.0;
- png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)256);
+ png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)256);
- for (i = 0; i < 256; i++)
- {
- png_ptr->gamma_table[i] = (png_byte)(pow((double)i / 255.0,
- g) * 255.0 + .5);
- }
+ for (i = 0; i < 256; i++)
+ {
+ png_ptr->gamma_table[i] = (png_byte)(pow((double)i / 255.0,
+ g) * 255.0 + .5);
+ }
#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
- defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & ((PNG_BACKGROUND) | PNG_RGB_TO_GRAY))
- {
+ defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
+ if (png_ptr->transformations & ((PNG_BACKGROUND) | PNG_RGB_TO_GRAY))
+ {
- g = 1.0 / (png_ptr->gamma);
+ g = 1.0 / (png_ptr->gamma);
- png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)256);
+ png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)256);
- for (i = 0; i < 256; i++)
- {
- png_ptr->gamma_to_1[i] = (png_byte)(pow((double)i / 255.0,
- g) * 255.0 + .5);
- }
+ for (i = 0; i < 256; i++)
+ {
+ png_ptr->gamma_to_1[i] = (png_byte)(pow((double)i / 255.0,
+ g) * 255.0 + .5);
+ }
- png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)256);
+ png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr,
+ (png_uint_32)256);
- if(png_ptr->screen_gamma > 0.000001)
- g = 1.0 / png_ptr->screen_gamma;
- else
- g = png_ptr->gamma; /* probably doing rgb_to_gray */
+ if(png_ptr->screen_gamma > 0.000001)
+ g = 1.0 / png_ptr->screen_gamma;
+ else
+ g = png_ptr->gamma; /* probably doing rgb_to_gray */
- for (i = 0; i < 256; i++)
- {
- png_ptr->gamma_from_1[i] = (png_byte)(pow((double)i / 255.0,
- g) * 255.0 + .5);
+ for (i = 0; i < 256; i++)
+ {
+ png_ptr->gamma_from_1[i] = (png_byte)(pow((double)i / 255.0,
+ g) * 255.0 + .5);
- }
- }
+ }
+ }
#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */
- }
- else
- {
- double g;
- int i, j, shift, num;
- int sig_bit;
- png_uint_32 ig;
+ }
+ else
+ {
+ double g;
+ int i, j, shift, num;
+ int sig_bit;
+ png_uint_32 ig;
- if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
- {
- sig_bit = (int)png_ptr->sig_bit.red;
- if ((int)png_ptr->sig_bit.green > sig_bit)
- sig_bit = png_ptr->sig_bit.green;
- if ((int)png_ptr->sig_bit.blue > sig_bit)
- sig_bit = png_ptr->sig_bit.blue;
- }
- else
- {
- sig_bit = (int)png_ptr->sig_bit.gray;
- }
+ if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
+ {
+ sig_bit = (int)png_ptr->sig_bit.red;
+ if ((int)png_ptr->sig_bit.green > sig_bit)
+ sig_bit = png_ptr->sig_bit.green;
+ if ((int)png_ptr->sig_bit.blue > sig_bit)
+ sig_bit = png_ptr->sig_bit.blue;
+ }
+ else
+ {
+ sig_bit = (int)png_ptr->sig_bit.gray;
+ }
- if (sig_bit > 0)
- shift = 16 - sig_bit;
- else
- shift = 0;
+ if (sig_bit > 0)
+ shift = 16 - sig_bit;
+ else
+ shift = 0;
- if (png_ptr->transformations & PNG_16_TO_8)
- {
- if (shift < (16 - PNG_MAX_GAMMA_8))
- shift = (16 - PNG_MAX_GAMMA_8);
- }
+ if (png_ptr->transformations & PNG_16_TO_8)
+ {
+ if (shift < (16 - PNG_MAX_GAMMA_8))
+ shift = (16 - PNG_MAX_GAMMA_8);
+ }
- if (shift > 8)
- shift = 8;
- if (shift < 0)
- shift = 0;
+ if (shift > 8)
+ shift = 8;
+ if (shift < 0)
+ shift = 0;
- png_ptr->gamma_shift = (png_byte)shift;
+ png_ptr->gamma_shift = (png_byte)shift;
- num = (1 << (8 - shift));
+ num = (1 << (8 - shift));
- if (png_ptr->screen_gamma > .000001)
- g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
- else
- g = 1.0;
+ if (png_ptr->screen_gamma > .000001)
+ g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
+ else
+ g = 1.0;
- png_ptr->gamma_16_table = (png_uint_16pp)png_malloc(png_ptr,
- (png_uint_32)(num * png_sizeof (png_uint_16p)));
+ png_ptr->gamma_16_table = (png_uint_16pp)png_malloc(png_ptr,
+ (png_uint_32)(num * png_sizeof (png_uint_16p)));
- if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND))
- {
- double fin, fout;
- png_uint_32 last, max;
+ if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND))
+ {
+ double fin, fout;
+ png_uint_32 last, max;
- for (i = 0; i < num; i++)
- {
- png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(256 * png_sizeof (png_uint_16)));
- }
+ for (i = 0; i < num; i++)
+ {
+ png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(256 * png_sizeof (png_uint_16)));
+ }
- g = 1.0 / g;
- last = 0;
- for (i = 0; i < 256; i++)
- {
- fout = ((double)i + 0.5) / 256.0;
- fin = pow(fout, g);
- max = (png_uint_32)(fin * (double)((png_uint_32)num << 8));
- while (last <= max)
- {
- png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
- [(int)(last >> (8 - shift))] = (png_uint_16)(
- (png_uint_16)i | ((png_uint_16)i << 8));
- last++;
- }
- }
- while (last < ((png_uint_32)num << 8))
- {
- png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
- [(int)(last >> (8 - shift))] = (png_uint_16)65535L;
- last++;
- }
- }
- else
- {
- for (i = 0; i < num; i++)
- {
- png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(256 * png_sizeof (png_uint_16)));
+ g = 1.0 / g;
+ last = 0;
+ for (i = 0; i < 256; i++)
+ {
+ fout = ((double)i + 0.5) / 256.0;
+ fin = pow(fout, g);
+ max = (png_uint_32)(fin * (double)((png_uint_32)num << 8));
+ while (last <= max)
+ {
+ png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
+ [(int)(last >> (8 - shift))] = (png_uint_16)(
+ (png_uint_16)i | ((png_uint_16)i << 8));
+ last++;
+ }
+ }
+ while (last < ((png_uint_32)num << 8))
+ {
+ png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
+ [(int)(last >> (8 - shift))] = (png_uint_16)65535L;
+ last++;
+ }
+ }
+ else
+ {
+ for (i = 0; i < num; i++)
+ {
+ png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(256 * png_sizeof (png_uint_16)));
- ig = (((png_uint_32)i * (png_uint_32)png_gamma_shift[shift]) >> 4);
- for (j = 0; j < 256; j++)
- {
- png_ptr->gamma_16_table[i][j] =
- (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
- 65535.0, g) * 65535.0 + .5);
- }
- }
- }
+ ig = (((png_uint_32)i * (png_uint_32)png_gamma_shift[shift]) >> 4);
+ for (j = 0; j < 256; j++)
+ {
+ png_ptr->gamma_16_table[i][j] =
+ (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
+ 65535.0, g) * 65535.0 + .5);
+ }
+ }
+ }
#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
- defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & (PNG_BACKGROUND | PNG_RGB_TO_GRAY))
- {
+ defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
+ if (png_ptr->transformations & (PNG_BACKGROUND | PNG_RGB_TO_GRAY))
+ {
- g = 1.0 / (png_ptr->gamma);
+ g = 1.0 / (png_ptr->gamma);
- png_ptr->gamma_16_to_1 = (png_uint_16pp)png_malloc(png_ptr,
- (png_uint_32)(num * png_sizeof (png_uint_16p )));
+ png_ptr->gamma_16_to_1 = (png_uint_16pp)png_malloc(png_ptr,
+ (png_uint_32)(num * png_sizeof (png_uint_16p )));
- for (i = 0; i < num; i++)
- {
- png_ptr->gamma_16_to_1[i] = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(256 * png_sizeof (png_uint_16)));
+ for (i = 0; i < num; i++)
+ {
+ png_ptr->gamma_16_to_1[i] = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(256 * png_sizeof (png_uint_16)));
- ig = (((png_uint_32)i *
- (png_uint_32)png_gamma_shift[shift]) >> 4);
- for (j = 0; j < 256; j++)
- {
- png_ptr->gamma_16_to_1[i][j] =
- (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
- 65535.0, g) * 65535.0 + .5);
- }
- }
+ ig = (((png_uint_32)i *
+ (png_uint_32)png_gamma_shift[shift]) >> 4);
+ for (j = 0; j < 256; j++)
+ {
+ png_ptr->gamma_16_to_1[i][j] =
+ (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
+ 65535.0, g) * 65535.0 + .5);
+ }
+ }
- if(png_ptr->screen_gamma > 0.000001)
- g = 1.0 / png_ptr->screen_gamma;
- else
- g = png_ptr->gamma; /* probably doing rgb_to_gray */
+ if(png_ptr->screen_gamma > 0.000001)
+ g = 1.0 / png_ptr->screen_gamma;
+ else
+ g = png_ptr->gamma; /* probably doing rgb_to_gray */
- png_ptr->gamma_16_from_1 = (png_uint_16pp)png_malloc(png_ptr,
- (png_uint_32)(num * png_sizeof (png_uint_16p)));
+ png_ptr->gamma_16_from_1 = (png_uint_16pp)png_malloc(png_ptr,
+ (png_uint_32)(num * png_sizeof (png_uint_16p)));
- for (i = 0; i < num; i++)
- {
- png_ptr->gamma_16_from_1[i] = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(256 * png_sizeof (png_uint_16)));
+ for (i = 0; i < num; i++)
+ {
+ png_ptr->gamma_16_from_1[i] = (png_uint_16p)png_malloc(png_ptr,
+ (png_uint_32)(256 * png_sizeof (png_uint_16)));
- ig = (((png_uint_32)i *
- (png_uint_32)png_gamma_shift[shift]) >> 4);
- for (j = 0; j < 256; j++)
- {
- png_ptr->gamma_16_from_1[i][j] =
- (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
- 65535.0, g) * 65535.0 + .5);
- }
- }
- }
+ ig = (((png_uint_32)i *
+ (png_uint_32)png_gamma_shift[shift]) >> 4);
+ for (j = 0; j < 256; j++)
+ {
+ png_ptr->gamma_16_from_1[i][j] =
+ (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
+ 65535.0, g) * 65535.0 + .5);
+ }
+ }
+ }
#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */
- }
- }
+ }
}
#endif
/* To do: install integer version of png_build_gamma_table here */
@@ -4175,3 +4244,4 @@ png_do_read_intrapixel(png_row_infop row_info, png_bytep row)
}
}
#endif /* PNG_MNG_FEATURES_SUPPORTED */
+#endif /* PNG_READ_SUPPORTED */
diff --git a/png/pngrutil.c b/png/pngrutil.c
index 4197bc7..6157b3d 100644
--- a/png/pngrutil.c
+++ b/png/pngrutil.c
@@ -1,8 +1,9 @@
+
/* pngrutil.c - utilities to read a PNG file
*
- * libpng version 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -13,41 +14,45 @@
#define PNG_INTERNAL
#include "png.h"
-#if defined(_WIN32_WCE)
+#if defined(PNG_READ_SUPPORTED)
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+# if defined(_WIN32_WCE)
/* strtod() function is not supported on WindowsCE */
-# ifdef PNG_FLOATING_POINT_SUPPORTED
-__inline double strtod(const char *nptr, char **endptr)
+__inline double png_strtod(png_structp png_ptr, const char *nptr, char **endptr)
{
double result = 0;
int len;
wchar_t *str, *end;
len = MultiByteToWideChar(CP_ACP, 0, nptr, -1, NULL, 0);
- str = (wchar_t *)malloc(len * sizeof(wchar_t));
+ str = (wchar_t *)png_malloc(png_ptr, len * sizeof(wchar_t));
if ( NULL != str )
{
MultiByteToWideChar(CP_ACP, 0, nptr, -1, str, len);
result = wcstod(str, &end);
len = WideCharToMultiByte(CP_ACP, 0, end, -1, NULL, 0, NULL, NULL);
*endptr = (char *)nptr + (png_strlen(nptr) - len + 1);
- free(str);
+ png_free(str);
}
return result;
}
+# else
+# define png_strtod(p,a,b) strtod(a,b)
# endif
#endif
-png_uint_32 /* PRIVATE */
+png_uint_32 PNGAPI
png_get_uint_31(png_structp png_ptr, png_bytep buf)
{
png_uint_32 i = png_get_uint_32(buf);
if (i > PNG_UINT_31_MAX)
- png_error(png_ptr, "PNG unsigned integer out of range.\n");
+ png_error(png_ptr, "PNG unsigned integer out of range.");
return (i);
}
#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */
-png_uint_32 /* PRIVATE */
+png_uint_32 PNGAPI
png_get_uint_32(png_bytep buf)
{
png_uint_32 i = ((png_uint_32)(*buf) << 24) +
@@ -58,11 +63,10 @@ png_get_uint_32(png_bytep buf)
return (i);
}
-#if defined(PNG_READ_pCAL_SUPPORTED) || defined(PNG_READ_oFFs_SUPPORTED)
/* Grab a signed 32-bit integer from a buffer in big-endian format. The
* data is stored in the PNG file in two's complement format, and it is
* assumed that the machine format for signed integers is the same. */
-png_int_32 /* PRIVATE */
+png_int_32 PNGAPI
png_get_int_32(png_bytep buf)
{
png_int_32 i = ((png_int_32)(*buf) << 24) +
@@ -72,10 +76,9 @@ png_get_int_32(png_bytep buf)
return (i);
}
-#endif /* PNG_READ_pCAL_SUPPORTED */
/* Grab an unsigned 16-bit integer from a buffer in big-endian format. */
-png_uint_16 /* PRIVATE */
+png_uint_16 PNGAPI
png_get_uint_16(png_bytep buf)
{
png_uint_16 i = (png_uint_16)(((png_uint_16)(*buf) << 8) +
@@ -89,6 +92,7 @@ png_get_uint_16(png_bytep buf)
void /* PRIVATE */
png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
{
+ if(png_ptr == NULL) return;
png_read_data(png_ptr, buf, length);
png_calculate_crc(png_ptr, buf, length);
}
@@ -275,7 +279,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
if (ret != Z_STREAM_END)
{
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
- char umsg[50];
+ char umsg[52];
if (ret == Z_BUF_ERROR)
sprintf(umsg,"Buffer error in compressed datastream in %s chunk",
@@ -619,7 +623,7 @@ png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
}
#if defined(PNG_READ_sRGB_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_sRGB)
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB))
if (PNG_OUT_OF_RANGE(igamma, 45500L, 500))
{
png_warning(png_ptr,
@@ -777,8 +781,7 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_crc_read(png_ptr, buf, 4);
uint_y = png_get_uint_32(buf);
- if (uint_x > 80000L || uint_y > 80000L ||
- uint_x + uint_y > 100000L)
+ if (uint_x + uint_y > 100000L)
{
png_warning(png_ptr, "Invalid cHRM red point");
png_crc_finish(png_ptr, 16);
@@ -793,8 +796,7 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_crc_read(png_ptr, buf, 4);
uint_y = png_get_uint_32(buf);
- if (uint_x > 80000L || uint_y > 80000L ||
- uint_x + uint_y > 100000L)
+ if (uint_x + uint_y > 100000L)
{
png_warning(png_ptr, "Invalid cHRM green point");
png_crc_finish(png_ptr, 8);
@@ -809,8 +811,7 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_crc_read(png_ptr, buf, 4);
uint_y = png_get_uint_32(buf);
- if (uint_x > 80000L || uint_y > 80000L ||
- uint_x + uint_y > 100000L)
+ if (uint_x + uint_y > 100000L)
{
png_warning(png_ptr, "Invalid cHRM blue point");
png_crc_finish(png_ptr, 0);
@@ -831,7 +832,7 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#endif
#if defined(PNG_READ_sRGB_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_sRGB)
+ if ((info_ptr != NULL) && (info_ptr->valid & PNG_INFO_sRGB))
{
if (PNG_OUT_OF_RANGE(int_x_white, 31270, 1000) ||
PNG_OUT_OF_RANGE(int_y_white, 32900, 1000) ||
@@ -842,7 +843,6 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
PNG_OUT_OF_RANGE(int_x_blue, 15000, 1000) ||
PNG_OUT_OF_RANGE(int_y_blue, 6000, 1000))
{
-
png_warning(png_ptr,
"Ignoring incorrect cHRM value when sRGB is also present");
#ifndef PNG_NO_CONSOLE_IO
@@ -926,7 +926,7 @@ png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
}
#if defined(PNG_READ_gAMA_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED)
- if ((info_ptr->valid & PNG_INFO_gAMA))
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA))
{
png_fixed_point igamma;
#ifdef PNG_FIXED_POINT_SUPPORTED
@@ -955,7 +955,7 @@ png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#ifdef PNG_READ_cHRM_SUPPORTED
#ifdef PNG_FIXED_POINT_SUPPORTED
- if (info_ptr->valid & PNG_INFO_cHRM)
+ if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
if (PNG_OUT_OF_RANGE(info_ptr->int_x_white, 31270, 1000) ||
PNG_OUT_OF_RANGE(info_ptr->int_y_white, 32900, 1000) ||
PNG_OUT_OF_RANGE(info_ptr->int_x_red, 64000L, 1000) ||
@@ -1079,7 +1079,7 @@ png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
if(profile_size > profile_length)
{
png_free(png_ptr, chunkdata);
- png_warning(png_ptr, "Ignoring truncated iCCP profile.\n");
+ png_warning(png_ptr, "Ignoring truncated iCCP profile.");
return;
}
@@ -1160,7 +1160,7 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
return;
}
- new_palette.nentries = (png_uint_32) (data_length / entry_size);
+ new_palette.nentries = (png_int_32) ( data_length / entry_size);
if ((png_uint_32) new_palette.nentries > (png_uint_32) (PNG_SIZE_MAX /
png_sizeof(png_sPLT_entry)))
{
@@ -1733,7 +1733,7 @@ png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
ep = buffer + 1; /* skip unit byte */
#ifdef PNG_FLOATING_POINT_SUPPORTED
- width = strtod(ep, &vp);
+ width = png_strtod(png_ptr, ep, &vp);
if (*vp)
{
png_warning(png_ptr, "malformed width string in sCAL chunk");
@@ -1756,7 +1756,7 @@ png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
ep++;
#ifdef PNG_FLOATING_POINT_SUPPORTED
- height = strtod(ep, &vp);
+ height = png_strtod(png_ptr, ep, &vp);
if (*vp)
{
png_warning(png_ptr, "malformed height string in sCAL chunk");
@@ -2170,7 +2170,8 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
}
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
- if (png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS)
+ if ((png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS) ||
+ (png_ptr->read_user_chunk_fn != NULL))
{
png_unknown_chunk chunk;
@@ -2248,7 +2249,7 @@ png_check_chunk_name(png_structp png_ptr, png_bytep chunk_name)
a zero indicates the pixel is to be skipped. This is in addition
to any alpha or transparency value associated with the pixel. If
you want all pixels to be combined, pass 0xff (255) in mask. */
-#ifndef PNG_HAVE_ASSEMBLER_COMBINE_ROW
+#ifndef PNG_HAVE_MMX_COMBINE_ROW
void /* PRIVATE */
png_combine_row(png_structp png_ptr, png_bytep row, int mask)
{
@@ -2449,10 +2450,10 @@ png_combine_row(png_structp png_ptr, png_bytep row, int mask)
}
}
}
-#endif /* !PNG_HAVE_ASSEMBLER_COMBINE_ROW */
+#endif /* !PNG_HAVE_MMX_COMBINE_ROW */
#ifdef PNG_READ_INTERLACING_SUPPORTED
-#ifndef PNG_HAVE_ASSEMBLER_READ_INTERLACE /* else in pngvcrd.c, pnggccrd.c */
+#ifndef PNG_HAVE_MMX_READ_INTERLACE /* else in pngvcrd.c, pnggccrd.c */
/* OLD pre-1.0.9 interface:
void png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
png_uint_32 transformations)
@@ -2678,10 +2679,10 @@ png_do_read_interlace(png_structp png_ptr)
return;
#endif
}
-#endif /* !PNG_HAVE_ASSEMBLER_READ_INTERLACE */
+#endif /* !PNG_HAVE_MMX_READ_INTERLACE */
#endif /* PNG_READ_INTERLACING_SUPPORTED */
-#ifndef PNG_HAVE_ASSEMBLER_READ_FILTER_ROW
+#ifndef PNG_HAVE_MMX_READ_FILTER_ROW
void /* PRIVATE */
png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
png_bytep prev_row, int filter)
@@ -2804,7 +2805,7 @@ png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
break;
}
}
-#endif /* !PNG_HAVE_ASSEMBLER_READ_FILTER_ROW */
+#endif /* !PNG_HAVE_MMX_READ_FILTER_ROW */
void /* PRIVATE */
png_read_finish_row(png_structp png_ptr)
@@ -3106,7 +3107,7 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
if ((png_uint_32)png_ptr->rowbytes + 1 > (png_uint_32)65536L)
png_error(png_ptr, "This image requires a row greater than 64KB");
#endif
- if ((png_uint_32)png_ptr->rowbytes + 1 > PNG_SIZE_MAX)
+ if ((png_uint_32)png_ptr->rowbytes > (png_uint_32)(PNG_SIZE_MAX - 1))
png_error(png_ptr, "Row has too many bytes to allocate in memory.");
png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)(
png_ptr->rowbytes + 1));
@@ -3122,3 +3123,4 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
png_ptr->flags |= PNG_FLAG_ROW_INIT;
}
+#endif /* PNG_READ_SUPPORTED */
diff --git a/png/pngset.c b/png/pngset.c
index 39c5bfa..24fa24d 100644
--- a/png/pngset.c
+++ b/png/pngset.c
@@ -1,9 +1,9 @@
/* pngset.c - storage of image information into info struct
*
- * libpng 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -16,6 +16,8 @@
#define PNG_INTERNAL
#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
+
#if defined(PNG_bKGD_SUPPORTED)
void PNGAPI
png_set_bKGD(png_structp png_ptr, png_infop info_ptr, png_color_16p background)
@@ -100,6 +102,7 @@ png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
"Ignoring attempt to set negative chromaticity value");
return;
}
+#ifdef PNG_FLOATING_POINT_SUPPORTED
if (white_x > (double) PNG_UINT_31_MAX ||
white_y > (double) PNG_UINT_31_MAX ||
red_x > (double) PNG_UINT_31_MAX ||
@@ -108,6 +111,16 @@ png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
green_y > (double) PNG_UINT_31_MAX ||
blue_x > (double) PNG_UINT_31_MAX ||
blue_y > (double) PNG_UINT_31_MAX)
+#else
+ if (white_x > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
+ white_y > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
+ red_x > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
+ red_y > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
+ green_x > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
+ green_y > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
+ blue_x > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
+ blue_y > (png_fixed_point) PNG_UINT_31_MAX/100000L)
+#endif
{
png_warning(png_ptr,
"Ignoring attempt to set chromaticity value exceeding 21474.83");
@@ -209,19 +222,21 @@ png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist)
png_debug1(1, "in %s storage function\n", "hIST");
if (png_ptr == NULL || info_ptr == NULL)
return;
- if (info_ptr->num_palette == 0)
+ if (info_ptr->num_palette <= 0 || info_ptr->num_palette
+ > PNG_MAX_PALETTE_LENGTH)
{
png_warning(png_ptr,
- "Palette size 0, hIST allocation skipped.");
+ "Invalid palette size, hIST allocation skipped.");
return;
}
#ifdef PNG_FREE_ME_SUPPORTED
png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0);
#endif
- /* Changed from info->num_palette to 256 in version 1.2.1 */
+ /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in version
+ 1.2.1 */
png_ptr->hist = (png_uint_16p)png_malloc_warn(png_ptr,
- (png_uint_32)(256 * png_sizeof (png_uint_16)));
+ (png_uint_32)(PNG_MAX_PALETTE_LENGTH * png_sizeof (png_uint_16)));
if (png_ptr->hist == NULL)
{
png_warning(png_ptr, "Insufficient memory for hIST chunk data.");
@@ -303,13 +318,13 @@ png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
* 5. The color_type is RGB or RGBA
*/
if((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&png_ptr->mng_features_permitted)
- png_warning(png_ptr,"MNG features are not allowed in a PNG datastream\n");
+ png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");
if(filter_type != PNG_FILTER_TYPE_BASE)
{
if(!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
(filter_type == PNG_INTRAPIXEL_DIFFERENCING) &&
((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) &&
- (color_type == PNG_COLOR_TYPE_RGB ||
+ (color_type == PNG_COLOR_TYPE_RGB ||
color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
png_error(png_ptr, "Unknown filter method in IHDR");
if(png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)
@@ -517,6 +532,17 @@ png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
if (png_ptr == NULL || info_ptr == NULL)
return;
+ if (num_palette < 0 || num_palette > PNG_MAX_PALETTE_LENGTH)
+ {
+ if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ png_error(png_ptr, "Invalid palette length");
+ else
+ {
+ png_warning(png_ptr, "Invalid palette length");
+ return;
+ }
+ }
+
/*
* It may not actually be necessary to set png_ptr->palette here;
* we do it for backward compatibility with the way the png_handle_tRNS
@@ -526,11 +552,13 @@ png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0);
#endif
- /* Changed in libpng-1.2.1 to allocate 256 instead of num_palette entries,
+ /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead
+ of num_palette entries,
in case of an invalid PNG file that has too-large sample values. */
png_ptr->palette = (png_colorp)png_malloc(png_ptr,
- 256 * png_sizeof(png_color));
- png_memset(png_ptr->palette, 0, 256 * png_sizeof(png_color));
+ PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
+ png_memset(png_ptr->palette, 0, PNG_MAX_PALETTE_LENGTH *
+ png_sizeof(png_color));
png_memcpy(png_ptr->palette, palette, num_palette * png_sizeof (png_color));
info_ptr->palette = png_ptr->palette;
info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette;
@@ -890,10 +918,11 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
#ifdef PNG_FREE_ME_SUPPORTED
png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
#endif
- /* Changed from num_trans to 256 in version 1.2.1 */
+ /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)256);
- png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans);
+ (png_uint_32)PNG_MAX_PALETTE_LENGTH);
+ if (num_trans <= PNG_MAX_PALETTE_LENGTH)
+ png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans);
#ifdef PNG_FREE_ME_SUPPORTED
info_ptr->free_me |= PNG_FREE_TRNS;
#else
@@ -921,6 +950,9 @@ png_set_sPLT(png_structp png_ptr,
png_sPLT_tp np;
int i;
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
np = (png_sPLT_tp)png_malloc_warn(png_ptr,
(info_ptr->splt_palettes_num + nentries) * png_sizeof(png_sPLT_t));
if (np == NULL)
@@ -944,10 +976,10 @@ png_set_sPLT(png_structp png_ptr,
/* TODO: use png_malloc_warn */
png_strcpy(to->name, from->name);
to->entries = (png_sPLT_entryp)png_malloc(png_ptr,
- from->nentries * png_sizeof(png_sPLT_t));
+ from->nentries * png_sizeof(png_sPLT_entry));
/* TODO: use png_malloc_warn */
png_memcpy(to->entries, from->entries,
- from->nentries * png_sizeof(png_sPLT_t));
+ from->nentries * png_sizeof(png_sPLT_entry));
to->nentries = from->nentries;
to->depth = from->depth;
}
@@ -1023,13 +1055,14 @@ png_set_unknown_chunk_location(png_structp png_ptr, png_infop info_ptr,
}
#endif
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
void PNGAPI
png_permit_empty_plte (png_structp png_ptr, int empty_plte_permitted)
{
/* This function is deprecated in favor of png_permit_mng_features()
- and will be removed from libpng-2.0.0 */
+ and will be removed from libpng-1.3.0 */
png_debug(1, "in png_permit_empty_plte, DEPRECATED.\n");
if (png_ptr == NULL)
return;
@@ -1038,6 +1071,7 @@ png_permit_empty_plte (png_structp png_ptr, int empty_plte_permitted)
((empty_plte_permitted & PNG_FLAG_MNG_EMPTY_PLTE)));
}
#endif
+#endif
#if defined(PNG_MNG_FEATURES_SUPPORTED)
png_uint_32 PNGAPI
@@ -1059,6 +1093,8 @@ png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
{
png_bytep new_list, p;
int i, old_num_chunks;
+ if (png_ptr == NULL)
+ return;
if (num_chunks == 0)
{
if(keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE)
@@ -1102,6 +1138,8 @@ png_set_read_user_chunk_fn(png_structp png_ptr, png_voidp user_chunk_ptr,
png_user_chunk_ptr read_user_chunk_fn)
{
png_debug(1, "in png_set_read_user_chunk_fn\n");
+ if (png_ptr == NULL)
+ return;
png_ptr->read_user_chunk_fn = read_user_chunk_fn;
png_ptr->user_chunk_ptr = user_chunk_ptr;
}
@@ -1128,6 +1166,8 @@ png_set_rows(png_structp png_ptr, png_infop info_ptr, png_bytepp row_pointers)
void PNGAPI
png_set_compression_buffer_size(png_structp png_ptr, png_uint_32 size)
{
+ if (png_ptr == NULL)
+ return;
if(png_ptr->zbuf)
png_free(png_ptr, png_ptr->zbuf);
png_ptr->zbuf_size = (png_size_t)size;
@@ -1151,8 +1191,13 @@ png_set_invalid(png_structp png_ptr, png_infop info_ptr, int mask)
void PNGAPI
png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
{
+#ifdef PNG_MMX_CODE_SUPPORTED
png_uint_32 settable_asm_flags;
png_uint_32 settable_mmx_flags;
+#endif
+ if (png_ptr == NULL)
+ return;
+#ifdef PNG_MMX_CODE_SUPPORTED
settable_mmx_flags =
#ifdef PNG_HAVE_ASSEMBLER_COMBINE_ROW
@@ -1181,23 +1226,26 @@ png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
}
/* we're replacing the settable bits with those passed in by the user,
- * so first zero them out of the master copy, then logical-OR in the
+ * so first zero them out of the master copy, then bitwise-OR in the
* allowed subset that was requested */
png_ptr->asm_flags &= ~settable_asm_flags; /* zero them */
png_ptr->asm_flags |= (asm_flags & settable_asm_flags); /* set them */
+#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
-#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
-#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
/* this function was added to libpng 1.2.0 */
void PNGAPI
png_set_mmx_thresholds (png_structp png_ptr,
png_byte mmx_bitdepth_threshold,
png_uint_32 mmx_rowbytes_threshold)
{
+ if (png_ptr == NULL)
+ return;
+#ifdef PNG_MMX_CODE_SUPPORTED
png_ptr->mmx_bitdepth_threshold = mmx_bitdepth_threshold;
png_ptr->mmx_rowbytes_threshold = mmx_rowbytes_threshold;
+#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
@@ -1211,9 +1259,11 @@ png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
* rejected by png_set_IHDR(). To accept any PNG datastream
* regardless of dimensions, set both limits to 0x7ffffffL.
*/
+ if(png_ptr == NULL) return;
png_ptr->user_width_max = user_width_max;
png_ptr->user_height_max = user_height_max;
}
#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
#endif /* ?PNG_1_0_X */
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/png/pngtrans.c b/png/pngtrans.c
index f3e5766..25f42c8 100644
--- a/png/pngtrans.c
+++ b/png/pngtrans.c
@@ -1,9 +1,9 @@
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
*
- * libpng 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.13 November 13, 2006
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2006 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -11,12 +11,14 @@
#define PNG_INTERNAL
#include "png.h"
+#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
/* turn on BGR-to-RGB mapping */
void PNGAPI
png_set_bgr(png_structp png_ptr)
{
png_debug(1, "in png_set_bgr\n");
+ if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_BGR;
}
#endif
@@ -27,6 +29,7 @@ void PNGAPI
png_set_swap(png_structp png_ptr)
{
png_debug(1, "in png_set_swap\n");
+ if(png_ptr == NULL) return;
if (png_ptr->bit_depth == 16)
png_ptr->transformations |= PNG_SWAP_BYTES;
}
@@ -38,6 +41,7 @@ void PNGAPI
png_set_packing(png_structp png_ptr)
{
png_debug(1, "in png_set_packing\n");
+ if(png_ptr == NULL) return;
if (png_ptr->bit_depth < 8)
{
png_ptr->transformations |= PNG_PACK;
@@ -52,6 +56,7 @@ void PNGAPI
png_set_packswap(png_structp png_ptr)
{
png_debug(1, "in png_set_packswap\n");
+ if(png_ptr == NULL) return;
if (png_ptr->bit_depth < 8)
png_ptr->transformations |= PNG_PACKSWAP;
}
@@ -62,6 +67,7 @@ void PNGAPI
png_set_shift(png_structp png_ptr, png_color_8p true_bits)
{
png_debug(1, "in png_set_shift\n");
+ if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_SHIFT;
png_ptr->shift = *true_bits;
}
@@ -73,7 +79,7 @@ int PNGAPI
png_set_interlace_handling(png_structp png_ptr)
{
png_debug(1, "in png_set_interlace handling\n");
- if (png_ptr->interlaced)
+ if (png_ptr && png_ptr->interlaced)
{
png_ptr->transformations |= PNG_INTERLACE;
return (7);
@@ -93,6 +99,7 @@ void PNGAPI
png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
{
png_debug(1, "in png_set_filler\n");
+ if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_FILLER;
png_ptr->filler = (png_byte)filler;
if (filler_loc == PNG_FILLER_AFTER)
@@ -125,6 +132,7 @@ void PNGAPI
png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
{
png_debug(1, "in png_set_add_alpha\n");
+ if(png_ptr == NULL) return;
png_set_filler(png_ptr, filler, filler_loc);
png_ptr->transformations |= PNG_ADD_ALPHA;
}
@@ -138,6 +146,7 @@ void PNGAPI
png_set_swap_alpha(png_structp png_ptr)
{
png_debug(1, "in png_set_swap_alpha\n");
+ if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_SWAP_ALPHA;
}
#endif
@@ -148,6 +157,7 @@ void PNGAPI
png_set_invert_alpha(png_structp png_ptr)
{
png_debug(1, "in png_set_invert_alpha\n");
+ if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_INVERT_ALPHA;
}
#endif
@@ -157,6 +167,7 @@ void PNGAPI
png_set_invert_mono(png_structp png_ptr)
{
png_debug(1, "in png_set_invert_mono\n");
+ if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_INVERT_MONO;
}
@@ -241,7 +252,7 @@ png_do_swap(png_row_infop row_info, png_bytep row)
#endif
#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
-static png_byte onebppswaptable[256] = {
+static PNG_CONST png_byte onebppswaptable[256] = {
0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
@@ -276,7 +287,7 @@ static png_byte onebppswaptable[256] = {
0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF
};
-static png_byte twobppswaptable[256] = {
+static PNG_CONST png_byte twobppswaptable[256] = {
0x00, 0x40, 0x80, 0xC0, 0x10, 0x50, 0x90, 0xD0,
0x20, 0x60, 0xA0, 0xE0, 0x30, 0x70, 0xB0, 0xF0,
0x04, 0x44, 0x84, 0xC4, 0x14, 0x54, 0x94, 0xD4,
@@ -311,7 +322,7 @@ static png_byte twobppswaptable[256] = {
0x2F, 0x6F, 0xAF, 0xEF, 0x3F, 0x7F, 0xBF, 0xFF
};
-static png_byte fourbppswaptable[256] = {
+static PNG_CONST png_byte fourbppswaptable[256] = {
0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0,
0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
@@ -362,11 +373,11 @@ png_do_packswap(png_row_infop row_info, png_bytep row)
end = row + row_info->rowbytes;
if (row_info->bit_depth == 1)
- table = onebppswaptable;
+ table = (png_bytep)onebppswaptable;
else if (row_info->bit_depth == 2)
- table = twobppswaptable;
+ table = (png_bytep)twobppswaptable;
else if (row_info->bit_depth == 4)
- table = fourbppswaptable;
+ table = (png_bytep)fourbppswaptable;
else
return;
@@ -392,7 +403,9 @@ png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
png_uint_32 row_width=row_info->width;
png_uint_32 i;
- if (row_info->color_type == PNG_COLOR_TYPE_RGB &&
+ if ((row_info->color_type == PNG_COLOR_TYPE_RGB ||
+ (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
+ (flags & PNG_FLAG_STRIP_ALPHA))) &&
row_info->channels == 4)
{
if (row_info->bit_depth == 8)
@@ -471,7 +484,9 @@ png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
}
row_info->channels = 3;
}
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY &&
+ else if ((row_info->color_type == PNG_COLOR_TYPE_GRAY ||
+ (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
+ (flags & PNG_FLAG_STRIP_ALPHA))) &&
row_info->channels == 2)
{
if (row_info->bit_depth == 8)
@@ -525,6 +540,8 @@ png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
}
row_info->channels = 1;
}
+ if (flags & PNG_FLAG_STRIP_ALPHA)
+ row_info->color_type &= ~PNG_COLOR_MASK_ALPHA;
}
}
#endif
@@ -614,6 +631,7 @@ png_set_user_transform_info(png_structp png_ptr, png_voidp
user_transform_ptr, int user_transform_depth, int user_transform_channels)
{
png_debug(1, "in png_set_user_transform_info\n");
+ if(png_ptr == NULL) return;
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
png_ptr->user_transform_ptr = user_transform_ptr;
png_ptr->user_transform_depth = (png_byte)user_transform_depth;
@@ -634,11 +652,10 @@ png_set_user_transform_info(png_structp png_ptr, png_voidp
png_voidp PNGAPI
png_get_user_transform_ptr(png_structp png_ptr)
{
+ if (png_ptr == NULL) return (NULL);
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
return ((png_voidp)png_ptr->user_transform_ptr);
-#else
- if(png_ptr)
- return (NULL);
- return (NULL);
#endif
+ return (NULL);
}
+#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/png/pngwio.c b/png/pngwio.c
index d569b68..4d9d57e 100644
--- a/png/pngwio.c
+++ b/png/pngwio.c
@@ -1,9 +1,9 @@
/* pngwio.c - functions for data output
*
- * libpng 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.13 November 13, 2006
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2002 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -45,6 +45,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
{
png_uint_32 check;
+ if(png_ptr == NULL) return;
#if defined(_WIN32_WCE)
if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
check = 0;
@@ -70,6 +71,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */
png_FILE_p io_ptr;
+ if(png_ptr == NULL) return;
/* Check if data really is near. If so, use usual code. */
near_data = (png_byte *)CVT_PTR_NOCHECK(data);
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
@@ -131,6 +133,9 @@ png_default_flush(png_structp png_ptr)
{
#if !defined(_WIN32_WCE)
png_FILE_p io_ptr;
+#endif
+ if(png_ptr == NULL) return;
+#if !defined(_WIN32_WCE)
io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
if (io_ptr != NULL)
fflush(io_ptr);
@@ -165,6 +170,7 @@ void PNGAPI
png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
{
+ if(png_ptr == NULL) return;
png_ptr->io_ptr = io_ptr;
#if !defined(PNG_NO_STDIO)
diff --git a/png/pngwrite.c b/png/pngwrite.c
index 6cb539b..df7ade3 100644
--- a/png/pngwrite.c
+++ b/png/pngwrite.c
@@ -1,9 +1,9 @@
/* pngwrite.c - general routines to write a PNG file
*
- * libpng 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -26,13 +26,15 @@ void PNGAPI
png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
{
png_debug(1, "in png_write_info_before_PLTE\n");
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
{
png_write_sig(png_ptr); /* write PNG signature */
#if defined(PNG_MNG_FEATURES_SUPPORTED)
if((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&(png_ptr->mng_features_permitted))
{
- png_warning(png_ptr,"MNG features are not allowed in a PNG datastream\n");
+ png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");
png_ptr->mng_features_permitted=0;
}
#endif
@@ -128,13 +130,16 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
png_debug(1, "in png_write_info\n");
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
+
png_write_info_before_PLTE(png_ptr, info_ptr);
if (info_ptr->valid & PNG_INFO_PLTE)
png_write_PLTE(png_ptr, info_ptr->palette,
(png_uint_32)info_ptr->num_palette);
else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- png_error(png_ptr, "Valid palette required for paletted images\n");
+ png_error(png_ptr, "Valid palette required for paletted images");
#if defined(PNG_WRITE_tRNS_SUPPORTED)
if (info_ptr->valid & PNG_INFO_tRNS)
@@ -183,7 +188,7 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
info_ptr->scal_s_width, info_ptr->scal_s_height);
#else
png_warning(png_ptr,
- "png_write_sCAL not supported; sCAL chunk not written.\n");
+ "png_write_sCAL not supported; sCAL chunk not written.");
#endif
#endif
#endif
@@ -222,7 +227,7 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
info_ptr->text[i].lang_key,
info_ptr->text[i].text);
#else
- png_warning(png_ptr, "Unable to write international text\n");
+ png_warning(png_ptr, "Unable to write international text");
#endif
/* Mark this chunk as written */
info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
@@ -236,7 +241,7 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
info_ptr->text[i].text, 0,
info_ptr->text[i].compression);
#else
- png_warning(png_ptr, "Unable to write compressed text\n");
+ png_warning(png_ptr, "Unable to write compressed text");
#endif
/* Mark this chunk as written */
info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
@@ -249,7 +254,7 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
info_ptr->text[i].text,
0);
#else
- png_warning(png_ptr, "Unable to write uncompressed text\n");
+ png_warning(png_ptr, "Unable to write uncompressed text");
#endif
/* Mark this chunk as written */
info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
@@ -290,6 +295,8 @@ void PNGAPI
png_write_end(png_structp png_ptr, png_infop info_ptr)
{
png_debug(1, "in png_write_end\n");
+ if (png_ptr == NULL)
+ return;
if (!(png_ptr->mode & PNG_HAVE_IDAT))
png_error(png_ptr, "No IDATs written into file");
@@ -323,7 +330,7 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
info_ptr->text[i].lang_key,
info_ptr->text[i].text);
#else
- png_warning(png_ptr, "Unable to write international text\n");
+ png_warning(png_ptr, "Unable to write international text");
#endif
/* Mark this chunk as written */
info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
@@ -336,7 +343,7 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
info_ptr->text[i].text, 0,
info_ptr->text[i].compression);
#else
- png_warning(png_ptr, "Unable to write compressed text\n");
+ png_warning(png_ptr, "Unable to write compressed text");
#endif
/* Mark this chunk as written */
info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
@@ -348,7 +355,7 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
png_write_tEXt(png_ptr, info_ptr->text[i].key,
info_ptr->text[i].text, 0);
#else
- png_warning(png_ptr, "Unable to write uncompressed text\n");
+ png_warning(png_ptr, "Unable to write uncompressed text");
#endif
/* Mark this chunk as written */
@@ -454,8 +461,10 @@ png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
#if !defined(PNG_1_0_X)
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+#ifdef PNG_MMX_CODE_SUPPORTED
png_init_mmx_flags(png_ptr); /* 1.2.0 addition */
#endif
+#endif
#endif /* PNG_1_0_X */
/* added at libpng-1.2.6 */
@@ -554,6 +563,8 @@ png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
}
/* Initialize png_ptr structure, and allocate any memory needed */
+#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
+/* Deprecated. */
#undef png_write_init
void PNGAPI
png_write_init(png_structp png_ptr)
@@ -567,6 +578,7 @@ png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
png_size_t png_struct_size, png_size_t png_info_size)
{
/* We only come here via pre-1.0.12-compiled applications */
+ if(png_ptr == NULL) return;
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
if(png_sizeof(png_struct) > png_struct_size ||
png_sizeof(png_info) > png_info_size)
@@ -604,6 +616,7 @@ png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
}
png_write_init_3(&png_ptr, user_png_ver, png_struct_size);
}
+#endif /* PNG_1_0_X || PNG_1_2_X */
void PNGAPI
@@ -614,7 +627,12 @@ png_write_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
#ifdef PNG_SETJMP_SUPPORTED
jmp_buf tmp_jmp; /* to save current jump buffer */
#endif
+
int i = 0;
+
+ if (png_ptr == NULL)
+ return;
+
do
{
if (user_png_ver[i] != png_libpng_ver[i])
@@ -655,8 +673,10 @@ png_write_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
#if !defined(PNG_1_0_X)
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
+#ifdef PNG_MMX_CODE_SUPPORTED
png_init_mmx_flags(png_ptr); /* 1.2.0 addition */
#endif
+#endif
#endif /* PNG_1_0_X */
#ifdef PNG_SETJMP_SUPPORTED
@@ -691,6 +711,10 @@ png_write_rows(png_structp png_ptr, png_bytepp row,
png_bytepp rp; /* row pointer */
png_debug(1, "in png_write_rows\n");
+
+ if (png_ptr == NULL)
+ return;
+
/* loop through the rows */
for (i = 0, rp = row; i < num_rows; i++, rp++)
{
@@ -708,6 +732,9 @@ png_write_image(png_structp png_ptr, png_bytepp image)
int pass, num_pass; /* pass variables */
png_bytepp rp; /* points to current row */
+ if (png_ptr == NULL)
+ return;
+
png_debug(1, "in png_write_image\n");
#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
/* intialize interlace handling. If image is not interlaced,
@@ -731,8 +758,11 @@ png_write_image(png_structp png_ptr, png_bytepp image)
void PNGAPI
png_write_row(png_structp png_ptr, png_bytep row)
{
+ if (png_ptr == NULL)
+ return;
png_debug2(1, "in png_write_row (row %ld, pass %d)\n",
png_ptr->row_number, png_ptr->pass);
+
/* initialize transformations and other stuff if first time */
if (png_ptr->row_number == 0 && png_ptr->pass == 0)
{
@@ -906,6 +936,8 @@ void PNGAPI
png_set_flush(png_structp png_ptr, int nrows)
{
png_debug(1, "in png_set_flush\n");
+ if (png_ptr == NULL)
+ return;
png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);
}
@@ -916,6 +948,8 @@ png_write_flush(png_structp png_ptr)
int wrote_IDAT;
png_debug(1, "in png_write_flush\n");
+ if (png_ptr == NULL)
+ return;
/* We have already written out all of the data */
if (png_ptr->row_number >= png_ptr->num_rows)
return;
@@ -1092,6 +1126,8 @@ void PNGAPI
png_set_filter(png_structp png_ptr, int method, int filters)
{
png_debug(1, "in png_set_filter\n");
+ if (png_ptr == NULL)
+ return;
#if defined(PNG_MNG_FEATURES_SUPPORTED)
if((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
(method == PNG_INTRAPIXEL_DIFFERENCING))
@@ -1200,6 +1236,8 @@ png_set_filter_heuristics(png_structp png_ptr, int heuristic_method,
int i;
png_debug(1, "in png_set_filter_heuristics\n");
+ if (png_ptr == NULL)
+ return;
if (heuristic_method >= PNG_FILTER_HEURISTIC_LAST)
{
png_warning(png_ptr, "Unknown filter heuristic method");
@@ -1312,6 +1350,8 @@ void PNGAPI
png_set_compression_level(png_structp png_ptr, int level)
{
png_debug(1, "in png_set_compression_level\n");
+ if (png_ptr == NULL)
+ return;
png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_LEVEL;
png_ptr->zlib_level = level;
}
@@ -1320,6 +1360,8 @@ void PNGAPI
png_set_compression_mem_level(png_structp png_ptr, int mem_level)
{
png_debug(1, "in png_set_compression_mem_level\n");
+ if (png_ptr == NULL)
+ return;
png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL;
png_ptr->zlib_mem_level = mem_level;
}
@@ -1328,6 +1370,8 @@ void PNGAPI
png_set_compression_strategy(png_structp png_ptr, int strategy)
{
png_debug(1, "in png_set_compression_strategy\n");
+ if (png_ptr == NULL)
+ return;
png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY;
png_ptr->zlib_strategy = strategy;
}
@@ -1335,6 +1379,8 @@ png_set_compression_strategy(png_structp png_ptr, int strategy)
void PNGAPI
png_set_compression_window_bits(png_structp png_ptr, int window_bits)
{
+ if (png_ptr == NULL)
+ return;
if (window_bits > 15)
png_warning(png_ptr, "Only compression windows <= 32k supported by PNG");
else if (window_bits < 8)
@@ -1355,6 +1401,8 @@ void PNGAPI
png_set_compression_method(png_structp png_ptr, int method)
{
png_debug(1, "in png_set_compression_method\n");
+ if (png_ptr == NULL)
+ return;
if (method != 8)
png_warning(png_ptr, "Only compression method 8 is supported by PNG");
png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_METHOD;
@@ -1364,6 +1412,8 @@ png_set_compression_method(png_structp png_ptr, int method)
void PNGAPI
png_set_write_status_fn(png_structp png_ptr, png_write_status_ptr write_row_fn)
{
+ if (png_ptr == NULL)
+ return;
png_ptr->write_row_fn = write_row_fn;
}
@@ -1373,6 +1423,8 @@ png_set_write_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
write_user_transform_fn)
{
png_debug(1, "in png_set_write_user_transform_fn\n");
+ if (png_ptr == NULL)
+ return;
png_ptr->transformations |= PNG_USER_TRANSFORM;
png_ptr->write_user_transform_fn = write_user_transform_fn;
}
@@ -1384,6 +1436,8 @@ void PNGAPI
png_write_png(png_structp png_ptr, png_infop info_ptr,
int transforms, voidp params)
{
+ if (png_ptr == NULL || info_ptr == NULL)
+ return;
#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
/* invert the alpha channel from opacity to transparency */
if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
diff --git a/png/pngwtran.c b/png/pngwtran.c
index d2bf5bc..0372fe6 100644
--- a/png/pngwtran.c
+++ b/png/pngwtran.c
@@ -1,9 +1,9 @@
/* pngwtran.c - transforms the data in a row for PNG writers
*
- * libpng version 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.9 April 14, 2006
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2006 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -60,14 +60,14 @@ png_do_write_transformations(png_structp png_ptr)
png_do_shift(&(png_ptr->row_info), png_ptr->row_buf + 1,
&(png_ptr->shift));
#endif
-#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
- if (png_ptr->transformations & PNG_INVERT_ALPHA)
- png_do_write_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
if (png_ptr->transformations & PNG_SWAP_ALPHA)
png_do_write_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
#endif
+#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
+ if (png_ptr->transformations & PNG_INVERT_ALPHA)
+ png_do_write_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
+#endif
#if defined(PNG_WRITE_BGR_SUPPORTED)
if (png_ptr->transformations & PNG_BGR)
png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1);
@@ -439,9 +439,12 @@ png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
png_uint_32 row_width = row_info->width;
for (i = 0, sp = dp = row; i < row_width; i++)
{
+ /* does nothing
*(dp++) = *(sp++);
*(dp++) = *(sp++);
*(dp++) = *(sp++);
+ */
+ sp+=3; dp = sp;
*(dp++) = (png_byte)(255 - *(sp++));
}
}
@@ -454,12 +457,15 @@ png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
for (i = 0, sp = dp = row; i < row_width; i++)
{
+ /* does nothing
*(dp++) = *(sp++);
*(dp++) = *(sp++);
*(dp++) = *(sp++);
*(dp++) = *(sp++);
*(dp++) = *(sp++);
*(dp++) = *(sp++);
+ */
+ sp+=6; dp = sp;
*(dp++) = (png_byte)(255 - *(sp++));
*(dp++) = (png_byte)(255 - *(sp++));
}
@@ -489,8 +495,11 @@ png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
for (i = 0, sp = dp = row; i < row_width; i++)
{
+ /* does nothing
*(dp++) = *(sp++);
*(dp++) = *(sp++);
+ */
+ sp+=2; dp = sp;
*(dp++) = (png_byte)(255 - *(sp++));
*(dp++) = (png_byte)(255 - *(sp++));
}
diff --git a/png/pngwutil.c b/png/pngwutil.c
index 87f028f..e108c61 100644
--- a/png/pngwutil.c
+++ b/png/pngwutil.c
@@ -1,9 +1,9 @@
/* pngwutil.c - utilities to write a PNG file
*
- * libpng version 1.2.7 - September 12, 2004
+ * Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2005 Glenn Randers-Pehrson
+ * Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -16,7 +16,7 @@
* with unsigned numbers for convenience, although one supported
* ancillary chunk uses signed (two's complement) numbers.
*/
-void /* PRIVATE */
+void PNGAPI
png_save_uint_32(png_bytep buf, png_uint_32 i)
{
buf[0] = (png_byte)((i >> 24) & 0xff);
@@ -25,12 +25,11 @@ png_save_uint_32(png_bytep buf, png_uint_32 i)
buf[3] = (png_byte)(i & 0xff);
}
-#if defined(PNG_WRITE_pCAL_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED)
/* The png_save_int_32 function assumes integers are stored in two's
* complement format. If this isn't the case, then this routine needs to
* be modified to write data in two's complement format.
*/
-void /* PRIVATE */
+void PNGAPI
png_save_int_32(png_bytep buf, png_int_32 i)
{
buf[0] = (png_byte)((i >> 24) & 0xff);
@@ -38,13 +37,12 @@ png_save_int_32(png_bytep buf, png_int_32 i)
buf[2] = (png_byte)((i >> 8) & 0xff);
buf[3] = (png_byte)(i & 0xff);
}
-#endif
/* Place a 16-bit number into a buffer in PNG byte order.
* The parameter is declared unsigned int, not png_uint_16,
* just to avoid potential problems on pre-ANSI C compilers.
*/
-void /* PRIVATE */
+void PNGAPI
png_save_uint_16(png_bytep buf, unsigned int i)
{
buf[0] = (png_byte)((i >> 8) & 0xff);
@@ -64,6 +62,7 @@ void PNGAPI
png_write_chunk(png_structp png_ptr, png_bytep chunk_name,
png_bytep data, png_size_t length)
{
+ if(png_ptr == NULL) return;
png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length);
png_write_chunk_data(png_ptr, data, length);
png_write_chunk_end(png_ptr);
@@ -79,6 +78,7 @@ png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
{
png_byte buf[4];
png_debug2(0, "Writing %s chunk (%lu bytes)\n", chunk_name, length);
+ if(png_ptr == NULL) return;
/* write the length */
png_save_uint_32(buf, length);
@@ -100,6 +100,7 @@ void PNGAPI
png_write_chunk_data(png_structp png_ptr, png_bytep data, png_size_t length)
{
/* write the data, and run the CRC over it */
+ if(png_ptr == NULL) return;
if (data != NULL && length > 0)
{
png_calculate_crc(png_ptr, data, length);
@@ -113,6 +114,8 @@ png_write_chunk_end(png_structp png_ptr)
{
png_byte buf[4];
+ if(png_ptr == NULL) return;
+
/* write the crc */
png_save_uint_32(buf, png_ptr->crc);
@@ -161,9 +164,11 @@ png_text_compress(png_structp png_ptr,
{
int ret;
- comp->num_output_ptr = comp->max_output_ptr = 0;
+ comp->num_output_ptr = 0;
+ comp->max_output_ptr = 0;
comp->output_ptr = NULL;
comp->input = NULL;
+ comp->input_len = 0;
/* we may just want to pass the text right through */
if (compression == PNG_TEXT_COMPRESSION_NONE)
@@ -219,7 +224,7 @@ png_text_compress(png_structp png_ptr,
png_error(png_ptr, "zlib error");
}
/* check to see if we need more room */
- if (!png_ptr->zstream.avail_out && png_ptr->zstream.avail_in)
+ if (!(png_ptr->zstream.avail_out))
{
/* make sure the output array has room */
if (comp->num_output_ptr >= comp->max_output_ptr)
@@ -357,9 +362,9 @@ png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
png_write_chunk_data(png_ptr, png_ptr->zbuf,
png_ptr->zbuf_size - png_ptr->zstream.avail_out);
- /* reset zlib for another zTXt/iTXt or the image data */
+ /* reset zlib for another zTXt/iTXt or image data */
deflateReset(&png_ptr->zstream);
-
+ png_ptr->zstream.data_type = Z_BINARY;
}
#endif
@@ -523,6 +528,9 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
png_ptr->zlib_mem_level, png_ptr->zlib_strategy);
png_ptr->zstream.next_out = png_ptr->zbuf;
png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
+ /* libpng is not interested in zstream.data_type */
+ /* set it to a predefined value, to avoid its evaluation inside zlib */
+ png_ptr->zstream.data_type = Z_BINARY;
png_ptr->mode = PNG_HAVE_IHDR;
}
@@ -725,8 +733,16 @@ png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
png_size_t name_len;
png_charp new_name;
compression_state comp;
+ int embedded_profile_len = 0;
png_debug(1, "in png_write_iCCP\n");
+
+ comp.num_output_ptr = 0;
+ comp.max_output_ptr = 0;
+ comp.output_ptr = NULL;
+ comp.input = NULL;
+ comp.input_len = 0;
+
if (name == NULL || (name_len = png_check_keyword(png_ptr, name,
&new_name)) == 0)
{
@@ -740,6 +756,27 @@ png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
if (profile == NULL)
profile_len = 0;
+ if (profile_len > 3)
+ embedded_profile_len =
+ ((*( (png_bytep)profile ))<<24) |
+ ((*( (png_bytep)profile+1))<<16) |
+ ((*( (png_bytep)profile+2))<< 8) |
+ ((*( (png_bytep)profile+3)) );
+
+ if (profile_len < embedded_profile_len)
+ {
+ png_warning(png_ptr,
+ "Embedded profile length too large in iCCP chunk");
+ return;
+ }
+
+ if (profile_len > embedded_profile_len)
+ {
+ png_warning(png_ptr,
+ "Truncating profile to actual length in iCCP chunk");
+ profile_len = embedded_profile_len;
+ }
+
if (profile_len)
profile_len = png_text_compress(png_ptr, profile, (png_size_t)profile_len,
PNG_COMPRESSION_TYPE_BASE, &comp);
@@ -927,8 +964,7 @@ png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
itemp = (png_uint_32)(white_y * 100000.0 + 0.5);
png_save_uint_32(buf + 4, itemp);
- if (red_x < 0 || red_x > 0.8 || red_y < 0 || red_y > 0.8 ||
- red_x + red_y > 1.0)
+ if (red_x < 0 || red_y < 0 || red_x + red_y > 1.0)
{
png_warning(png_ptr, "Invalid cHRM red point specified");
return;
@@ -938,8 +974,7 @@ png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
itemp = (png_uint_32)(red_y * 100000.0 + 0.5);
png_save_uint_32(buf + 12, itemp);
- if (green_x < 0 || green_x > 0.8 || green_y < 0 || green_y > 0.8 ||
- green_x + green_y > 1.0)
+ if (green_x < 0 || green_y < 0 || green_x + green_y > 1.0)
{
png_warning(png_ptr, "Invalid cHRM green point specified");
return;
@@ -949,8 +984,7 @@ png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
itemp = (png_uint_32)(green_y * 100000.0 + 0.5);
png_save_uint_32(buf + 20, itemp);
- if (blue_x < 0 || blue_x > 0.8 || blue_y < 0 || blue_y > 0.8 ||
- blue_x + blue_y > 1.0)
+ if (blue_x < 0 || blue_y < 0 || blue_x + blue_y > 1.0)
{
png_warning(png_ptr, "Invalid cHRM blue point specified");
return;
@@ -988,7 +1022,7 @@ png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
png_save_uint_32(buf, (png_uint_32)white_x);
png_save_uint_32(buf + 4, (png_uint_32)white_y);
- if (red_x > 80000L || red_y > 80000L || red_x + red_y > 100000L)
+ if (red_x + red_y > 100000L)
{
png_warning(png_ptr, "Invalid cHRM fixed red point specified");
return;
@@ -996,7 +1030,7 @@ png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
png_save_uint_32(buf + 8, (png_uint_32)red_x);
png_save_uint_32(buf + 12, (png_uint_32)red_y);
- if (green_x > 80000L || green_y > 80000L || green_x + green_y > 100000L)
+ if (green_x + green_y > 100000L)
{
png_warning(png_ptr, "Invalid fixed cHRM green point specified");
return;
@@ -1004,7 +1038,7 @@ png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
png_save_uint_32(buf + 16, (png_uint_32)green_x);
png_save_uint_32(buf + 20, (png_uint_32)green_y);
- if (blue_x > 80000L || blue_y > 80000L || blue_x + blue_y > 100000L)
+ if (blue_x + blue_y > 100000L)
{
png_warning(png_ptr, "Invalid fixed cHRM blue point specified");
return;
@@ -1341,6 +1375,12 @@ png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
png_debug(1, "in png_write_zTXt\n");
+ comp.num_output_ptr = 0;
+ comp.max_output_ptr = 0;
+ comp.output_ptr = NULL;
+ comp.input = NULL;
+ comp.input_len = 0;
+
if (key == NULL || (key_len = png_check_keyword(png_ptr, key, &new_key))==0)
{
png_warning(png_ptr, "Empty keyword in zTXt chunk");
@@ -1394,6 +1434,11 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
png_debug(1, "in png_write_iTXt\n");
+ comp.num_output_ptr = 0;
+ comp.max_output_ptr = 0;
+ comp.output_ptr = NULL;
+ comp.input = NULL;
+
if (key == NULL || (key_len = png_check_keyword(png_ptr, key, &new_key))==0)
{
png_warning(png_ptr, "Empty keyword in iTXt chunk");
@@ -1549,39 +1594,41 @@ png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0,
/* write the sCAL chunk */
#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
void /* PRIVATE */
-png_write_sCAL(png_structp png_ptr, int unit, double width,double height)
+png_write_sCAL(png_structp png_ptr, int unit, double width, double height)
{
#ifdef PNG_USE_LOCAL_ARRAYS
PNG_sCAL;
#endif
+ char buf[64];
png_size_t total_len;
- char wbuf[32], hbuf[32];
- png_byte bunit = unit;
png_debug(1, "in png_write_sCAL\n");
+ buf[0] = (char)unit;
#if defined(_WIN32_WCE)
/* sprintf() function is not supported on WindowsCE */
{
wchar_t wc_buf[32];
+ size_t wc_len;
swprintf(wc_buf, TEXT("%12.12e"), width);
- WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, wbuf, 32, NULL, NULL);
+ wc_len = wcslen(wc_buf);
+ WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, buf + 1, wc_len, NULL, NULL);
+ total_len = wc_len + 2;
swprintf(wc_buf, TEXT("%12.12e"), height);
- WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, hbuf, 32, NULL, NULL);
+ wc_len = wcslen(wc_buf);
+ WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, buf + total_len, wc_len,
+ NULL, NULL);
+ total_len += wc_len;
}
#else
- sprintf(wbuf, "%12.12e", width);
- sprintf(hbuf, "%12.12e", height);
+ sprintf(buf + 1, "%12.12e", width);
+ total_len = 1 + png_strlen(buf + 1) + 1;
+ sprintf(buf + total_len, "%12.12e", height);
+ total_len += png_strlen(buf + total_len);
#endif
- total_len = 1 + png_strlen(wbuf)+1 + png_strlen(hbuf);
- png_debug1(3, "sCAL total length = %d\n", (int)total_len);
- png_write_chunk_start(png_ptr, (png_bytep)png_sCAL, (png_uint_32)total_len);
- png_write_chunk_data(png_ptr, (png_bytep)&bunit, 1);
- png_write_chunk_data(png_ptr, (png_bytep)wbuf, png_strlen(wbuf)+1);
- png_write_chunk_data(png_ptr, (png_bytep)hbuf, png_strlen(hbuf));
-
- png_write_chunk_end(png_ptr);
+ png_debug1(3, "sCAL total length = %u\n", (unsigned int)total_len);
+ png_write_chunk(png_ptr, (png_bytep)png_sCAL, (png_bytep)buf, total_len);
}
#else
#ifdef PNG_FIXED_POINT_SUPPORTED
@@ -1592,23 +1639,26 @@ png_write_sCAL_s(png_structp png_ptr, int unit, png_charp width,
#ifdef PNG_USE_LOCAL_ARRAYS
PNG_sCAL;
#endif
- png_size_t total_len;
- char wbuf[32], hbuf[32];
- png_byte bunit = unit;
+ png_byte buf[64];
+ png_size_t wlen, hlen, total_len;
png_debug(1, "in png_write_sCAL_s\n");
- png_strcpy(wbuf,(const char *)width);
- png_strcpy(hbuf,(const char *)height);
- total_len = 1 + png_strlen(wbuf)+1 + png_strlen(hbuf);
+ wlen = png_strlen(width);
+ hlen = png_strlen(height);
+ total_len = wlen + hlen + 2;
+ if (total_len > 64)
+ {
+ png_warning(png_ptr, "Can't write sCAL (buffer too small)");
+ return;
+ }
- png_debug1(3, "sCAL total length = %d\n", total_len);
- png_write_chunk_start(png_ptr, (png_bytep)png_sCAL, (png_uint_32)total_len);
- png_write_chunk_data(png_ptr, (png_bytep)&bunit, 1);
- png_write_chunk_data(png_ptr, (png_bytep)wbuf, png_strlen(wbuf)+1);
- png_write_chunk_data(png_ptr, (png_bytep)hbuf, png_strlen(hbuf));
+ buf[0] = (png_byte)unit;
+ png_memcpy(buf + 1, width, wlen + 1); /* append the '\0' here */
+ png_memcpy(buf + wlen + 2, height, hlen); /* do NOT append the '\0' here */
- png_write_chunk_end(png_ptr);
+ png_debug1(3, "sCAL total length = %u\n", (unsigned int)total_len);
+ png_write_chunk(png_ptr, (png_bytep)png_sCAL, buf, total_len);
}
#endif
#endif
@@ -1871,6 +1921,7 @@ png_write_finish_row(png_structp png_ptr)
}
deflateReset(&png_ptr->zstream);
+ png_ptr->zstream.data_type = Z_BINARY;
}
#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
@@ -2048,7 +2099,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
* been specified by the application, and then writes the row out with the
* chosen filter.
*/
-#define PNG_MAXSUM (~((png_uint_32)0) >> 1)
+#define PNG_MAXSUM (((png_uint_32)(-1)) >> 1)
#define PNG_HISHIFT 10
#define PNG_LOMASK ((png_uint_32)0xffffL)
#define PNG_HIMASK ((png_uint_32)(~PNG_LOMASK >> PNG_HISHIFT))
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 26d762f..ba96445 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -104,8 +104,10 @@ SET(CPPFILES
fl_engraved_label.cxx
fl_file_dir.cxx
fl_font.cxx
+ fl_gtk.cxx
fl_labeltype.cxx
fl_line_style.cxx
+ fl_open_uri.cxx
fl_oval_box.cxx
fl_overlay.cxx
fl_overlay_visual.cxx
@@ -136,6 +138,10 @@ SET(GLCPPFILES
Fl_Gl_Choice.cxx
Fl_Gl_Overlay.cxx
Fl_Gl_Window.cxx
+ freeglut_geometry.cxx
+ freeglut_stroke_mono_roman.cxx
+ freeglut_stroke_roman.cxx
+ freeglut_teapot.cxx
gl_draw.cxx
gl_start.cxx
glut_compatability.cxx
diff --git a/src/Fl.cxx b/src/Fl.cxx
index 535e305..0ea325b 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: Fl.cxx 5654 2007-02-02 13:52:37Z matt $"
//
// Main event handling code for the Fast Light Tool Kit (FLTK).
//
@@ -71,13 +71,19 @@ int Fl::damage_,
Fl::e_state,
Fl::e_clicks,
Fl::e_is_click,
- Fl::e_keysym;
+ Fl::e_keysym,
+ Fl::e_original_keysym;
char *Fl::e_text = (char *)"";
int Fl::e_length;
int Fl::visible_focus_ = 1,
Fl::dnd_text_ops_ = 1;
+Fl_Window *fl_xfocus; // which window X thinks has focus
+Fl_Window *fl_xmousewin;// which window X thinks has FL_ENTER
+Fl_Window *Fl::grab_; // most recent Fl::grab()
+Fl_Window *Fl::modal_; // topmost modal() window
+
//
// 'Fl::version()' - Return the API version number...
//
@@ -254,7 +260,22 @@ void Fl::remove_check(Fl_Timeout_Handler cb, void *argp) {
}
}
-#if !defined(__APPLE__)
+/**
+ * Return 1, if a check with the same handler and data pointer
+ * is pending, 0 otherwise.
+ */
+int Fl::has_check(Fl_Timeout_Handler cb, void *argp) {
+ for (Check** p = &first_check; *p;) {
+ Check* t = *p;
+ if (t->cb == cb && t->arg == argp) {
+ return 1;
+ } else {
+ p = &(t->next);
+ }
+ }
+ return 0;
+}
+
static void run_checks()
{
// checks are a bit messy so that add/remove and wait may be called
@@ -268,9 +289,10 @@ static void run_checks()
next_check = first_check;
}
}
-#endif // !__APPLE__
+#ifndef WIN32
static char in_idle;
+#endif
////////////////////////////////////////////////////////////////
// wait/run/check/ready:
@@ -290,7 +312,7 @@ double Fl::wait(double time_to_wait) {
#elif defined(__APPLE__)
- flush();
+ run_checks();
if (idle) {
if (!in_idle) {
in_idle = 1;
@@ -300,6 +322,7 @@ double Fl::wait(double time_to_wait) {
// the idle function may turn off idle, we can then wait:
if (idle) time_to_wait = 0.0;
}
+ flush();
return fl_wait(time_to_wait);
#else
@@ -355,16 +378,26 @@ double Fl::wait(double time_to_wait) {
int Fl::run() {
while (Fl_X::first) wait(FOREVER);
-#ifdef WIN32
- fl_free_fonts(); // do some WIN32 cleanup
- fl_cleanup_pens();
- OleUninitialize();
- fl_brush_action(1);
- fl_cleanup_dc_list();
-#endif
return 0;
}
+#ifdef WIN32
+class Fl_Win32_At_Exit {
+public:
+ Fl_Win32_At_Exit() { }
+ ~Fl_Win32_At_Exit() {
+ fl_free_fonts(); // do some WIN32 cleanup
+ fl_cleanup_pens();
+ OleUninitialize();
+ fl_brush_action(1);
+ fl_cleanup_dc_list();
+ }
+};
+static Fl_Win32_At_Exit win32_at_exit;
+#endif
+
+
+
int Fl::wait() {
if (!Fl_X::first) return 0;
wait(FOREVER);
@@ -514,6 +547,14 @@ void Fl::focus(Fl_Widget *o) {
if (o != p) {
Fl::compose_reset();
focus_ = o;
+ // make sure that fl_xfocus is set to the top level window
+ // of this widget, or fl_fix_focus will clear our focus again
+ if (o) {
+ Fl_Window *win = 0, *w1 = o->window();
+ while (w1) { win=w1; w1=win->window(); }
+ if (win) fl_xfocus = win;
+ }
+ // take focus from the old focused window
fl_oldfocus = 0;
int old_event = e_number;
e_number = FL_UNFOCUS;
@@ -545,11 +586,6 @@ void Fl::pushed(Fl_Widget *o) {
pushed_ = o;
}
-Fl_Window *fl_xfocus; // which window X thinks has focus
-Fl_Window *fl_xmousewin;// which window X thinks has FL_ENTER
-Fl_Window *Fl::grab_; // most recent Fl::grab()
-Fl_Window *Fl::modal_; // topmost modal() window
-
static void nothing(Fl_Widget *) {}
void (*Fl_Tooltip::enter)(Fl_Widget *) = nothing;
void (*Fl_Tooltip::exit)(Fl_Widget *) = nothing;
@@ -760,6 +796,20 @@ int Fl::handle(int e, Fl_Window* window)
fl_fix_focus();
return 1;
+ case FL_KEYUP:
+ // Send the key-up to the current focus. This is not
+ // always the same widget that received the corresponding
+ // FL_KEYBOARD event because focus may have changed.
+ // Sending the KEYUP to the right KEYDOWN is possible, but
+ // would require that we track the KEYDOWN for every possible
+ // key stroke (users may hold down multiple keys!) and then
+ // make sure that the widget still exists before sending
+ // a KEYUP there. I believe that the current solution is
+ // "close enough".
+ for (wi = grab() ? grab() : focus(); wi; wi = wi->parent())
+ if (send(FL_KEYUP, wi, window)) return 1;
+ return 0;
+
case FL_KEYBOARD:
#ifdef DEBUG
printf("Fl::handle(e=%d, window=%p);\n", e, window);
@@ -787,8 +837,17 @@ int Fl::handle(int e, Fl_Window* window)
if (grab()) {wi = grab(); break;} // send it to grab window
// Try it as shortcut, sending to mouse widget and all parents:
- wi = belowmouse(); if (!wi) {wi = modal(); if (!wi) wi = window;}
- for (; wi; wi = wi->parent()) if (send(FL_SHORTCUT, wi, window)) return 1;
+ wi = belowmouse();
+ if (!wi) {
+ wi = modal();
+ if (!wi) wi = window;
+ } else if (wi->window() != first_window()) {
+ if (send(FL_SHORTCUT, first_window(), first_window())) return 1;
+ }
+
+ for (; wi; wi = wi->parent()) {
+ if (send(FL_SHORTCUT, wi, wi->window())) return 1;
+ }
// try using add_handle() functions:
if (send_handlers(FL_SHORTCUT)) return 1;
@@ -827,10 +886,16 @@ int Fl::handle(int e, Fl_Window* window)
case FL_MOUSEWHEEL:
fl_xfocus = window; // this should not happen! But maybe it does:
- // Try sending it to the grab and then the window:
- if (grab()) {
+ // Try sending it to the "grab" first
+ if (grab() && grab()!=modal() && grab()!=window) {
if (send(FL_MOUSEWHEEL, grab(), window)) return 1;
}
+ // Now try sending it to the "modal" window
+ if (modal()) {
+ send(FL_MOUSEWHEEL, modal(), window);
+ return 1;
+ }
+ // Finally try sending it to the window, the event occured in
if (send(FL_MOUSEWHEEL, window, window)) return 1;
default:
break;
@@ -860,23 +925,13 @@ void Fl_Window::hide() {
Fl_X** pp = &Fl_X::first;
for (; *pp != ip; pp = &(*pp)->next) if (!*pp) return;
*pp = ip->next;
-
-#ifdef __APPLE_QD__
- // remove all childwindow links
- for ( Fl_X *pc = Fl_X::first; pc; pc = pc->next )
- {
- if ( pc->xidNext == ip ) pc->xidNext = ip->xidNext;
- if ( pc->xidChildren == ip ) pc->xidChildren = ip->xidNext;
- }
-#elif defined(__APPLE_QUARTZ__)
- // remove all childwindow links
- for ( Fl_X *pc = Fl_X::first; pc; pc = pc->next )
- {
- if ( pc->xidNext == ip ) pc->xidNext = ip->xidNext;
- if ( pc->xidChildren == ip ) pc->xidChildren = ip->xidNext;
- }
-#endif // __APPLE__
-
+#ifdef __APPLE__
+ MacUnlinkWindow(ip);
+ // MacOS X manages a single pointer per application. Make sure that hiding
+ // a toplevel window will not leave us with some random pointer shape, or
+ // worst case, an invisible pointer
+ if (!parent()) cursor(FL_CURSOR_DEFAULT);
+#endif
i = 0;
// recursively remove any subwindows:
@@ -920,32 +975,28 @@ void Fl_Window::hide() {
fl_gc = 0;
}
#elif defined(__APPLE_QD__)
- if ( ip->xid == fl_window )
+ if ( ip->xid == fl_window && !parent() )
fl_window = 0;
#elif defined(__APPLE_QUARTZ__)
Fl_X::q_release_context(ip);
- if ( ip->xid == fl_window )
+ if ( ip->xid == fl_window && !parent() )
fl_window = 0;
#endif
if (ip->region) XDestroyRegion(ip->region);
#ifdef WIN32
+ // this little trickery seems to avoid the popup window stacking problem
+ HWND p = GetForegroundWindow();
+ if (p==GetParent(ip->xid)) {
+ ShowWindow(ip->xid, SW_HIDE);
+ ShowWindow(p, SW_SHOWNA);
+ }
XDestroyWindow(fl_display, ip->xid);
#elif defined(__APPLE_QD__)
- if ( !parent() ) // don't destroy shared windows!
- {
- //+ RemoveTrackingHandler( dndTrackingHandler, ip->xid );
- //+ RemoveReceiveHandler( dndReceiveHandler, ip->xid );
- XDestroyWindow(fl_display, ip->xid);
- }
+ MacDestroyWindow(this, ip->xid);
#elif defined(__APPLE_QUARTZ__)
- if ( !parent() ) // don't destroy shared windows!
- {
- //+ RemoveTrackingHandler( dndTrackingHandler, ip->xid );
- //+ RemoveReceiveHandler( dndReceiveHandler, ip->xid );
- XDestroyWindow(fl_display, ip->xid);
- }
+ MacDestroyWindow(this, ip->xid);
#else
# if USE_XFT
fl_destroy_xft_draw(ip->xid);
@@ -979,7 +1030,15 @@ int Fl_Window::handle(int ev)
switch (ev) {
case FL_SHOW:
if (!shown()) show();
- else XMapWindow(fl_display, fl_xid(this)); // extra map calls are harmless
+ else {
+#ifdef __APPLE_QD__
+ MacMapWindow(this, fl_xid(this));
+#elif defined(__APPLE_QUARTZ__)
+ MacMapWindow(this, fl_xid(this));
+#else
+ XMapWindow(fl_display, fl_xid(this)); // extra map calls are harmless
+#endif // __APPLE__
+ }
break;
case FL_HIDE:
if (shown()) {
@@ -995,11 +1054,9 @@ int Fl_Window::handle(int ev)
if (p->type() >= FL_WINDOW) break; // don't do the unmap
}
#ifdef __APPLE_QD__
- hide();
- set_visible();
+ MacUnmapWindow(this, fl_xid(this));
#elif defined(__APPLE_QUARTZ__)
- hide();
- set_visible();
+ MacUnmapWindow(this, fl_xid(this));
#else
XUnmapWindow(fl_display, fl_xid(this));
#endif // __APPLE__
@@ -1197,7 +1254,54 @@ Fl::do_widget_deletion() {
num_dwidgets = 0;
}
+static Fl_Widget ***widget_watch = 0;
+static int num_widget_watch = 0;
+static int max_widget_watch = 0;
+
+void Fl::watch_widget_pointer(Fl_Widget *&w)
+{
+ Fl_Widget **wp = &w;
+ int i;
+ for (i=0; i<num_widget_watch; ++i) {
+ if (widget_watch[i]==wp) return;
+ }
+ for (i=0; i<num_widget_watch; ++i) {
+ if (widget_watch[i]==0L) {
+ widget_watch[i] = wp;
+ return;
+ }
+ }
+ if (num_widget_watch==max_widget_watch) {
+ max_widget_watch += 8;
+ widget_watch = (Fl_Widget***)realloc(widget_watch, sizeof(Fl_Widget**)*max_widget_watch);
+ }
+ widget_watch[num_widget_watch++] = wp;
+}
+
+void Fl::release_widget_pointer(Fl_Widget *&w)
+{
+ Fl_Widget **wp = &w;
+ int i;
+ for (i=0; i<num_widget_watch; ++i) {
+ if (widget_watch[i]==wp) {
+ widget_watch[i] = 0L;
+ return;
+ }
+ }
+}
+
+void Fl::clear_widget_pointer(Fl_Widget const *w)
+{
+ if (w==0L) return;
+ int i;
+ for (i=0; i<num_widget_watch; ++i) {
+ if (widget_watch[i] && *widget_watch[i]==w) {
+ *widget_watch[i] = 0L;
+ }
+ }
+}
+
//
-// End of "$Id: Fl.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: Fl.cxx 5654 2007-02-02 13:52:37Z matt $".
//
diff --git a/src/Fl_Adjuster.cxx b/src/Fl_Adjuster.cxx
index 81bb30f..5a2bfab 100644
--- a/src/Fl_Adjuster.cxx
+++ b/src/Fl_Adjuster.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Adjuster.cxx 4609 2005-10-30 17:42:21Z mike $"
+// "$Id: Fl_Adjuster.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Adjuster widget for the Fast Light Tool Kit (FLTK).
//
@@ -167,5 +167,5 @@ Fl_Adjuster::Fl_Adjuster(int X, int Y, int W, int H, const char* l)
}
//
-// End of "$Id: Fl_Adjuster.cxx 4609 2005-10-30 17:42:21Z mike $".
+// End of "$Id: Fl_Adjuster.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_BMP_Image.cxx b/src/Fl_BMP_Image.cxx
index b71808f..5c622cd 100644
--- a/src/Fl_BMP_Image.cxx
+++ b/src/Fl_BMP_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_BMP_Image.cxx 4427 2005-07-16 08:38:52Z matt $"
+// "$Id: Fl_BMP_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_BMP_Image routines.
//
@@ -489,5 +489,5 @@ read_long(FILE *fp) { // I - File to read from
//
-// End of "$Id: Fl_BMP_Image.cxx 4427 2005-07-16 08:38:52Z matt $".
+// End of "$Id: Fl_BMP_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Bitmap.cxx b/src/Fl_Bitmap.cxx
index 5c06757..407081d 100644
--- a/src/Fl_Bitmap.cxx
+++ b/src/Fl_Bitmap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Bitmap.cxx 4564 2005-09-12 23:12:06Z matt $"
+// "$Id: Fl_Bitmap.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Bitmap drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -396,7 +396,7 @@ void Fl_Bitmap::draw(int XP, int YP, int WP, int HP, int cx, int cy) {
#elif defined(__APPLE_QUARTZ__)
if (!id) id = fl_create_bitmask(w(), h(), array);
if (id && fl_gc) {
- CGRect rect = { X, Y, W, H };
+ CGRect rect = { { X, Y }, { W, H } };
Fl_X::q_begin_image(rect, cx, cy, w(), h());
CGContextDrawImage(fl_gc, rect, (CGImageRef)id);
Fl_X::q_end_image();
@@ -514,5 +514,5 @@ Fl_Image *Fl_Bitmap::copy(int W, int H) {
//
-// End of "$Id: Fl_Bitmap.cxx 4564 2005-09-12 23:12:06Z matt $".
+// End of "$Id: Fl_Bitmap.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Box.cxx b/src/Fl_Box.cxx
index 28e151d..34b63d7 100644
--- a/src/Fl_Box.cxx
+++ b/src/Fl_Box.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Box.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Box.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Box widget for the Fast Light Tool Kit (FLTK).
//
@@ -40,5 +40,5 @@ int Fl_Box::handle(int event) {
//
-// End of "$Id: Fl_Box.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Box.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Browser.cxx b/src/Fl_Browser.cxx
index ffaa14c..021419a 100644
--- a/src/Fl_Browser.cxx
+++ b/src/Fl_Browser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Browser.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Browser.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Browser widget for the Fast Light Tool Kit (FLTK).
//
@@ -503,6 +503,7 @@ int Fl_Browser::value() const {
void Fl_Browser::swap(FL_BLINE *a, FL_BLINE *b) {
if ( a == b || !a || !b) return; // nothing to do
+ swapping(a, b);
FL_BLINE *aprev = a->prev;
FL_BLINE *anext = a->next;
FL_BLINE *bprev = b->prev;
@@ -535,8 +536,7 @@ void Fl_Browser::swap(FL_BLINE *a, FL_BLINE *b) {
}
// Disable cache -- we played around with positions
cacheline = 0;
- // Redraw modified lines
- redraw_lines();
+ cache = 0;
}
void Fl_Browser::swap(int ai, int bi) {
@@ -547,5 +547,5 @@ void Fl_Browser::swap(int ai, int bi) {
}
//
-// End of "$Id: Fl_Browser.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Browser.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Browser_.cxx b/src/Fl_Browser_.cxx
index 9d863a6..97998a1 100644
--- a/src/Fl_Browser_.cxx
+++ b/src/Fl_Browser_.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Browser_.cxx 4729 2005-12-31 18:26:01Z matt $"
+// "$Id: Fl_Browser_.cxx 5639 2007-01-24 20:32:54Z matt $"
//
// Base Browser widget class for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -67,8 +67,20 @@ static void hscrollbar_callback(Fl_Widget* s, void*) {
((Fl_Browser_*)(s->parent()))->hposition(int(((Fl_Scrollbar*)s)->value()));
}
+// Scrollbar size should be part of the Fl class, but is left here for
+// binary compatibility in 1.1.x - M. Sweet
int Fl_Browser_::scrollbar_width_ = 16;
+// Get the standard scrollbar size
+int Fl::scrollbar_size() {
+ return Fl_Browser_::scrollbar_width();
+}
+
+// Set the standard scrollbar size
+void Fl::scrollbar_size(int W) {
+ Fl_Browser_::scrollbar_width(W);
+}
+
// return where to draw the actual box:
void Fl_Browser_::bbox(int& X, int& Y, int& W, int& H) const {
Fl_Boxtype b = box() ? box() : FL_DOWN_BOX;
@@ -470,6 +482,15 @@ void Fl_Browser_::replacing(void* a, void* b) {
if (a == max_width_item) {max_width_item = 0; max_width = 0;}
}
+void Fl_Browser_::swapping(void* a, void* b) {
+ redraw_line(a);
+ redraw_line(b);
+ if (a == selection_) selection_ = b;
+ else if (b == selection_) selection_ = a;
+ if (a == top_) top_ = b;
+ else if (b == top_) top_ = a;
+}
+
void Fl_Browser_::inserting(void* a, void* b) {
if (displayed(a)) redraw_lines();
if (a == top_) top_ = b;
@@ -557,32 +578,32 @@ int Fl_Browser_::handle(int event) {
if (type()==FL_HOLD_BROWSER) switch (Fl::event_key()) {
case FL_Down:
while ((l = item_next(l)))
- if (item_height(l)>0) {select_only(l, 1); break;}
+ if (item_height(l)>0) {select_only(l, when()); break;}
return 1;
case FL_Up:
while ((l = item_prev(l))) if (item_height(l)>0) {
- select_only(l, 1); break;}
+ select_only(l, when()); break;}
return 1;
} else switch (Fl::event_key()) {
case FL_Enter:
case FL_KP_Enter:
- select_only(l, 1);
+ select_only(l, when());
return 1;
case ' ':
selection_ = l;
- select(l, !item_selected(l), 1);
+ select(l, !item_selected(l), when());
return 1;
case FL_Down:
while ((l = item_next(l))) {
if (Fl::event_state(FL_SHIFT|FL_CTRL))
- select(l, l1 ? item_selected(l1) : 1, 1);
+ select(l, l1 ? item_selected(l1) : 1, when());
if (item_height(l)>0) goto J1;
}
return 1;
case FL_Up:
while ((l = item_prev(l))) {
if (Fl::event_state(FL_SHIFT|FL_CTRL))
- select(l, l1 ? item_selected(l1) : 1, 1);
+ select(l, l1 ? item_selected(l1) : 1, when());
if (item_height(l)>0) goto J1;
}
return 1;
@@ -803,5 +824,5 @@ void Fl_Browser_::item_select(void*, int) {}
int Fl_Browser_::item_selected(void* l) const {return l==selection_;}
//
-// End of "$Id: Fl_Browser_.cxx 4729 2005-12-31 18:26:01Z matt $".
+// End of "$Id: Fl_Browser_.cxx 5639 2007-01-24 20:32:54Z matt $".
//
diff --git a/src/Fl_Browser_load.cxx b/src/Fl_Browser_load.cxx
index a26e430..0ba1531 100644
--- a/src/Fl_Browser_load.cxx
+++ b/src/Fl_Browser_load.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Browser_load.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Browser_load.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// File loading routines for the Fast Light Tool Kit (FLTK).
//
@@ -53,5 +53,5 @@ int Fl_Browser::load(const char *filename) {
}
//
-// End of "$Id: Fl_Browser_load.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Browser_load.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Button.cxx b/src/Fl_Button.cxx
index da66f33..fbdf981 100644
--- a/src/Fl_Button.cxx
+++ b/src/Fl_Button.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Button.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Button.cxx 5489 2006-09-25 16:36:52Z mike $"
//
// Button widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -40,7 +40,8 @@ int Fl_Button::value(int v) {
clear_changed();
if (value_ != v) {
value_ = v;
- redraw();
+ if (box()) redraw();
+ else redraw_label();
return 1;
} else {
return 0;
@@ -60,9 +61,13 @@ void Fl_Button::setonly() { // set this radio button on, turn others off
void Fl_Button::draw() {
if (type() == FL_HIDDEN_BUTTON) return;
Fl_Color col = value() ? selection_color() : color();
-//if (col == FL_GRAY && Fl::belowmouse()==this) col = FL_LIGHT1;
draw_box(value() ? (down_box()?down_box():fl_down(box())) : box(), col);
- draw_label();
+ if (labeltype() == FL_NORMAL_LABEL && value()) {
+ Fl_Color c = labelcolor();
+ labelcolor(fl_contrast(c, col));
+ draw_label();
+ labelcolor(c);
+ } else draw_label();
if (Fl::focus() == this) draw_focus();
}
@@ -160,5 +165,5 @@ Fl_Button::Fl_Button(int X, int Y, int W, int H, const char *l)
}
//
-// End of "$Id: Fl_Button.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Button.cxx 5489 2006-09-25 16:36:52Z mike $".
//
diff --git a/src/Fl_Chart.cxx b/src/Fl_Chart.cxx
index 56df358..a65db35 100644
--- a/src/Fl_Chart.cxx
+++ b/src/Fl_Chart.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Chart.cxx 4609 2005-10-30 17:42:21Z mike $"
+// "$Id: Fl_Chart.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Forms-compatible chart widget for the Fast Light Tool Kit (FLTK).
//
@@ -386,5 +386,5 @@ void Fl_Chart::maxsize(int m) {
}
//
-// End of "$Id: Fl_Chart.cxx 4609 2005-10-30 17:42:21Z mike $".
+// End of "$Id: Fl_Chart.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Check_Browser.cxx b/src/Fl_Check_Browser.cxx
index a7fc608..48d0ecb 100644
--- a/src/Fl_Check_Browser.cxx
+++ b/src/Fl_Check_Browser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Check_Browser.cxx 4619 2005-11-02 10:48:05Z matt $"
+// "$Id: Fl_Check_Browser.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_Check_Browser header file for the Fast Light Tool Kit (FLTK).
//
@@ -266,7 +266,12 @@ void Fl_Check_Browser::check_none() {
redraw();
}
+int Fl_Check_Browser::handle(int event) {
+ if (event==FL_PUSH)
+ deselect();
+ return Fl_Browser_::handle(event);
+}
//
-// End of "$Id: Fl_Check_Browser.cxx 4619 2005-11-02 10:48:05Z matt $".
+// End of "$Id: Fl_Check_Browser.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Check_Button.cxx b/src/Fl_Check_Button.cxx
index ab89db4..a2b88f8 100644
--- a/src/Fl_Check_Button.cxx
+++ b/src/Fl_Check_Button.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Check_Button.cxx 4627 2005-11-02 14:18:32Z matt $"
+// "$Id: Fl_Check_Button.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Check button widget for the Fast Light Tool Kit (FLTK).
//
diff --git a/src/Fl_Choice.cxx b/src/Fl_Choice.cxx
index afa3398..dcb9bfb 100644
--- a/src/Fl_Choice.cxx
+++ b/src/Fl_Choice.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Choice.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Choice.cxx 5485 2006-09-24 13:35:23Z mike $"
//
// Choice widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -28,6 +28,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Choice.H>
#include <FL/fl_draw.H>
+#include "flstring.h"
// Emulates the Forms choice widget. This is almost exactly the same
// as an Fl_Menu_Button. The only difference is the appearance of the
@@ -48,11 +49,26 @@ void Fl_Choice::draw() {
draw_box(FL_UP_BOX, color());
fl_color(active_r() ? labelcolor() : fl_inactive(labelcolor()));
- fl_polygon(x1, y1 + 3, x1 + w1, y1 + w1 + 3, x1 + 2 * w1, y1 + 3);
- fl_polygon(x1, y1 + 1, x1 + w1, y1 - w1 + 1, x1 + 2 * w1, y1 + 1);
+ if (!strcmp(Fl::scheme(), "plastic")) {
+ // Show larger up/down arrows...
+ fl_polygon(x1, y1 + 3, x1 + w1, y1 + w1 + 3, x1 + 2 * w1, y1 + 3);
+ fl_polygon(x1, y1 + 1, x1 + w1, y1 - w1 + 1, x1 + 2 * w1, y1 + 1);
+ } else {
+ // Show smaller up/down arrows with a divider...
+ x1 = x() + w() - 13 - dx;
+ y1 = y() + h() / 2;
+ fl_polygon(x1, y1 - 2, x1 + 3, y1 - 5, x1 + 6, y1 - 2);
+ fl_polygon(x1, y1 + 2, x1 + 3, y1 + 5, x1 + 6, y1 + 2);
+
+ fl_color(fl_darker(color()));
+ fl_yxline(x1 - 7, y1 - 8, y1 + 8);
+
+ fl_color(fl_lighter(color()));
+ fl_yxline(x1 - 6, y1 - 8, y1 + 8);
+ }
} else {
- draw_box(FL_DOWN_BOX, color());
- draw_box(FL_UP_BOX,X,Y,W,H,FL_GRAY);
+ draw_box(FL_DOWN_BOX, FL_BACKGROUND2_COLOR);
+ draw_box(FL_UP_BOX,X,Y,W,H,color());
fl_color(active_r() ? labelcolor() : fl_inactive(labelcolor()));
fl_polygon(x1, y1, x1 + w1, y1 + w1, x1 + 2 * w1, y1);
@@ -103,7 +119,6 @@ Fl_Choice::Fl_Choice(int X, int Y, int W, int H, const char *l)
textfont(FL_HELVETICA);
box(FL_FLAT_BOX);
down_box(FL_BORDER_BOX);
- color(FL_BACKGROUND2_COLOR);
}
int Fl_Choice::value(const Fl_Menu_Item *v) {
@@ -134,7 +149,16 @@ int Fl_Choice::handle(int e) {
case FL_PUSH:
if (Fl::visible_focus()) Fl::focus(this);
J1:
- v = menu()->pulldown(x(), y(), w(), h(), mvalue(), this);
+ if (Fl::scheme()) {
+ v = menu()->pulldown(x(), y(), w(), h(), mvalue(), this);
+ } else {
+ // In order to preserve the old look-n-feel of "white" menus,
+ // temporarily override the color() of this widget...
+ Fl_Color c = color();
+ color(FL_BACKGROUND2_COLOR);
+ v = menu()->pulldown(x(), y(), w(), h(), mvalue(), this);
+ color(c);
+ }
if (!v || v->submenu()) return 1;
if (v != mvalue()) redraw();
picked(v);
@@ -158,5 +182,5 @@ int Fl_Choice::handle(int e) {
}
//
-// End of "$Id: Fl_Choice.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Choice.cxx 5485 2006-09-24 13:35:23Z mike $".
//
diff --git a/src/Fl_Clock.cxx b/src/Fl_Clock.cxx
index 3812ae0..6516256 100644
--- a/src/Fl_Clock.cxx
+++ b/src/Fl_Clock.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Clock.cxx 4701 2005-12-14 00:34:34Z mike $"
+// "$Id: Fl_Clock.cxx 5472 2006-09-20 03:03:14Z mike $"
//
// Clock widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -54,6 +54,10 @@ static void drawhand(double ang,const float v[][2],Fl_Color fill,Fl_Color line)
}
void Fl_Clock_Output::drawhands(Fl_Color fill, Fl_Color line) {
+ if (!active_r()) {
+ fill = fl_inactive(fill);
+ line = fl_inactive(line);
+ }
drawhand(-360*(hour()+minute()/60.0)/12, hourhand, fill, line);
drawhand(-360*(minute()+second()/60.0)/60, minhand, fill, line);
drawhand(-360*(second()/60.0), sechand, fill, line);
@@ -78,9 +82,9 @@ void Fl_Clock_Output::draw(int X, int Y, int W, int H) {
fl_translate(X+W/2.0-.5, Y+H/2.0-.5);
fl_scale((W-1)/28.0, (H-1)/28.0);
if (type() == FL_ROUND_CLOCK) {
- fl_color(color());
+ fl_color(active_r() ? color() : fl_inactive(color()));
fl_begin_polygon(); fl_circle(0,0,14); fl_end_polygon();
- fl_color(FL_FOREGROUND_COLOR);
+ fl_color(active_r() ? FL_FOREGROUND_COLOR : fl_inactive(FL_FOREGROUND_COLOR));
fl_begin_loop(); fl_circle(0,0,14); fl_end_loop();
}
// draw the shadows:
@@ -90,7 +94,7 @@ void Fl_Clock_Output::draw(int X, int Y, int W, int H) {
fl_pop_matrix();
// draw the tick marks:
fl_push_matrix();
- fl_color(FL_FOREGROUND_COLOR); // color was 52
+ fl_color(active_r() ? FL_FOREGROUND_COLOR : fl_inactive(FL_FOREGROUND_COLOR));
for (int i=0; i<12; i++) {
if (i==6) rect(-0.5, 9, 1, 2);
else if (i==3 || i==0 || i== 9) rect(-0.5, 9.5, 1, 1);
@@ -169,5 +173,5 @@ Fl_Clock::~Fl_Clock() {
}
//
-// End of "$Id: Fl_Clock.cxx 4701 2005-12-14 00:34:34Z mike $".
+// End of "$Id: Fl_Clock.cxx 5472 2006-09-20 03:03:14Z mike $".
//
diff --git a/src/Fl_Color_Chooser.cxx b/src/Fl_Color_Chooser.cxx
index 4210846..b68520b 100644
--- a/src/Fl_Color_Chooser.cxx
+++ b/src/Fl_Color_Chooser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Color_Chooser.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Color_Chooser.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Color chooser for the Fast Light Tool Kit (FLTK).
//
@@ -525,5 +525,5 @@ int fl_color_chooser(const char* name, uchar& r, uchar& g, uchar& b) {
}
//
-// End of "$Id: Fl_Color_Chooser.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Color_Chooser.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Counter.cxx b/src/Fl_Counter.cxx
index bd1732e..5390223 100644
--- a/src/Fl_Counter.cxx
+++ b/src/Fl_Counter.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Counter.cxx 4662 2005-11-27 15:11:33Z mike $"
+// "$Id: Fl_Counter.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Counter widget for the Fast Light Tool Kit (FLTK).
//
@@ -193,5 +193,5 @@ Fl_Counter::Fl_Counter(int X, int Y, int W, int H, const char* l)
}
//
-// End of "$Id: Fl_Counter.cxx 4662 2005-11-27 15:11:33Z mike $".
+// End of "$Id: Fl_Counter.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Dial.cxx b/src/Fl_Dial.cxx
index 47e4636..af5a1b8 100644
--- a/src/Fl_Dial.cxx
+++ b/src/Fl_Dial.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Dial.cxx 4551 2005-08-29 21:16:38Z matt $"
+// "$Id: Fl_Dial.cxx 5472 2006-09-20 03:03:14Z mike $"
//
// Circular dial widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -44,25 +44,30 @@ void Fl_Dial::draw(int X, int Y, int W, int H) {
// foo: draw this nicely in certain round box types
int foo = (box() > _FL_ROUND_UP_BOX && Fl::box_dx(box()));
if (foo) {X--; Y--; W+=2; H+=2;}
- fl_color(color());
+ if (active_r()) fl_color(color());
+ else fl_color(fl_inactive(color()));
fl_pie(X, Y, W, H, 270-a1, angle > a1 ? 360+270-angle : 270-360-angle);
- fl_color(selection_color());
+ if (active_r()) fl_color(selection_color());
+ else fl_color(fl_inactive(selection_color()));
fl_pie(X, Y, W, H, 270-angle, 270-a1);
if (foo) {
- fl_color(FL_FOREGROUND_COLOR);
+ if (active_r()) fl_color(FL_FOREGROUND_COLOR);
+ else fl_color(fl_inactive(FL_FOREGROUND_COLOR));
fl_arc(X, Y, W, H, 0, 360);
}
return;
}
if (!(damage()&FL_DAMAGE_ALL)) {
- fl_color(color());
+ if (active_r()) fl_color(color());
+ else fl_color(fl_inactive(color()));
fl_pie(X+1, Y+1, W-2, H-2, 0, 360);
}
fl_push_matrix();
fl_translate(X+W/2-.5, Y+H/2-.5);
fl_scale(W-1, H-1);
fl_rotate(45-angle);
- fl_color(selection_color());
+ if (active_r()) fl_color(selection_color());
+ else fl_color(fl_inactive(selection_color()));
if (type()) { // FL_LINE_DIAL
fl_begin_polygon();
fl_vertex(0.0, 0.0);
@@ -70,7 +75,8 @@ void Fl_Dial::draw(int X, int Y, int W, int H) {
fl_vertex(-0.25, 0.25);
fl_vertex(0.0, 0.04);
fl_end_polygon();
- fl_color(FL_FOREGROUND_COLOR);
+ if (active_r()) fl_color(FL_FOREGROUND_COLOR);
+ else fl_color(fl_inactive(FL_FOREGROUND_COLOR));
fl_begin_loop();
fl_vertex(0.0, 0.0);
fl_vertex(-0.04, 0.0);
@@ -79,7 +85,8 @@ void Fl_Dial::draw(int X, int Y, int W, int H) {
fl_end_loop();
} else {
fl_begin_polygon(); fl_circle(-0.20, 0.20, 0.07); fl_end_polygon();
- fl_color(FL_FOREGROUND_COLOR);
+ if (active_r()) fl_color(FL_FOREGROUND_COLOR);
+ else fl_color(fl_inactive(FL_FOREGROUND_COLOR));
fl_begin_loop(); fl_circle(-0.20, 0.20, 0.07); fl_end_loop();
}
fl_pop_matrix();
@@ -136,5 +143,5 @@ Fl_Dial::Fl_Dial(int X, int Y, int W, int H, const char* l)
}
//
-// End of "$Id: Fl_Dial.cxx 4551 2005-08-29 21:16:38Z matt $".
+// End of "$Id: Fl_Dial.cxx 5472 2006-09-20 03:03:14Z mike $".
//
diff --git a/src/Fl_Double_Window.cxx b/src/Fl_Double_Window.cxx
index 2c79d7c..4546d24 100644
--- a/src/Fl_Double_Window.cxx
+++ b/src/Fl_Double_Window.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Double_Window.cxx 4563 2005-09-12 23:03:34Z matt $"
+// "$Id: Fl_Double_Window.cxx 5829 2007-05-14 15:51:00Z matt $"
//
// Double-buffered window code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -61,13 +61,6 @@ static int can_xdbe() {
#endif
void Fl_Double_Window::show() {
-#if !defined(WIN32) && !defined(__APPLE__)
- if (!shown()) { // don't set the background pixel
- fl_open_display();
- Fl_X::make_xid(this);
- return;
- }
-#endif
Fl_Window::show();
}
@@ -76,6 +69,54 @@ void Fl_Double_Window::show() {
// Code used to switch output to an off-screen window. See macros in
// win32.H which save the old state in local variables.
+typedef struct { BYTE a; BYTE b; BYTE c; BYTE d; } FL_BLENDFUNCTION;
+typedef BOOL (WINAPI* fl_alpha_blend_func)
+ (HDC,int,int,int,int,HDC,int,int,int,int,FL_BLENDFUNCTION);
+static fl_alpha_blend_func fl_alpha_blend = NULL;
+static FL_BLENDFUNCTION blendfunc = { 0, 0, 255, 1};
+
+/*
+ * This function checks if the version of MSWindows that we
+ * curently run on supports alpha blending for bitmap transfers
+ * and finds the required function if so.
+ */
+char fl_can_do_alpha_blending() {
+ static char been_here = 0;
+ static char can_do = 0;
+ // do this test only once
+ if (been_here) return can_do;
+ been_here = 1;
+ // load the library that implements alpha blending
+ HMODULE hMod = LoadLibrary("MSIMG32.DLL");
+ // give up if that doesn't exist (Win95?)
+ if (!hMod) return 0;
+ // now find the blending function inside that dll
+ fl_alpha_blend = (fl_alpha_blend_func)GetProcAddress(hMod, "AlphaBlend");
+ // give up if we can't find it (Win95)
+ if (!fl_alpha_blend) return 0;
+ // we have the call, but does our display support alpha blending?
+ HDC dc = 0L;//fl_gc;
+ // get the current or the desktop's device context
+ if (!dc) dc = GetDC(0L);
+ if (!dc) return 0;
+ // check the device capabilities flags. However GetDeviceCaps
+ // does not return anything useful, so we have to do it manually:
+
+ HBITMAP bm = CreateCompatibleBitmap(dc, 1, 1);
+ HDC new_gc = CreateCompatibleDC(dc);
+ int save = SaveDC(new_gc);
+ SelectObject(new_gc, bm);
+ /*COLORREF set = */ SetPixel(new_gc, 0, 0, 0x01010101);
+ BOOL alpha_ok = fl_alpha_blend(dc, 0, 0, 1, 1, new_gc, 0, 0, 1, 1, blendfunc);
+ RestoreDC(new_gc, save);
+ DeleteDC(new_gc);
+ DeleteObject(bm);
+
+ if (!fl_gc) ReleaseDC(0L, dc);
+ if (alpha_ok) can_do = 1;
+ return can_do;
+}
+
HDC fl_makeDC(HBITMAP bitmap) {
HDC new_gc = CreateCompatibleDC(fl_gc);
SetTextAlign(new_gc, TA_BASELINE|TA_LEFT);
@@ -96,10 +137,29 @@ void fl_copy_offscreen(int x,int y,int w,int h,HBITMAP bitmap,int srcx,int srcy)
DeleteDC(new_gc);
}
+void fl_copy_offscreen_with_alpha(int x,int y,int w,int h,HBITMAP bitmap,int srcx,int srcy) {
+ HDC new_gc = CreateCompatibleDC(fl_gc);
+ int save = SaveDC(new_gc);
+ SelectObject(new_gc, bitmap);
+ BOOL alpha_ok = 0;
+ // first try to alpha blend
+ if (fl_can_do_alpha_blending())
+ alpha_ok = fl_alpha_blend(fl_gc, x, y, w, h, new_gc, srcx, srcy, w, h, blendfunc);
+ // if that failed (it shouldn,t), still copy the bitmap over, but now alpha is 1
+ if (!alpha_ok)
+ BitBlt(fl_gc, x, y, w, h, new_gc, srcx, srcy, SRCCOPY);
+ RestoreDC(new_gc, save);
+ DeleteDC(new_gc);
+}
+
extern void fl_restore_clip();
#elif defined(__APPLE_QD__)
+char fl_can_do_alpha_blending() {
+ return 0;
+}
+
GWorldPtr fl_create_offscreen(int w, int h) {
GWorldPtr gw;
Rect bounds;
@@ -173,6 +233,10 @@ extern void fl_restore_clip();
#elif defined(__APPLE_QUARTZ__)
+char fl_can_do_alpha_blending() {
+ return 1;
+}
+
Fl_Offscreen fl_create_offscreen(int w, int h) {
void *data = calloc(w*h,4);
CGColorSpaceRef lut = CGColorSpaceCreateDeviceRGB();
@@ -202,7 +266,7 @@ void fl_copy_offscreen(int x,int y,int w,int h,Fl_Offscreen osrc,int srcx,int sr
CGImageRef img = CGImageCreate( sw, sh, 8, 4*8, 4*sw, lut, alpha,
src_bytes, 0L, false, kCGRenderingIntentDefault);
// fl_push_clip();
- CGRect rect = { x, y, w, h };
+ CGRect rect = { { x, y }, { w, h } };
Fl_X::q_begin_image(rect, srcx, srcy, sw, sh);
CGContextDrawImage(fl_gc, rect, img);
Fl_X::q_end_image();
@@ -219,12 +283,19 @@ void fl_delete_offscreen(Fl_Offscreen ctx) {
free(data);
}
-static CGContextRef prev_gc = 0;
-static Window prev_window = 0;
+const int stack_max = 16;
+static int stack_ix = 0;
+static CGContextRef stack_gc[stack_max];
+static Window stack_window[stack_max];
void fl_begin_offscreen(Fl_Offscreen ctx) {
- prev_gc = fl_gc;
- prev_window = fl_window;
+ if (stack_ix<stack_max) {
+ stack_gc[stack_ix] = fl_gc;
+ stack_window[stack_ix] = fl_window;
+ } else
+ fprintf(stderr, "FLTK CGContext Stack overflow error\n");
+ stack_ix++;
+
fl_gc = (CGContextRef)ctx;
fl_window = 0;
//fl_push_no_clip();
@@ -235,12 +306,25 @@ void fl_begin_offscreen(Fl_Offscreen ctx) {
void fl_end_offscreen() {
Fl_X::q_release_context();
//fl_pop_clip();
- fl_gc = prev_gc;
- fl_window = prev_window;
+ if (stack_ix>0)
+ stack_ix--;
+ else
+ fprintf(stderr, "FLTK CGContext Stack underflow error\n");
+ if (stack_ix<stack_max) {
+ fl_gc = stack_gc[stack_ix];
+ fl_window = stack_window[stack_ix];
+ }
}
extern void fl_restore_clip();
+#else // X11
+
+// maybe someone feels inclined to implement alpha blending on X11?
+char fl_can_do_alpha_blending() {
+ return 0;
+}
+
#endif
// Fl_Overlay_Window relies on flush(1) copying the back buffer to the
@@ -254,9 +338,11 @@ void Fl_Double_Window::flush(int eraseoverlay) {
Fl_X *myi = Fl_X::i(this);
if (!myi->other_xid) {
#if USE_XDBE
- if (can_xdbe()) myi->other_xid =
- XdbeAllocateBackBufferName(fl_display, fl_xid(this), XdbeUndefined);
- else
+ if (can_xdbe()) {
+ myi->other_xid =
+ XdbeAllocateBackBufferName(fl_display, fl_xid(this), XdbeCopied);
+ myi->backbuffer_bad = 1;
+ } else
#endif
#ifdef __APPLE_QD__
if ( ( !QDIsPortBuffered( GetWindowPort(myi->xid) ) )
@@ -276,28 +362,27 @@ void Fl_Double_Window::flush(int eraseoverlay) {
}
#if USE_XDBE
if (use_xdbe) {
- // if this is true, copy rather than swap so back buffer is preserved:
- int copy = (myi->region || eraseoverlay);
- if (myi->backbuffer_bad) { // make sure we do a complete redraw...
+ if (myi->backbuffer_bad) {
+ // Make sure we do a complete redraw...
if (myi->region) {XDestroyRegion(myi->region); myi->region = 0;}
clear_damage(FL_DAMAGE_ALL);
+ myi->backbuffer_bad = 0;
}
+
+ // Redraw as needed...
if (damage()) {
fl_clip_region(myi->region); myi->region = 0;
fl_window = myi->other_xid;
draw();
fl_window = myi->xid;
}
- if (!copy) {
- XdbeSwapInfo s;
- s.swap_window = fl_xid(this);
- s.swap_action = XdbeUndefined;
- XdbeSwapBuffers(fl_display, &s, 1);
- myi->backbuffer_bad = 1;
- return;
- }
- // otherwise just use normal copy from back to front:
- myi->backbuffer_bad = 0; // which won't destroy the back buffer...
+
+ // Copy contents of back buffer to window...
+ XdbeSwapInfo s;
+ s.swap_window = fl_xid(this);
+ s.swap_action = XdbeCopied;
+ XdbeSwapBuffers(fl_display, &s, 1);
+ return;
} else
#endif
if (damage() & ~FL_DAMAGE_EXPOSE) {
@@ -363,5 +448,5 @@ Fl_Double_Window::~Fl_Double_Window() {
}
//
-// End of "$Id: Fl_Double_Window.cxx 4563 2005-09-12 23:03:34Z matt $".
+// End of "$Id: Fl_Double_Window.cxx 5829 2007-05-14 15:51:00Z matt $".
//
diff --git a/src/Fl_File_Browser.cxx b/src/Fl_File_Browser.cxx
index 026a1e8..35eee83 100644
--- a/src/Fl_File_Browser.cxx
+++ b/src/Fl_File_Browser.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_File_Browser.cxx 4526 2005-08-18 14:08:17Z mike $"
+// "$Id: Fl_File_Browser.cxx 5635 2007-01-23 15:02:00Z mike $"
//
// Fl_File_Browser routines.
//
-// Copyright 1999-2005 by Michael Sweet.
+// Copyright 1999-2006 by Michael Sweet.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -167,13 +167,16 @@ Fl_File_Browser::item_width(void *p) const // I - List item data
const int *columns; // Columns
- // Set the font and size...
- fl_font(textfont(), textsize());
-
// Scan for newlines...
line = (FL_BLINE *)p;
columns = column_widths();
+ // Set the font and size...
+ if (line->txt[strlen(line->txt) - 1] == '/')
+ fl_font(textfont() | FL_BOLD, textsize());
+ else
+ fl_font(textfont(), textsize());
+
if (strchr(line->txt, '\n') == NULL &&
strchr(line->txt, column_char()) == NULL)
{
@@ -467,7 +470,7 @@ Fl_File_Browser::load(const char *directory,// I - Directory to load
{
sprintf(filename, "%c:/", i);
- if (i < 'C')
+ if (i < 'C') // see also: GetDriveType and GetVolumeInformation in WIN32
add(filename, icon);
else
add(filename, icon);
@@ -597,7 +600,7 @@ Fl_File_Browser::load(const char *directory,// I - Directory to load
icon = Fl_File_Icon::find(filename);
if ((icon && icon->type() == Fl_File_Icon::DIRECTORY) ||
- fl_filename_isdir(filename)) {
+ _fl_filename_isdir_quick(filename)) {
num_dirs ++;
insert(num_dirs, files[i]->d_name, icon);
} else if (filetype_ == FILES &&
@@ -632,5 +635,5 @@ Fl_File_Browser::filter(const char *pattern) // I - Pattern string
//
-// End of "$Id: Fl_File_Browser.cxx 4526 2005-08-18 14:08:17Z mike $".
+// End of "$Id: Fl_File_Browser.cxx 5635 2007-01-23 15:02:00Z mike $".
//
diff --git a/src/Fl_File_Chooser.cxx b/src/Fl_File_Chooser.cxx
index 66ce20e..253c5bb 100644
--- a/src/Fl_File_Chooser.cxx
+++ b/src/Fl_File_Chooser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_File_Chooser.cxx 4723 2005-12-30 10:13:17Z matt $"
+// "$Id: Fl_File_Chooser.cxx 5704 2007-02-21 20:23:03Z matt $"
//
// Fl_File_Chooser dialog for the Fast Light Tool Kit (FLTK).
//
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#include "../FL/Fl_File_Chooser.H"
#include <FL/fl_draw.H>
@@ -96,11 +96,11 @@ void Fl_File_Chooser::cb_fileName(Fl_File_Input* o, void* v) {
}
void Fl_File_Chooser::cb_okButton_i(Fl_Return_Button*, void*) {
- // Do any callback that is registered...
+ window->hide();
+
+// Do any callback that is registered...
if (callback_)
(*callback_)(this, data_);
-
-window->hide();
}
void Fl_File_Chooser::cb_okButton(Fl_Return_Button* o, void* v) {
((Fl_File_Chooser*)(o->parent()->parent()->parent()->user_data()))->cb_okButton_i(o,v);
@@ -159,134 +159,132 @@ void Fl_File_Chooser::cb_favOkButton(Fl_Return_Button* o, void* v) {
}
Fl_File_Chooser::Fl_File_Chooser(const char *d, const char *p, int t, const char *title) {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = window = new Fl_Double_Window(490, 380, "Choose File");
- w = o;
- o->callback((Fl_Callback*)cb_window, (void*)(this));
+ Fl_Group *prev_current = Fl_Group::current();
+ { window = new Fl_Double_Window(490, 380, "Choose File");
+ window->callback((Fl_Callback*)cb_window, (void*)(this));
{ Fl_Group* o = new Fl_Group(10, 10, 470, 25);
- { Fl_Choice* o = showChoice = new Fl_Choice(65, 10, 215, 25, "Show:");
- o->down_box(FL_BORDER_BOX);
- o->labelfont(1);
- o->callback((Fl_Callback*)cb_showChoice);
- Fl_Group::current()->resizable(o);
+ { showChoice = new Fl_Choice(65, 10, 215, 25, "Show:");
+ showChoice->down_box(FL_BORDER_BOX);
+ showChoice->labelfont(1);
+ showChoice->callback((Fl_Callback*)cb_showChoice);
+ Fl_Group::current()->resizable(showChoice);
showChoice->label(show_label);
- }
- { Fl_Menu_Button* o = favoritesButton = new Fl_Menu_Button(290, 10, 155, 25, "Favorites");
- o->down_box(FL_BORDER_BOX);
- o->callback((Fl_Callback*)cb_favoritesButton);
- o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
+ } // Fl_Choice* showChoice
+ { favoritesButton = new Fl_Menu_Button(290, 10, 155, 25, "Favorites");
+ favoritesButton->down_box(FL_BORDER_BOX);
+ favoritesButton->callback((Fl_Callback*)cb_favoritesButton);
+ favoritesButton->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
favoritesButton->label(favorites_label);
- }
+ } // Fl_Menu_Button* favoritesButton
{ Fl_Button* o = newButton = new Fl_Button(455, 10, 25, 25);
- o->image(image_new);
- o->labelsize(8);
- o->callback((Fl_Callback*)cb_newButton);
+ newButton->image(image_new);
+ newButton->labelsize(8);
+ newButton->callback((Fl_Callback*)cb_newButton);
o->tooltip(new_directory_tooltip);
- }
+ } // Fl_Button* newButton
o->end();
- }
+ } // Fl_Group* o
{ Fl_Tile* o = new Fl_Tile(10, 45, 470, 225);
o->callback((Fl_Callback*)cb_);
- { Fl_File_Browser* o = fileList = new Fl_File_Browser(10, 45, 295, 225);
- o->type(2);
- o->callback((Fl_Callback*)cb_fileList);
- w->hotspot(o);
- }
- { Fl_Box* o = previewBox = new Fl_Box(305, 45, 175, 225, "?");
- o->box(FL_DOWN_BOX);
- o->labelsize(100);
- o->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
- }
+ { fileList = new Fl_File_Browser(10, 45, 295, 225);
+ fileList->type(2);
+ fileList->callback((Fl_Callback*)cb_fileList);
+ fileList->window()->hotspot(fileList);
+ } // Fl_File_Browser* fileList
+ { previewBox = new Fl_Box(305, 45, 175, 225, "?");
+ previewBox->box(FL_DOWN_BOX);
+ previewBox->labelsize(100);
+ previewBox->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
+ } // Fl_Box* previewBox
o->end();
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Tile* o
{ Fl_Group* o = new Fl_Group(10, 275, 470, 95);
{ Fl_Group* o = new Fl_Group(10, 275, 470, 20);
- { Fl_Check_Button* o = previewButton = new Fl_Check_Button(10, 275, 73, 20, "Preview");
- o->down_box(FL_DOWN_BOX);
- o->value(1);
- o->shortcut(0x80070);
- o->callback((Fl_Callback*)cb_previewButton);
+ { previewButton = new Fl_Check_Button(10, 275, 73, 20, "Preview");
+ previewButton->down_box(FL_DOWN_BOX);
+ previewButton->value(1);
+ previewButton->shortcut(0x80070);
+ previewButton->callback((Fl_Callback*)cb_previewButton);
previewButton->label(preview_label);
- }
+ } // Fl_Check_Button* previewButton
{ Fl_Box* o = new Fl_Box(115, 275, 365, 20);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- { Fl_File_Input* o = fileName = new Fl_File_Input(115, 300, 365, 35);
- o->labelfont(1);
- o->callback((Fl_Callback*)cb_fileName);
- o->when(FL_WHEN_ENTER_KEY);
- Fl_Group::current()->resizable(o);
+ } // Fl_Group* o
+ { fileName = new Fl_File_Input(115, 300, 365, 35);
+ fileName->labelfont(1);
+ fileName->callback((Fl_Callback*)cb_fileName);
+ fileName->when(FL_WHEN_ENTER_KEY);
+ Fl_Group::current()->resizable(fileName);
fileName->when(FL_WHEN_CHANGED | FL_WHEN_ENTER_KEY_ALWAYS);
- }
+ } // Fl_File_Input* fileName
{ Fl_Box* o = new Fl_Box(10, 310, 105, 25, "Filename:");
o->labelfont(1);
o->align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE);
o->label(filename_label);
- }
+ } // Fl_Box* o
{ Fl_Group* o = new Fl_Group(10, 345, 470, 25);
- { Fl_Return_Button* o = okButton = new Fl_Return_Button(313, 345, 85, 25, "OK");
- o->callback((Fl_Callback*)cb_okButton);
+ { okButton = new Fl_Return_Button(313, 345, 85, 25, "OK");
+ okButton->callback((Fl_Callback*)cb_okButton);
okButton->label(fl_ok);
- }
+ } // Fl_Return_Button* okButton
{ Fl_Button* o = cancelButton = new Fl_Button(408, 345, 72, 25, "Cancel");
- o->callback((Fl_Callback*)cb_cancelButton);
+ cancelButton->callback((Fl_Callback*)cb_cancelButton);
o->label(fl_cancel);
- }
+ } // Fl_Button* cancelButton
{ Fl_Box* o = new Fl_Box(10, 345, 30, 25);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
o->end();
- }
+ } // Fl_Group* o
if (title) window->label(title);
- o->set_modal();
- o->end();
- }
- { Fl_Double_Window* o = favWindow = new Fl_Double_Window(355, 150, "Manage Favorites");
- w = o;
- o->user_data((void*)(this));
- { Fl_File_Browser* o = favList = new Fl_File_Browser(10, 10, 300, 95);
- o->type(2);
- o->callback((Fl_Callback*)cb_favList);
- Fl_Group::current()->resizable(o);
- }
+ window->set_modal();
+ window->end();
+ } // Fl_Double_Window* window
+ { favWindow = new Fl_Double_Window(355, 150, "Manage Favorites");
+ favWindow->user_data((void*)(this));
+ { favList = new Fl_File_Browser(10, 10, 300, 95);
+ favList->type(2);
+ favList->callback((Fl_Callback*)cb_favList);
+ Fl_Group::current()->resizable(favList);
+ } // Fl_File_Browser* favList
{ Fl_Group* o = new Fl_Group(320, 10, 25, 95);
- { Fl_Button* o = favUpButton = new Fl_Button(320, 10, 25, 25, "@8>");
- o->callback((Fl_Callback*)cb_favUpButton);
- }
- { Fl_Button* o = favDeleteButton = new Fl_Button(320, 45, 25, 25, "X");
- o->labelfont(1);
- o->callback((Fl_Callback*)cb_favDeleteButton);
- Fl_Group::current()->resizable(o);
- }
- { Fl_Button* o = favDownButton = new Fl_Button(320, 80, 25, 25, "@2>");
- o->callback((Fl_Callback*)cb_favDownButton);
- }
+ { favUpButton = new Fl_Button(320, 10, 25, 25, "@8>");
+ favUpButton->callback((Fl_Callback*)cb_favUpButton);
+ } // Fl_Button* favUpButton
+ { favDeleteButton = new Fl_Button(320, 45, 25, 25, "X");
+ favDeleteButton->labelfont(1);
+ favDeleteButton->callback((Fl_Callback*)cb_favDeleteButton);
+ Fl_Group::current()->resizable(favDeleteButton);
+ } // Fl_Button* favDeleteButton
+ { favDownButton = new Fl_Button(320, 80, 25, 25, "@2>");
+ favDownButton->callback((Fl_Callback*)cb_favDownButton);
+ } // Fl_Button* favDownButton
o->end();
- }
+ } // Fl_Group* o
{ Fl_Group* o = new Fl_Group(10, 113, 335, 29);
- { Fl_Button* o = favCancelButton = new Fl_Button(273, 115, 72, 25, "Cancel");
- o->callback((Fl_Callback*)cb_favCancelButton);
+ { favCancelButton = new Fl_Button(273, 115, 72, 25, "Cancel");
+ favCancelButton->callback((Fl_Callback*)cb_favCancelButton);
favCancelButton->label(fl_cancel);
- }
- { Fl_Return_Button* o = favOkButton = new Fl_Return_Button(181, 115, 79, 25, "Save");
- o->callback((Fl_Callback*)cb_favOkButton);
+ } // Fl_Button* favCancelButton
+ { favOkButton = new Fl_Return_Button(181, 115, 79, 25, "Save");
+ favOkButton->callback((Fl_Callback*)cb_favOkButton);
favOkButton->label(save_label);
- }
+ } // Fl_Return_Button* favOkButton
{ Fl_Box* o = new Fl_Box(10, 115, 161, 25);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
+ } // Fl_Group* o
favWindow->label(manage_favorites_label);
- o->set_modal();
- o->size_range(181, 150);
- o->end();
- }
+ favWindow->set_modal();
+ favWindow->size_range(181, 150);
+ favWindow->end();
+ } // Fl_Double_Window* favWindow
callback_ = 0;
data_ = 0;
directory_[0] = 0;
@@ -299,6 +297,7 @@ type(t);
int e;
prefs_.get("preview", e, 1);
preview(e);
+Fl_Group::current(prev_current);
}
Fl_File_Chooser::~Fl_File_Chooser() {
@@ -375,7 +374,7 @@ void Fl_File_Chooser::show() {
window->show();
Fl::flush();
fl_cursor(FL_CURSOR_WAIT);
-rescan();
+rescan_keep_filename();
fl_cursor(FL_CURSOR_DEFAULT);
fileName->take_focus();
}
@@ -441,5 +440,5 @@ int Fl_File_Chooser::visible() {
}
//
-// End of "$Id: Fl_File_Chooser.cxx 4723 2005-12-30 10:13:17Z matt $".
+// End of "$Id: Fl_File_Chooser.cxx 5704 2007-02-21 20:23:03Z matt $".
//
diff --git a/src/Fl_File_Chooser.fl b/src/Fl_File_Chooser.fl
index b9687d5..3594cb9 100644
--- a/src/Fl_File_Chooser.fl
+++ b/src/Fl_File_Chooser.fl
@@ -1,9 +1,9 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0107
+version 1.0108
header_name {../FL/Fl_File_Chooser.H}
code_name {.cxx}
comment {//
-// "$Id: Fl_File_Chooser.fl 4723 2005-12-30 10:13:17Z matt $"
+// "$Id: Fl_File_Chooser.fl 5704 2007-02-21 20:23:03Z matt $"
//
// Fl_File_Chooser dialog for the Fast Light Tool Kit (FLTK).
//
@@ -55,13 +55,14 @@ class FL_EXPORT Fl_File_Chooser {open
decl {void update_preview();} {}
Function {Fl_File_Chooser(const char *d, const char *p, int t, const char *title)} {open
} {
+ code {Fl_Group *prev_current = Fl_Group::current();} {}
Fl_Window window {
label {Choose File}
callback {fileName->value("");
fileList->deselect();
Fl::remove_timeout((Fl_Timeout_Handler)previewCB, this);
window->hide();}
- private xywh {387 242 490 380} type Double resizable
+ private xywh {388 284 490 380} type Double resizable
code0 {if (title) window->label(title);}
code1 {\#include <stdio.h>}
code2 {\#include <stdlib.h>}
@@ -134,11 +135,11 @@ window->hide();}
} {
Fl_Return_Button okButton {
label OK
- callback {// Do any callback that is registered...
-if (callback_)
- (*callback_)(this, data_);
+ callback {window->hide();
-window->hide();} selected
+// Do any callback that is registered...
+if (callback_)
+ (*callback_)(this, data_);}
private xywh {313 345 85 25}
code0 {\#include <FL/fl_ask.H>}
code1 {okButton->label(fl_ok);}
@@ -160,7 +161,7 @@ window->hide();}
}
Fl_Window favWindow {
label {Manage Favorites}
- private xywh {437 187 355 150} type Double resizable
+ private xywh {413 100 355 150} type Double resizable
code0 {favWindow->label(manage_favorites_label);} modal size_range {181 150 0 0} visible
} {
Fl_File_Browser favList {
@@ -218,7 +219,9 @@ value(d);
type(t);
int e;
prefs_.get("preview", e, 1);
-preview(e);} {}
+preview(e);
+Fl_Group::current(prev_current);} {selected
+ }
}
Function {~Fl_File_Chooser()} {} {
code {Fl::remove_timeout((Fl_Timeout_Handler)previewCB, this);
@@ -299,13 +302,15 @@ okButton->parent()->init_sizes();} {}
}
decl {void rescan();} {public
}
- Function {show()} {return_type void
+ decl {void rescan_keep_filename();} {public
+ }
+ Function {show()} {open return_type void
} {
code {window->hotspot(fileList);
window->show();
Fl::flush();
fl_cursor(FL_CURSOR_WAIT);
-rescan();
+rescan_keep_filename();
fl_cursor(FL_CURSOR_DEFAULT);
fileName->take_focus();} {}
}
@@ -417,6 +422,6 @@ decl {FL_EXPORT void fl_file_chooser_ok_label(const char*l);} {public
comment {
//
-// End of "$Id: Fl_File_Chooser.fl 4723 2005-12-30 10:13:17Z matt $".
+// End of "$Id: Fl_File_Chooser.fl 5704 2007-02-21 20:23:03Z matt $".
//} {in_source in_header
}
diff --git a/src/Fl_File_Chooser2.cxx b/src/Fl_File_Chooser2.cxx
index 1c5079f..f268d1f 100644
--- a/src/Fl_File_Chooser2.cxx
+++ b/src/Fl_File_Chooser2.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_File_Chooser2.cxx 4660 2005-11-27 14:45:48Z mike $"
+// "$Id: Fl_File_Chooser2.cxx 5703 2007-02-21 20:08:07Z matt $"
//
// More Fl_File_Chooser routines.
//
@@ -243,6 +243,7 @@ Fl_File_Chooser::favoritesButtonCB()
sprintf(menuname, "favorite%02d", v);
prefs_.set(menuname, directory_);
+ prefs_.flush();
quote_pathname(menuname, directory_, sizeof(menuname));
favoritesButton->add(menuname);
@@ -379,6 +380,7 @@ Fl_File_Chooser::favoritesCB(Fl_Widget *w)
}
update_favorites();
+ prefs_.flush();
favWindow->hide();
}
@@ -412,9 +414,9 @@ Fl_File_Chooser::fileListCB()
if (Fl::event_clicks()) {
#if (defined(WIN32) && ! defined(__CYGWIN__)) || defined(__EMX__)
if ((strlen(pathname) == 2 && pathname[1] == ':') ||
- fl_filename_isdir(pathname))
+ _fl_filename_isdir_quick(pathname))
#else
- if (fl_filename_isdir(pathname))
+ if (_fl_filename_isdir_quick(pathname))
#endif /* WIN32 || __EMX__ */
{
// Change directories...
@@ -477,7 +479,7 @@ Fl_File_Chooser::fileListCB()
if (callback_) (*callback_)(this, data_);
// Activate the OK button as needed...
- if (!fl_filename_isdir(pathname) || (type_ & DIRECTORY))
+ if (!_fl_filename_isdir_quick(pathname) || (type_ & DIRECTORY))
okButton->activate();
else
okButton->deactivate();
@@ -544,15 +546,15 @@ Fl_File_Chooser::fileNameCB()
// Enter pressed - select or change directory...
#if (defined(WIN32) && ! defined(__CYGWIN__)) || defined(__EMX__)
if ((isalpha(pathname[0] & 255) && pathname[1] == ':' && !pathname[2]) ||
- fl_filename_isdir(pathname) &&
+ _fl_filename_isdir_quick(pathname) &&
compare_dirnames(pathname, directory_)) {
#else
- if (fl_filename_isdir(pathname) &&
+ if (_fl_filename_isdir_quick(pathname) &&
compare_dirnames(pathname, directory_)) {
#endif /* WIN32 || __EMX__ */
directory(pathname);
} else if ((type_ & CREATE) || access(pathname, 0) == 0) {
- if (!fl_filename_isdir(pathname) || (type_ & DIRECTORY)) {
+ if (!_fl_filename_isdir_quick(pathname) || (type_ & DIRECTORY)) {
// Update the preview box...
update_preview();
@@ -791,6 +793,7 @@ Fl_File_Chooser::preview(int e)// I - 1 = enable preview, 0 = disable preview
{
previewButton->value(e);
prefs_.set("preview", e);
+ prefs_.flush();
Fl_Group *p = previewBox->parent();
if (e) {
@@ -854,6 +857,57 @@ Fl_File_Chooser::rescan()
update_preview();
}
+//
+// 'Fl_File_Chooser::rescan_keep_filename()' - Rescan the current directory
+// without clearing the filename, then select the file if it is in the list
+//
+
+void
+Fl_File_Chooser::rescan_keep_filename()
+{
+ // if no filename was set, this is likely a diretory browser
+ const char *fn = fileName->value();
+ if (!fn || !*fn || fn[strlen(fn) - 1]=='/') {
+ rescan();
+ return;
+ }
+
+ int i;
+ char pathname[1024]; // New pathname for filename field
+ strlcpy(pathname, fn, sizeof(pathname));
+
+ // Build the file list...
+ fileList->load(directory_, sort);
+
+ // Update the preview box...
+ update_preview();
+
+ // and select the chosen file
+ char found = 0;
+ char *slash = strrchr(pathname, '/');
+ if (slash)
+ slash++;
+ else
+ slash = pathname;
+ for (i = 1; i <= fileList->size(); i ++)
+#if defined(WIN32) || defined(__EMX__)
+ if (strcasecmp(fileList->text(i), slash) == 0) {
+#else
+ if (strcmp(fileList->text(i), slash) == 0) {
+#endif // WIN32 || __EMX__
+ fileList->topline(i);
+ fileList->select(i);
+ found = 1;
+ break;
+ }
+
+ // update OK button activity
+ if (found || type_ & CREATE)
+ okButton->activate();
+ else
+ okButton->deactivate();
+}
+
//
// 'Fl_File_Chooser::showChoiceCB()' - Handle show selections.
@@ -889,7 +943,7 @@ Fl_File_Chooser::showChoiceCB()
if (shown()) {
// Rescan the directory...
- rescan();
+ rescan_keep_filename();
}
}
@@ -1247,5 +1301,5 @@ unquote_pathname(char *dst, // O - Destination string
//
-// End of "$Id: Fl_File_Chooser2.cxx 4660 2005-11-27 14:45:48Z mike $".
+// End of "$Id: Fl_File_Chooser2.cxx 5703 2007-02-21 20:08:07Z matt $".
//
diff --git a/src/Fl_File_Icon.cxx b/src/Fl_File_Icon.cxx
index a5ceb0e..ec671c7 100644
--- a/src/Fl_File_Icon.cxx
+++ b/src/Fl_File_Icon.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_File_Icon.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_File_Icon.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_File_Icon routines.
//
@@ -481,5 +481,5 @@ Fl_File_Icon::labeltype(const Fl_Label *o, // I - Label data
//
-// End of "$Id: Fl_File_Icon.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_File_Icon.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_File_Icon2.cxx b/src/Fl_File_Icon2.cxx
index 73d0a05..54c9a41 100644
--- a/src/Fl_File_Icon2.cxx
+++ b/src/Fl_File_Icon2.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_File_Icon2.cxx 4660 2005-11-27 14:45:48Z mike $"
+// "$Id: Fl_File_Icon2.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_File_Icon system icon routines.
//
@@ -1011,5 +1011,5 @@ get_kde_val(char *str,
//
-// End of "$Id: Fl_File_Icon2.cxx 4660 2005-11-27 14:45:48Z mike $".
+// End of "$Id: Fl_File_Icon2.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_File_Input.cxx b/src/Fl_File_Input.cxx
index 420c56a..009eaaa 100644
--- a/src/Fl_File_Input.cxx
+++ b/src/Fl_File_Input.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_File_Input.cxx 4728 2005-12-30 15:45:38Z matt $"
+// "$Id: Fl_File_Input.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// File_Input header file for the Fast Light Tool Kit (FLTK).
//
@@ -279,5 +279,5 @@ Fl_File_Input::handle_button(int event) // I - Event
//
-// End of "$Id: Fl_File_Input.cxx 4728 2005-12-30 15:45:38Z matt $".
+// End of "$Id: Fl_File_Input.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Font.H b/src/Fl_Font.H
index bc93e29..4781ae0 100644
--- a/src/Fl_Font.H
+++ b/src/Fl_Font.H
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Font.H 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Font.H 5334 2006-08-19 15:24:55Z matt $"
//
// Font definitions for the Fast Light Tool Kit (FLTK).
//
@@ -60,9 +60,13 @@ public:
bool knowMetrics;
# elif defined(__APPLE_QUARTZ__)
FL_EXPORT Fl_FontSize(const char* fontname, int size);
+ ATSUTextLayout layout;
+ ATSUStyle style;
+ short ascent, descent, q_width;
+ short width[256];
+ bool knowWidths;
char *q_name;
int size;
- short ascent, descent, q_width;
# elif USE_XFT
XftFont* font;
const char* encoding;
@@ -103,5 +107,5 @@ FL_EXPORT char *fl_find_fontsize(char *name);
#endif
//
-// End of "$Id: Fl_Font.H 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Font.H 5334 2006-08-19 15:24:55Z matt $".
//
diff --git a/src/Fl_GIF_Image.cxx b/src/Fl_GIF_Image.cxx
index 629939a..8a36322 100644
--- a/src/Fl_GIF_Image.cxx
+++ b/src/Fl_GIF_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_GIF_Image.cxx 4661 2005-11-27 15:05:50Z mike $"
+// "$Id: Fl_GIF_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_GIF_Image routines.
//
@@ -380,5 +380,5 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) {
//
-// End of "$Id: Fl_GIF_Image.cxx 4661 2005-11-27 15:05:50Z mike $".
+// End of "$Id: Fl_GIF_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Gl_Choice.cxx b/src/Fl_Gl_Choice.cxx
index 9a21c21..990f776 100644
--- a/src/Fl_Gl_Choice.cxx
+++ b/src/Fl_Gl_Choice.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Gl_Choice.cxx 4563 2005-09-12 23:03:34Z matt $"
+// "$Id: Fl_Gl_Choice.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// OpenGL visual selection code for the Fast Light Tool Kit (FLTK).
//
@@ -446,5 +446,5 @@ void fl_delete_gl_context(GLContext context) {
//
-// End of "$Id: Fl_Gl_Choice.cxx 4563 2005-09-12 23:03:34Z matt $".
+// End of "$Id: Fl_Gl_Choice.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Gl_Overlay.cxx b/src/Fl_Gl_Overlay.cxx
index 7e3d69e..277d51b 100644
--- a/src/Fl_Gl_Overlay.cxx
+++ b/src/Fl_Gl_Overlay.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Gl_Overlay.cxx 4724 2005-12-30 10:32:58Z matt $"
+// "$Id: Fl_Gl_Overlay.cxx 5350 2006-08-23 17:40:54Z mike $"
//
// OpenGL overlay code for the Fast Light Tool Kit (FLTK).
//
@@ -95,16 +95,16 @@ void _Fl_Gl_Overlay::flush() {
}
void _Fl_Gl_Overlay::draw() {
- if (!valid_) glClearIndex((GLfloat)fl_transparent_pixel);
+ if (!valid()) glClearIndex((GLfloat)fl_transparent_pixel);
if (damage() != FL_DAMAGE_EXPOSE) glClear(GL_COLOR_BUFFER_BIT);
Fl_Gl_Window *w = (Fl_Gl_Window *)parent();
- uchar save_valid = w->valid_;
- w->valid_ = valid_;
+ uchar save_valid = w->valid();
+ w->valid(valid());
fl_overlay = 1;
w->draw_overlay();
fl_overlay = 0;
- valid_ = w->valid_;
- w->valid_ = save_valid;
+ valid(w->valid());
+ w->valid(save_valid);
}
void _Fl_Gl_Overlay::show() {
@@ -244,5 +244,5 @@ void Fl_Gl_Window::hide_overlay() {
#endif
//
-// End of "$Id: Fl_Gl_Overlay.cxx 4724 2005-12-30 10:32:58Z matt $".
+// End of "$Id: Fl_Gl_Overlay.cxx 5350 2006-08-23 17:40:54Z mike $".
//
diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx
index 5ede516..bb89b04 100644
--- a/src/Fl_Gl_Window.cxx
+++ b/src/Fl_Gl_Window.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Gl_Window.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: Fl_Gl_Window.cxx 5322 2006-08-17 09:49:43Z matt $"
//
// OpenGL window code for the Fast Light Tool Kit (FLTK).
//
@@ -88,8 +88,12 @@ void Fl_Gl_Window::show() {
void Fl_Gl_Window::invalidate() {
valid(0);
+ context_valid(0);
#ifndef WIN32
- if (overlay) ((Fl_Gl_Window*)overlay)->valid(0);
+ if (overlay) {
+ ((Fl_Gl_Window*)overlay)->valid(0);
+ ((Fl_Gl_Window*)overlay)->context_valid(0);
+ }
#endif
}
@@ -137,6 +141,7 @@ void Fl_Gl_Window::make_current() {
mode_ &= ~NON_LOCAL_CONTEXT;
context_ = fl_create_gl_context(this, g);
valid(0);
+ context_valid(0);
}
fl_set_gl_context(this, context_);
@@ -215,7 +220,10 @@ int fl_overlay_depth = 0;
#endif
void Fl_Gl_Window::flush() {
- uchar save_valid = valid_;
+ uchar save_valid = valid_f_ & 1;
+#if HAVE_GL_OVERLAY && defined(WIN32)
+ uchar save_valid_f = valid_f_;
+#endif
#ifdef __APPLE_QD__
//: clear previous clipping in this shared port
@@ -256,7 +264,7 @@ void Fl_Gl_Window::flush() {
fl_overlay = 1;
draw_overlay();
fl_overlay = 0;
- valid(save_valid);
+ valid_f_ = save_valid_f;
wglSwapLayerBuffers(Fl_X::i(this)->private_dc, WGL_SWAP_OVERLAY1);
// if only the overlay was damaged we are done, leave main layer alone:
if (damage() == FL_DAMAGE_OVERLAY) {
@@ -357,6 +365,7 @@ void Fl_Gl_Window::flush() {
if (fixcursor) SetCursor(Fl_X::i(this)->cursor);
#endif
valid(1);
+ context_valid(1);
}
void Fl_Gl_Window::resize(int X,int Y,int W,int H) {
@@ -408,7 +417,7 @@ void Fl_Gl_Window::init() {
context_ = 0;
g = 0;
overlay = 0;
- valid_ = 0;
+ valid_f_ = 0;
damage1_ = 0;
#if 0 // This breaks resizing on Linux/X11
@@ -423,5 +432,5 @@ void Fl_Gl_Window::draw_overlay() {}
#endif
//
-// End of "$Id: Fl_Gl_Window.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: Fl_Gl_Window.cxx 5322 2006-08-17 09:49:43Z matt $".
//
diff --git a/src/Fl_Group.cxx b/src/Fl_Group.cxx
index f815fe9..150b645 100644
--- a/src/Fl_Group.cxx
+++ b/src/Fl_Group.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Group.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Group.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Group widget for the Fast Light Tool Kit (FLTK).
//
@@ -608,5 +608,5 @@ void Fl_Group::draw_outside_label(const Fl_Widget& widget) const {
}
//
-// End of "$Id: Fl_Group.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Group.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Help_Dialog.cxx b/src/Fl_Help_Dialog.cxx
index e03226b..7619afc 100644
--- a/src/Fl_Help_Dialog.cxx
+++ b/src/Fl_Help_Dialog.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Help_Dialog.cxx 4721 2005-12-19 16:52:11Z matt $"
+// "$Id: Fl_Help_Dialog.cxx 5643 2007-01-28 19:36:51Z mike $"
//
// Fl_Help_Dialog dialog for the Fast Light Tool Kit (FLTK).
//
@@ -25,63 +25,12 @@
// http://www.fltk.org/str.php
//
-// generated by Fast Light User Interface Designer (fluid) version 1.0107
+// generated by Fast Light User Interface Designer (fluid) version 1.0108
#include "../FL/Fl_Help_Dialog.H"
#include "flstring.h"
#include <FL/fl_ask.H>
-void Fl_Help_Dialog::cb_view__i(Fl_Help_View*, void*) {
- if (view_->filename())
-{
- if (view_->changed())
- {
- index_ ++;
-
- if (index_ >= 100)
- {
- memmove(line_, line_ + 10, sizeof(line_[0]) * 90);
- memmove(file_, file_ + 10, sizeof(file_[0]) * 90);
- index_ -= 10;
- }
-
- max_ = index_;
-
- strlcpy(file_[index_], view_->filename(),sizeof(file_[0]));
- line_[index_] = view_->topline();
-
- if (index_ > 0)
- back_->activate();
- else
- back_->deactivate();
-
- forward_->deactivate();
- window_->label(view_->title());
- }
- else // if ! view_->changed()
- {
- strlcpy(file_[index_], view_->filename(), sizeof(file_[0]));
- line_[index_] = view_->topline();
- }
-} else { // if ! view_->filename()
- index_ = 0; // hitting an internal page will disable the back/fwd buffer
- file_[index_][0] = 0; // unnamed internal page
- line_[index_] = view_->topline();
- back_->deactivate();
- forward_->deactivate();
-};
-}
-void Fl_Help_Dialog::cb_view_(Fl_Help_View* o, void* v) {
- ((Fl_Help_Dialog*)(o->parent()->user_data()))->cb_view__i(o,v);
-}
-
-void Fl_Help_Dialog::cb_Close_i(Fl_Button*, void*) {
- window_->hide();
-}
-void Fl_Help_Dialog::cb_Close(Fl_Button* o, void* v) {
- ((Fl_Help_Dialog*)(o->parent()->parent()->user_data()))->cb_Close_i(o,v);
-}
-
void Fl_Help_Dialog::cb_back__i(Fl_Button*, void*) {
if (index_ > 0)
index_ --;
@@ -153,73 +102,104 @@ void Fl_Help_Dialog::cb_find_(Fl_Input* o, void* v) {
((Fl_Help_Dialog*)(o->parent()->parent()->parent()->user_data()))->cb_find__i(o,v);
}
-Fl_Help_Dialog::Fl_Help_Dialog() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = window_ = new Fl_Double_Window(530, 385, "Help Dialog");
- w = o;
- o->user_data((void*)(this));
- { Fl_Help_View* o = view_ = new Fl_Help_View(10, 10, 510, 330);
- o->box(FL_DOWN_BOX);
- o->color(FL_BACKGROUND_COLOR);
- o->selection_color(FL_SELECTION_COLOR);
- o->labeltype(FL_NORMAL_LABEL);
- o->labelfont(0);
- o->labelsize(14);
- o->labelcolor(FL_FOREGROUND_COLOR);
- o->callback((Fl_Callback*)cb_view_);
- o->align(FL_ALIGN_TOP);
- o->when(FL_WHEN_RELEASE);
- o->end();
- Fl_Group::current()->resizable(o);
+void Fl_Help_Dialog::cb_view__i(Fl_Help_View*, void*) {
+ if (view_->filename())
+{
+ if (view_->changed())
+ {
+ index_ ++;
+
+ if (index_ >= 100)
+ {
+ memmove(line_, line_ + 10, sizeof(line_[0]) * 90);
+ memmove(file_, file_ + 10, sizeof(file_[0]) * 90);
+ index_ -= 10;
}
- { Fl_Group* o = new Fl_Group(10, 348, 510, 27);
- { Fl_Button* o = new Fl_Button(456, 350, 64, 25, "Close");
- o->callback((Fl_Callback*)cb_Close);
- o->label(fl_close);
- }
- { Fl_Button* o = back_ = new Fl_Button(386, 350, 25, 25, "@<-");
- o->tooltip("Show the previous help page.");
- o->shortcut(0xff51);
- o->labelcolor((Fl_Color)2);
- o->callback((Fl_Callback*)cb_back_);
- }
- { Fl_Button* o = forward_ = new Fl_Button(421, 350, 25, 25, "@->");
- o->tooltip("Show the next help page.");
- o->shortcut(0xff53);
- o->labelcolor((Fl_Color)2);
- o->callback((Fl_Callback*)cb_forward_);
- }
- { Fl_Button* o = smaller_ = new Fl_Button(316, 350, 25, 25, "F");
- o->tooltip("Make the help text smaller.");
- o->labelfont(1);
- o->labelsize(10);
- o->callback((Fl_Callback*)cb_smaller_);
- }
- { Fl_Button* o = larger_ = new Fl_Button(351, 350, 25, 25, "F");
- o->tooltip("Make the help text larger.");
- o->labelfont(1);
- o->labelsize(16);
- o->callback((Fl_Callback*)cb_larger_);
- }
- { Fl_Group* o = new Fl_Group(10, 350, 296, 25);
+
+ max_ = index_;
+
+ strlcpy(file_[index_], view_->filename(),sizeof(file_[0]));
+ line_[index_] = view_->topline();
+
+ if (index_ > 0)
+ back_->activate();
+ else
+ back_->deactivate();
+
+ forward_->deactivate();
+ window_->label(view_->title());
+ }
+ else // if ! view_->changed()
+ {
+ strlcpy(file_[index_], view_->filename(), sizeof(file_[0]));
+ line_[index_] = view_->topline();
+ }
+} else { // if ! view_->filename()
+ index_ = 0; // hitting an internal page will disable the back/fwd buffer
+ file_[index_][0] = 0; // unnamed internal page
+ line_[index_] = view_->topline();
+ back_->deactivate();
+ forward_->deactivate();
+};
+}
+void Fl_Help_Dialog::cb_view_(Fl_Help_View* o, void* v) {
+ ((Fl_Help_Dialog*)(o->parent()->user_data()))->cb_view__i(o,v);
+}
+
+Fl_Help_Dialog::Fl_Help_Dialog() {
+ { window_ = new Fl_Double_Window(530, 385, "Help Dialog");
+ window_->user_data((void*)(this));
+ { Fl_Group* o = new Fl_Group(10, 10, 511, 25);
+ { back_ = new Fl_Button(10, 10, 25, 25, "@<-");
+ back_->tooltip("Show the previous help page.");
+ back_->shortcut(0xff51);
+ back_->labelcolor((Fl_Color)2);
+ back_->callback((Fl_Callback*)cb_back_);
+ } // Fl_Button* back_
+ { forward_ = new Fl_Button(45, 10, 25, 25, "@->");
+ forward_->tooltip("Show the next help page.");
+ forward_->shortcut(0xff53);
+ forward_->labelcolor((Fl_Color)2);
+ forward_->callback((Fl_Callback*)cb_forward_);
+ } // Fl_Button* forward_
+ { smaller_ = new Fl_Button(80, 10, 25, 25, "F");
+ smaller_->tooltip("Make the help text smaller.");
+ smaller_->labelfont(1);
+ smaller_->labelsize(10);
+ smaller_->callback((Fl_Callback*)cb_smaller_);
+ } // Fl_Button* smaller_
+ { larger_ = new Fl_Button(115, 10, 25, 25, "F");
+ larger_->tooltip("Make the help text larger.");
+ larger_->labelfont(1);
+ larger_->labelsize(16);
+ larger_->callback((Fl_Callback*)cb_larger_);
+ } // Fl_Button* larger_
+ { Fl_Group* o = new Fl_Group(350, 10, 171, 25);
o->box(FL_DOWN_BOX);
o->color(FL_BACKGROUND2_COLOR);
- { Fl_Input* o = find_ = new Fl_Input(35, 352, 268, 21, "@search");
- o->tooltip("find text in document");
- o->box(FL_FLAT_BOX);
- o->labelsize(13);
- o->callback((Fl_Callback*)cb_find_);
- o->when(FL_WHEN_ENTER_KEY_ALWAYS);
- Fl_Group::current()->resizable(o);
- }
+ { find_ = new Fl_Input(375, 12, 143, 21, "@search");
+ find_->tooltip("find text in document");
+ find_->box(FL_FLAT_BOX);
+ find_->labelsize(13);
+ find_->textfont(4);
+ find_->callback((Fl_Callback*)cb_find_);
+ find_->when(FL_WHEN_ENTER_KEY_ALWAYS);
+ } // Fl_Input* find_
o->end();
+ } // Fl_Group* o
+ { Fl_Box* o = new Fl_Box(150, 10, 190, 25);
Fl_Group::current()->resizable(o);
- }
+ } // Fl_Box* o
o->end();
- }
- o->size_range(260, 150);
- o->end();
- }
+ } // Fl_Group* o
+ { view_ = new Fl_Help_View(10, 45, 510, 330);
+ view_->box(FL_DOWN_BOX);
+ view_->callback((Fl_Callback*)cb_view_);
+ Fl_Group::current()->resizable(view_);
+ } // Fl_Help_View* view_
+ window_->size_range(260, 150);
+ window_->end();
+ } // Fl_Double_Window* window_
back_->deactivate();
forward_->deactivate();
@@ -317,5 +297,5 @@ int Fl_Help_Dialog::y() {
}
//
-// End of "$Id: Fl_Help_Dialog.cxx 4721 2005-12-19 16:52:11Z matt $".
+// End of "$Id: Fl_Help_Dialog.cxx 5643 2007-01-28 19:36:51Z mike $".
//
diff --git a/src/Fl_Help_Dialog.fl b/src/Fl_Help_Dialog.fl
index e06c555..909e2ba 100644
--- a/src/Fl_Help_Dialog.fl
+++ b/src/Fl_Help_Dialog.fl
@@ -1,9 +1,9 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0107
+version 1.0108
header_name {../FL/Fl_Help_Dialog.H}
code_name {.cxx}
comment {//
-// "$Id: Fl_Help_Dialog.fl 4721 2005-12-19 16:52:11Z matt $"
+// "$Id: Fl_Help_Dialog.fl 5643 2007-01-28 19:36:51Z mike $"
//
// Fl_Help_Dialog dialog for the Fast Light Tool Kit (FLTK).
//
@@ -42,63 +42,15 @@ class FL_EXPORT Fl_Help_Dialog {open
decl {int line_[100];} {}
decl {char file_[100][256];} {}
decl {int find_pos_;} {}
- Function {Fl_Help_Dialog()} {} {
+ Function {Fl_Help_Dialog()} {open
+ } {
Fl_Window window_ {
label {Help Dialog} open
- private xywh {398 65 530 385} type Double resizable size_range {260 150 0 0} visible
+ private xywh {398 64 530 385} type Double resizable size_range {260 150 0 0} visible
} {
- Fl_Group view_ {
- callback {if (view_->filename())
-{
- if (view_->changed())
- {
- index_ ++;
-
- if (index_ >= 100)
- {
- memmove(line_, line_ + 10, sizeof(line_[0]) * 90);
- memmove(file_, file_ + 10, sizeof(file_[0]) * 90);
- index_ -= 10;
- }
-
- max_ = index_;
-
- strlcpy(file_[index_], view_->filename(),sizeof(file_[0]));
- line_[index_] = view_->topline();
-
- if (index_ > 0)
- back_->activate();
- else
- back_->deactivate();
-
- forward_->deactivate();
- window_->label(view_->title());
- }
- else // if ! view_->changed()
- {
- strlcpy(file_[index_], view_->filename(), sizeof(file_[0]));
- line_[index_] = view_->topline();
- }
-} else { // if ! view_->filename()
- index_ = 0; // hitting an internal page will disable the back/fwd buffer
- file_[index_][0] = 0; // unnamed internal page
- line_[index_] = view_->topline();
- back_->deactivate();
- forward_->deactivate();
-}} open
- private xywh {10 10 510 330} box DOWN_BOX selection_color 15 resizable
- code0 {\#include <FL/Fl_Help_View.H>}
- class Fl_Help_View
- } {}
- Fl_Group {} {open
- xywh {10 348 510 27}
+ Fl_Group {} {open selected
+ xywh {10 10 511 25}
} {
- Fl_Button {} {
- label Close
- callback {window_->hide();}
- private xywh {456 350 64 25}
- code0 {o->label(fl_close);}
- }
Fl_Button back_ {
label {@<-}
callback {if (index_ > 0)
@@ -115,7 +67,7 @@ if (strcmp(view_->filename(), file_[index_]) != 0)
view_->load(file_[index_]);
view_->topline(l);}
- private tooltip {Show the previous help page.} xywh {386 350 25 25} shortcut 0xff51 labelcolor 2
+ private tooltip {Show the previous help page.} xywh {10 10 25 25} shortcut 0xff51 labelcolor 2
}
Fl_Button forward_ {
label {@->}
@@ -133,7 +85,7 @@ if (strcmp(view_->filename(), file_[index_]) != 0)
view_->load(file_[index_]);
view_->topline(l);}
- private tooltip {Show the next help page.} xywh {421 350 25 25} shortcut 0xff53 labelcolor 2
+ private tooltip {Show the next help page.} xywh {45 10 25 25} shortcut 0xff53 labelcolor 2
}
Fl_Button smaller_ {
label F
@@ -143,7 +95,7 @@ view_->topline(l);}
if (view_->textsize() <= 8)
smaller_->deactivate();
larger_->activate();}
- private tooltip {Make the help text smaller.} xywh {316 350 25 25} labelfont 1 labelsize 10
+ private tooltip {Make the help text smaller.} xywh {80 10 25 25} labelfont 1 labelsize 10
}
Fl_Button larger_ {
label F
@@ -153,17 +105,61 @@ larger_->activate();}
if (view_->textsize() >= 18)
larger_->deactivate();
smaller_->activate();}
- private tooltip {Make the help text larger.} xywh {351 350 25 25} labelfont 1 labelsize 16
+ private tooltip {Make the help text larger.} xywh {115 10 25 25} labelfont 1 labelsize 16
}
Fl_Group {} {open
- xywh {10 350 296 25} box DOWN_BOX color 7 resizable
+ xywh {350 10 171 25} box DOWN_BOX color 7
} {
Fl_Input find_ {
label {@search}
- callback {find_pos_ = view_->find(find_->value(), find_pos_);} selected
- private tooltip {find text in document} xywh {35 352 268 21} box FLAT_BOX labelsize 13 when 10 resizable
+ callback {find_pos_ = view_->find(find_->value(), find_pos_);}
+ private tooltip {find text in document} xywh {375 12 143 21} box FLAT_BOX labelsize 13 when 10 textfont 4
}
}
+ Fl_Box {} {
+ xywh {150 10 190 25} resizable
+ }
+ }
+ Fl_Help_View view_ {
+ callback {if (view_->filename())
+{
+ if (view_->changed())
+ {
+ index_ ++;
+
+ if (index_ >= 100)
+ {
+ memmove(line_, line_ + 10, sizeof(line_[0]) * 90);
+ memmove(file_, file_ + 10, sizeof(file_[0]) * 90);
+ index_ -= 10;
+ }
+
+ max_ = index_;
+
+ strlcpy(file_[index_], view_->filename(),sizeof(file_[0]));
+ line_[index_] = view_->topline();
+
+ if (index_ > 0)
+ back_->activate();
+ else
+ back_->deactivate();
+
+ forward_->deactivate();
+ window_->label(view_->title());
+ }
+ else // if ! view_->changed()
+ {
+ strlcpy(file_[index_], view_->filename(), sizeof(file_[0]));
+ line_[index_] = view_->topline();
+ }
+} else { // if ! view_->filename()
+ index_ = 0; // hitting an internal page will disable the back/fwd buffer
+ file_[index_][0] = 0; // unnamed internal page
+ line_[index_] = view_->topline();
+ back_->deactivate();
+ forward_->deactivate();
+}}
+ private xywh {10 45 510 330} box DOWN_BOX resizable
}
}
code {back_->deactivate();
@@ -264,6 +260,6 @@ window_->label(view_->title());} {}
comment {
//
-// End of "$Id: Fl_Help_Dialog.fl 4721 2005-12-19 16:52:11Z matt $".
+// End of "$Id: Fl_Help_Dialog.fl 5643 2007-01-28 19:36:51Z mike $".
//} {in_source in_header
}
diff --git a/src/Fl_Help_View.cxx b/src/Fl_Help_View.cxx
index 020252c..ffb0ef4 100644
--- a/src/Fl_Help_View.cxx
+++ b/src/Fl_Help_View.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Help_View.cxx 4669 2005-11-28 16:39:57Z matt $"
+// "$Id: Fl_Help_View.cxx 5794 2007-05-01 23:20:39Z matt $"
//
// Fl_Help_View widget routines.
//
-// Copyright 1997-2005 by Easy Software Products.
+// Copyright 1997-2007 by Easy Software Products.
// Image support donated by Matthias Melcher, Copyright 2000.
//
// This library is free software; you can redistribute it and/or
@@ -55,7 +55,9 @@
//
#include <FL/Fl_Help_View.H>
+#include <FL/Fl_Window.H>
#include <FL/Fl_Pixmap.H>
+#include <FL/x.H>
#include <stdio.h>
#include <stdlib.h>
#include "flstring.h"
@@ -136,6 +138,140 @@ static const char *broken_xpm[] =
static Fl_Pixmap broken_image(broken_xpm);
+//
+// Simple margin stack for Fl_Help_View::format()...
+//
+
+struct fl_margins {
+ int depth_;
+ int margins_[100];
+
+ fl_margins() { clear(); }
+
+ int clear() {
+// puts("fl_margins::clear()");
+
+ depth_ = 0;
+ return margins_[0] = 4;
+ }
+
+ int current() { return margins_[depth_]; }
+
+ int pop() {
+// printf("fl_margins::pop(): depth_=%d, xx=%d\n", depth_,
+// depth_ > 0 ? margins_[depth_ - 1] : 4);
+
+ if (depth_ > 0) {
+ depth_ --;
+ return margins_[depth_];
+ } else return 4;
+ }
+
+ int push(int indent) {
+ int xx;
+
+ xx = margins_[depth_] + indent;
+
+// printf("fl_margins::push(indent=%d): depth_=%d, xx=%d\n", indent,
+// depth_ + 1, xx);
+
+ if (depth_ < 99) {
+ depth_ ++;
+ margins_[depth_] = xx;
+ }
+
+ return xx;
+ }
+};
+
+//
+// All the stuff needed to implement text selection in Fl_Help_View
+//
+
+/* matt:
+ * We are trying to keep binary compatibility with previous versions
+ * of FLTK. This means that we are limited to adding static variables
+ * only to not enlarge the Fl_Help_View class. Lucky for us, only one
+ * text can be selected system wide, so we can remember the selection
+ * in a single set of variables.
+ *
+ * Still to do:
+ * - &word; style characters mess up our count inside a word boundary
+ * - we can only select words, no individual characters
+ * - no dragging of the selection into another widget
+ * - selection must be cleared if another widget get focus!
+ * - write a comment for every new function
+ */
+
+/*
+The following functions are also used to draw stuff and should be replaced with
+local copies that are much faster when merely counting:
+
+fl_color(Fl_Color);
+fl_rectf(int, int, int, int);
+fl_push_clip(int, int, int, int);
+fl_xyline(int, int, int);
+fl_rect()
+fl_line()
+img->draw()
+*/
+
+// We don't put the offscreen buffer in the help view class because
+// we'd need to include x.H in the header...
+static Fl_Offscreen fl_help_view_buffer;
+int Fl_Help_View::selection_first = 0;
+int Fl_Help_View::selection_last = 0;
+int Fl_Help_View::selection_push_first = 0;
+int Fl_Help_View::selection_push_last = 0;
+int Fl_Help_View::selection_drag_first = 0;
+int Fl_Help_View::selection_drag_last = 0;
+int Fl_Help_View::selected = 0;
+int Fl_Help_View::draw_mode = 0;
+int Fl_Help_View::mouse_x = 0;
+int Fl_Help_View::mouse_y = 0;
+int Fl_Help_View::current_pos = 0;
+Fl_Help_View *Fl_Help_View::current_view = 0L;
+Fl_Color Fl_Help_View::hv_selection_color;
+Fl_Color Fl_Help_View::hv_selection_text_color;
+
+/*
+ * Limitation: if a word contains &code; notations, we will calculate a wrong length.
+ *
+ * This function must be optimized for speed!
+ */
+void Fl_Help_View::hv_draw(const char *t, int x, int y)
+{
+ if (selected && current_view==this && current_pos<selection_last && current_pos>=selection_first) {
+ Fl_Color c = fl_color();
+ fl_color(hv_selection_color);
+ int w = (int)fl_width(t);
+ if (current_pos+(int)strlen(t)<selection_last)
+ w += (int)fl_width(' ');
+ fl_rectf(x, y+fl_descent()-fl_height(), w, fl_height());
+ fl_color(hv_selection_text_color);
+ fl_draw(t, x, y);
+ fl_color(c);
+ } else {
+ fl_draw(t, x, y);
+ }
+ if (draw_mode) {
+ int w = (int)fl_width(t);
+ if (mouse_x>=x && mouse_x<x+w) {
+ if (mouse_y>=y-fl_height()+fl_descent()&&mouse_y<=y+fl_descent()) {
+ int f = current_pos;
+ int l = f+strlen(t); // use 'quote_char' to calculate the true length of the HTML string
+ if (draw_mode==1) {
+ selection_push_first = f;
+ selection_push_last = l;
+ } else {
+ selection_drag_first = f;
+ selection_drag_last = l;
+ }
+ }
+ }
+ }
+}
+
//
// 'Fl_Help_View::add_block()' - Add a text block to the list.
@@ -344,25 +480,32 @@ Fl_Help_View::draw()
draw_box(b, x(), y(), ww, hh, bgcolor_);
+ int ss = Fl::scrollbar_size();
if (hscrollbar_.visible()) {
draw_child(hscrollbar_);
- hh -= 17;
+ hh -= ss;
i ++;
}
if (scrollbar_.visible()) {
draw_child(scrollbar_);
- ww -= 17;
+ ww -= ss;
i ++;
}
if (i == 2) {
fl_color(FL_GRAY);
fl_rectf(x() + ww - Fl::box_dw(b) + Fl::box_dx(b),
- y() + hh - Fl::box_dh(b) + Fl::box_dy(b), 17, 17);
+ y() + hh - Fl::box_dh(b) + Fl::box_dy(b), ss, ss);
}
if (!value_)
return;
+ if (current_view == this && selected) {
+ hv_selection_color = FL_SELECTION_COLOR;
+ hv_selection_text_color = fl_contrast(textcolor_, FL_SELECTION_COLOR);
+ }
+ current_pos = 0;
+
// Clip the drawing to the inside of the box...
fl_push_clip(x() + Fl::box_dx(b), y() + Fl::box_dy(b),
ww - Fl::box_dw(b), hh - Fl::box_dh(b));
@@ -385,7 +528,7 @@ Fl_Help_View::draw()
for (ptr = block->start, s = buf; ptr < block->end;)
{
- if ((*ptr == '<' || isspace(*ptr)) && s > buf)
+ if ((*ptr == '<' || isspace((*ptr)&255)) && s > buf)
{
if (!head && !pre)
{
@@ -406,12 +549,13 @@ Fl_Help_View::draw()
hh = 0;
}
- fl_draw(buf, xx + x() - leftline_, yy + y());
+ hv_draw(buf, xx + x() - leftline_, yy + y());
if (underline) {
- xtra_ww = isspace(*ptr)?(int)fl_width(' '):0;
+ xtra_ww = isspace((*ptr)&255)?(int)fl_width(' '):0;
fl_xyline(xx + x() - leftline_, yy + y() + 1,
xx + x() - leftline_ + ww + xtra_ww);
}
+ current_pos = ptr-value_;
xx += ww;
if ((fsize + 2) > hh)
@@ -421,18 +565,19 @@ Fl_Help_View::draw()
}
else if (pre)
{
- while (isspace(*ptr))
+ while (isspace((*ptr)&255))
{
if (*ptr == '\n')
{
*s = '\0';
s = buf;
- fl_draw(buf, xx + x() - leftline_, yy + y());
+ hv_draw(buf, xx + x() - leftline_, yy + y());
if (underline) fl_xyline(xx + x() - leftline_, yy + y() + 1,
xx + x() - leftline_ +
(int)fl_width(buf));
+ current_pos = ptr-value_;
if (line < 31)
line ++;
xx = block->line[line];
@@ -459,11 +604,12 @@ Fl_Help_View::draw()
*s = '\0';
s = buf;
- fl_draw(buf, xx + x() - leftline_, yy + y());
+ hv_draw(buf, xx + x() - leftline_, yy + y());
ww = (int)fl_width(buf);
if (underline) fl_xyline(xx + x() - leftline_, yy + y() + 1,
xx + x() - leftline_ + ww);
xx += ww;
+ current_pos = ptr-value_;
}
needspace = 0;
@@ -472,8 +618,9 @@ Fl_Help_View::draw()
{
s = buf;
- while (isspace(*ptr))
+ while (isspace((*ptr)&255))
ptr ++;
+ current_pos = ptr-value_;
}
}
@@ -494,7 +641,7 @@ Fl_Help_View::draw()
break;
}
- while (*ptr && *ptr != '>' && !isspace(*ptr))
+ while (*ptr && *ptr != '>' && !isspace((*ptr)&255))
if (s < (buf + sizeof(buf) - 1))
*s++ = *ptr++;
else
@@ -510,6 +657,8 @@ Fl_Help_View::draw()
if (*ptr == '>')
ptr ++;
+ // end of command reached, set the supposed start of printed eord here
+ current_pos = ptr-value_;
if (strcasecmp(buf, "HEAD") == 0)
head = 1;
else if (strcasecmp(buf, "BR") == 0)
@@ -568,10 +717,10 @@ Fl_Help_View::draw()
{
#ifdef __APPLE_QUARTZ__
fl_font(FL_SYMBOL, fsize);
- fl_draw("\245", xx - fsize + x() - leftline_, yy + y());
+ hv_draw("\245", xx - fsize + x() - leftline_, yy + y());
#else
fl_font(FL_SYMBOL, fsize);
- fl_draw("\267", xx - fsize + x() - leftline_, yy + y());
+ hv_draw("\267", xx - fsize + x() - leftline_, yy + y());
#endif
}
@@ -755,7 +904,7 @@ Fl_Help_View::draw()
*s = '\0';
s = buf;
- fl_draw(buf, xx + x() - leftline_, yy + y());
+ hv_draw(buf, xx + x() - leftline_, yy + y());
if (line < 31)
line ++;
@@ -765,8 +914,9 @@ Fl_Help_View::draw()
needspace = 0;
ptr ++;
+ current_pos = ptr-value_;
}
- else if (isspace(*ptr))
+ else if (isspace((*ptr)&255))
{
if (pre)
{
@@ -781,6 +931,7 @@ Fl_Help_View::draw()
}
ptr ++;
+ if (!pre) current_pos = ptr-value_;
needspace = 1;
}
else if (*ptr == '&')
@@ -829,9 +980,10 @@ Fl_Help_View::draw()
if (s > buf && !head)
{
- fl_draw(buf, xx + x() - leftline_, yy + y());
+ hv_draw(buf, xx + x() - leftline_, yy + y());
if (underline) fl_xyline(xx + x() - leftline_, yy + y() + 1,
xx + x() - leftline_ + ww);
+ current_pos = ptr-value_;
}
}
@@ -942,6 +1094,7 @@ Fl_Help_View::format()
Fl_Color tc, rc; // Table/row background color
Fl_Boxtype b = box() ? box() : FL_DOWN_BOX;
// Box to draw...
+ fl_margins margins; // Left margin stack...
// Reset document width...
@@ -958,7 +1111,7 @@ Fl_Help_View::format()
size_ = 0;
bgcolor_ = color();
textcolor_ = textcolor();
- linkcolor_ = selection_color();
+ linkcolor_ = fl_contrast(FL_BLUE, color());
tc = rc = bgcolor_;
@@ -972,7 +1125,7 @@ Fl_Help_View::format()
line = 0;
links = 0;
- xx = 4;
+ xx = margins.clear();
yy = fsize + 2;
ww = 0;
column = 0;
@@ -990,7 +1143,7 @@ Fl_Help_View::format()
for (ptr = value_, s = buf; *ptr;)
{
- if ((*ptr == '<' || isspace(*ptr)) && s > buf)
+ if ((*ptr == '<' || isspace((*ptr)&255)) && s > buf)
{
// Get width...
*s = '\0';
@@ -1040,7 +1193,7 @@ Fl_Help_View::format()
hh = fsize + 2;
// Handle preformatted text...
- while (isspace(*ptr))
+ while (isspace((*ptr)&255))
{
if (*ptr == '\n')
{
@@ -1072,7 +1225,7 @@ Fl_Help_View::format()
else
{
// Handle normal text or stuff in the <HEAD> section...
- while (isspace(*ptr))
+ while (isspace((*ptr)&255))
ptr ++;
}
@@ -1097,7 +1250,7 @@ Fl_Help_View::format()
break;
}
- while (*ptr && *ptr != '>' && !isspace(*ptr))
+ while (*ptr && *ptr != '>' && !isspace((*ptr)&255))
if (s < (buf + sizeof(buf) - 1))
*s++ = *ptr++;
else
@@ -1146,7 +1299,7 @@ Fl_Help_View::format()
textcolor_ = get_color(get_attr(attrs, "TEXT", attr, sizeof(attr)),
textcolor());
linkcolor_ = get_color(get_attr(attrs, "LINK", attr, sizeof(attr)),
- selection_color());
+ fl_contrast(FL_BLUE, color()));
}
else if (strcasecmp(buf, "BR") == 0)
{
@@ -1176,6 +1329,7 @@ Fl_Help_View::format()
{
block->end = start;
line = do_align(block, line, xx, newalign, links);
+ newalign = strcasecmp(buf, "CENTER") ? LEFT : CENTER;
xx = block->x;
block->h += hh;
@@ -1184,7 +1338,7 @@ Fl_Help_View::format()
strcasecmp(buf, "DL") == 0)
{
block->h += fsize + 2;
- xx += 4 * fsize;
+ xx = margins.push(4 * fsize);
}
else if (strcasecmp(buf, "TABLE") == 0)
{
@@ -1300,16 +1454,13 @@ Fl_Help_View::format()
strcasecmp(buf, "/OL") == 0 ||
strcasecmp(buf, "/DL") == 0)
{
- xx -= 4 * fsize;
+ xx = margins.pop();
block->h += fsize + 2;
}
else if (strcasecmp(buf, "/TABLE") == 0)
{
block->h += fsize + 2;
- // the current block is *not* the table block, so the current xx is
- // meaningless. Set it back to page x, so the next block will be aligned
- // reasonably. This fails fro table-in-table html!
- xx = 4;
+ xx = margins.current();
}
else if (strcasecmp(buf, "/PRE") == 0)
{
@@ -1321,7 +1472,7 @@ Fl_Help_View::format()
popfont(font, fsize);
- while (isspace(*ptr))
+ while (isspace((*ptr)&255))
ptr ++;
block->h += hh;
@@ -1384,9 +1535,9 @@ Fl_Help_View::format()
line = do_align(block, line, xx, newalign, links);
block->end = start;
block->h += hh;
+ talign = LEFT;
xx = blocks_[row].x;
-
yy = blocks_[row].y + blocks_[row].h;
for (cell = blocks_ + row + 1; cell <= block; cell ++)
@@ -1404,7 +1555,7 @@ Fl_Help_View::format()
cell->h = block->h;
}
- yy = block->y + block->h - 4;
+ yy = block->y + block->h /*- 4*/;
block = add_block(start, xx, yy, hsize_, 0);
needspace = 0;
row = 0;
@@ -1431,6 +1582,8 @@ Fl_Help_View::format()
for (i = 0; i < column; i ++)
xx += columns[i] + 6;
+ margins.push(xx - margins.current());
+
if (get_attr(attrs, "COLSPAN", attr, sizeof(attr)) != NULL)
colspan = atoi(attr);
else
@@ -1465,34 +1618,37 @@ Fl_Help_View::format()
else if ((strcasecmp(buf, "/TD") == 0 ||
strcasecmp(buf, "/TH") == 0) && row)
{
+ line = do_align(block, line, xx, newalign, links);
popfont(font, fsize);
+ xx = margins.pop();
+ talign = LEFT;
}
- else if (strcasecmp(buf, "FONT") == 0)
- {
- if (get_attr(attrs, "FACE", attr, sizeof(attr)) != NULL) {
- if (!strncasecmp(attr, "helvetica", 9) ||
- !strncasecmp(attr, "arial", 5) ||
- !strncasecmp(attr, "sans", 4)) font = FL_HELVETICA;
- else if (!strncasecmp(attr, "times", 5) ||
- !strncasecmp(attr, "serif", 5)) font = FL_TIMES;
- else if (!strncasecmp(attr, "symbol", 6)) font = FL_SYMBOL;
- else font = FL_COURIER;
- }
+ else if (strcasecmp(buf, "FONT") == 0)
+ {
+ if (get_attr(attrs, "FACE", attr, sizeof(attr)) != NULL) {
+ if (!strncasecmp(attr, "helvetica", 9) ||
+ !strncasecmp(attr, "arial", 5) ||
+ !strncasecmp(attr, "sans", 4)) font = FL_HELVETICA;
+ else if (!strncasecmp(attr, "times", 5) ||
+ !strncasecmp(attr, "serif", 5)) font = FL_TIMES;
+ else if (!strncasecmp(attr, "symbol", 6)) font = FL_SYMBOL;
+ else font = FL_COURIER;
+ }
- if (get_attr(attrs, "SIZE", attr, sizeof(attr)) != NULL) {
- if (isdigit(attr[0] & 255)) {
- // Absolute size
- fsize = (int)(textsize_ * pow(1.2, atoi(attr) - 3.0));
- } else {
- // Relative size
- fsize = (int)(fsize * pow(1.2, atoi(attr)));
- }
+ if (get_attr(attrs, "SIZE", attr, sizeof(attr)) != NULL) {
+ if (isdigit(attr[0] & 255)) {
+ // Absolute size
+ fsize = (int)(textsize_ * pow(1.2, atoi(attr) - 3.0));
+ } else {
+ // Relative size
+ fsize = (int)(fsize * pow(1.2, atoi(attr)));
}
-
- pushfont(font, fsize);
}
- else if (strcasecmp(buf, "/FONT") == 0)
- popfont(font, fsize);
+
+ pushfont(font, fsize);
+ }
+ else if (strcasecmp(buf, "/FONT") == 0)
+ popfont(font, fsize);
else if (strcasecmp(buf, "B") == 0 ||
strcasecmp(buf, "STRONG") == 0)
pushfont(font |= FL_BOLD, fsize);
@@ -1581,7 +1737,7 @@ Fl_Help_View::format()
needspace = 0;
ptr ++;
}
- else if (isspace(*ptr))
+ else if (isspace((*ptr)&255))
{
needspace = 1;
@@ -1653,6 +1809,7 @@ Fl_Help_View::format()
size_ = yy + hh;
}
+// printf("margins.depth_=%d\n", margins.depth_);
if (ntargets_ > 1)
qsort(targets_, ntargets_, sizeof(Fl_Help_Target),
@@ -1660,38 +1817,47 @@ Fl_Help_View::format()
int dx = Fl::box_dw(b) - Fl::box_dx(b);
int dy = Fl::box_dh(b) - Fl::box_dy(b);
+ int ss = Fl::scrollbar_size();
+ int dw = Fl::box_dw(b) + ss;
+ int dh = Fl::box_dh(b);
- if (hsize_ > (w() - 24)) {
+ if (hsize_ > (w() - dw)) {
hscrollbar_.show();
- if (size_ < (h() - 24)) {
+ dh += ss;
+
+ if (size_ < (h() - dh)) {
scrollbar_.hide();
- hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - 17 - dy, w() - Fl::box_dw(b), 17);
+ hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - ss - dy,
+ w() - Fl::box_dw(b), ss);
} else {
scrollbar_.show();
- scrollbar_.resize(x() + w() - 17 - dx, y() + Fl::box_dy(b), 17, h() - 17 - Fl::box_dh(b));
- hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - 17 - dy, w() - 17 - Fl::box_dw(b), 17);
+ scrollbar_.resize(x() + w() - ss - dx, y() + Fl::box_dy(b),
+ ss, h() - ss - Fl::box_dh(b));
+ hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - ss - dy,
+ w() - ss - Fl::box_dw(b), ss);
}
} else {
hscrollbar_.hide();
- if (size_ < (h() - 8)) scrollbar_.hide();
+ if (size_ < (h() - dh)) scrollbar_.hide();
else {
- scrollbar_.resize(x() + w() - 17 - dx, y() + Fl::box_dy(b), 17, h() - Fl::box_dh(b));
+ scrollbar_.resize(x() + w() - ss - dx, y() + Fl::box_dy(b),
+ ss, h() - Fl::box_dh(b));
scrollbar_.show();
}
}
// Reset scrolling if it needs to be...
if (scrollbar_.visible()) {
- int temph = h() - 8;
- if (hscrollbar_.visible()) temph -= 16;
+ int temph = h() - Fl::box_dh(box());
+ if (hscrollbar_.visible()) temph -= ss;
if ((topline_ + temph) > size_) topline(size_ - temph);
else topline(topline_);
} else topline(0);
if (hscrollbar_.visible()) {
- int tempw = w() - 24;
+ int tempw = w() - ss - Fl::box_dw(box());
if ((leftline_ + tempw) > hsize_) leftline(hsize_ - tempw);
else leftline(leftline_);
} else leftline(0);
@@ -1747,7 +1913,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
// Scan the table...
for (ptr = table, column = -1, width = 0, s = buf, incell = 0; *ptr;)
{
- if ((*ptr == '<' || isspace(*ptr)) && s > buf && incell)
+ if ((*ptr == '<' || isspace((*ptr)&255)) && s > buf && incell)
{
// Check width...
if (needspace)
@@ -1773,7 +1939,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
{
start = ptr;
- for (s = buf, ptr ++; *ptr && *ptr != '>' && !isspace(*ptr);)
+ for (s = buf, ptr ++; *ptr && *ptr != '>' && !isspace((*ptr)&255);)
if (s < (buf + sizeof(buf) - 1))
*s++ = *ptr++;
else
@@ -2012,7 +2178,7 @@ Fl_Help_View::format_table(int *table_width, // O - Total table width
needspace = 0;
ptr ++;
}
- else if (isspace(*ptr))
+ else if (isspace((*ptr)&255))
{
needspace = 1;
@@ -2172,13 +2338,13 @@ Fl_Help_View::get_attr(const char *p, // I - Pointer to start of attributes
while (*p && *p != '>')
{
- while (isspace(*p))
+ while (isspace((*p)&255))
p ++;
if (*p == '>' || !*p)
return (NULL);
- for (ptr = name; *p && !isspace(*p) && *p != '=' && *p != '>';)
+ for (ptr = name; *p && !isspace((*p)&255) && *p != '=' && *p != '>';)
if (ptr < (name + sizeof(name) - 1))
*ptr++ = *p++;
else
@@ -2186,14 +2352,14 @@ Fl_Help_View::get_attr(const char *p, // I - Pointer to start of attributes
*ptr = '\0';
- if (isspace(*p) || !*p || *p == '>')
+ if (isspace((*p)&255) || !*p || *p == '>')
buf[0] = '\0';
else
{
if (*p == '=')
p ++;
- for (ptr = buf; *p && !isspace(*p) && *p != '>';)
+ for (ptr = buf; *p && !isspace((*p)&255) && *p != '>';)
if (*p == '\'' || *p == '\"')
{
quote = *p++;
@@ -2363,112 +2529,353 @@ Fl_Help_View::get_length(const char *l) { // I - Value
}
-//
-// 'Fl_Help_View::handle()' - Handle events in the widget.
-//
+Fl_Help_Link *Fl_Help_View::find_link(int xx, int yy)
+{
+ int i;
+ Fl_Help_Link *linkp;
+ for (i = nlinks_, linkp = links_; i > 0; i --, linkp ++) {
+ if (xx >= linkp->x && xx < linkp->w &&
+ yy >= linkp->y && yy < linkp->h)
+ break;
+ }
+ return i ? linkp : 0L;
+}
-int // O - 1 if we handled it, 0 otherwise
-Fl_Help_View::handle(int event) // I - Event to handle
+void Fl_Help_View::follow_link(Fl_Help_Link *linkp)
{
- int i; // Looping var
- int xx, yy; // Adjusted mouse position
- Fl_Help_Link *linkp; // Current link
char target[32]; // Current target
+ clear_selection();
- switch (event)
+ strlcpy(target, linkp->name, sizeof(target));
+
+ set_changed();
+
+ if (strcmp(linkp->filename, filename_) != 0 && linkp->filename[0])
{
- case FL_PUSH :
- if (Fl_Group::handle(event))
- return (1);
+ char dir[1024]; // Current directory
+ char temp[1024], // Temporary filename
+ *tempptr; // Pointer into temporary filename
- case FL_MOVE :
- xx = Fl::event_x() - x() + leftline_;
- yy = Fl::event_y() - y() + topline_;
- break;
- case FL_LEAVE :
- fl_cursor(FL_CURSOR_DEFAULT);
+ if (strchr(directory_, ':') != NULL &&
+ strchr(linkp->filename, ':') == NULL)
+ {
+ if (linkp->filename[0] == '/')
+ {
+ strlcpy(temp, directory_, sizeof(temp));
+ if ((tempptr = strrchr(strchr(directory_, ':') + 3, '/')) != NULL)
+ strlcpy(tempptr, linkp->filename, sizeof(temp));
+ else
+ strlcat(temp, linkp->filename, sizeof(temp));
+ }
+ else
+ snprintf(temp, sizeof(temp), "%s/%s", directory_, linkp->filename);
+ }
+ else if (linkp->filename[0] != '/' && strchr(linkp->filename, ':') == NULL)
+ {
+ if (directory_[0])
+ snprintf(temp, sizeof(temp), "%s/%s", directory_, linkp->filename);
+ else
+ {
+ getcwd(dir, sizeof(dir));
+ snprintf(temp, sizeof(temp), "file:%s/%s", dir, linkp->filename);
+ }
+ }
+ else
+ strlcpy(temp, linkp->filename, sizeof(temp));
+
+ if (linkp->name[0])
+ snprintf(temp + strlen(temp), sizeof(temp) - strlen(temp), "#%s",
+ linkp->name);
- default :
- return (Fl_Group::handle(event));
+ load(temp);
}
+ else if (target[0])
+ topline(target);
+ else
+ topline(0);
- // Handle mouse clicks on links...
- for (i = nlinks_, linkp = links_; i > 0; i --, linkp ++)
- if (xx >= linkp->x && xx < linkp->w &&
- yy >= linkp->y && yy < linkp->h)
- break;
+ leftline(0);
+}
- if (!i)
- {
- fl_cursor(FL_CURSOR_DEFAULT);
- return (1);
+void Fl_Help_View::clear_selection()
+{
+ if (current_view==this)
+ clear_global_selection();
+}
+
+void Fl_Help_View::select_all()
+{
+ clear_global_selection();
+ if (!value_) return;
+ current_view = this;
+ selection_drag_last = selection_last = strlen(value_);
+ selected = 1;
+}
+
+void Fl_Help_View::clear_global_selection()
+{
+ if (selected) redraw();
+ selection_push_first = selection_push_last = 0;
+ selection_drag_first = selection_drag_last = 0;
+ selection_first = selection_last = 0;
+ selected = 0;
+}
+
+char Fl_Help_View::begin_selection()
+{
+ clear_global_selection();
+
+ if (!fl_help_view_buffer) fl_help_view_buffer = fl_create_offscreen(1, 1);
+
+ mouse_x = Fl::event_x();
+ mouse_y = Fl::event_y();
+ draw_mode = 1;
+
+ current_view = this;
+ fl_begin_offscreen(fl_help_view_buffer);
+ draw();
+ fl_end_offscreen();
+
+ draw_mode = 0;
+
+ if (selection_push_last) return 1;
+ else return 0;
+}
+
+char Fl_Help_View::extend_selection()
+{
+ if (Fl::event_is_click())
+ return 0;
+
+// printf("old selection_first=%d, selection_last=%d\n",
+// selection_first, selection_last);
+
+ int sf = selection_first, sl = selection_last;
+
+ selected = 1;
+ mouse_x = Fl::event_x();
+ mouse_y = Fl::event_y();
+ draw_mode = 2;
+
+ fl_begin_offscreen(fl_help_view_buffer);
+ draw();
+ fl_end_offscreen();
+
+ draw_mode = 0;
+
+ if (selection_push_first < selection_drag_first) {
+ selection_first = selection_push_first;
+ } else {
+ selection_first = selection_drag_first;
}
- // Change the cursor for FL_MOTION events, and go to the link for
- // clicks...
- if (event == FL_MOVE)
- fl_cursor(FL_CURSOR_HAND);
- else
- {
- fl_cursor(FL_CURSOR_DEFAULT);
+ if (selection_push_last > selection_drag_last) {
+ selection_last = selection_push_last;
+ } else {
+ selection_last = selection_drag_last;
+ }
- strlcpy(target, linkp->name, sizeof(target));
+// printf("new selection_first=%d, selection_last=%d\n",
+// selection_first, selection_last);
- set_changed();
+ if (sf!=selection_first || sl!=selection_last) {
+// puts("REDRAW!!!\n");
+ return 1;
+ } else {
+// puts("");
+ return 0;
+ }
+}
- if (strcmp(linkp->filename, filename_) != 0 && linkp->filename[0])
- {
- char dir[1024]; // Current directory
- char temp[1024], // Temporary filename
- *tempptr; // Pointer into temporary filename
+// convert a command with up to four letters into an unsigned int
+static unsigned int command(const char *cmd)
+{
+ unsigned int ret = (tolower(cmd[0])<<24);
+ char c = cmd[1];
+ if (c=='>' || c==' ' || c==0) return ret;
+ ret |= (tolower(c)<<16);
+ c = cmd[2];
+ if (c=='>' || c==' ' || c==0) return ret;
+ ret |= (tolower(c)<<8);
+ c = cmd[3];
+ if (c=='>' || c==' ' || c==0) return ret;
+ ret |= tolower(c);
+ c = cmd[4];
+ if (c=='>' || c==' ' || c==0) return ret;
+ return 0;
+}
+#define CMD(a, b, c, d) ((a<<24)|(b<<16)|(c<<8)|d)
- if (strchr(directory_, ':') != NULL &&
- strchr(linkp->filename, ':') == NULL)
- {
- if (linkp->filename[0] == '/')
- {
- strlcpy(temp, directory_, sizeof(temp));
- if ((tempptr = strrchr(strchr(directory_, ':') + 3, '/')) != NULL)
- strlcpy(tempptr, linkp->filename, sizeof(temp));
- else
- strlcat(temp, linkp->filename, sizeof(temp));
- }
- else
- snprintf(temp, sizeof(temp), "%s/%s", directory_, linkp->filename);
+void Fl_Help_View::end_selection(int clipboard)
+{
+ if (!selected || current_view!=this)
+ return;
+ // convert the select part of our html text into some kind of somewhat readable ASCII
+ // and store it in the selection buffer
+ char p = 0, pre = 0;;
+ int len = strlen(value_);
+ char *txt = (char*)malloc(len+1), *d = txt;
+ const char *s = value_, *cmd, *src;
+ for (;;) {
+ char c = *s++;
+ if (c==0) break;
+ if (c=='<') { // begin of some html command. Skip until we find a '>'
+ cmd = s;
+ for (;;) {
+ c = *s++;
+ if (c==0 || c=='>') break;
}
- else if (linkp->filename[0] != '/' && strchr(linkp->filename, ':') == NULL)
- {
- if (directory_[0])
- snprintf(temp, sizeof(temp), "%s/%s", directory_, linkp->filename);
- else
- {
- getcwd(dir, sizeof(dir));
- snprintf(temp, sizeof(temp), "file:%s/%s", dir, linkp->filename);
- }
+ if (c==0) break;
+ // do something with this command... .
+ // the replacement string must not be longer that the command itself plus '<' and '>'
+ src = 0;
+ switch (command(cmd)) {
+ case CMD('p','r','e', 0 ): pre = 1; break;
+ case CMD('/','p','r','e'): pre = 0; break;
+ case CMD('t','d', 0 , 0 ):
+ case CMD('p', 0 , 0 , 0 ):
+ case CMD('/','p', 0 , 0 ):
+ case CMD('b','r', 0 , 0 ): src = "\n"; break;
+ case CMD('l','i', 0 , 0 ): src = "\n * "; break;
+ case CMD('/','h','1', 0 ):
+ case CMD('/','h','2', 0 ):
+ case CMD('/','h','3', 0 ):
+ case CMD('/','h','4', 0 ):
+ case CMD('/','h','5', 0 ):
+ case CMD('/','h','6', 0 ): src = "\n\n"; break;
+ case CMD('t','r', 0 , 0 ):
+ case CMD('h','1', 0 , 0 ):
+ case CMD('h','2', 0 , 0 ):
+ case CMD('h','3', 0 , 0 ):
+ case CMD('h','4', 0 , 0 ):
+ case CMD('h','5', 0 , 0 ):
+ case CMD('h','6', 0 , 0 ): src = "\n\n"; break;
+ case CMD('d','t', 0 , 0 ): src = "\n "; break;
+ case CMD('d','d', 0 , 0 ): src = "\n - "; break;
}
- else
- strlcpy(temp, linkp->filename, sizeof(temp));
+ int n = s-value_;
+ if (src && n>selection_first && n<=selection_last) {
+ while (*src) {
+ *d++ = *src++;
+ }
+ c = src[-1];
+ p = isspace(c) ? ' ' : c;
+ }
+ continue;
+ }
+ if (c=='&') { // special characters
+ int xx = quote_char(s);
+ if (xx>=0) {
+ c = (char)xx;
+ for (;;) {
+ char cc = *s++;
+ if (!cc || cc==';') break;
+ }
+ }
+ }
+ int n = s-value_;
+ if (n>selection_first && n<=selection_last) {
+ if (!pre && isspace(c)) c = ' ';
+ if (p!=' '||c!=' ')
+ *d++ = c;
+ p = c;
+ }
+ }
+ *d = 0;
+ Fl::copy(txt, strlen(txt), clipboard);
+ free(txt);
+}
- if (linkp->name[0])
- snprintf(temp + strlen(temp), sizeof(temp) - strlen(temp), "#%s",
- linkp->name);
+#define ctrl(x) ((x)&0x1f)
- load(temp);
- }
- else if (target[0])
- topline(target);
- else
- topline(0);
+//
+// 'Fl_Help_View::handle()' - Handle events in the widget.
+//
- leftline(0);
- }
+int // O - 1 if we handled it, 0 otherwise
+Fl_Help_View::handle(int event) // I - Event to handle
+{
+ static Fl_Help_Link *linkp; // currently clicked link
- return (1);
-}
+ int xx = Fl::event_x() - x() + leftline_;
+ int yy = Fl::event_y() - y() + topline_;
+ switch (event)
+ {
+ case FL_FOCUS:
+ redraw();
+ return 1;
+ case FL_UNFOCUS:
+ clear_selection();
+ redraw();
+ return 1;
+ case FL_ENTER :
+ Fl_Group::handle(event);
+ return 1;
+ case FL_LEAVE :
+ fl_cursor(FL_CURSOR_DEFAULT);
+ break;
+ case FL_MOVE:
+ if (find_link(xx, yy)) fl_cursor(FL_CURSOR_HAND);
+ else fl_cursor(FL_CURSOR_DEFAULT);
+ return 1;
+ case FL_PUSH:
+ if (Fl_Group::handle(event)) return 1;
+ linkp = find_link(xx, yy);
+ if (linkp) {
+ fl_cursor(FL_CURSOR_HAND);
+ return 1;
+ }
+ if (begin_selection()) {
+ fl_cursor(FL_CURSOR_INSERT);
+ return 1;
+ }
+ fl_cursor(FL_CURSOR_DEFAULT);
+ return 1;
+ case FL_DRAG:
+ if (linkp) {
+ if (Fl::event_is_click()) {
+ fl_cursor(FL_CURSOR_HAND);
+ } else {
+ fl_cursor(FL_CURSOR_DEFAULT); // should be "FL_CURSOR_CANCEL" if we had it
+ }
+ return 1;
+ }
+ if (current_view==this && selection_push_last) {
+ if (extend_selection()) redraw();
+ fl_cursor(FL_CURSOR_INSERT);
+ return 1;
+ }
+ fl_cursor(FL_CURSOR_DEFAULT);
+ return 1;
+ case FL_RELEASE:
+ if (linkp) {
+ if (Fl::event_is_click()) {
+ follow_link(linkp);
+ }
+ fl_cursor(FL_CURSOR_DEFAULT);
+ linkp = 0;
+ return 1;
+ }
+ if (current_view==this && selection_push_last) {
+ end_selection();
+ return 1;
+ }
+ return 1;
+ case FL_SHORTCUT: {
+ char ascii = Fl::event_text()[0];
+ switch (ascii) {
+ case ctrl('A'): select_all(); redraw(); return 1;
+ case ctrl('C'):
+ case ctrl('X'): end_selection(1); return 1;
+ }
+ break; }
+ }
+ return (Fl_Group::handle(event));
+}
//
// 'Fl_Help_View::Fl_Help_View()' - Build a Fl_Help_View widget.
@@ -2480,8 +2887,10 @@ Fl_Help_View::Fl_Help_View(int xx, // I - Left position
int hh, // I - Height in pixels
const char *l)
: Fl_Group(xx, yy, ww, hh, l),
- scrollbar_(xx + ww - 17, yy, 17, hh - 17),
- hscrollbar_(xx, yy + hh - 17, ww - 17, 17)
+ scrollbar_(xx + ww - Fl::scrollbar_size(), yy,
+ Fl::scrollbar_size(), hh - Fl::scrollbar_size()),
+ hscrollbar_(xx, yy + hh - Fl::scrollbar_size(),
+ ww - Fl::scrollbar_size(), Fl::scrollbar_size())
{
color(FL_BACKGROUND2_COLOR, FL_SELECTION_COLOR);
@@ -2567,6 +2976,8 @@ Fl_Help_View::load(const char *f)// I - Filename to load (may also have target)
char newname[1024]; // New filename buffer
+ clear_selection();
+
strlcpy(newname, f, sizeof(newname));
if ((target = strrchr(newname, '#')) != NULL)
*target++ = '\0';
@@ -2665,10 +3076,12 @@ Fl_Help_View::resize(int xx, // I - New left position
Fl_Widget::resize(xx, yy, ww, hh);
- scrollbar_.resize(x() + w() - 17 - Fl::box_dw(b) + Fl::box_dx(b), y() + Fl::box_dy(b),
- 17, h() - 17 - Fl::box_dh(b));
- hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - 17 - Fl::box_dh(b) + Fl::box_dy(b),
- w() - 17 - Fl::box_dw(b), 17);
+ int ss = Fl::scrollbar_size();
+ scrollbar_.resize(x() + w() - ss - Fl::box_dw(b) + Fl::box_dx(b),
+ y() + Fl::box_dy(b), ss, h() - ss - Fl::box_dh(b));
+ hscrollbar_.resize(x() + Fl::box_dx(b),
+ y() + h() - ss - Fl::box_dh(b) + Fl::box_dy(b),
+ w() - ss - Fl::box_dw(b), ss);
format();
}
@@ -2753,6 +3166,8 @@ Fl_Help_View::leftline(int l) // I - Left position
void
Fl_Help_View::value(const char *v) // I - Text to view
{
+ clear_selection();
+
if (!v)
return;
@@ -2768,6 +3183,14 @@ Fl_Help_View::value(const char *v) // I - Text to view
leftline(0);
}
+#ifdef ENC
+# undef ENC
+#endif
+#ifdef __APPLE__
+# define ENC(a, b) b
+#else
+# define ENC(a, b) a
+#endif
//
// 'quote_char()' - Return the character code associated with a quoted char.
@@ -2782,106 +3205,111 @@ quote_char(const char *p) { // I - Quoted string
int code;
} *nameptr, // Pointer into name array
names[] = { // Quoting names
- { "Aacute;", 7, 193 },
- { "aacute;", 7, 225 },
- { "Acirc;", 6, 194 },
- { "acirc;", 6, 226 },
- { "acute;", 6, 180 },
- { "AElig;", 6, 198 },
- { "aelig;", 6, 230 },
- { "Agrave;", 7, 192 },
- { "agrave;", 7, 224 },
- { "amp;", 4, '&' },
- { "Aring;", 6, 197 },
- { "aring;", 6, 229 },
- { "Atilde;", 7, 195 },
- { "atilde;", 7, 227 },
- { "Auml;", 5, 196 },
- { "auml;", 5, 228 },
- { "brvbar;", 7, 166 },
- { "Ccedil;", 7, 199 },
- { "ccedil;", 7, 231 },
- { "cedil;", 6, 184 },
- { "cent;", 5, 162 },
- { "copy;", 5, 169 },
- { "curren;", 7, 164 },
- { "deg;", 4, 176 },
- { "divide;", 7, 247 },
- { "Eacute;", 7, 201 },
- { "eacute;", 7, 233 },
- { "Ecirc;", 6, 202 },
- { "ecirc;", 6, 234 },
- { "Egrave;", 7, 200 },
- { "egrave;", 7, 232 },
- { "ETH;", 4, 208 },
- { "eth;", 4, 240 },
- { "Euml;", 5, 203 },
- { "euml;", 5, 235 },
- { "frac12;", 7, 189 },
- { "frac14;", 7, 188 },
- { "frac34;", 7, 190 },
- { "gt;", 3, '>' },
- { "Iacute;", 7, 205 },
- { "iacute;", 7, 237 },
- { "Icirc;", 6, 206 },
- { "icirc;", 6, 238 },
- { "iexcl;", 6, 161 },
- { "Igrave;", 7, 204 },
- { "igrave;", 7, 236 },
- { "iquest;", 7, 191 },
- { "Iuml;", 5, 207 },
- { "iuml;", 5, 239 },
- { "laquo;", 6, 171 },
- { "lt;", 3, '<' },
- { "macr;", 5, 175 },
- { "micro;", 6, 181 },
- { "middot;", 7, 183 },
- { "nbsp;", 5, ' ' },
- { "not;", 4, 172 },
- { "Ntilde;", 7, 209 },
- { "ntilde;", 7, 241 },
- { "Oacute;", 7, 211 },
- { "oacute;", 7, 243 },
- { "Ocirc;", 6, 212 },
- { "ocirc;", 6, 244 },
- { "Ograve;", 7, 210 },
- { "ograve;", 7, 242 },
- { "ordf;", 5, 170 },
- { "ordm;", 5, 186 },
- { "Oslash;", 7, 216 },
- { "oslash;", 7, 248 },
- { "Otilde;", 7, 213 },
- { "otilde;", 7, 245 },
- { "Ouml;", 5, 214 },
- { "ouml;", 5, 246 },
- { "para;", 5, 182 },
- { "plusmn;", 7, 177 },
- { "pound;", 6, 163 },
- { "quot;", 5, '\"' },
- { "raquo;", 6, 187 },
- { "reg;", 4, 174 },
- { "sect;", 5, 167 },
- { "shy;", 4, 173 },
- { "sup1;", 5, 185 },
- { "sup2;", 5, 178 },
- { "sup3;", 5, 179 },
- { "szlig;", 6, 223 },
- { "THORN;", 6, 222 },
- { "thorn;", 6, 254 },
- { "times;", 6, 215 },
- { "Uacute;", 7, 218 },
- { "uacute;", 7, 250 },
- { "Ucirc;", 6, 219 },
- { "ucirc;", 6, 251 },
- { "Ugrave;", 7, 217 },
- { "ugrave;", 7, 249 },
- { "uml;", 4, 168 },
- { "Uuml;", 5, 220 },
- { "uuml;", 5, 252 },
- { "Yacute;", 7, 221 },
- { "yacute;", 7, 253 },
- { "yen;", 4, 165 },
- { "yuml;", 5, 255 }
+ { "Aacute;", 7, ENC(193,231) },
+ { "aacute;", 7, ENC(225,135) },
+ { "Acirc;", 6, ENC(194,229) },
+ { "acirc;", 6, ENC(226,137) },
+ { "acute;", 6, ENC(180,171) },
+ { "AElig;", 6, ENC(198,174) },
+ { "aelig;", 6, ENC(230,190) },
+ { "Agrave;", 7, ENC(192,203) },
+ { "agrave;", 7, ENC(224,136) },
+ { "amp;", 4, ENC('&','&') },
+ { "Aring;", 6, ENC(197,129) },
+ { "aring;", 6, ENC(229,140) },
+ { "Atilde;", 7, ENC(195,204) },
+ { "atilde;", 7, ENC(227,139) },
+ { "Auml;", 5, ENC(196,128) },
+ { "auml;", 5, ENC(228,138) },
+ { "brvbar;", 7, ENC(166, -1) },
+ { "bull;", 5, ENC(149,165) },
+ { "Ccedil;", 7, ENC(199,199) },
+ { "ccedil;", 7, ENC(231,141) },
+ { "cedil;", 6, ENC(184,252) },
+ { "cent;", 5, ENC(162,162) },
+ { "copy;", 5, ENC(169,169) },
+ { "curren;", 7, ENC(164, -1) },
+ { "deg;", 4, ENC(176,161) },
+ { "divide;", 7, ENC(247,214) },
+ { "Eacute;", 7, ENC(201,131) },
+ { "eacute;", 7, ENC(233,142) },
+ { "Ecirc;", 6, ENC(202,230) },
+ { "ecirc;", 6, ENC(234,144) },
+ { "Egrave;", 7, ENC(200,233) },
+ { "egrave;", 7, ENC(232,143) },
+ { "ETH;", 4, ENC(208, -1) },
+ { "eth;", 4, ENC(240, -1) },
+ { "Euml;", 5, ENC(203,232) },
+ { "euml;", 5, ENC(235,145) },
+ { "euro;", 5, ENC(128,219) },
+ { "frac12;", 7, ENC(189, -1) },
+ { "frac14;", 7, ENC(188, -1) },
+ { "frac34;", 7, ENC(190, -1) },
+ { "gt;", 3, ENC('>','>') },
+ { "Iacute;", 7, ENC(205,234) },
+ { "iacute;", 7, ENC(237,146) },
+ { "Icirc;", 6, ENC(206,235) },
+ { "icirc;", 6, ENC(238,148) },
+ { "iexcl;", 6, ENC(161,193) },
+ { "Igrave;", 7, ENC(204,237) },
+ { "igrave;", 7, ENC(236,147) },
+ { "iquest;", 7, ENC(191,192) },
+ { "Iuml;", 5, ENC(207,236) },
+ { "iuml;", 5, ENC(239,149) },
+ { "laquo;", 6, ENC(171,199) },
+ { "lt;", 3, ENC('<','<') },
+ { "macr;", 5, ENC(175,248) },
+ { "micro;", 6, ENC(181,181) },
+ { "middot;", 7, ENC(183,225) },
+ { "nbsp;", 5, ENC(' ',' ') },
+ { "not;", 4, ENC(172,194) },
+ { "Ntilde;", 7, ENC(209,132) },
+ { "ntilde;", 7, ENC(241,150) },
+ { "Oacute;", 7, ENC(211,238) },
+ { "oacute;", 7, ENC(243,151) },
+ { "Ocirc;", 6, ENC(212,239) },
+ { "ocirc;", 6, ENC(244,153) },
+ { "Ograve;", 7, ENC(210,241) },
+ { "ograve;", 7, ENC(242,152) },
+ { "ordf;", 5, ENC(170,187) },
+ { "ordm;", 5, ENC(186,188) },
+ { "Oslash;", 7, ENC(216,175) },
+ { "oslash;", 7, ENC(248,191) },
+ { "Otilde;", 7, ENC(213,205) },
+ { "otilde;", 7, ENC(245,155) },
+ { "Ouml;", 5, ENC(214,133) },
+ { "ouml;", 5, ENC(246,154) },
+ { "para;", 5, ENC(182,166) },
+ { "premil;", 7, ENC(137,228) },
+ { "plusmn;", 7, ENC(177,177) },
+ { "pound;", 6, ENC(163,163) },
+ { "quot;", 5, ENC('\"','\"') },
+ { "raquo;", 6, ENC(187,200) },
+ { "reg;", 4, ENC(174,168) },
+ { "sect;", 5, ENC(167,164) },
+ { "shy;", 4, ENC(173,'-') },
+ { "sup1;", 5, ENC(185, -1) },
+ { "sup2;", 5, ENC(178, -1) },
+ { "sup3;", 5, ENC(179, -1) },
+ { "szlig;", 6, ENC(223,167) },
+ { "THORN;", 6, ENC(222, -1) },
+ { "thorn;", 6, ENC(254, -1) },
+ { "times;", 6, ENC(215,'x') },
+ { "trade;", 6, ENC(153,170) },
+ { "Uacute;", 7, ENC(218,242) },
+ { "uacute;", 7, ENC(250,156) },
+ { "Ucirc;", 6, ENC(219,243) },
+ { "ucirc;", 6, ENC(251,158) },
+ { "Ugrave;", 7, ENC(217,244) },
+ { "ugrave;", 7, ENC(249,157) },
+ { "uml;", 4, ENC(168,172) },
+ { "Uuml;", 5, ENC(220,134) },
+ { "uuml;", 5, ENC(252,159) },
+ { "Yacute;", 7, ENC(221, -1) },
+ { "yacute;", 7, ENC(253, -1) },
+ { "yen;", 4, ENC(165,180) },
+ { "Yuml;", 5, ENC(159,217) },
+ { "yuml;", 5, ENC(255,216) }
};
if (!strchr(p, ';')) return -1;
@@ -2920,5 +3348,5 @@ hscrollbar_callback(Fl_Widget *s, void *)
//
-// End of "$Id: Fl_Help_View.cxx 4669 2005-11-28 16:39:57Z matt $".
+// End of "$Id: Fl_Help_View.cxx 5794 2007-05-01 23:20:39Z matt $".
//
diff --git a/src/Fl_Image.cxx b/src/Fl_Image.cxx
index b390020..f7aeb40 100644
--- a/src/Fl_Image.cxx
+++ b/src/Fl_Image.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Image.cxx 4621 2005-11-02 11:30:41Z matt $"
+// "$Id: Fl_Image.cxx 5825 2007-05-14 13:18:44Z matt $"
//
// Image drawing code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -130,8 +130,10 @@ Fl_RGB_Image::~Fl_RGB_Image() {
void Fl_RGB_Image::uncache() {
#ifdef __APPLE_QUARTZ__
- if (id)
+ if (id) {
CGImageRelease((CGImageRef)id);
+ id = 0;
+ }
#else
if (id) {
fl_delete_offscreen((Fl_Offscreen)id);
@@ -156,9 +158,19 @@ Fl_Image *Fl_RGB_Image::copy(int W, int H) {
if (array) {
// Make a copy of the image data and return a new Fl_RGB_Image...
new_array = new uchar[w() * h() * d()];
- memcpy(new_array, array, w() * h() * d());
-
- new_image = new Fl_RGB_Image(new_array, w(), h(), d(), ld());
+ if (ld() && ld()!=w()*d()) {
+ const uchar *src = array;
+ uchar *dst = new_array;
+ int dy, dh = h(), wd = w()*d(), wld = ld();
+ for (dy=0; dy<dh; dy++) {
+ memcpy(dst, src, wd);
+ src += wld;
+ dst += wd;
+ }
+ } else {
+ memcpy(new_array, array, w() * h() * d());
+ }
+ new_image = new Fl_RGB_Image(new_array, w(), h(), d());
new_image->alloc_array = 1;
return new_image;
@@ -174,7 +186,8 @@ Fl_Image *Fl_RGB_Image::copy(int W, int H) {
dx, dy, // Destination coordinates
xerr, yerr, // X & Y errors
xmod, ymod, // X & Y moduli
- xstep, ystep; // X & Y step increments
+ xstep, ystep, // X & Y step increments
+ line_d; // stride from line to line
// Figure out Bresenheim step/modulus values...
@@ -182,6 +195,7 @@ Fl_Image *Fl_RGB_Image::copy(int W, int H) {
xstep = (w() / W) * d();
ymod = h() % H;
ystep = h() / H;
+ line_d = ld() ? ld() : w() * d();
// Allocate memory for the new image...
new_array = new uchar [W * H * d()];
@@ -190,9 +204,7 @@ Fl_Image *Fl_RGB_Image::copy(int W, int H) {
// Scale the image using a nearest-neighbor algorithm...
for (dy = H, sy = 0, yerr = H, new_ptr = new_array; dy > 0; dy --) {
- for (dx = W, xerr = W, old_ptr = array + sy * (w() * d() + ld());
- dx > 0;
- dx --) {
+ for (dx = W, xerr = W, old_ptr = array + sy * line_d; dx > 0; dx --) {
for (c = 0; c < d(); c ++) *new_ptr++ = old_ptr[c];
old_ptr += xstep;
@@ -245,17 +257,18 @@ void Fl_RGB_Image::color_average(Fl_Color c, float i) {
// Update the image data to do the blend...
const uchar *old_ptr;
int x, y;
+ int line_i = ld() ? ld() - (w()*d()) : 0; // increment from line end to beginning of next line
if (d() < 3) {
ig = (r * 31 + g * 61 + b * 8) / 100 * (256 - ia);
- for (new_ptr = new_array, old_ptr = array, y = 0; y < h(); y ++, old_ptr += ld())
+ for (new_ptr = new_array, old_ptr = array, y = 0; y < h(); y ++, old_ptr += line_i)
for (x = 0; x < w(); x ++) {
*new_ptr++ = (*old_ptr++ * ia + ig) >> 8;
if (d() > 1) *new_ptr++ = *old_ptr++;
}
} else {
- for (new_ptr = new_array, old_ptr = array, y = 0; y < h(); y ++, old_ptr += ld())
+ for (new_ptr = new_array, old_ptr = array, y = 0; y < h(); y ++, old_ptr += line_i)
for (x = 0; x < w(); x ++) {
*new_ptr++ = (*old_ptr++ * ia + ir) >> 8;
*new_ptr++ = (*old_ptr++ * ia + ig) >> 8;
@@ -294,8 +307,9 @@ void Fl_RGB_Image::desaturate() {
// Copy the image data, converting to grayscale...
const uchar *old_ptr;
int x, y;
+ int line_i = ld() ? ld() - (w()*d()) : 0; // increment from line end to beginning of next line
- for (new_ptr = new_array, old_ptr = array, y = 0; y < h(); y ++, old_ptr += ld())
+ for (new_ptr = new_array, old_ptr = array, y = 0; y < h(); y ++, old_ptr += line_i)
for (x = 0; x < w(); x ++, old_ptr += d()) {
*new_ptr++ = (uchar)((31 * old_ptr[0] + 61 * old_ptr[1] + 8 * old_ptr[2]) / 100);
if (d() > 3) *new_ptr++ = old_ptr[3];
@@ -311,6 +325,64 @@ void Fl_RGB_Image::desaturate() {
d(new_d);
}
+#if !defined(WIN32) && !USE_QUARTZ
+// Composite an image with alpha on systems that don't have accelerated
+// alpha compositing...
+static void alpha_blend(Fl_RGB_Image *img, int X, int Y, int W, int H, int cx, int cy) {
+ uchar *srcptr = (uchar*)img->array + img->d() * (img->w() * cy + cx);
+ int srcskip = img->d() * (img->w() - W);
+
+ uchar *dst = new uchar[W * H * 3];
+ uchar *dstptr = dst;
+
+ fl_read_image(dst, X, Y, W, H, 0);
+
+ uchar srcr, srcg, srcb, srca;
+ uchar dstr, dstg, dstb, dsta;
+
+ if (img->d() == 2) {
+ // Composite grayscale + alpha over RGB...
+ // Composite RGBA over RGB...
+ for (int y = H; y > 0; y--, srcptr+=srcskip)
+ for (int x = W; x > 0; x--, dstptr+=3) {
+ srcg = *srcptr++;
+ srca = *srcptr++;
+
+ dstr = dstptr[0];
+ dstg = dstptr[1];
+ dstb = dstptr[2];
+ dsta = 255 - srca;
+
+ *dstptr++ = (srcg * srca + dstr * dsta) >> 8;
+ *dstptr++ = (srcg * srca + dstg * dsta) >> 8;
+ *dstptr++ = (srcg * srca + dstb * dsta) >> 8;
+ }
+ } else {
+ // Composite RGBA over RGB...
+ for (int y = H; y > 0; y--, srcptr+=srcskip)
+ for (int x = W; x > 0; x--) {
+ srcr = *srcptr++;
+ srcg = *srcptr++;
+ srcb = *srcptr++;
+ srca = *srcptr++;
+
+ dstr = dstptr[0];
+ dstg = dstptr[1];
+ dstb = dstptr[2];
+ dsta = 255 - srca;
+
+ *dstptr++ = (srcr * srca + dstr * dsta) >> 8;
+ *dstptr++ = (srcg * srca + dstg * dsta) >> 8;
+ *dstptr++ = (srcb * srca + dstb * dsta) >> 8;
+ }
+ }
+
+ fl_draw_image(dst, X, Y, W, H, 3, 0);
+
+ delete[] dst;
+}
+#endif // !WIN32 && !USE_QUARTZ
+
void Fl_RGB_Image::draw(int XP, int YP, int WP, int HP, int cx, int cy) {
// Don't draw an empty image...
if (!d() || !array) {
@@ -337,13 +409,26 @@ void Fl_RGB_Image::draw(int XP, int YP, int WP, int HP, int cx, int cy) {
src, 0L, false, kCGRenderingIntentDefault);
CGColorSpaceRelease(lut);
CGDataProviderRelease(src);
-#else
+#elif defined(WIN32)
id = fl_create_offscreen(w(), h());
- fl_begin_offscreen((Fl_Offscreen)id);
- fl_draw_image(array, 0, 0, w(), h(), d(), ld());
- fl_end_offscreen();
- if (d() == 2 || d() == 4) {
- mask = fl_create_alphamask(w(), h(), d(), ld(), array);
+ if (d() == 2 || d() == 4 && fl_can_do_alpha_blending()) {
+ fl_begin_offscreen((Fl_Offscreen)id);
+ fl_draw_image(array, 0, 0, w(), h(), d()|FL_IMAGE_WITH_ALPHA, ld());
+ fl_end_offscreen();
+ } else {
+ fl_begin_offscreen((Fl_Offscreen)id);
+ fl_draw_image(array, 0, 0, w(), h(), d(), ld());
+ fl_end_offscreen();
+ if (d() == 2 || d() == 4) {
+ mask = fl_create_alphamask(w(), h(), d(), ld(), array);
+ }
+ }
+#else
+ if (d() == 1 || d() == 3) {
+ id = fl_create_offscreen(w(), h());
+ fl_begin_offscreen((Fl_Offscreen)id);
+ fl_draw_image(array, 0, 0, w(), h(), d(), ld());
+ fl_end_offscreen();
}
#endif
}
@@ -357,6 +442,8 @@ void Fl_RGB_Image::draw(int XP, int YP, int WP, int HP, int cx, int cy) {
BitBlt(fl_gc, X, Y, W, H, new_gc, cx, cy, SRCPAINT);
RestoreDC(new_gc,save);
DeleteDC(new_gc);
+ } else if (d()==2 || d()==4) {
+ fl_copy_offscreen_with_alpha(X, Y, W, H, (Fl_Offscreen)id, cx, cy);
} else {
fl_copy_offscreen(X, Y, W, H, (Fl_Offscreen)id, cx, cy);
}
@@ -378,48 +465,47 @@ void Fl_RGB_Image::draw(int XP, int YP, int WP, int HP, int cx, int cy) {
rgb.red = 0x0000; rgb.green = 0x0000; rgb.blue = 0x0000;
RGBForeColor(&rgb);
-# if 0
- // MRS: This *should* work, but doesn't on my system (iBook); change to
- // "#if 1" and restore the corresponding code in Fl_Bitmap.cxx
- // to test the real alpha channel support.
- CopyDeepMask(GetPortBitMapForCopyBits((GrafPtr)id),
- GetPortBitMapForCopyBits((GrafPtr)mask),
- GetPortBitMapForCopyBits(GetWindowPort(fl_window)),
- &src, &src, &dst, blend, NULL);
-# else // Fallback to screen-door transparency...
CopyMask(GetPortBitMapForCopyBits((GrafPtr)id),
GetPortBitMapForCopyBits((GrafPtr)mask),
GetPortBitMapForCopyBits(GetWindowPort(fl_window)),
&src, &src, &dst);
-# endif // 0
- } else {
- fl_copy_offscreen(X, Y, W, H, (Fl_Offscreen)id, cx, cy);
+ } else if (id) fl_copy_offscreen(X, Y, W, H, (Fl_Offscreen)id, cx, cy);
+ else {
+ // Composite image with alpha manually each time...
+ alpha_blend(this, X, Y, W, H, cx, cy);
}
#elif defined(__APPLE_QUARTZ__)
if (id && fl_gc) {
- CGRect rect = { X, Y, W, H };
+ CGRect rect = { { X, Y }, { W, H } };
Fl_X::q_begin_image(rect, cx, cy, w(), h());
CGContextDrawImage(fl_gc, rect, (CGImageRef)id);
Fl_X::q_end_image();
}
#else
- if (mask) {
- // I can't figure out how to combine a mask with existing region,
- // so cut the image down to a clipped rectangle:
- int nx, ny; fl_clip_box(X,Y,W,H,nx,ny,W,H);
- cx += nx-X; X = nx;
- cy += ny-Y; Y = ny;
- // make X use the bitmap as a mask:
- XSetClipMask(fl_display, fl_gc, mask);
- int ox = X-cx; if (ox < 0) ox += w();
- int oy = Y-cy; if (oy < 0) oy += h();
- XSetClipOrigin(fl_display, fl_gc, X-cx, Y-cy);
- }
- fl_copy_offscreen(X, Y, W, H, id, cx, cy);
- if (mask) {
- // put the old clip region back
- XSetClipOrigin(fl_display, fl_gc, 0, 0);
- fl_restore_clip();
+ if (id) {
+ if (mask) {
+ // I can't figure out how to combine a mask with existing region,
+ // so cut the image down to a clipped rectangle:
+ int nx, ny; fl_clip_box(X,Y,W,H,nx,ny,W,H);
+ cx += nx-X; X = nx;
+ cy += ny-Y; Y = ny;
+ // make X use the bitmap as a mask:
+ XSetClipMask(fl_display, fl_gc, mask);
+ int ox = X-cx; if (ox < 0) ox += w();
+ int oy = Y-cy; if (oy < 0) oy += h();
+ XSetClipOrigin(fl_display, fl_gc, X-cx, Y-cy);
+ }
+
+ fl_copy_offscreen(X, Y, W, H, id, cx, cy);
+
+ if (mask) {
+ // put the old clip region back
+ XSetClipOrigin(fl_display, fl_gc, 0, 0);
+ fl_restore_clip();
+ }
+ } else {
+ // Composite image with alpha manually each time...
+ alpha_blend(this, X, Y, W, H, cx, cy);
}
#endif
}
@@ -435,5 +521,5 @@ void Fl_RGB_Image::label(Fl_Menu_Item* m) {
//
-// End of "$Id: Fl_Image.cxx 4621 2005-11-02 11:30:41Z matt $".
+// End of "$Id: Fl_Image.cxx 5825 2007-05-14 13:18:44Z matt $".
//
diff --git a/src/Fl_Input.cxx b/src/Fl_Input.cxx
index 3c7d011..41e5906 100644
--- a/src/Fl_Input.cxx
+++ b/src/Fl_Input.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Input.cxx 4575 2005-09-19 12:06:09Z mike $"
+// "$Id: Fl_Input.cxx 5671 2007-02-08 07:58:47Z matt $"
//
// Input widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -34,6 +34,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
#include <FL/Fl_Input.H>
#include <FL/fl_draw.H>
#include <FL/fl_ask.H>
@@ -348,7 +349,11 @@ int Fl_Input::handle(int event) {
else
position(position());
return (1);
- } else return handle_key();
+ } else {
+ if (active_r() && window() && this == Fl::belowmouse())
+ window()->cursor(FL_CURSOR_NONE);
+ return handle_key();
+ }
case FL_PUSH:
if (Fl::dnd_text_ops()) {
@@ -463,5 +468,5 @@ Fl_Input::Fl_Input(int X, int Y, int W, int H, const char *l)
}
//
-// End of "$Id: Fl_Input.cxx 4575 2005-09-19 12:06:09Z mike $".
+// End of "$Id: Fl_Input.cxx 5671 2007-02-08 07:58:47Z matt $".
//
diff --git a/src/Fl_Input_.cxx b/src/Fl_Input_.cxx
index 2b64387..bf644b7 100644
--- a/src/Fl_Input_.cxx
+++ b/src/Fl_Input_.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Input_.cxx 4524 2005-08-17 18:09:20Z matt $"
+// "$Id: Fl_Input_.cxx 5532 2006-10-29 13:43:31Z mike $"
//
// Common input widget routines for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -84,8 +84,22 @@ const char* Fl_Input_::expand(const char* p, char* buf) const {
*o++ = '^';
*o++ = c ^ 0x40;
}
+#ifdef __APPLE__
+ // In MacRoman, all characters are defined, and non-break-space is 0xca
+ } else if (c == 0xCA) { // nbsp
+ *o++ = ' ';
+#else
+ // in ISO 8859-1, undefined characters are rendered as octal
+ // this is commented out since most X11 seems to use MSWindows Latin-1
+ //} else if (c >= 128 && c < 0xA0) {
+ // these codes are not defined in ISO code, so we output the octal code instead
+ // *o++ = '\\';
+ // *o++ = ((c>>6)&0x03) + '0';
+ // *o++ = ((c>>3)&0x07) + '0';
+ // *o++ = (c&0x07) + '0';
} else if (c == 0xA0) { // nbsp
*o++ = ' ';
+#endif
} else {
*o++ = c;
}
@@ -108,8 +122,14 @@ double Fl_Input_::expandpos(
if (c < ' ' || c == 127) {
if (c == '\t' && input_type()==FL_MULTILINE_INPUT) n += 8-(n%8);
else n += 2;
- } else if (c >= 128 && c < 0xA0) {
- n += 4;
+#ifdef __APPLE__
+ // in MacRoman, all characters are defined
+#else
+ // in Windows Latin-1 all characters are defined
+ //} else if (c >= 128 && c < 0xA0) {
+ // these codes are not defined in ISO code, so we output the octal code instead
+ // n += 4;
+#endif
} else {
n++;
}
@@ -226,7 +246,7 @@ void Fl_Input_::drawtext(int X, int Y, int W, int H) {
p = value();
// visit each line and draw it:
int desc = height-fl_descent();
- float xpos = X - xscroll_ + 1;
+ float xpos = (float)(X - xscroll_ + 1);
int ypos = -yscroll_;
for (; ypos < H;) {
@@ -241,14 +261,14 @@ void Fl_Input_::drawtext(int X, int Y, int W, int H) {
if (readonly()) erase_cursor_only = 0; // this isn't the most efficient way
if (erase_cursor_only && p > pp) goto CONTINUE2; // this line is after
// calculate area to erase:
- float r = X+W;
+ float r = (float)(X+W);
float xx;
if (p >= pp) {
- xx = X;
+ xx = (float)X;
if (erase_cursor_only) r = xpos+2;
else if (readonly()) xx -= 3;
} else {
- xx = xpos+expandpos(p, pp, buf, 0);
+ xx = xpos + (float)expandpos(p, pp, buf, 0);
if (erase_cursor_only) r = xx+2;
else if (readonly()) xx -= 3;
}
@@ -268,13 +288,13 @@ void Fl_Input_::drawtext(int X, int Y, int W, int H) {
int offset1 = 0;
if (pp > p) {
fl_color(tc);
- x1 += expandpos(p, pp, buf, &offset1);
+ x1 += (float)expandpos(p, pp, buf, &offset1);
fl_draw(buf, offset1, xpos, (float)(Y+ypos+desc));
}
pp = value()+selend;
- float x2 = X+W;
+ float x2 = (float)(X+W);
int offset2;
- if (pp <= e) x2 = xpos+expandpos(p, pp, buf, &offset2);
+ if (pp <= e) x2 = xpos + (float)expandpos(p, pp, buf, &offset2);
else offset2 = strlen(buf);
fl_color(selection_color());
fl_rectf((int)(x1+0.5), Y+ypos, (int)(x2-x1+0.5), height);
@@ -673,6 +693,7 @@ int Fl_Input_::handletext(int event, int X, int Y, int W, int H) {
switch (event) {
case FL_ENTER:
+ case FL_MOVE:
if (active_r() && window()) window()->cursor(FL_CURSOR_INSERT);
return 1;
@@ -688,6 +709,7 @@ int Fl_Input_::handletext(int event, int X, int Y, int W, int H) {
return 1;
case FL_UNFOCUS:
+ if (active_r() && window()) window()->cursor(FL_CURSOR_DEFAULT);
if (mark_ == position_) {
if (!(damage()&FL_DAMAGE_EXPOSE)) {minimal_update(position_); erase_cursor_only = 1;}
} else //if (Fl::selection_owner() != this)
@@ -697,6 +719,8 @@ int Fl_Input_::handletext(int event, int X, int Y, int W, int H) {
return 1;
case FL_PUSH:
+ if (active_r() && window()) window()->cursor(FL_CURSOR_INSERT);
+
handle_mouse(X, Y, W, H, Fl::event_state(FL_SHIFT));
if (Fl::focus() != this) {
@@ -848,7 +872,7 @@ int Fl_Input_::static_value(const char* str, int len) {
xscroll_ = yscroll_ = 0;
minimal_update(0);
}
- position(0, readonly() ? 0 : size());
+ position(readonly() ? 0 : size());
return 1;
}
@@ -878,5 +902,5 @@ Fl_Input_::~Fl_Input_() {
}
//
-// End of "$Id: Fl_Input_.cxx 4524 2005-08-17 18:09:20Z matt $".
+// End of "$Id: Fl_Input_.cxx 5532 2006-10-29 13:43:31Z mike $".
//
diff --git a/src/Fl_JPEG_Image.cxx b/src/Fl_JPEG_Image.cxx
index 93799e8..c33b492 100644
--- a/src/Fl_JPEG_Image.cxx
+++ b/src/Fl_JPEG_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_JPEG_Image.cxx 4544 2005-08-29 19:39:02Z matt $"
+// "$Id: Fl_JPEG_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_JPEG_Image routines.
//
@@ -191,5 +191,5 @@ Fl_JPEG_Image::Fl_JPEG_Image(const char *jpeg) // I - File to load
}
//
-// End of "$Id: Fl_JPEG_Image.cxx 4544 2005-08-29 19:39:02Z matt $".
+// End of "$Id: Fl_JPEG_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Light_Button.cxx b/src/Fl_Light_Button.cxx
index 00387c1..9a8c50b 100644
--- a/src/Fl_Light_Button.cxx
+++ b/src/Fl_Light_Button.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Light_Button.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Light_Button.cxx 5721 2007-02-27 19:23:24Z matt $"
//
// Lighted button widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -35,6 +35,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Light_Button.H>
#include <FL/fl_draw.H>
+#include "flstring.h"
void Fl_Light_Button::draw() {
if (box()) draw_box(this==Fl::pushed() ? fl_down(box()) : box(), color());
@@ -58,7 +59,11 @@ void Fl_Light_Button::draw() {
// Check box...
draw_box(down_box(), x()+dx, y()+dy, W, W, FL_BACKGROUND2_COLOR);
if (value()) {
- fl_color(col);
+ if (Fl::scheme() && !strcmp(Fl::scheme(), "gtk+")) {
+ fl_color(FL_SELECTION_COLOR);
+ } else {
+ fl_color(col);
+ }
int tx = x() + dx + 3;
int tw = W - 6;
int d1 = tw/3;
@@ -75,12 +80,19 @@ void Fl_Light_Button::draw() {
// Radio button...
draw_box(down_box(), x()+dx, y()+dy, W, W, FL_BACKGROUND2_COLOR);
if (value()) {
- fl_color(col);
int tW = (W - Fl::box_dw(down_box())) / 2 + 1;
if ((W - tW) & 1) tW++; // Make sure difference is even to center
int tdx = dx + (W - tW) / 2;
int tdy = dy + (W - tW) / 2;
+ if (Fl::scheme() && !strcmp(Fl::scheme(), "gtk+")) {
+ fl_color(FL_SELECTION_COLOR);
+ tW --;
+ fl_pie(x() + tdx - 1, y() + tdy - 1, tW + 3, tW + 3, 0.0, 360.0);
+ fl_arc(x() + tdx - 1, y() + tdy - 1, tW + 3, tW + 3, 0.0, 360.0);
+ fl_color(fl_color_average(FL_WHITE, FL_SELECTION_COLOR, 0.2f));
+ } else fl_color(col);
+
switch (tW) {
// Larger circles draw fine...
default :
@@ -106,6 +118,11 @@ void Fl_Light_Button::draw() {
fl_rectf(x() + tdx, y() + tdy, tW, tW);
break;
}
+
+ if (Fl::scheme() && !strcmp(Fl::scheme(), "gtk+")) {
+ fl_color(fl_color_average(FL_WHITE, FL_SELECTION_COLOR, 0.5));
+ fl_arc(x() + tdx, y() + tdy, tW + 1, tW + 1, 60.0, 180.0);
+ }
}
break;
default :
@@ -118,7 +135,7 @@ void Fl_Light_Button::draw() {
int ww = W/2+1;
int xx = dx;
if (w()<ww+2*xx) xx = (w()-ww)/2;
- if (Fl::scheme()) {
+ if (Fl::scheme() && !strcmp(Fl::scheme(), "plastic")) {
col = active_r() ? selection_color() : fl_inactive(selection_color());
fl_color(value() ? col : fl_color_average(col, FL_BLACK, 0.5f));
fl_pie(x()+xx, y()+dy+1, ww, hh, 0, 360);
@@ -148,5 +165,5 @@ Fl_Light_Button::Fl_Light_Button(int X, int Y, int W, int H, const char* l)
}
//
-// End of "$Id: Fl_Light_Button.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Light_Button.cxx 5721 2007-02-27 19:23:24Z matt $".
//
diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx
index 763c921..9d4edce 100644
--- a/src/Fl_Menu.cxx
+++ b/src/Fl_Menu.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Menu.cxx 4766 2006-01-17 21:04:55Z mike $"
+// "$Id: Fl_Menu.cxx 5721 2007-02-27 19:23:24Z matt $"
//
// Menu code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -36,6 +36,7 @@
#include <FL/Fl_Menu_.H>
#include <FL/fl_draw.H>
#include <stdio.h>
+#include "flstring.h"
#ifdef __APPLE__
# include <Carbon/Carbon.h>
@@ -93,6 +94,9 @@ class menuwindow : public Fl_Menu_Window {
public:
menutitle* title;
int handle(int);
+#ifdef __APPLE__
+ int early_hide_handle(int);
+#endif
int itemheight; // zero == menubar
int numitems;
int selected;
@@ -107,6 +111,7 @@ public:
int titlex(int);
void autoscroll(int);
void position(int x, int y);
+ int is_inside(int x, int y);
};
#define LEADING 4 // extra vertical leading
@@ -173,10 +178,22 @@ void Fl_Menu_Item::draw(int x, int y, int w, int h, const Fl_Menu_* m,
if (flags & FL_MENU_RADIO) {
fl_draw_box(FL_ROUND_DOWN_BOX, x+2, y+d, W, W, FL_BACKGROUND2_COLOR);
if (value()) {
- fl_color(labelcolor_);
int tW = (W - Fl::box_dw(FL_ROUND_DOWN_BOX)) / 2 + 1;
if ((W - tW) & 1) tW++; // Make sure difference is even to center
int td = Fl::box_dx(FL_ROUND_DOWN_BOX) + 1;
+ if (Fl::scheme()) {
+ // Offset the radio circle...
+ td ++;
+
+ if (!strcmp(Fl::scheme(), "gtk+")) {
+ fl_color(FL_SELECTION_COLOR);
+ tW --;
+ fl_pie(x + td + 1, y + d + td - 1, tW + 3, tW + 3, 0.0, 360.0);
+ fl_arc(x + td + 1, y + d + td - 1, tW + 3, tW + 3, 0.0, 360.0);
+ fl_color(fl_color_average(FL_WHITE, FL_SELECTION_COLOR, 0.2f));
+ } else fl_color(labelcolor_);
+ } else fl_color(labelcolor_);
+
switch (tW) {
// Larger circles draw fine...
default :
@@ -202,11 +219,20 @@ void Fl_Menu_Item::draw(int x, int y, int w, int h, const Fl_Menu_* m,
fl_rectf(x + td + 2, y + d + td, tW, tW);
break;
}
+
+ if (Fl::scheme() && !strcmp(Fl::scheme(), "gtk+")) {
+ fl_color(fl_color_average(FL_WHITE, FL_SELECTION_COLOR, 0.5));
+ fl_arc(x + td + 2, y + d + td, tW + 1, tW + 1, 60.0, 180.0);
+ }
}
} else {
fl_draw_box(FL_DOWN_BOX, x+2, y+d, W, W, FL_BACKGROUND2_COLOR);
if (value()) {
- fl_color(labelcolor_);
+ if (Fl::scheme() && !strcmp(Fl::scheme(), "gtk+")) {
+ fl_color(FL_SELECTION_COLOR);
+ } else {
+ fl_color(labelcolor_);
+ }
int tx = x + 5;
int tw = W - 6;
int d1 = tw/3;
@@ -327,9 +353,15 @@ menuwindow::menuwindow(const Fl_Menu_Item* m, int X, int Y, int Wp, int Hp,
if (m) y(Y); else {y(Y-2); w(1); h(1);}
if (t) {
- int dy = menubar_title ? Fl::box_dy(button->box())+1 : 2;
- int ht = menubar_title ? button->h()-dy*2 : Htitle+2*BW+3;
- title = new menutitle(tx, ty-ht-dy, Wtitle, ht, t);
+ if (menubar_title) {
+ int dy = Fl::box_dy(button->box())+1;
+ int ht = button->h()-dy*2;
+ title = new menutitle(tx, ty-ht-dy, Wtitle, ht, t);
+ } else {
+ int dy = 2;
+ int ht = Htitle+2*BW+3;
+ title = new menutitle(X, Y-ht-dy, Wtitle, ht, t);
+ }
} else
title = 0;
}
@@ -458,6 +490,15 @@ int menuwindow::titlex(int n) {
return xx;
}
+// return 1, if the given root coordinates are inside the window
+int menuwindow::is_inside(int mx, int my) {
+ if ( mx < x_root() || mx >= x_root() + w() ||
+ my < y_root() || my >= y_root() + h()) {
+ return 0;
+ }
+ return 1;
+}
+
////////////////////////////////////////////////////////////////
// Fl_Menu_Item::popup(...)
@@ -488,9 +529,21 @@ struct menustate {
int nummenus;
int menubar; // if true p[0] is a menubar
int state;
+ menuwindow* fakemenu; // kludge for buttons in menubar
+ int is_inside(int mx, int my);
};
static menustate* p;
+// return 1 if the coordinates are inside any of the menuwindows
+int menustate::is_inside(int mx, int my) {
+ int i;
+ for (i=nummenus-1; i>=0; i--) {
+ if (p[i]->is_inside(mx, my))
+ return 1;
+ }
+ return 0;
+}
+
static inline void setitem(const Fl_Menu_Item* i, int m, int n) {
p->current_item = i;
p->menu_number = m;
@@ -506,6 +559,9 @@ static void setitem(int m, int n) {
static int forward(int menu) { // go to next item in menu menu if possible
menustate &pp = *p;
+ // Fl_Menu_Button can geberate menu=-1. This line fixes it and selectes the first item.
+ if (menu==-1)
+ menu = 0;
menuwindow &m = *(pp.p[menu]);
int item = (menu == pp.menu_number) ? pp.item_number : m.selected;
while (++item < m.numitems) {
@@ -528,6 +584,35 @@ static int backward(int menu) { // previous item in menu menu if possible
}
int menuwindow::handle(int e) {
+#ifdef __APPLE__
+ // This off-route takes care of the "detached menu" bug on OS X.
+ // Apple event handler requires that we hide all menu windows right
+ // now, so that Carbon can continue undisturbed with handling window
+ // manager events, like dragging the application window.
+ int ret = early_hide_handle(e);
+ menustate &pp = *p;
+ if (pp.state == DONE_STATE) {
+ hide();
+ if (pp.fakemenu) {
+ pp.fakemenu->hide();
+ if (pp.fakemenu->title)
+ pp.fakemenu->title->hide();
+ }
+ int i = pp.nummenus;
+ while (i>0) {
+ menuwindow *mw = pp.p[--i];
+ if (mw) {
+ mw->hide();
+ if (mw->title)
+ mw->title->hide();
+ }
+ }
+ }
+ return ret;
+}
+
+int menuwindow::early_hide_handle(int e) {
+#endif
menustate &pp = *p;
switch (e) {
case FL_KEYBOARD:
@@ -595,20 +680,32 @@ int menuwindow::handle(int e) {
int mx = Fl::event_x_root();
int my = Fl::event_y_root();
int item=0; int mymenu = pp.nummenus-1;
- if (e == FL_PUSH && (!pp.menubar || mymenu) &&
- (mx < pp.p[mymenu]->x_root() ||
- mx >= (pp.p[mymenu]->x_root() + pp.p[mymenu]->w()) ||
- my < pp.p[mymenu]->y_root() ||
- my >= (pp.p[mymenu]->y_root() + pp.p[mymenu]->h()))) {
- // Clicking outside menu cancels it...
+ // Clicking or dragging outside menu cancels it...
+ if ((!pp.menubar || mymenu) && !pp.is_inside(mx, my)) {
setitem(0, -1, 0);
- pp.state = DONE_STATE;
+ if (e==FL_PUSH)
+ pp.state = DONE_STATE;
return 1;
}
for (mymenu = pp.nummenus-1; ; mymenu--) {
item = pp.p[mymenu]->find_selected(mx, my);
- if (item >= 0) break;
- if (mymenu <= 0) return 0;
+ if (item >= 0)
+ break;
+ if (mymenu <= 0) {
+ // buttons in menubars must be deselected if we move outside of them!
+ if (pp.menu_number==-1 && e==FL_PUSH) {
+ pp.state = DONE_STATE;
+ return 1;
+ }
+ if (pp.current_item && pp.menu_number==0 && !pp.current_item->submenu()) {
+ if (e==FL_PUSH)
+ pp.state = DONE_STATE;
+ setitem(0, -1, 0);
+ return 1;
+ }
+ // all others can stay selected
+ return 0;
+ }
}
if (my == 0 && item > 0) setitem(mymenu, item - 1);
else setitem(mymenu, item);
@@ -621,14 +718,6 @@ int menuwindow::handle(int e) {
pp.state = PUSH_STATE;
}} return 1;
case FL_RELEASE:
- // do nothing if they try to pick inactive items
- if (pp.current_item && !pp.current_item->activevisible()) {
- if (pp.state==INITIAL_STATE) {
- setitem(0, -1, 0);
- pp.state = DONE_STATE;
- }
- return 1;
- }
// Mouse must either be held down/dragged some, or this must be
// the second click (not the one that popped up the menu):
if (!Fl::event_is_click() || pp.state == PUSH_STATE ||
@@ -641,6 +730,8 @@ int menuwindow::handle(int e) {
pp.p[pp.menu_number]->redraw();
} else
#endif
+ // do nothing if they try to pick inactive items
+ if (!pp.current_item || pp.current_item->activevisible())
pp.state = DONE_STATE;
}
return 1;
@@ -674,8 +765,7 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
pp.nummenus = 1;
pp.menubar = menubar;
pp.state = INITIAL_STATE;
-
- menuwindow* fakemenu = 0; // kludge for buttons in menubar
+ pp.fakemenu = 0; // kludge for buttons in menubar
// preselected item, pop up submenus if necessary:
if (initial_item && mw.selected >= 0) {
@@ -712,7 +802,7 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
if (pp.current_item == oldi) continue;}
// only do rest if item changes:
- delete fakemenu; fakemenu = 0; // turn off "menubar button"
+ delete pp.fakemenu; pp.fakemenu = 0; // turn off "menubar button"
if (!pp.current_item) { // pointing at nothing
// turn off selection in deepest menu, but don't erase other menus:
@@ -720,7 +810,7 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
continue;
}
- delete fakemenu; fakemenu = 0;
+ delete pp.fakemenu; pp.fakemenu = 0;
initial_item = 0; // stop the startup code
pp.p[pp.menu_number]->autoscroll(pp.item_number);
@@ -782,17 +872,17 @@ const Fl_Menu_Item* Fl_Menu_Item::pulldown(
while (pp.nummenus > pp.menu_number+1) delete pp.p[--pp.nummenus];
if (!pp.menu_number && pp.menubar) {
// kludge so "menubar buttons" turn "on" by using menu title:
- fakemenu = new menuwindow(0,
+ pp.fakemenu = new menuwindow(0,
cw.x()+cw.titlex(pp.item_number),
cw.y()+cw.h(), 0, 0,
0, m, 0, 1);
- fakemenu->title->show();
+ pp.fakemenu->title->show();
}
}
}
const Fl_Menu_Item* m = pp.current_item;
Fl::release();
- delete fakemenu;
+ delete pp.fakemenu;
while (pp.nummenus>1) delete pp.p[--pp.nummenus];
mw.hide();
return m;
@@ -849,5 +939,5 @@ const Fl_Menu_Item* Fl_Menu_Item::test_shortcut() const {
}
//
-// End of "$Id: Fl_Menu.cxx 4766 2006-01-17 21:04:55Z mike $".
+// End of "$Id: Fl_Menu.cxx 5721 2007-02-27 19:23:24Z matt $".
//
diff --git a/src/Fl_Menu_.cxx b/src/Fl_Menu_.cxx
index 7abc03b..5585bbd 100644
--- a/src/Fl_Menu_.cxx
+++ b/src/Fl_Menu_.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_.cxx 4609 2005-10-30 17:42:21Z mike $"
+// "$Id: Fl_Menu_.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Common menu code for the Fast Light Tool Kit (FLTK).
//
@@ -228,5 +228,5 @@ void Fl_Menu_::clear() {
}
//
-// End of "$Id: Fl_Menu_.cxx 4609 2005-10-30 17:42:21Z mike $".
+// End of "$Id: Fl_Menu_.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Menu_Bar.cxx b/src/Fl_Menu_Bar.cxx
index 14dd64c..15035f2 100644
--- a/src/Fl_Menu_Bar.cxx
+++ b/src/Fl_Menu_Bar.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_Bar.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Menu_Bar.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Menu bar widget for the Fast Light Tool Kit (FLTK).
//
@@ -74,5 +74,5 @@ int Fl_Menu_Bar::handle(int event) {
}
//
-// End of "$Id: Fl_Menu_Bar.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Menu_Bar.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Menu_Button.cxx b/src/Fl_Menu_Button.cxx
index 81c523b..76c4a86 100644
--- a/src/Fl_Menu_Button.cxx
+++ b/src/Fl_Menu_Button.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_Button.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: Fl_Menu_Button.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Menu button widget for the Fast Light Tool Kit (FLTK).
//
@@ -51,6 +51,8 @@ const Fl_Menu_Item* Fl_Menu_Button::popup() {
const Fl_Menu_Item* m;
pressed_menu_button_ = this;
redraw();
+ Fl_Widget *mb = this;
+ Fl::watch_widget_pointer(mb);
if (!box() || type()) {
m = menu()->popup(Fl::event_x(), Fl::event_y(), label(), mvalue(), this);
} else {
@@ -58,7 +60,8 @@ const Fl_Menu_Item* Fl_Menu_Button::popup() {
}
picked(m);
pressed_menu_button_ = 0;
- redraw();
+ if (mb) mb->redraw();
+ Fl::release_widget_pointer(mb);
return m;
}
@@ -104,5 +107,5 @@ Fl_Menu_Button::Fl_Menu_Button(int X,int Y,int W,int H,const char *l)
}
//
-// End of "$Id: Fl_Menu_Button.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: Fl_Menu_Button.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Menu_Window.cxx b/src/Fl_Menu_Window.cxx
index 8acd9a2..42f51c9 100644
--- a/src/Fl_Menu_Window.cxx
+++ b/src/Fl_Menu_Window.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_Window.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Menu_Window.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Menu window code for the Fast Light Tool Kit (FLTK).
//
@@ -99,5 +99,5 @@ Fl_Menu_Window::~Fl_Menu_Window() {
}
//
-// End of "$Id: Fl_Menu_Window.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Menu_Window.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Menu_add.cxx b/src/Fl_Menu_add.cxx
index 4098014..805e694 100644
--- a/src/Fl_Menu_add.cxx
+++ b/src/Fl_Menu_add.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_add.cxx 4594 2005-10-18 09:16:55Z matt $"
+// "$Id: Fl_Menu_add.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Menu utilities for the Fast Light Tool Kit (FLTK).
//
@@ -264,5 +264,5 @@ void Fl_Menu_::remove(int i) {
}
//
-// End of "$Id: Fl_Menu_add.cxx 4594 2005-10-18 09:16:55Z matt $".
+// End of "$Id: Fl_Menu_add.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Menu_global.cxx b/src/Fl_Menu_global.cxx
index 2eb30d2..e751f14 100644
--- a/src/Fl_Menu_global.cxx
+++ b/src/Fl_Menu_global.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_global.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Menu_global.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Global menu shortcut code for the Fast Light Tool Kit (FLTK).
//
@@ -46,5 +46,5 @@ void Fl_Menu_::global() {
}
//
-// End of "$Id: Fl_Menu_global.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Menu_global.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Multi_Label.cxx b/src/Fl_Multi_Label.cxx
index 4777417..6c5bcd4 100644
--- a/src/Fl_Multi_Label.cxx
+++ b/src/Fl_Multi_Label.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Multi_Label.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Multi_Label.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Multi-label widget for the Fast Light Tool Kit (FLTK).
//
@@ -76,5 +76,5 @@ void Fl_Multi_Label::label(Fl_Menu_Item* o) {
}
//
-// End of "$Id: Fl_Multi_Label.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Multi_Label.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Overlay_Window.cxx b/src/Fl_Overlay_Window.cxx
index 19cabaa..26f8470 100644
--- a/src/Fl_Overlay_Window.cxx
+++ b/src/Fl_Overlay_Window.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Overlay_Window.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Overlay_Window.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Overlay window code for the Fast Light Tool Kit (FLTK).
//
@@ -151,5 +151,5 @@ void Fl_Overlay_Window::redraw_overlay() {
#endif
//
-// End of "$Id: Fl_Overlay_Window.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Overlay_Window.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_PNG_Image.cxx b/src/Fl_PNG_Image.cxx
index 001ee0a..5c7d5d2 100644
--- a/src/Fl_PNG_Image.cxx
+++ b/src/Fl_PNG_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_PNG_Image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_PNG_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_PNG_Image routines.
//
@@ -151,5 +151,5 @@ Fl_PNG_Image::Fl_PNG_Image(const char *png) // I - File to read
//
-// End of "$Id: Fl_PNG_Image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_PNG_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_PNM_Image.cxx b/src/Fl_PNM_Image.cxx
index dda4c1f..5b84fde 100644
--- a/src/Fl_PNM_Image.cxx
+++ b/src/Fl_PNM_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_PNM_Image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_PNM_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_PNM_Image routines.
//
@@ -178,5 +178,5 @@ Fl_PNM_Image::Fl_PNM_Image(const char *name) // I - File to read
//
-// End of "$Id: Fl_PNM_Image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_PNM_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Pack.cxx b/src/Fl_Pack.cxx
index 218a0d2..6477129 100644
--- a/src/Fl_Pack.cxx
+++ b/src/Fl_Pack.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Pack.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Pack.cxx 5526 2006-10-20 01:07:16Z mike $"
//
// Packing widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -47,7 +47,7 @@ void Fl_Pack::draw() {
int tw = w()-Fl::box_dw(box());
int th = h()-Fl::box_dh(box());
int rw, rh;
- int current_position = (horizontal() ? tx : ty) + spacing_ / 2;
+ int current_position = horizontal() ? tx : ty;
int maximum_position = current_position;
uchar d = damage();
Fl_Widget*const* a = array();
@@ -143,5 +143,5 @@ void Fl_Pack::draw() {
}
//
-// End of "$Id: Fl_Pack.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Pack.cxx 5526 2006-10-20 01:07:16Z mike $".
//
diff --git a/src/Fl_Pixmap.cxx b/src/Fl_Pixmap.cxx
index 208d492..382b692 100644
--- a/src/Fl_Pixmap.cxx
+++ b/src/Fl_Pixmap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Pixmap.cxx 4563 2005-09-12 23:03:34Z matt $"
+// "$Id: Fl_Pixmap.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Pixmap drawing code for the Fast Light Tool Kit (FLTK).
//
@@ -491,5 +491,5 @@ void Fl_Pixmap::desaturate() {
}
//
-// End of "$Id: Fl_Pixmap.cxx 4563 2005-09-12 23:03:34Z matt $".
+// End of "$Id: Fl_Pixmap.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Positioner.cxx b/src/Fl_Positioner.cxx
index 1b77c5f..a688a9a 100644
--- a/src/Fl_Positioner.cxx
+++ b/src/Fl_Positioner.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Positioner.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Positioner.cxx 5347 2006-08-23 12:57:42Z matt $"
//
// Positioner widget for the Fast Light Tool Kit (FLTK).
//
@@ -99,7 +99,11 @@ int Fl_Positioner::handle(int event, int X, int Y, int W, int H) {
if (yy > ymin) yy = ymin;
if (yy < ymax) yy = ymax;
}
- if (value(xx, yy)) set_changed();}
+ if (xx != xvalue_ || yy != yvalue_) {
+ xvalue_ = xx; yvalue_ = yy;
+ set_changed();
+ redraw();
+ } }
if (!(when() & FL_WHEN_CHANGED ||
(when() & FL_WHEN_RELEASE && event == FL_RELEASE))) return 1;
if (changed() || when()&FL_WHEN_NOT_CHANGED) {
@@ -143,5 +147,5 @@ void Fl_Positioner::ybounds(double a, double b) {
}
//
-// End of "$Id: Fl_Positioner.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Positioner.cxx 5347 2006-08-23 12:57:42Z matt $".
//
diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx
index 143d4e3..5330b0a 100644
--- a/src/Fl_Preferences.cxx
+++ b/src/Fl_Preferences.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Preferences.cxx 4660 2005-11-27 14:45:48Z mike $"
+// "$Id: Fl_Preferences.cxx 5710 2007-02-23 15:37:53Z matt $"
//
// Preferences methods for the Fast Light Tool Kit (FLTK).
//
@@ -118,6 +118,10 @@ Fl_Preferences::~Fl_Preferences()
{
if (!node->parent()) delete rootNode;
// DO NOT delete nodes! The root node will do that after writing the preferences
+ // zero all pointer to avoid memory errors, event though
+ // Valgrind does not complain (Cygwind does though)
+ node = 0L;
+ rootNode = 0L;
}
@@ -252,6 +256,17 @@ char Fl_Preferences::set( const char *key, float value )
/**
+ * set an entry (name/value pair)
+ */
+char Fl_Preferences::set( const char *key, float value, int precision )
+{
+ sprintf( nameBuffer, "%.*g", precision, value );
+ node->set( key, nameBuffer );
+ return 1;
+}
+
+
+/**
* read an entry from the group
*/
char Fl_Preferences::get( const char *key, double &value, double defaultValue )
@@ -273,6 +288,17 @@ char Fl_Preferences::set( const char *key, double value )
}
+/**
+ * set an entry (name/value pair)
+ */
+char Fl_Preferences::set( const char *key, double value, int precision )
+{
+ sprintf( nameBuffer, "%.*g", precision, value );
+ node->set( key, nameBuffer );
+ return 1;
+}
+
+
// remove control sequences from a string
static char *decodeText( const char *src )
{
@@ -351,7 +377,7 @@ char Fl_Preferences::get( const char *key, char *&text, const char *defaultValue
*/
char Fl_Preferences::set( const char *key, const char *text )
{
- const char *s = text;
+ const char *s = text ? text : "";
int n=0, ns=0;
for ( ; *s; s++ ) { n++; if ( *s<32 || *s=='\\' || *s==0x7f ) ns+=4; }
if ( ns )
@@ -551,7 +577,10 @@ Fl_Preferences::Name::Name( const char *format, ... )
// delete the name
Fl_Preferences::Name::~Name()
{
- free(data_);
+ if (data_) {
+ free(data_);
+ data_ = 0L;
+ }
}
//-----------------------------------------------------------------------------
@@ -693,12 +722,17 @@ Fl_Preferences::RootNode::RootNode( Fl_Preferences *prefs, Root root, const char
// - construct the name of the file that will hold our preferences
Fl_Preferences::RootNode::RootNode( Fl_Preferences *prefs, const char *path, const char *vendor, const char *application )
{
- char filename[ FL_PATH_MAX ]; filename[0] = 0;
-
- snprintf(filename, sizeof(filename), "%s/%s.prefs", path, application);
-
+ if (!vendor)
+ vendor = "unknown";
+ if (!application) {
+ application = "unknown";
+ filename_ = strdup(path);
+ } else {
+ char filename[ FL_PATH_MAX ]; filename[0] = 0;
+ snprintf(filename, sizeof(filename), "%s/%s.prefs", path, application);
+ filename_ = strdup(filename);
+ }
prefs_ = prefs;
- filename_ = strdup(filename);
vendor_ = strdup(vendor);
application_ = strdup(application);
@@ -710,13 +744,20 @@ Fl_Preferences::RootNode::~RootNode()
{
if ( prefs_->node->dirty() )
write();
- if ( filename_ )
+ if ( filename_ ) {
free( filename_ );
- if ( vendor_ )
+ filename_ = 0L;
+ }
+ if ( vendor_ ) {
free( vendor_ );
- if ( application_ )
+ vendor_ = 0L;
+ }
+ if ( application_ ) {
free( application_ );
+ application_ = 0L;
+ }
delete prefs_->node;
+ prefs_ = 0L;
}
// read a preferences file and construct the group tree and with all entry leafs
@@ -810,19 +851,30 @@ Fl_Preferences::Node::~Node()
nx = nd->next_;
delete nd;
}
+ child_ = 0L;
if ( entry )
{
for ( int i = 0; i < nEntry; i++ )
{
- if ( entry[i].name )
+ if ( entry[i].name ) {
free( entry[i].name );
- if ( entry[i].value )
+ entry[i].name = 0L;
+ }
+ if ( entry[i].value ) {
free( entry[i].value );
+ entry[i].value = 0L;
+ }
}
free( entry );
+ entry = 0L;
+ nEntry = 0;
}
- if ( path_ )
+ if ( path_ ) {
free( path_ );
+ path_ = 0L;
+ }
+ next_ = 0L;
+ parent_ = 0L;
}
// recursively check if any entry is dirty (was changed after loading a fresh prefs file)
@@ -1123,5 +1175,5 @@ char Fl_Preferences::Node::remove()
//
-// End of "$Id: Fl_Preferences.cxx 4660 2005-11-27 14:45:48Z mike $".
+// End of "$Id: Fl_Preferences.cxx 5710 2007-02-23 15:37:53Z matt $".
//
diff --git a/src/Fl_Progress.cxx b/src/Fl_Progress.cxx
index 80155d8..1d26b0c 100644
--- a/src/Fl_Progress.cxx
+++ b/src/Fl_Progress.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Progress.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Progress.cxx 5540 2006-11-12 20:44:12Z matt $"
//
// Progress bar widget routines.
//
@@ -67,7 +67,7 @@ void Fl_Progress::draw()
// Draw the progress bar...
if (maximum_ > minimum_)
- progress = (int)(tw * (value_ - minimum_) / (maximum_ - minimum_) + 0.5f);
+ progress = (int)(w() * (value_ - minimum_) / (maximum_ - minimum_) + 0.5f);
else
progress = 0;
@@ -83,12 +83,14 @@ void Fl_Progress::draw()
labelcolor(c);
- fl_clip(tx + progress, y(), w() - progress, h());
- draw_box(box(), x(), y(), w(), h(), active_r() ? color() : fl_inactive(color()));
- draw_label(tx, y() + by, tw, h() - bh);
- fl_pop_clip();
+ if (progress<w()) {
+ fl_clip(tx + progress, y(), w() - progress, h());
+ draw_box(box(), x(), y(), w(), h(), active_r() ? color() : fl_inactive(color()));
+ draw_label(tx, y() + by, tw, h() - bh);
+ fl_pop_clip();
+ }
} else {
- draw_box(box(), x(), y(), w(), h(), color());
+ draw_box(box(), x(), y(), w(), h(), active_r() ? color() : fl_inactive(color()));
draw_label(tx, y() + by, tw, h() - bh);
}
}
@@ -111,5 +113,5 @@ Fl_Progress::Fl_Progress(int X, int Y, int W, int H, const char* l)
//
-// End of "$Id: Fl_Progress.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Progress.cxx 5540 2006-11-12 20:44:12Z matt $".
//
diff --git a/src/Fl_Repeat_Button.cxx b/src/Fl_Repeat_Button.cxx
index 9f3a50e..73f1cc2 100644
--- a/src/Fl_Repeat_Button.cxx
+++ b/src/Fl_Repeat_Button.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Repeat_Button.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Repeat_Button.cxx 5219 2006-06-21 06:52:10Z matt $"
//
// Repeat button widget for the Fast Light Tool Kit (FLTK).
//
@@ -49,6 +49,8 @@ int Fl_Repeat_Button::handle(int event) {
if (Fl::visible_focus()) Fl::focus(this);
newval = Fl::event_inside(this);
J1:
+ if (!active())
+ newval = 0;
if (value(newval)) {
if (newval) {
Fl::add_timeout(INITIALREPEAT,repeat_callback,this);
@@ -64,5 +66,5 @@ int Fl_Repeat_Button::handle(int event) {
}
//
-// End of "$Id: Fl_Repeat_Button.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Repeat_Button.cxx 5219 2006-06-21 06:52:10Z matt $".
//
diff --git a/src/Fl_Return_Button.cxx b/src/Fl_Return_Button.cxx
index 412fb08..360a91a 100644
--- a/src/Fl_Return_Button.cxx
+++ b/src/Fl_Return_Button.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Return_Button.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Return_Button.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Return button widget for the Fast Light Tool Kit (FLTK).
//
@@ -68,5 +68,5 @@ int Fl_Return_Button::handle(int event) {
}
//
-// End of "$Id: Fl_Return_Button.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Return_Button.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Roller.cxx b/src/Fl_Roller.cxx
index 6ee2442..c00f3b9 100644
--- a/src/Fl_Roller.cxx
+++ b/src/Fl_Roller.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Roller.cxx 4425 2005-07-16 08:25:06Z matt $"
+// "$Id: Fl_Roller.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Roller widget for the Fast Light Tool Kit (FLTK).
//
@@ -176,5 +176,5 @@ Fl_Roller::Fl_Roller(int X,int Y,int W,int H,const char* L)
}
//
-// End of "$Id: Fl_Roller.cxx 4425 2005-07-16 08:25:06Z matt $".
+// End of "$Id: Fl_Roller.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Round_Button.cxx b/src/Fl_Round_Button.cxx
index 4cfcee0..fe8ffa2 100644
--- a/src/Fl_Round_Button.cxx
+++ b/src/Fl_Round_Button.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Round_Button.cxx 4622 2005-11-02 11:31:33Z matt $"
+// "$Id: Fl_Round_Button.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Round button for the Fast Light Tool Kit (FLTK).
//
@@ -40,5 +40,5 @@ Fl_Round_Button::Fl_Round_Button(int X,int Y,int W,int H, const char *l)
}
//
-// End of "$Id: Fl_Round_Button.cxx 4622 2005-11-02 11:31:33Z matt $".
+// End of "$Id: Fl_Round_Button.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Scroll.cxx b/src/Fl_Scroll.cxx
index e6efa33..ba3571c 100644
--- a/src/Fl_Scroll.cxx
+++ b/src/Fl_Scroll.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Scroll.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Scroll.cxx 5547 2006-11-16 23:17:13Z mike $"
//
// Scroll widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -273,12 +273,12 @@ void Fl_Scroll::scrollbar_cb(Fl_Widget* o, void*) {
s->position(s->xposition(), int(((Fl_Scrollbar*)o)->value()));
}
-#define SLIDER_WIDTH 16
-
Fl_Scroll::Fl_Scroll(int X,int Y,int W,int H,const char* L)
: Fl_Group(X,Y,W,H,L),
- scrollbar(X+W-SLIDER_WIDTH,Y,SLIDER_WIDTH,H-SLIDER_WIDTH),
- hscrollbar(X,Y+H-SLIDER_WIDTH,W-SLIDER_WIDTH,SLIDER_WIDTH) {
+ scrollbar(X+W-Fl::scrollbar_size(),Y,
+ Fl::scrollbar_size(),H-Fl::scrollbar_size()),
+ hscrollbar(X,Y+H-Fl::scrollbar_size(),
+ W-Fl::scrollbar_size(),Fl::scrollbar_size()) {
type(BOTH);
xposition_ = 0;
yposition_ = 0;
@@ -293,5 +293,5 @@ int Fl_Scroll::handle(int event) {
}
//
-// End of "$Id: Fl_Scroll.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Scroll.cxx 5547 2006-11-16 23:17:13Z mike $".
//
diff --git a/src/Fl_Scrollbar.cxx b/src/Fl_Scrollbar.cxx
index 4a21e48..4b4786f 100644
--- a/src/Fl_Scrollbar.cxx
+++ b/src/Fl_Scrollbar.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Scrollbar.cxx 4654 2005-11-26 00:47:45Z mike $"
+// "$Id: Fl_Scrollbar.cxx 5438 2006-09-17 14:58:25Z mike $"
//
// Scroll bar widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -29,6 +29,7 @@
#include <FL/Fl_Scrollbar.H>
#include <FL/fl_draw.H>
#include <math.h>
+#include "flstring.h"
#define INITIALREPEAT .5
#define REPEAT .05
@@ -215,9 +216,15 @@ void Fl_Scrollbar::draw() {
int w1 = (H-4)/3; if (w1 < 1) w1 = 1;
int x1 = X+(H-w1-1)/2;
int yy1 = Y+(H-2*w1-1)/2;
- fl_polygon(x1, yy1+w1, x1+w1, yy1+2*w1, x1+w1, yy1);
- x1 += (W-H);
- fl_polygon(x1, yy1, x1, yy1+2*w1, x1+w1, yy1+w1);
+ if (Fl::scheme_ && !strcmp(Fl::scheme_, "gtk+")) {
+ fl_polygon(x1, yy1+w1, x1+w1, yy1+2*w1, x1+w1-1, yy1+w1, x1+w1, yy1);
+ x1 += (W-H);
+ fl_polygon(x1, yy1, x1+1, yy1+w1, x1, yy1+2*w1, x1+w1, yy1+w1);
+ } else {
+ fl_polygon(x1, yy1+w1, x1+w1, yy1+2*w1, x1+w1, yy1);
+ x1 += (W-H);
+ fl_polygon(x1, yy1, x1, yy1+2*w1, x1+w1, yy1+w1);
+ }
}
} else { // vertical
if (H < 3*W) {Fl_Slider::draw(X,Y,W,H); return;}
@@ -234,9 +241,16 @@ void Fl_Scrollbar::draw() {
int w1 = (W-4)/3; if (w1 < 1) w1 = 1;
int x1 = X+(W-2*w1-1)/2;
int yy1 = Y+(W-w1-1)/2;
- fl_polygon(x1, yy1+w1, x1+2*w1, yy1+w1, x1+w1, yy1);
- yy1 += H-W;
- fl_polygon(x1, yy1, x1+w1, yy1+w1, x1+2*w1, yy1);
+ if (Fl::scheme_ && !strcmp(Fl::scheme_, "gtk+")) {
+ fl_polygon(x1, yy1+w1, x1+w1, yy1+w1-1, x1+2*w1, yy1+w1, x1+w1, yy1);
+ yy1 += H-W;
+ fl_polygon(x1, yy1, x1+w1, yy1+1, x1+w1, yy1+w1);
+ fl_polygon(x1+w1, yy1+1, x1+2*w1, yy1, x1+w1, yy1+w1);
+ } else {
+ fl_polygon(x1, yy1+w1, x1+2*w1, yy1+w1, x1+w1, yy1);
+ yy1 += H-W;
+ fl_polygon(x1, yy1, x1+w1, yy1+w1, x1+2*w1, yy1);
+ }
}
}
}
@@ -253,5 +267,5 @@ Fl_Scrollbar::Fl_Scrollbar(int X, int Y, int W, int H, const char* L)
}
//
-// End of "$Id: Fl_Scrollbar.cxx 4654 2005-11-26 00:47:45Z mike $".
+// End of "$Id: Fl_Scrollbar.cxx 5438 2006-09-17 14:58:25Z mike $".
//
diff --git a/src/Fl_Shared_Image.cxx b/src/Fl_Shared_Image.cxx
index 97002ea..3d29dc5 100644
--- a/src/Fl_Shared_Image.cxx
+++ b/src/Fl_Shared_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Shared_Image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Shared_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Shared image code for the Fast Light Tool Kit (FLTK).
//
@@ -227,7 +227,7 @@ Fl_Shared_Image::reload() {
fread(header, 1, sizeof(header), fp);
fclose(fp);
} else {
- memset(header, 0, sizeof(header));
+ return;
}
// Load the image as appropriate...
@@ -463,5 +463,5 @@ Fl_Shared_Image::remove_handler(Fl_Shared_Handler f) {
//
-// End of "$Id: Fl_Shared_Image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Shared_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Single_Window.cxx b/src/Fl_Single_Window.cxx
index b9952f3..4337002 100644
--- a/src/Fl_Single_Window.cxx
+++ b/src/Fl_Single_Window.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Single_Window.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Single_Window.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Single-buffered window for the Fast Light Tool Kit (FLTK).
//
@@ -37,5 +37,5 @@ void Fl_Single_Window::show() {Fl_Window::show();}
void Fl_Single_Window::flush() {Fl_Window::flush();}
//
-// End of "$Id: Fl_Single_Window.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Single_Window.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Slider.cxx b/src/Fl_Slider.cxx
index 06c7731..3ad4895 100644
--- a/src/Fl_Slider.cxx
+++ b/src/Fl_Slider.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_Slider.cxx 4425 2005-07-16 08:25:06Z matt $"
+// "$Id: Fl_Slider.cxx 5438 2006-09-17 14:58:25Z mike $"
//
// Slider widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -29,6 +29,7 @@
#include <FL/Fl_Slider.H>
#include <FL/fl_draw.H>
#include <math.h>
+#include "flstring.h"
void Fl_Slider::_Fl_Slider() {
slider_size_ = 0;
@@ -148,6 +149,45 @@ void Fl_Slider::draw(int X, int Y, int W, int H) {
draw_box(FL_THIN_DOWN_BOX, xsl+d, ysl+2, wsl-2*d, hsl-4,selection_color());
} else {
if (wsl>0 && hsl>0) draw_box(box1, xsl, ysl, wsl, hsl, selection_color());
+
+ if (type()!=FL_HOR_FILL_SLIDER && type() != FL_VERT_FILL_SLIDER &&
+ Fl::scheme_ && !strcmp(Fl::scheme_, "gtk+")) {
+ if (W>H && wsl>(hsl+8)) {
+ // Draw horizontal grippers
+ int yy, hh;
+ hh = hsl-8;
+ xx = xsl+(wsl-hsl-4)/2;
+ yy = ysl+3;
+
+ fl_color(fl_darker(selection_color()));
+ fl_line(xx, yy+hh, xx+hh, yy);
+ fl_line(xx+6, yy+hh, xx+hh+6, yy);
+ fl_line(xx+12, yy+hh, xx+hh+12, yy);
+
+ xx++;
+ fl_color(fl_lighter(selection_color()));
+ fl_line(xx, yy+hh, xx+hh, yy);
+ fl_line(xx+6, yy+hh, xx+hh+6, yy);
+ fl_line(xx+12, yy+hh, xx+hh+12, yy);
+ } else if (H>W && hsl>(wsl+8)) {
+ // Draw vertical grippers
+ int yy;
+ xx = xsl+4;
+ ww = wsl-8;
+ yy = ysl+(hsl-wsl-4)/2;
+
+ fl_color(fl_darker(selection_color()));
+ fl_line(xx, yy+ww, xx+ww, yy);
+ fl_line(xx, yy+ww+6, xx+ww, yy+6);
+ fl_line(xx, yy+ww+12, xx+ww, yy+12);
+
+ yy++;
+ fl_color(fl_lighter(selection_color()));
+ fl_line(xx, yy+ww, xx+ww, yy);
+ fl_line(xx, yy+ww+6, xx+ww, yy+6);
+ fl_line(xx, yy+ww+12, xx+ww, yy+12);
+ }
+ }
}
draw_label(xsl, ysl, wsl, hsl);
@@ -241,21 +281,25 @@ int Fl_Slider::handle(int event, int X, int Y, int W, int H) {
switch (Fl::event_key()) {
case FL_Up:
if (horizontal()) return 0;
+ handle_push();
handle_drag(clamp(increment(value(),-1)));
handle_release();
return 1;
case FL_Down:
if (horizontal()) return 0;
+ handle_push();
handle_drag(clamp(increment(value(),1)));
handle_release();
return 1;
case FL_Left:
if (!horizontal()) return 0;
+ handle_push();
handle_drag(clamp(increment(value(),-1)));
handle_release();
return 1;
case FL_Right:
if (!horizontal()) return 0;
+ handle_push();
handle_drag(clamp(increment(value(),1)));
handle_release();
return 1;
@@ -291,5 +335,5 @@ int Fl_Slider::handle(int event) {
}
//
-// End of "$Id: Fl_Slider.cxx 4425 2005-07-16 08:25:06Z matt $".
+// End of "$Id: Fl_Slider.cxx 5438 2006-09-17 14:58:25Z mike $".
//
diff --git a/src/Fl_Sys_Menu_Bar.cxx b/src/Fl_Sys_Menu_Bar.cxx
index bc60458..d630fb3 100644
--- a/src/Fl_Sys_Menu_Bar.cxx
+++ b/src/Fl_Sys_Menu_Bar.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Sys_Menu_Bar.cxx 4651 2005-11-25 14:50:22Z mike $"
+// "$Id: Fl_Sys_Menu_Bar.cxx 5617 2007-01-18 19:20:13Z matt $"
//
// MacOS system menu bar widget for the Fast Light Tool Kit (FLTK).
//
@@ -178,8 +178,6 @@ static void catMenuFlags( const Fl_Menu_Item *m, char *dst )
{
if ( !m->flags )
return;
- while ( *dst )
- dst++;
if ( m->flags & FL_MENU_INACTIVE )
strcat( dst, "(" );
}
@@ -245,27 +243,32 @@ void Fl_Sys_Menu_Bar::menu(const Fl_Menu_Item *m)
fl_sys_menu_bar = this;
char buf[255];
- int cnt = 1; // first menu is no 2. no 1 is the Apple Menu
+ int cnt = 1; // first menu is no 2. no 1 is the Apple Menu
const Fl_Menu_Item *mm = m;
for (;;)
{
- if ( !mm->text )
+ if ( !mm || !mm->text )
break;
+ char visible = mm->visible() ? 1 : 0;
buf[1] = 0;
catMenuText( mm->text, buf+1 );
buf[0] = strlen( buf+1 );
MenuHandle mh = NewMenu( ++cnt, (unsigned char*)buf );
+ if ( mm->flags & FL_MENU_INACTIVE ) {
+ ChangeMenuAttributes(mh, kMenuAttrAutoDisable, 0);
+ DisableAllMenuItems(mh);
+ DisableMenuItem(mh, 0);
+ }
if ( mm->flags & FL_SUBMENU )
createSubMenu( mh, cnt, ++mm );
- else if ( mm->flags & FL_SUBMENU_POINTER )
- {
+ else if ( mm->flags & FL_SUBMENU_POINTER ) {
const Fl_Menu_Item *smm = (Fl_Menu_Item*)mm->user_data_;
createSubMenu( mh, cnt, smm );
}
-
- InsertMenu( mh, 0 );
- if ( mm->flags & FL_MENU_INACTIVE ) DisableMenuItem( mh, 0 );
+ if ( visible ) {
+ InsertMenu( mh, 0 );
+ }
mm++;
}
DrawMenuBar();
@@ -325,5 +328,5 @@ int Fl_Menu_Bar::handle(int event) {
#endif /* __APPLE__ */
//
-// End of "$Id: Fl_Sys_Menu_Bar.cxx 4651 2005-11-25 14:50:22Z mike $".
+// End of "$Id: Fl_Sys_Menu_Bar.cxx 5617 2007-01-18 19:20:13Z matt $".
//
diff --git a/src/Fl_Tabs.cxx b/src/Fl_Tabs.cxx
index db16da6..62cb71f 100644
--- a/src/Fl_Tabs.cxx
+++ b/src/Fl_Tabs.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Tabs.cxx 4448 2005-07-23 12:21:58Z matt $"
+// "$Id: Fl_Tabs.cxx 5791 2007-05-01 20:20:21Z matt $"
//
// Tab widget for the Fast Light Tool Kit (FLTK).
//
@@ -35,6 +35,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Tabs.H>
#include <FL/fl_draw.H>
+#include <FL/Fl_Tooltip.H>
#define BORDER 2
#define EXTRASPACE 10
@@ -49,6 +50,9 @@ int Fl_Tabs::tab_positions(int* p, int* wp) {
int selected = 0;
Fl_Widget*const* a = array();
int i;
+ char prev_draw_shortcut = fl_draw_shortcut;
+ fl_draw_shortcut = 1;
+
p[0] = Fl::box_dx(box());
for (i=0; i<children(); i++) {
Fl_Widget* o = *a++;
@@ -60,6 +64,8 @@ int Fl_Tabs::tab_positions(int* p, int* wp) {
wp[i] = wt+EXTRASPACE;
p[i+1] = p[i]+wp[i]+BORDER;
}
+ fl_draw_shortcut = prev_draw_shortcut;
+
int r = w();
if (p[i] <= r) return selected;
// uh oh, they are too big:
@@ -118,6 +124,18 @@ Fl_Widget *Fl_Tabs::which(int event_x, int event_y) {
return 0;
}
+void Fl_Tabs::redraw_tabs()
+{
+ int H = tab_height();
+ if (H >= 0) {
+ H += Fl::box_dy(box());
+ damage(FL_DAMAGE_SCROLL, x(), y(), w(), H);
+ } else {
+ H = Fl::box_dy(box()) - H;
+ damage(FL_DAMAGE_SCROLL, x(), y() + h() - H, w(), H);
+ }
+}
+
int Fl_Tabs::handle(int event) {
Fl_Widget *o;
@@ -137,13 +155,34 @@ int Fl_Tabs::handle(int event) {
o = which(Fl::event_x(), Fl::event_y());
if (event == FL_RELEASE) {
push(0);
+ if (o && Fl::visible_focus() && Fl::focus()!=this) {
+ Fl::focus(this);
+ redraw_tabs();
+ }
if (o && value(o)) {
set_changed();
do_callback();
}
- } else push(o);
- if (Fl::visible_focus() && event == FL_RELEASE) Fl::focus(this);
+ Fl_Tooltip::current(o);
+ } else {
+ push(o);
+ }
return 1;
+ case FL_MOVE: {
+ int ret = Fl_Group::handle(event);
+ Fl_Widget *o = Fl_Tooltip::current(), *n = o;
+ int H = tab_height();
+ if ( (H>=0) && (Fl::event_y()>y()+H) )
+ return ret;
+ else if ( (H<0) && (Fl::event_y() < y()+h()+H) )
+ return ret;
+ else {
+ n = which(Fl::event_x(), Fl::event_y());
+ if (!n) n = this;
+ }
+ if (n!=o)
+ Fl_Tooltip::enter(n);
+ return ret; }
case FL_FOCUS:
case FL_UNFOCUS:
if (!Fl::visible_focus()) return Fl_Group::handle(event);
@@ -152,14 +191,7 @@ int Fl_Tabs::handle(int event) {
Fl::event() == FL_KEYBOARD ||
Fl::event() == FL_FOCUS ||
Fl::event() == FL_UNFOCUS) {
- int H = tab_height();
- if (H >= 0) {
- H += Fl::box_dy(box());
- damage(FL_DAMAGE_SCROLL, x(), y(), w(), H);
- } else {
- H = Fl::box_dy(box()) - H;
- damage(FL_DAMAGE_SCROLL, x(), y() + h() - H, w(), H);
- }
+ redraw_tabs();
if (Fl::event() == FL_FOCUS || Fl::event() == FL_UNFOCUS) return 0;
else return 1;
} else return Fl_Group::handle(event);
@@ -187,6 +219,19 @@ int Fl_Tabs::handle(int event) {
default:
break;
}
+ return Fl_Group::handle(event);
+ case FL_SHORTCUT:
+ for (i = 0; i < children(); ++i) {
+ Fl_Widget *c = child(i);
+ if (c->test_shortcut(c->label())) {
+ char sc = !c->visible();
+ value(c);
+ if (sc) set_changed();
+ do_callback();
+ return 1;
+ }
+ }
+ return Fl_Group::handle(event);
case FL_SHOW:
value(); // update visibilities and fall through
default:
@@ -198,7 +243,7 @@ int Fl_Tabs::handle(int event) {
int Fl_Tabs::push(Fl_Widget *o) {
if (push_ == o) return 0;
if (push_ && !push_->visible() || o && !o->visible())
- redraw();
+ redraw_tabs();
push_ = o;
return 1;
}
@@ -282,6 +327,10 @@ void Fl_Tabs::draw_tab(int x1, int x2, int W, int H, Fl_Widget* o, int what) {
int sel = (what == SELECTED);
int dh = Fl::box_dh(box());
int dy = Fl::box_dy(box());
+ char prev_draw_shortcut = fl_draw_shortcut;
+ fl_draw_shortcut = 1;
+
+ Fl_Boxtype bt = (o==push_ &&!sel) ? fl_down(box()) : box();
// compute offsets to make selected tab look bigger
int yofs = sel ? 0 : BORDER;
@@ -296,7 +345,7 @@ void Fl_Tabs::draw_tab(int x1, int x2, int W, int H, Fl_Widget* o, int what) {
Fl_Color c = sel ? selection_color() : o->selection_color();
- draw_box(box(), x1, y() + yofs, W, H + 10 - yofs, c);
+ draw_box(bt, x1, y() + yofs, W, H + 10 - yofs, c);
// Save the previous label color
Fl_Color oc = o->labelcolor();
@@ -322,7 +371,7 @@ void Fl_Tabs::draw_tab(int x1, int x2, int W, int H, Fl_Widget* o, int what) {
Fl_Color c = sel ? selection_color() : o->selection_color();
- draw_box(box(), x1, y() + h() - H - 10, W, H + 10 - yofs, c);
+ draw_box(bt, x1, y() + h() - H - 10, W, H + 10 - yofs, c);
// Save the previous label color
Fl_Color oc = o->labelcolor();
@@ -339,6 +388,7 @@ void Fl_Tabs::draw_tab(int x1, int x2, int W, int H, Fl_Widget* o, int what) {
fl_pop_clip();
}
+ fl_draw_shortcut = prev_draw_shortcut;
}
Fl_Tabs::Fl_Tabs(int X,int Y,int W, int H, const char *l) :
@@ -349,5 +399,5 @@ Fl_Tabs::Fl_Tabs(int X,int Y,int W, int H, const char *l) :
}
//
-// End of "$Id: Fl_Tabs.cxx 4448 2005-07-23 12:21:58Z matt $".
+// End of "$Id: Fl_Tabs.cxx 5791 2007-05-01 20:20:21Z matt $".
//
diff --git a/src/Fl_Text_Buffer.cxx b/src/Fl_Text_Buffer.cxx
index 3f6e5b7..4c25387 100644
--- a/src/Fl_Text_Buffer.cxx
+++ b/src/Fl_Text_Buffer.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Text_Buffer.cxx 4301 2005-04-28 17:48:04Z mike $"
+// "$Id: Fl_Text_Buffer.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Copyright 2001-2005 by Bill Spitzak and others.
// Original code Copyright Mark Edel. Permission to distribute under
@@ -33,7 +33,7 @@
#include <FL/Fl_Text_Buffer.H>
-#define PREFERRED_GAP_SIZE 80
+#define PREFERRED_GAP_SIZE 1024
/* Initial size for the buffer gap (empty space
in the buffer where text might be inserted
if the user is typing sequential chars ) */
@@ -2520,5 +2520,5 @@ Fl_Text_Buffer::outputfile(const char *file, int start, int end, int buflen) {
//
-// End of "$Id: Fl_Text_Buffer.cxx 4301 2005-04-28 17:48:04Z mike $".
+// End of "$Id: Fl_Text_Buffer.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx
index 27e54d3..c4928f6 100644
--- a/src/Fl_Text_Display.cxx
+++ b/src/Fl_Text_Display.cxx
@@ -1,7 +1,7 @@
//
-// "$Id: Fl_Text_Display.cxx 4713 2005-12-15 20:31:35Z matt $"
+// "$Id: Fl_Text_Display.cxx 5793 2007-05-01 21:09:39Z matt $"
//
-// Copyright 2001-2005 by Bill Spitzak and others.
+// Copyright 2001-2006 by Bill Spitzak and others.
// Original code Copyright Mark Edel. Permission to distribute under
// the LGPL for the FLTK library granted by Mark Edel.
//
@@ -105,7 +105,7 @@ Fl_Text_Display::Fl_Text_Display(int X, int Y, int W, int H, const char* l)
end();
- scrollbar_width(16);
+ scrollbar_width(Fl::scrollbar_size());
scrollbar_align(FL_ALIGN_BOTTOM_RIGHT);
mCursorOn = 0;
@@ -174,6 +174,7 @@ void Fl_Text_Display::buffer( Fl_Text_Buffer *buf ) {
if ( buf == mBuffer) return;
if ( mBuffer != 0 ) {
buffer_modified_cb( 0, 0, mBuffer->length(), 0, 0, this );
+ mNBufferLines = 0;
mBuffer->remove_modify_callback( buffer_modified_cb, this );
mBuffer->remove_predelete_callback( buffer_predelete_cb, this );
}
@@ -659,10 +660,10 @@ void Fl_Text_Display::wrap_mode(int wrap, int wrapMargin) {
mContinuousWrap = wrap;
if (buffer()) {
- /* wrapping can change change the total number of lines, re-count */
+ /* wrapping can change the total number of lines, re-count */
mNBufferLines = count_lines(0, buffer()->length(), true);
- /* changing wrap margins wrap or changing from wrapped mode to non-wrapped
+ /* changing wrap margins or changing from wrapped mode to non-wrapped
can leave the character at the top no longer at a line start, and/or
change the line number */
mFirstChar = line_start(mFirstChar);
@@ -921,7 +922,7 @@ void Fl_Text_Display::display_insert() {
if (insert_position() < mFirstChar) {
topLine -= count_lines(insert_position(), mFirstChar, false);
} else if (mLineStarts[mNVisibleLines-2] != -1) {
- int lastChar = buffer()->line_end(mLineStarts[mNVisibleLines-2]);
+ int lastChar = line_end(mLineStarts[mNVisibleLines-2],true);
if (insert_position() >= lastChar)
topLine
+= count_lines(lastChar - (wrap_uses_character(mLastChar) ? 0 : 1),
@@ -934,8 +935,12 @@ void Fl_Text_Display::display_insert() {
horizontal */
if (!position_to_xy( mCursorPos, &X, &Y )) {
scroll_(topLine, hOffset);
- if (!position_to_xy( mCursorPos, &X, &Y ))
+ if (!position_to_xy( mCursorPos, &X, &Y )) {
+ #ifdef DEBUG
+ printf ("*** display_insert/position_to_xy # GIVE UP !\n"); fflush(stdout);
+ #endif // DEBUG
return; /* Give up, it's not worth it (but why does it fail?) */
+ }
}
if (X > text_area.x + text_area.w)
hOffset += X-(text_area.x + text_area.w);
@@ -977,7 +982,7 @@ int Fl_Text_Display::move_up() {
if ( position_to_line( mCursorPos, &visLineNum ) )
lineStartPos = mLineStarts[ visLineNum ];
else {
- lineStartPos = buffer()->line_start( mCursorPos );
+ lineStartPos = line_start( mCursorPos );
visLineNum = -1;
}
if ( lineStartPos == 0 )
@@ -991,10 +996,10 @@ int Fl_Text_Display::move_up() {
if ( visLineNum != -1 && visLineNum != 0 )
prevLineStartPos = mLineStarts[ visLineNum - 1 ];
else
- prevLineStartPos = buffer()->rewind_lines( lineStartPos, 1 );
+ prevLineStartPos = rewind_lines( lineStartPos, 1 );
newPos = mBuffer->skip_displayed_characters( prevLineStartPos, column );
- if (mContinuousWrap)
- newPos = min(newPos, line_end(prevLineStartPos, true));
+ if (mContinuousWrap)
+ newPos = min(newPos, line_end(prevLineStartPos, true));
/* move the cursor */
insert_position( newPos );
@@ -1012,7 +1017,7 @@ int Fl_Text_Display::move_down() {
if ( position_to_line( mCursorPos, &visLineNum ) )
lineStartPos = mLineStarts[ visLineNum ];
else {
- lineStartPos = buffer()->line_start( mCursorPos );
+ lineStartPos = line_start( mCursorPos );
visLineNum = -1;
}
column = mCursorPreferredCol >= 0 ? mCursorPreferredCol :
@@ -1038,7 +1043,7 @@ int Fl_Text_Display::count_lines(int startPos, int endPos,
int retLines, retPos, retLineStart, retLineEnd;
#ifdef DEBUG
- printf("Fl_Text_Display::count_line(startPos=%d, endPos=%d, startPosIsLineStart=%d\n",
+ printf("Fl_Text_Display::count_lines(startPos=%d, endPos=%d, startPosIsLineStart=%d\n",
startPos, endPos, startPosIsLineStart);
#endif // DEBUG
@@ -1051,7 +1056,7 @@ int Fl_Text_Display::count_lines(int startPos, int endPos,
&retLineEnd);
#ifdef DEBUG
- printf("retPos=%d, retLines=%d, retLineStart=%d, retLineEnd=%d\n",
+ printf(" # after WLC: retPos=%d, retLines=%d, retLineStart=%d, retLineEnd=%d\n",
retPos, retLines, retLineStart, retLineEnd);
#endif // DEBUG
@@ -1146,7 +1151,7 @@ int Fl_Text_Display::rewind_lines(int startPos, int nLines) {
while (true) {
lineStart = buf->line_start(pos);
wrapped_line_counter(buf, lineStart, pos, INT_MAX,
- true, 0, &retPos, &retLines, &retLineStart, &retLineEnd);
+ true, 0, &retPos, &retLines, &retLineStart, &retLineEnd, false);
if (retLines > nLines)
return skip_lines(lineStart, retLines-nLines,
true);
@@ -1973,14 +1978,14 @@ void Fl_Text_Display::offset_line_starts( int newTopLineNum ) {
if ( newTopLineNum < oldTopLineNum && newTopLineNum < -lineDelta ) {
mFirstChar = skip_lines( 0, newTopLineNum - 1, true );
} else if ( newTopLineNum < oldTopLineNum ) {
- mFirstChar = buffer()->rewind_lines( mFirstChar, -lineDelta );
+ mFirstChar = rewind_lines( mFirstChar, -lineDelta );
} else if ( newTopLineNum < lastLineNum ) {
mFirstChar = lineStarts[ newTopLineNum - oldTopLineNum ];
} else if ( newTopLineNum - lastLineNum < mNBufferLines - newTopLineNum ) {
mFirstChar = skip_lines( lineStarts[ nVisLines - 1 ],
newTopLineNum - lastLineNum, true );
} else {
- mFirstChar = buffer()->rewind_lines( buf->length(), mNBufferLines - newTopLineNum + 1 );
+ mFirstChar = rewind_lines( buf->length(), mNBufferLines - newTopLineNum + 1 );
}
/* Fill in the line starts array */
@@ -2037,7 +2042,7 @@ void Fl_Text_Display::update_line_starts( int pos, int charsInserted,
if ( position_to_line( pos + charsDeleted, &lineOfEnd ) &&
++lineOfEnd < nVisLines && lineStarts[ lineOfEnd ] != -1 ) {
mTopLineNum = max( 1, mTopLineNum + lineDelta );
- mFirstChar = buffer()->rewind_lines(
+ mFirstChar = rewind_lines(
lineStarts[ lineOfEnd ] + charDelta, lineOfEnd );
/* Otherwise anchor on original line number and recount everything */
} else {
@@ -3096,7 +3101,8 @@ int Fl_Text_Display::handle(int event) {
case FL_ENTER:
case FL_MOVE:
if (active_r()) {
- if (Fl::event_inside(text_area.x, text_area.y, text_area.w, text_area.h)) window()->cursor(FL_CURSOR_INSERT);
+ if (Fl::event_inside(text_area.x, text_area.y, text_area.w,
+ text_area.h)) window()->cursor(FL_CURSOR_INSERT);
else window()->cursor(FL_CURSOR_DEFAULT);
return 1;
} else {
@@ -3114,10 +3120,17 @@ int Fl_Text_Display::handle(int event) {
}
case FL_PUSH: {
+ if (active_r() && window()) {
+ if (Fl::event_inside(text_area.x, text_area.y, text_area.w,
+ text_area.h)) window()->cursor(FL_CURSOR_INSERT);
+ else window()->cursor(FL_CURSOR_DEFAULT);
+ }
+
if (Fl::focus() != this) {
Fl::focus(this);
handle(FL_FOCUS);
}
+ if (Fl_Group::handle(event)) return 1;
if (Fl::event_state()&FL_SHIFT) return handle(FL_DRAG);
dragging = 1;
int pos = xy_to_position(Fl::event_x(), Fl::event_y(), CURSOR_POS);
@@ -3206,8 +3219,9 @@ int Fl_Text_Display::handle(int event) {
if (Fl::event_dy()) return mVScrollBar->handle(event);
else return mHScrollBar->handle(event);
- case FL_FOCUS:
case FL_UNFOCUS:
+ if (active_r() && window()) window()->cursor(FL_CURSOR_DEFAULT);
+ case FL_FOCUS:
if (buffer()->selected()) redraw();
return 1;
@@ -3227,6 +3241,10 @@ int Fl_Text_Display::handle(int event) {
buffer()->select(0,buffer()->length());
return 1;
}
+
+ if (mVScrollBar->handle(event)) return 1;
+ if (mHScrollBar->handle(event)) return 1;
+
break;
}
@@ -3235,5 +3253,5 @@ int Fl_Text_Display::handle(int event) {
//
-// End of "$Id: Fl_Text_Display.cxx 4713 2005-12-15 20:31:35Z matt $".
+// End of "$Id: Fl_Text_Display.cxx 5793 2007-05-01 21:09:39Z matt $".
//
diff --git a/src/Fl_Text_Editor.cxx b/src/Fl_Text_Editor.cxx
index 144b44d..b8cbfc6 100644
--- a/src/Fl_Text_Editor.cxx
+++ b/src/Fl_Text_Editor.cxx
@@ -1,7 +1,7 @@
//
-// "$Id: Fl_Text_Editor.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Text_Editor.cxx 5671 2007-02-08 07:58:47Z matt $"
//
-// Copyright 2001-2005 by Bill Spitzak and others.
+// Copyright 2001-2006 by Bill Spitzak and others.
// Original code Copyright Mark Edel. Permission to distribute under
// the LGPL for the FLTK library granted by Mark Edel.
//
@@ -30,6 +30,7 @@
#include "flstring.h"
#include <ctype.h>
#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/fl_ask.H>
@@ -431,15 +432,6 @@ void Fl_Text_Editor::maybe_do_callback() {
int Fl_Text_Editor::handle(int event) {
if (!buffer()) return 0;
- if (event == FL_PUSH && Fl::event_button() == 2) {
- dragType = -1;
- Fl::paste(*this, 0);
- Fl::focus(this);
- set_changed();
- if (when()&FL_WHEN_CHANGED) do_callback();
- return 1;
- }
-
switch (event) {
case FL_FOCUS:
show_cursor(mCursorOn); // redraws the cursor
@@ -455,6 +447,8 @@ int Fl_Text_Editor::handle(int event) {
return 1;
case FL_KEYBOARD:
+ if (active_r() && window() && this == Fl::belowmouse())
+ window()->cursor(FL_CURSOR_NONE);
return handle_key();
case FL_PASTE:
@@ -475,11 +469,24 @@ int Fl_Text_Editor::handle(int event) {
// case FL_MOVE:
show_cursor(mCursorOn);
return 1;
+
+ case FL_PUSH:
+ if (Fl::event_button() == 2) {
+ // don't let the text_display see this event
+ if (Fl_Group::handle(event)) return 1;
+ dragType = -1;
+ Fl::paste(*this, 0);
+ Fl::focus(this);
+ set_changed();
+ if (when()&FL_WHEN_CHANGED) do_callback();
+ return 1;
+ }
+ break;
}
return Fl_Text_Display::handle(event);
}
//
-// End of "$Id: Fl_Text_Editor.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Text_Editor.cxx 5671 2007-02-08 07:58:47Z matt $".
//
diff --git a/src/Fl_Tile.cxx b/src/Fl_Tile.cxx
index 933842e..c1d0cf6 100644
--- a/src/Fl_Tile.cxx
+++ b/src/Fl_Tile.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Tile.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Tile.cxx 5606 2007-01-18 10:01:24Z matt $"
//
// Tile widget for the Fast Light Tool Kit (FLTK).
//
@@ -66,6 +66,8 @@ void Fl_Tile::position(int oix, int oiy, int newx, int newy) {
// move the lower-right corner (sort of):
void Fl_Tile::resize(int X,int Y,int W,int H) {
+ //Fl_Group::resize(X, Y, W, H);
+ //return;
// remember how much to move the child widgets:
int dx = X-x();
int dy = Y-y();
@@ -92,7 +94,9 @@ void Fl_Tile::resize(int X,int Y,int W,int H) {
int B = yy+o->h();
if (*p++ >= OB) yy += dh; else if (yy > NB) yy = NB;
if (*p++ >= OB) B += dh; else if (B > NB) B = NB;
- o->resize(xx,yy,R-xx,B-yy); o->redraw();
+ o->resize(xx,yy,R-xx,B-yy);
+ // do *not* call o->redraw() here! If you do, and the tile is inside a
+ // scroll, it'll set the damage areas wrong for all children!
}
}
@@ -199,5 +203,5 @@ int Fl_Tile::handle(int event) {
}
//
-// End of "$Id: Fl_Tile.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Tile.cxx 5606 2007-01-18 10:01:24Z matt $".
//
diff --git a/src/Fl_Tiled_Image.cxx b/src/Fl_Tiled_Image.cxx
index 9636815..222d9e6 100644
--- a/src/Fl_Tiled_Image.cxx
+++ b/src/Fl_Tiled_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Tiled_Image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Tiled_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Tiled image code for the Fast Light Tool Kit (FLTK).
//
@@ -135,5 +135,5 @@ Fl_Tiled_Image::draw(int X, // I - Starting X position
//
-// End of "$Id: Fl_Tiled_Image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Tiled_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Tooltip.cxx b/src/Fl_Tooltip.cxx
index 17c1295..6e74c45 100644
--- a/src/Fl_Tooltip.cxx
+++ b/src/Fl_Tooltip.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Tooltip.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Tooltip.cxx 5378 2006-08-29 10:04:02Z matt $"
//
// Tooltip source file for the Fast Light Tool Kit (FLTK).
//
@@ -194,7 +194,7 @@ Fl_Tooltip::exit_(Fl_Widget *w) {
widget_ = 0;
Fl::remove_timeout(tooltip_timeout);
Fl::remove_timeout(recent_timeout);
- if (window) window->hide();
+ if (window && window->visible()) window->hide();
if (recent_tooltip) {
if (Fl::event_state() & FL_BUTTONS) recent_tooltip = 0;
else Fl::add_timeout(Fl_Tooltip::hoverdelay(), recent_timeout);
@@ -233,11 +233,11 @@ Fl_Tooltip::enter_area(Fl_Widget* wid, int x,int y,int w,int h, const char* t)
#ifdef WIN32
// possible fix for the Windows titlebar, it seems to want the
// window to be destroyed, moving it messes up the parenting:
- if (window) window->hide();
+ if (window && window->visible()) window->hide();
#endif // WIN32
tooltip_timeout(0);
} else {
- if (window) window->hide();
+ if (window && window->visible()) window->hide();
Fl::add_timeout(Fl_Tooltip::delay(), tooltip_timeout);
}
@@ -258,5 +258,5 @@ void Fl_Widget::tooltip(const char *tt) {
}
//
-// End of "$Id: Fl_Tooltip.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Tooltip.cxx 5378 2006-08-29 10:04:02Z matt $".
//
diff --git a/src/Fl_Valuator.cxx b/src/Fl_Valuator.cxx
index 93c3d11..1d6a32d 100644
--- a/src/Fl_Valuator.cxx
+++ b/src/Fl_Valuator.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Valuator.cxx 4723 2005-12-30 10:13:17Z matt $"
+// "$Id: Fl_Valuator.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Valuator widget for the Fast Light Tool Kit (FLTK).
//
@@ -145,5 +145,5 @@ int Fl_Valuator::format(char* buffer) {
}
//
-// End of "$Id: Fl_Valuator.cxx 4723 2005-12-30 10:13:17Z matt $".
+// End of "$Id: Fl_Valuator.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Value_Input.cxx b/src/Fl_Value_Input.cxx
index 8841a3a..d9d19c4 100644
--- a/src/Fl_Value_Input.cxx
+++ b/src/Fl_Value_Input.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Value_Input.cxx 4591 2005-10-12 20:47:21Z mike $"
+// "$Id: Fl_Value_Input.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Value input widget for the Fast Light Tool Kit (FLTK).
//
@@ -129,5 +129,5 @@ Fl_Value_Input::Fl_Value_Input(int X, int Y, int W, int H, const char* l)
}
//
-// End of "$Id: Fl_Value_Input.cxx 4591 2005-10-12 20:47:21Z mike $".
+// End of "$Id: Fl_Value_Input.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Value_Output.cxx b/src/Fl_Value_Output.cxx
index 89a956b..8a1f13c 100644
--- a/src/Fl_Value_Output.cxx
+++ b/src/Fl_Value_Output.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Value_Output.cxx 4609 2005-10-30 17:42:21Z mike $"
+// "$Id: Fl_Value_Output.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Value output widget for the Fast Light Tool Kit (FLTK).
//
@@ -99,5 +99,5 @@ Fl_Value_Output::Fl_Value_Output(int X, int Y, int W, int H,const char *l)
}
//
-// End of "$Id: Fl_Value_Output.cxx 4609 2005-10-30 17:42:21Z mike $".
+// End of "$Id: Fl_Value_Output.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Value_Slider.cxx b/src/Fl_Value_Slider.cxx
index 8d80f77..b820326 100644
--- a/src/Fl_Value_Slider.cxx
+++ b/src/Fl_Value_Slider.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Value_Slider.cxx 4609 2005-10-30 17:42:21Z mike $"
+// "$Id: Fl_Value_Slider.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Value slider widget for the Fast Light Tool Kit (FLTK).
//
@@ -78,5 +78,5 @@ int Fl_Value_Slider::handle(int event) {
}
//
-// End of "$Id: Fl_Value_Slider.cxx 4609 2005-10-30 17:42:21Z mike $".
+// End of "$Id: Fl_Value_Slider.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Widget.cxx b/src/Fl_Widget.cxx
index d3138a5..b20d8df 100644
--- a/src/Fl_Widget.cxx
+++ b/src/Fl_Widget.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Widget.cxx 4609 2005-10-30 17:42:21Z mike $"
+// "$Id: Fl_Widget.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Base widget class for the Fast Light Tool Kit (FLTK).
//
@@ -133,6 +133,7 @@ extern void fl_throw_focus(Fl_Widget*); // in Fl_x.cxx
// However, it is only legal to destroy a "root" such as an Fl_Window,
// and automatic destructors may be called.
Fl_Widget::~Fl_Widget() {
+ Fl::clear_widget_pointer(this);
if (flags() & COPIED_LABEL) free((void *)(label_.value));
parent_ = 0; // Don't throw focus to a parent widget.
fl_throw_focus(this);
@@ -279,5 +280,5 @@ Fl_Widget::copy_label(const char *a) {
//
-// End of "$Id: Fl_Widget.cxx 4609 2005-10-30 17:42:21Z mike $".
+// End of "$Id: Fl_Widget.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Window.cxx b/src/Fl_Window.cxx
index 21615fe..43c9f7f 100644
--- a/src/Fl_Window.cxx
+++ b/src/Fl_Window.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Window.cxx 4711 2005-12-14 13:51:51Z matt $"
+// "$Id: Fl_Window.cxx 5251 2006-06-28 10:23:33Z matt $"
//
// Window widget class for the Fast Light Tool Kit (FLTK).
//
@@ -36,7 +36,7 @@
#include "flstring.h"
#ifdef __APPLE_QUARTZ__
-#include <FL/fl_draw.h>
+#include <FL/fl_draw.H>
#endif
void Fl_Window::_Fl_Window() {
@@ -100,14 +100,15 @@ int Fl_Window::y_root() const {
void Fl_Window::draw() {
const char *savelabel = label();
- uchar saveflags = flags();
+ int saveflags = flags();
int savex = x(); x(0);
int savey = y(); y(0);
// Make sure we don't draw the window title in the window background...
+ clear_flag(COPIED_LABEL); // do not free copied labels!
Fl_Widget::label(0);
Fl_Group::draw();
#ifdef __APPLE_QUARTZ__
- if (!parent() && resizable()) {
+ if (!parent() && resizable() && (!size_range_set || minh!=maxh || minw!=maxw)) {
int dx = Fl::box_dw(box())-Fl::box_dx(box());
int dy = Fl::box_dh(box())-Fl::box_dy(box());
if (dx<=0) dx = 1;
@@ -133,7 +134,9 @@ void Fl_Window::draw() {
x(savex);
}
-void Fl_Window::label(const char *name) {label(name, iconlabel());}
+void Fl_Window::label(const char *name) {
+ label(name, iconlabel());
+}
void Fl_Window::copy_label(const char *a) {
if (flags() & COPIED_LABEL) {
@@ -172,5 +175,5 @@ Fl_Window *Fl_Window::current() {
//
-// End of "$Id: Fl_Window.cxx 4711 2005-12-14 13:51:51Z matt $".
+// End of "$Id: Fl_Window.cxx 5251 2006-06-28 10:23:33Z matt $".
//
diff --git a/src/Fl_Window_fullscreen.cxx b/src/Fl_Window_fullscreen.cxx
index ea76f3b..cc30ad1 100644
--- a/src/Fl_Window_fullscreen.cxx
+++ b/src/Fl_Window_fullscreen.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Window_fullscreen.cxx 4676 2005-12-01 08:56:24Z matt $"
+// "$Id: Fl_Window_fullscreen.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fullscreen window support for the Fast Light Tool Kit (FLTK).
//
@@ -93,5 +93,5 @@ void Fl_Window::fullscreen_off(int X,int Y,int W,int H) {
}
//
-// End of "$Id: Fl_Window_fullscreen.cxx 4676 2005-12-01 08:56:24Z matt $".
+// End of "$Id: Fl_Window_fullscreen.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Window_hotspot.cxx b/src/Fl_Window_hotspot.cxx
index e87f6f4..a551ce8 100644
--- a/src/Fl_Window_hotspot.cxx
+++ b/src/Fl_Window_hotspot.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Window_hotspot.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Window_hotspot.cxx 5697 2007-02-13 14:38:43Z matt $"
//
// Common hotspot routines for the Fast Light Tool Kit (FLTK).
//
@@ -40,35 +40,45 @@ void Fl_Window::hotspot(int X, int Y, int offscreen) {
// If offscreen is 0 (the default), make sure that the window
// stays on the screen, if possible.
if (!offscreen) {
-#if defined(WIN32) || defined(__APPLE__)
- // These will be used by reference, so we must passed different variables
- int bt,bx,by;
- x(X);y(Y);
- Fl_X::fake_X_wm(this, X, Y, bt, bx, by);
- //force FL_FORCE_POSITION to be set in Fl_Window::resize()
- if (X==x()) x(X-1);
-#else
int scr_x, scr_y, scr_w, scr_h;
Fl::screen_xywh(scr_x, scr_y, scr_w, scr_h);
+ int top = 0;
+ int left = 0;
+ int right = 0;
+ int bottom = 0;
+
if (border()) {
+#ifdef WIN32
+ if (size_range_set && (maxw != minw || maxh != minh)) {
+ left = right = GetSystemMetrics(SM_CXSIZEFRAME);
+ top = bottom = GetSystemMetrics(SM_CYSIZEFRAME);
+ } else {
+ left = right = GetSystemMetrics(SM_CXFIXEDFRAME);
+ top = bottom = GetSystemMetrics(SM_CYFIXEDFRAME);
+ }
+ top += GetSystemMetrics(SM_CYCAPTION);
+#elif defined(__APPLE__)
+ top = 24;
+ left = 2;
+ right = 2;
+ bottom = 2;
+#else
// Ensure border is on screen; these values are generic enough
// to work with many window managers, and are based on KDE defaults.
- const int top = 20;
- const int left = 4;
- const int right = 4;
- const int bottom = 8;
- if (X+w()+right > scr_w-scr_x) X = scr_w-scr_x-right-w();
- if (X-left < scr_x) X = left;
- if (Y+h()+bottom > scr_h-scr_y) Y = scr_h-scr_y-bottom-h();
- if (Y-top < scr_y) Y = top;
+ top = 20;
+ left = 4;
+ right = 4;
+ bottom = 8;
+#endif
}
// now insure contents are on-screen (more important than border):
- if (X+w() > scr_w-scr_x) X = scr_w-scr_x-w();
- if (X < scr_x) X = scr_x;
- if (Y+h() > scr_h-scr_y) Y = scr_h-scr_y-h();
- if (Y < scr_y) Y = scr_y;
-#endif
+ if (X+w()+right > scr_w-scr_x) X = scr_w-scr_x-right-w();
+ if (X-left < scr_x) X = left;
+ if (Y+h()+bottom > scr_h-scr_y) Y = scr_h-scr_y-bottom-h();
+ if (Y-top < scr_y) Y = top;
+ // make sure that we will force this position
+ if (X==x()) x(X-1);
}
position(X,Y);
@@ -86,5 +96,5 @@ void Fl_Window::hotspot(const Fl_Widget *o, int offscreen) {
//
-// End of "$Id: Fl_Window_hotspot.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Window_hotspot.cxx 5697 2007-02-13 14:38:43Z matt $".
//
diff --git a/src/Fl_Window_iconize.cxx b/src/Fl_Window_iconize.cxx
index 93c3f32..5ad32f1 100644
--- a/src/Fl_Window_iconize.cxx
+++ b/src/Fl_Window_iconize.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Window_iconize.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Window_iconize.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Window minification code for the Fast Light Tool Kit (FLTK).
//
@@ -45,5 +45,5 @@ void Fl_Window::iconize() {
}
//
-// End of "$Id: Fl_Window_iconize.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Window_iconize.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_Wizard.cxx b/src/Fl_Wizard.cxx
index 3b80e75..1a22d31 100644
--- a/src/Fl_Wizard.cxx
+++ b/src/Fl_Wizard.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Wizard.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_Wizard.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_Wizard widget routines.
//
@@ -206,5 +206,5 @@ Fl_Wizard::value(Fl_Widget *kid)
//
-// End of "$Id: Fl_Wizard.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_Wizard.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_XBM_Image.cxx b/src/Fl_XBM_Image.cxx
index b54c799..ce66683 100644
--- a/src/Fl_XBM_Image.cxx
+++ b/src/Fl_XBM_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_XBM_Image.cxx 4547 2005-08-29 20:11:48Z matt $"
+// "$Id: Fl_XBM_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_XBM_Image routines.
//
@@ -102,5 +102,5 @@ Fl_XBM_Image::Fl_XBM_Image(const char *name) : Fl_Bitmap((const char *)0,0,0) {
//
-// End of "$Id: Fl_XBM_Image.cxx 4547 2005-08-29 20:11:48Z matt $".
+// End of "$Id: Fl_XBM_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_XPM_Image.cxx b/src/Fl_XPM_Image.cxx
index f4c4661..b50535f 100644
--- a/src/Fl_XPM_Image.cxx
+++ b/src/Fl_XPM_Image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_XPM_Image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_XPM_Image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Fl_XPM_Image routines.
//
@@ -127,5 +127,5 @@ Fl_XPM_Image::Fl_XPM_Image(const char *name) : Fl_Pixmap((char *const*)0) {
//
-// End of "$Id: Fl_XPM_Image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_XPM_Image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_abort.cxx b/src/Fl_abort.cxx
index f205fa4..cc6571d 100644
--- a/src/Fl_abort.cxx
+++ b/src/Fl_abort.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_abort.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_abort.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Warning/error message code for the Fast Light Tool Kit (FLTK).
//
@@ -98,5 +98,5 @@ void (*Fl::error)(const char* format, ...) = ::error;
void (*Fl::fatal)(const char* format, ...) = ::fatal;
//
-// End of "$Id: Fl_abort.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_abort.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_add_idle.cxx b/src/Fl_add_idle.cxx
index ea95b70..9321dd5 100644
--- a/src/Fl_add_idle.cxx
+++ b/src/Fl_add_idle.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_add_idle.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_add_idle.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Idle routine support for the Fast Light Tool Kit (FLTK).
//
@@ -96,5 +96,5 @@ void Fl::remove_idle(void (*cb)(void*), void* data) {
}
//
-// End of "$Id: Fl_add_idle.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_add_idle.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_arg.cxx b/src/Fl_arg.cxx
index 55adefa..b94ccc4 100644
--- a/src/Fl_arg.cxx
+++ b/src/Fl_arg.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_arg.cxx 4372 2005-05-26 14:03:44Z mike $"
+// "$Id: Fl_arg.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Optional argument initialization code for the Fast Light Tool Kit (FLTK).
//
@@ -420,5 +420,5 @@ int XParseGeometry(const char* string, int* x, int* y,
#endif // ifdef WIN32
//
-// End of "$Id: Fl_arg.cxx 4372 2005-05-26 14:03:44Z mike $".
+// End of "$Id: Fl_arg.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_compose.cxx b/src/Fl_compose.cxx
index d885a16..422f4e3 100644
--- a/src/Fl_compose.cxx
+++ b/src/Fl_compose.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_compose.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_compose.cxx 5211 2006-06-19 07:43:39Z matt $"
//
// Character compose processing for the Fast Light Tool Kit (FLTK).
//
@@ -36,11 +36,28 @@
//#define OLD_DEAD_KEY_CODE
+#ifdef __APPLE__
+
+static const char* const compose_pairs =
+":A*A,C'E~N:O:U'a`a^a:a~a*a,c'e`e"
+"^e:e'i`i^i:i~n'o`o^o:o~o'u`u^u:u"
+"+ o /c# SS* P|ssrOcOTM' : !=AE/O"
+"oo+-<=>=Y=mudtSgPipiS a dgOmaeo/"
+"? ! !!v-f ~~Dt<<>>.. `A~A~OOEoe"
+"- --''``\"'\"`:-^V:y:Y//E=< > fifl"
+"++..,,_\"%%^A^E'A:E`E'I^I:I`I'O^O"
+"mc`O'U^U`U||^ ~^_ u . * , ~-; v ";
+
+#else
+
static const char* const compose_pairs =
+"=E _'f _\"..+ ++^ %%^S< OE ^Z ^''^^\"\"^-*- --~ TM^s> oe ^z:Y"
" ! % # $ y=| & : c a <<~ - r _ * +-2 3 ' u p . , 1 o >>141234? "
"`A'A^A~A:A*AAE,C`E'E^E:E`I'I^I:I-D~N`O'O^O~O:Ox O/`U'U^U:U'YTHss"
"`a'a^a~a:a*aae,c`e'e^e:e`i'i^i:i-d~n`o'o^o~o:o-:o/`u'u^u:u'yth:y";
+#endif
+
#if !defined(WIN32) && defined(OLD_DEAD_KEY_CODE) // X only
// X dead-key lookup table. This turns a dead-key keysym into the
// first of two characters for one of the compose sequences. These
@@ -88,9 +105,24 @@ int Fl::compose(int& del) {
#endif // __APPLE__
if (compose_state == 1) { // after the compose key
+ if ( // do not get distracted by any modifier keys
+ e_keysym==FL_Shift_L||
+ e_keysym==FL_Shift_R ||
+ e_keysym==FL_Alt_L ||
+ e_keysym==FL_Alt_R ||
+ e_keysym==FL_Meta_L ||
+ e_keysym==FL_Meta_R ||
+ e_keysym==FL_Control_R ||
+ e_keysym==FL_Control_L ||
+ e_keysym==FL_Menu
+ ) return 0;
if (ascii == ' ') { // space turns into nbsp
+#ifdef __APPLE__
+ e_text[0] = char(0xCA);
+#else
e_text[0] = char(0xA0);
+#endif
compose_state = 0;
return 1;
} else if (ascii < ' ' || ascii == 127) {
@@ -101,7 +133,7 @@ int Fl::compose(int& del) {
// see if it is either character of any pair:
for (const char *p = compose_pairs; *p; p += 2)
if (p[0] == ascii || p[1] == ascii) {
- if (p[1] == ' ') e_text[0] = (p-compose_pairs)/2+0xA0;
+ if (p[1] == ' ') e_text[0] = (p-compose_pairs)/2+0x80;
compose_state = ascii;
return 1;
}
@@ -114,10 +146,23 @@ int Fl::compose(int& del) {
} else if (compose_state) { // second character of compose
char c1 = char(compose_state); // retrieve first character
+#ifdef __APPLE__
+ if ( (c1==0x60 && ascii==0xab) || (c1==0x27 && ascii==0x60)) {
+ del = 1;
+ compose_state = '^';
+ e_text[0] = 0xf6;
+ return 1;
+ }
+ if (ascii==' ') {
+ del = 0;
+ compose_state = 0;
+ return 0;
+ }
+#endif
// now search for the pair in either order:
for (const char *p = compose_pairs; *p; p += 2) {
if (p[0] == ascii && p[1] == c1 || p[1] == ascii && p[0] == c1) {
- e_text[0] = (p-compose_pairs)/2+0xA0;
+ e_text[0] = (p-compose_pairs)/2+0x80;
del = 1; // delete the old character and insert new one
compose_state = 0;
return 1;
@@ -134,7 +179,16 @@ int Fl::compose(int& del) {
return 1;
}
-#ifndef WIN32 // X only
+#ifdef WIN32
+#elif (defined __APPLE__)
+ if (e_state & 0x40000000) {
+ if (ascii<0x80)
+ compose_state = ascii;
+ else
+ compose_state = compose_pairs[(ascii-0x80)*2];
+ return 1;
+ }
+#else
// See if they typed a dead key. This gets it into the same state as
// typing prefix+accent:
if (i >= 0xfe50 && i <= 0xfe5b) {
@@ -149,7 +203,7 @@ int Fl::compose(int& del) {
ascii = e_text[0];
for (const char *p = compose_pairs; *p; p += 2)
if (p[0] == ascii ||
- (p[1] == ' ' && (p - compose_pairs) / 2 + 0xA0 == ascii)) {
+ (p[1] == ' ' && (p - compose_pairs) / 2 + 0x80 == ascii)) {
compose_state = p[0];
return 1;
}
@@ -165,3 +219,5 @@ int Fl::compose(int& del) {
return 0;
}
+
+
diff --git a/src/Fl_display.cxx b/src/Fl_display.cxx
index 47c0496..7ba19f7 100644
--- a/src/Fl_display.cxx
+++ b/src/Fl_display.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_display.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_display.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Display function for the Fast Light Tool Kit (FLTK).
//
@@ -50,5 +50,5 @@ void Fl::display(const char *d) {
}
//
-// End of "$Id: Fl_display.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_display.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_get_key.cxx b/src/Fl_get_key.cxx
index 24c454e..4b8d505 100644
--- a/src/Fl_get_key.cxx
+++ b/src/Fl_get_key.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_get_key.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_get_key.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Keyboard state routines for the Fast Light Tool Kit (FLTK).
//
@@ -65,5 +65,5 @@ int Fl::get_key(int k) {
#endif
//
-// End of "$Id: Fl_get_key.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_get_key.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_get_key_mac.cxx b/src/Fl_get_key_mac.cxx
index a4a4ee6..d0c7402 100644
--- a/src/Fl_get_key_mac.cxx
+++ b/src/Fl_get_key_mac.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_get_key_mac.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_get_key_mac.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// MacOS keyboard state routines for the Fast Light Tool Kit (FLTK).
//
@@ -96,11 +96,15 @@ int Fl::get_key(int k) {
printf("%08x %08x %08x %08x\n", (ulong*)(foo)[3], (ulong*)(foo)[2], (ulong*)(foo)[1], (ulong*)(foo)[0]);
}
#endif
- int i = fltk2mac(k);
unsigned char *b = (unsigned char*)foo;
+ // KP_Enter can be at different locations for Powerbooks vs. desktop Macs
+ if (k==FL_KP_Enter) {
+ return (((b[0x34>>3]>>(0x34&7))&1)||((b[0x4c>>3]>>(0x4c&7))&1));
+ }
+ int i = fltk2mac(k);
return (b[i>>3]>>(i&7))&1;
}
//
-// End of "$Id: Fl_get_key_mac.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_get_key_mac.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_get_key_win32.cxx b/src/Fl_get_key_win32.cxx
index a7973fa..3153fdb 100755
--- a/src/Fl_get_key_win32.cxx
+++ b/src/Fl_get_key_win32.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_get_key_win32.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_get_key_win32.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// WIN32 keyboard state routines for the Fast Light Tool Kit (FLTK).
//
@@ -134,5 +134,5 @@ int Fl::get_key(int k) {
}
//
-// End of "$Id: Fl_get_key_win32.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_get_key_win32.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_get_system_colors.cxx b/src/Fl_get_system_colors.cxx
index 8006490..094f9c8 100644
--- a/src/Fl_get_system_colors.cxx
+++ b/src/Fl_get_system_colors.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_get_system_colors.cxx 4705 2005-12-14 01:58:03Z mike $"
+// "$Id: Fl_get_system_colors.cxx 5699 2007-02-20 17:02:41Z matt $"
//
// System color support for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -40,7 +40,7 @@
extern "C" int putenv(const char*);
#endif // __APPLE__ && __MWERKS__
-#if defined(WIN32) && !defined(__CYGWIN__)
+#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
// on Windows, which is supposed to be POSIX compliant...
# define putenv _putenv
@@ -168,7 +168,21 @@ void Fl::get_system_colors()
if (!fl_bg2_set) background2(0xff, 0xff, 0xff);
if (!fl_fg_set) foreground(0, 0, 0);
if (!fl_bg_set) background(0xd8, 0xd8, 0xd8);
+
+#if 0
+ // this would be the correct code, but it does not run on all versions
+ // of OS X. Also, setting a bright selection color would require
+ // some updates in Fl_Adjuster and Fl_Help_Browser
+ OSStatus err;
+ RGBColor c;
+ err = GetThemeBrushAsColor(kThemeBrushPrimaryHighlightColor, 24, true, &c);
+ if (err)
+ set_selection_color(0x00, 0x00, 0x80);
+ else
+ set_selection_color(c.red, c.green, c.blue);
+#else
set_selection_color(0x00, 0x00, 0x80);
+#endif
}
#else
@@ -204,7 +218,7 @@ void Fl::get_system_colors()
if (!fl_bg2_set) getsyscolor("Text","background", fl_bg2, "#ffffff", Fl::background2);
if (!fl_fg_set) getsyscolor(key1, "foreground", fl_fg, "#000000", Fl::foreground);
if (!fl_bg_set) getsyscolor(key1, "background", fl_bg, "#c0c0c0", Fl::background);
- getsyscolor(key1, "selectBackground",0, "#000080", set_selection_color);
+ getsyscolor("Text", "selectBackground", 0, "#000080", set_selection_color);
}
#endif
@@ -308,6 +322,30 @@ int Fl::reload_scheme() {
set_boxtype(FL_THIN_DOWN_BOX, FL_PLASTIC_THIN_DOWN_BOX);
set_boxtype(_FL_ROUND_UP_BOX, FL_PLASTIC_ROUND_UP_BOX);
set_boxtype(_FL_ROUND_DOWN_BOX, FL_PLASTIC_ROUND_DOWN_BOX);
+
+ // Use standard size scrollbars...
+ Fl::scrollbar_size(16);
+ } else if (scheme_ && !strcasecmp(scheme_, "gtk+")) {
+ // Use a GTK+ inspired look-n-feel...
+ if (scheme_bg_) {
+ delete scheme_bg_;
+ scheme_bg_ = (Fl_Image *)0;
+ }
+
+ set_boxtype(FL_UP_FRAME, FL_GTK_UP_FRAME);
+ set_boxtype(FL_DOWN_FRAME, FL_GTK_DOWN_FRAME);
+ set_boxtype(FL_THIN_UP_FRAME, FL_GTK_THIN_UP_FRAME);
+ set_boxtype(FL_THIN_DOWN_FRAME, FL_GTK_THIN_DOWN_FRAME);
+
+ set_boxtype(FL_UP_BOX, FL_GTK_UP_BOX);
+ set_boxtype(FL_DOWN_BOX, FL_GTK_DOWN_BOX);
+ set_boxtype(FL_THIN_UP_BOX, FL_GTK_THIN_UP_BOX);
+ set_boxtype(FL_THIN_DOWN_BOX, FL_GTK_THIN_DOWN_BOX);
+ set_boxtype(_FL_ROUND_UP_BOX, FL_GTK_ROUND_UP_BOX);
+ set_boxtype(_FL_ROUND_DOWN_BOX, FL_GTK_ROUND_DOWN_BOX);
+
+ // Use slightly thinner scrollbars...
+ Fl::scrollbar_size(15);
} else {
// Use the standard FLTK look-n-feel...
if (scheme_bg_) {
@@ -326,6 +364,9 @@ int Fl::reload_scheme() {
set_boxtype(FL_THIN_DOWN_BOX, fl_thin_down_box, 1, 1, 2, 2);
set_boxtype(_FL_ROUND_UP_BOX, fl_round_up_box, 3, 3, 6, 6);
set_boxtype(_FL_ROUND_DOWN_BOX, fl_round_down_box, 3, 3, 6, 6);
+
+ // Use standard size scrollbars...
+ Fl::scrollbar_size(16);
}
// Set (or clear) the background tile for all windows...
@@ -341,5 +382,5 @@ int Fl::reload_scheme() {
//
-// End of "$Id: Fl_get_system_colors.cxx 4705 2005-12-14 01:58:03Z mike $".
+// End of "$Id: Fl_get_system_colors.cxx 5699 2007-02-20 17:02:41Z matt $".
//
diff --git a/src/Fl_grab.cxx b/src/Fl_grab.cxx
index 64b2569..7a735e2 100644
--- a/src/Fl_grab.cxx
+++ b/src/Fl_grab.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_grab.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_grab.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Grab/release code for the Fast Light Tool Kit (FLTK).
//
@@ -102,5 +102,5 @@ void Fl::grab(Fl_Window* win) {
}
//
-// End of "$Id: Fl_grab.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_grab.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_lock.cxx b/src/Fl_lock.cxx
index 6f65fa6..f940d85 100644
--- a/src/Fl_lock.cxx
+++ b/src/Fl_lock.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_lock.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_lock.cxx 5749 2007-03-20 10:41:14Z matt $"
//
// Multi-threading support code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -29,6 +29,8 @@
#include <FL/Fl.H>
#include <config.h>
+#include <stdlib.h>
+
/*
From Bill:
@@ -38,6 +40,14 @@
another. This file is an attempt to make minimal additions
and make them self-contained in this source file.
+ From Mike:
+
+ Starting with 1.1.8, we now have a callback so that you can
+ process awake() messages as they come in.
+
+
+ The API:
+
Fl::lock() - recursive lock. You must call this before the
first call to Fl::wait()/run() to initialize the thread
system. The lock is locked all the time except when
@@ -48,12 +58,75 @@
Fl::awake(void*) - Causes Fl::wait() to return (with the lock
locked) even if there are no events ready.
+ Fl::awake(void (*cb)(void *), void*) - Call a function
+ in the main thread from within another thread of execution.
+
Fl::thread_message() - returns an argument sent to an
Fl::awake() call, or returns NULL if none. WARNING: the
current implementation only has a one-entry queue and only
returns the most recent value!
*/
+Fl_Awake_Handler *Fl::awake_ring_;
+void **Fl::awake_data_;
+int Fl::awake_ring_size_;
+int Fl::awake_ring_head_;
+int Fl::awake_ring_tail_;
+static const int AWAKE_RING_SIZE = 1024;
+
+static void lock_ring();
+static void unlock_ring();
+
+
+int Fl::add_awake_handler_(Fl_Awake_Handler func, void *data)
+{
+ int ret = 0;
+ lock_ring();
+ if (!awake_ring_) {
+ awake_ring_size_ = AWAKE_RING_SIZE;
+ awake_ring_ = (Fl_Awake_Handler*)malloc(awake_ring_size_*sizeof(Fl_Awake_Handler));
+ awake_data_ = (void**)malloc(awake_ring_size_*sizeof(void*));
+ }
+ if (awake_ring_head_==awake_ring_tail_-1 || awake_ring_head_+1==awake_ring_tail_) {
+ // ring is full. Return -1 as an error indicator.
+ ret = -1;
+ } else {
+ awake_ring_[awake_ring_head_] = func;
+ awake_data_[awake_ring_head_] = data;
+ ++awake_ring_head_;
+ if (awake_ring_head_ == awake_ring_size_)
+ awake_ring_head_ = 0;
+ }
+ unlock_ring();
+ return ret;
+}
+
+int Fl::get_awake_handler_(Fl_Awake_Handler &func, void *&data)
+{
+ int ret = 0;
+ lock_ring();
+ if (!awake_ring_ || awake_ring_head_ == awake_ring_tail_) {
+ ret = -1;
+ } else {
+ func = awake_ring_[awake_ring_tail_];
+ data = awake_data_[awake_ring_tail_];
+ ++awake_ring_tail_;
+ if (awake_ring_tail_ == awake_ring_size_)
+ awake_ring_tail_ = 0;
+ }
+ unlock_ring();
+ return ret;
+}
+
+//
+// 'Fl::awake()' - Let the main thread know an update is pending
+// and have it cal a specific function
+//
+int Fl::awake(Fl_Awake_Handler func, void *data) {
+ int ret = add_awake_handler_(func, data);
+ Fl::awake();
+ return ret;
+}
////////////////////////////////////////////////////////////////
// Windows threading...
@@ -71,6 +144,19 @@ static DWORD main_thread;
// Microsoft's version of a MUTEX...
CRITICAL_SECTION cs;
+CRITICAL_SECTION *cs_ring;
+
+void unlock_ring() {
+ LeaveCriticalSection(cs_ring);
+}
+
+void lock_ring() {
+ if (!cs_ring) {
+ cs_ring = (CRITICAL_SECTION*)malloc(sizeof(CRITICAL_SECTION));
+ InitializeCriticalSection(cs_ring);
+ }
+ EnterCriticalSection(cs_ring);
+}
//
// 'unlock_function()' - Release the lock.
@@ -127,36 +213,22 @@ void Fl::awake(void* msg) {
// POSIX threading...
#elif HAVE_PTHREAD
# include <unistd.h>
+# include <fcntl.h>
# include <pthread.h>
-# if defined (PTHREAD_MUTEX_RECURSIVE_NP)
-// Linux supports recursive locks, use them directly:
+// Pipe for thread messaging via Fl::awake()...
+static int thread_filedes[2];
-static bool minit;
+// Mutex and state information for Fl::lock() and Fl::unlock()...
static pthread_mutex_t fltk_mutex;
-// this is needed for the Fl_Mutex constructor:
-pthread_mutexattr_t Fl_Mutex_attrib = {PTHREAD_MUTEX_RECURSIVE_NP};
-
-static void lock_function() {
- if (!minit) {
- pthread_mutex_init(&fltk_mutex, &Fl_Mutex_attrib);
- minit = true;
- }
- pthread_mutex_lock(&fltk_mutex);
-}
-
-void Fl::unlock() {
- pthread_mutex_unlock(&fltk_mutex);
-}
-
-# else
-// Make a recursive lock out of the pthread mutex:
-
-static pthread_mutex_t fltk_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_t owner;
static int counter;
-static void lock_function() {
+static void lock_function_init_std() {
+ pthread_mutex_init(&fltk_mutex, NULL);
+}
+
+static void lock_function_std() {
if (!counter || owner != pthread_self()) {
pthread_mutex_lock(&fltk_mutex);
owner = pthread_self();
@@ -164,18 +236,35 @@ static void lock_function() {
counter++;
}
-void Fl::unlock() {
+static void unlock_function_std() {
if (!--counter) pthread_mutex_unlock(&fltk_mutex);
}
-# endif
+# ifdef PTHREAD_MUTEX_RECURSIVE
+static bool lock_function_init_rec() {
+ pthread_mutexattr_t attrib;
+ pthread_mutexattr_init(&attrib);
+ if (pthread_mutexattr_settype(&attrib, PTHREAD_MUTEX_RECURSIVE)) {
+ pthread_mutexattr_destroy(&attrib);
+ return true;
+ }
-// Pipe for thread messaging...
-static int thread_filedes[2];
+ pthread_mutex_init(&fltk_mutex, &attrib);
+ return false;
+}
-// These pointers are in Fl_x.cxx:
-extern void (*fl_lock_function)();
-extern void (*fl_unlock_function)();
+static void lock_function_rec() {
+ pthread_mutex_lock(&fltk_mutex);
+}
+
+static void unlock_function_rec() {
+ pthread_mutex_unlock(&fltk_mutex);
+}
+# endif // PTHREAD_MUTEX_RECURSIVE
+
+void Fl::awake(void* msg) {
+ write(thread_filedes[1], &msg, sizeof(void*));
+}
static void* thread_message_;
void* Fl::thread_message() {
@@ -186,25 +275,81 @@ void* Fl::thread_message() {
static void thread_awake_cb(int fd, void*) {
read(fd, &thread_message_, sizeof(void*));
+ Fl_Awake_Handler func;
+ void *data;
+ while (Fl::get_awake_handler_(func, data)==0) {
+ (*func)(data);
+ }
}
+// These pointers are in Fl_x.cxx:
+extern void (*fl_lock_function)();
+extern void (*fl_unlock_function)();
+
void Fl::lock() {
- lock_function();
- if (!thread_filedes[1]) { // initialize the mt support
- // Init threads communication pipe to let threads awake FLTK from wait
+ if (!thread_filedes[1]) {
+ // Initialize thread communication pipe to let threads awake FLTK
+ // from Fl::wait()
pipe(thread_filedes);
+
+ // Make the write side of the pipe non-blocking to avoid deadlock
+ // conditions (STR #1537)
+ fcntl(thread_filedes[1], F_SETFL,
+ fcntl(thread_filedes[1], F_GETFL) | O_NONBLOCK);
+
+ // Monitor the read side of the pipe so that messages sent via
+ // Fl::awake() from a thread will "wake up" the main thread in
+ // Fl::wait().
Fl::add_fd(thread_filedes[0], FL_READ, thread_awake_cb);
- fl_lock_function = lock_function;
- fl_unlock_function = Fl::unlock;
+
+ // Set lock/unlock functions for this system, using a system-supplied
+ // recursive mutex if supported...
+# ifdef PTHREAD_MUTEX_RECURSIVE
+ if (!lock_function_init_rec()) {
+ fl_lock_function = lock_function_rec;
+ fl_unlock_function = unlock_function_rec;
+ } else {
+# endif // PTHREAD_MUTEX_RECURSIVE
+ lock_function_init_std();
+ fl_lock_function = lock_function_std;
+ fl_unlock_function = unlock_function_std;
+# ifdef PTHREAD_MUTEX_RECURSIVE
+ }
+# endif // PTHREAD_MUTEX_RECURSIVE
}
+
+ fl_lock_function();
}
-void Fl::awake(void* msg) {
- write(thread_filedes[1], &msg, sizeof(void*));
+void Fl::unlock() {
+ fl_unlock_function();
+}
+
+// Mutex code for the awake ring buffer
+static pthread_mutex_t *ring_mutex;
+
+void unlock_ring() {
+ pthread_mutex_unlock(ring_mutex);
+}
+
+void lock_ring() {
+ if (!ring_mutex) {
+ ring_mutex = (pthread_mutex_t*)malloc(sizeof(pthread_mutex_t));
+ pthread_mutex_init(ring_mutex, NULL);
+ }
+ pthread_mutex_lock(ring_mutex);
+}
+
+#else
+
+void unlock_ring() {
+}
+
+void lock_ring() {
}
-#endif
+#endif // WIN32
//
-// End of "$Id: Fl_lock.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_lock.cxx 5749 2007-03-20 10:41:14Z matt $".
//
diff --git a/src/Fl_mac.cxx b/src/Fl_mac.cxx
index 43c78c8..b080383 100644
--- a/src/Fl_mac.cxx
+++ b/src/Fl_mac.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_mac.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: Fl_mac.cxx 5803 2007-05-06 15:54:07Z matt $"
//
// MacOS specific code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2006 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -28,7 +28,7 @@
//// From the inner edge of a MetroWerks CodeWarrior CD:
// (without permission)
//
-// Three Compiles for 68Ks under the sky,
+// "Three Compiles for 68Ks under the sky,
// Seven Compiles for PPCs in their fragments of code,
// Nine Compiles for Mortal Carbon doomed to die,
// One Compile for Mach-O Cocoa on its Mach-O throne,
@@ -36,7 +36,7 @@
//
// One Compile to link them all, One Compile to merge them,
// One Compile to copy them all and in the bundle bind them,
-// in the Land of MacOS X where the Drop-Shadows lie.
+// in the Land of MacOS X where the Drop-Shadows lie."
// warning: the Apple Quartz version still uses some Quickdraw calls,
// mostly to get around the single active context in QD and
@@ -54,8 +54,8 @@ extern "C" {
#include <config.h>
#include <FL/Fl.H>
#include <FL/x.H>
-#include <FL/Fl_Tooltip.H>
#include <FL/Fl_Window.H>
+#include <FL/Fl_Tooltip.H>
#include <FL/Fl_Sys_Menu_Bar.H>
#include <stdio.h>
#include <stdlib.h>
@@ -121,7 +121,7 @@ enum { kEventFLTKBreakLoop = 1, kEventFLTKDataReady };
static unsigned short macKeyLookUp[128] =
{
'a', 's', 'd', 'f', 'h', 'g', 'z', 'x',
- 'c', 'v', 0/*ISO extra ('#' on German keyboard)*/, 'b', 'q', 'w', 'e', 'r',
+ 'c', 'v', '^', 'b', 'q', 'w', 'e', 'r',
'y', 't', '1', '2', '3', '4', '6', '5',
'=', '9', '7', '-', '8', '0', ']', 'o',
@@ -129,8 +129,10 @@ static unsigned short macKeyLookUp[128] =
'u', '[', 'i', 'p', FL_Enter, 'l', 'j', '\'',
'k', ';', '\\', ',', '/', 'n', 'm', '.',
- FL_Tab, ' ', '`', FL_BackSpace, 0/*kp_enter on powerbook G4*/, FL_Escape, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
+ FL_Tab, ' ', '`', FL_BackSpace,
+ FL_KP_Enter, FL_Escape, 0, 0/*FL_Meta_L*/,
+ 0/*FL_Shift_L*/, 0/*FL_Caps_Lock*/, 0/*FL_Alt_L*/, 0/*FL_Control_L*/,
+ 0/*FL_Shift_R*/, 0/*FL_Alt_R*/, 0/*FL_Control_R*/, 0,
0, FL_KP+'.', FL_Right, FL_KP+'*', 0, FL_KP+'+', FL_Left, FL_Num_Lock,
FL_Down, 0, 0, FL_KP+'/', FL_KP_Enter, FL_Up, FL_KP+'-', 0,
@@ -139,10 +141,10 @@ static unsigned short macKeyLookUp[128] =
FL_KP+'6', FL_KP+'7', 0, FL_KP+'8', FL_KP+'9', 0, 0, 0,
FL_F+5, FL_F+6, FL_F+7, FL_F+3, FL_F+8, FL_F+9, 0, FL_F+11,
- 0, 0, FL_Print, FL_Scroll_Lock, 0, FL_F+10, FL_Menu, FL_F+12,
+ 0, 0/*FL_F+13*/, FL_Print, FL_Scroll_Lock, 0, FL_F+10, FL_Menu, FL_F+12,
0, FL_Pause, FL_Help, FL_Home, FL_Page_Up, FL_Delete, FL_F+4, FL_End,
- FL_F+2, FL_Page_Down, FL_F+1, FL_Left, FL_Right, FL_Down, FL_Up, 0,
+ FL_F+2, FL_Page_Down, FL_F+1, FL_Left, FL_Right, FL_Down, FL_Up, 0/*FL_Power*/,
};
/**
@@ -607,6 +609,8 @@ struct MacTimeout {
Fl_Timeout_Handler callback;
void* data;
EventLoopTimerRef timer;
+ EventLoopTimerUPP upp;
+ char pending;
};
static MacTimeout* mac_timers;
static int mac_timer_alloc;
@@ -618,18 +622,22 @@ static void realloc_timers()
if (mac_timer_alloc == 0) {
mac_timer_alloc = 8;
}
- MacTimeout* new_timers = new MacTimeout[mac_timer_alloc * 2];
- memmove(new_timers, mac_timers, sizeof(MacTimeout) * mac_timer_used);
+ mac_timer_alloc *= 2;
+ MacTimeout* new_timers = new MacTimeout[mac_timer_alloc];
+ memset(new_timers, 0, sizeof(MacTimeout)*mac_timer_alloc);
+ memcpy(new_timers, mac_timers, sizeof(MacTimeout) * mac_timer_used);
MacTimeout* delete_me = mac_timers;
mac_timers = new_timers;
delete [] delete_me;
- mac_timer_alloc *= 2;
}
static void delete_timer(MacTimeout& t)
{
- RemoveEventLoopTimer(t.timer);
- memset(&t, 0, sizeof(MacTimeout));
+ if (t.timer) {
+ RemoveEventLoopTimer(t.timer);
+ DisposeEventLoopTimerUPP(t.upp);
+ memset(&t, 0, sizeof(MacTimeout));
+ }
}
@@ -638,7 +646,10 @@ static pascal void do_timer(EventLoopTimerRef timer, void* data)
for (int i = 0; i < mac_timer_used; ++i) {
MacTimeout& t = mac_timers[i];
if (t.timer == timer && t.data == data) {
+ t.pending = 0;
(*t.callback)(data);
+ if (t.pending==0)
+ delete_timer(t);
break;
}
}
@@ -791,6 +802,7 @@ static pascal OSStatus carbonWindowHandler( EventHandlerCallRef nextHandler, Eve
UInt32 kind = GetEventKind( event );
OSStatus ret = eventNotHandledErr;
Fl_Window *window = (Fl_Window*)userData;
+ Fl::first_window(window);
Rect currentBounds, originalBounds;
WindowClass winClass;
@@ -860,6 +872,12 @@ static pascal OSStatus carbonWindowHandler( EventHandlerCallRef nextHandler, Eve
if (!Fl_X::first) QuitAppleEventHandler( 0, 0, 0 );
ret = noErr; // returning noErr tells Carbon to stop following up on this event
break;
+ case kEventWindowCollapsed:
+ window->clear_visible();
+ break;
+ case kEventWindowExpanded:
+ window->set_visible();
+ break;
}
fl_unlock_function();
@@ -881,6 +899,7 @@ static pascal OSStatus carbonMousewheelHandler( EventHandlerCallRef nextHandler,
fl_os_event = event;
Fl_Window *window = (Fl_Window*)userData;
+ Fl::first_window(window);
EventMouseWheelAxis axis;
GetEventParameter( event, kEventParamMouseWheelAxis, typeMouseWheelAxis, NULL, sizeof(EventMouseWheelAxis), NULL, &axis );
@@ -929,11 +948,13 @@ static pascal OSStatus carbonMouseHandler( EventHandlerCallRef nextHandler, Even
{
static int keysym[] = { 0, FL_Button+1, FL_Button+3, FL_Button+2 };
static int px, py;
+ static char suppressed = 0;
fl_lock_function();
fl_os_event = event;
Fl_Window *window = (Fl_Window*)userData;
+ Fl::first_window(window);
Point pos;
GetEventParameter( event, kEventParamMouseLocation, typeQDPoint, NULL, sizeof(Point), NULL, &pos );
EventMouseButton btn;
@@ -943,17 +964,30 @@ static pascal OSStatus carbonMouseHandler( EventHandlerCallRef nextHandler, Even
UInt32 chord;
GetEventParameter( event, kEventParamMouseChord, typeUInt32, NULL, sizeof(UInt32), NULL, &chord );
WindowRef xid = fl_xid(window), tempXid;
- int sendEvent = 0, part;
+ int sendEvent = 0, part = 0;
switch ( GetEventKind( event ) )
{
case kEventMouseDown:
part = FindWindow( pos, &tempXid );
- if ( part != inContent ) {
- fl_unlock_function();
- return CallNextEventHandler( nextHandler, event ); // let the OS handle this for us
+ if (!(Fl::grab() && window!=Fl::grab())) {
+ if ( part == inGrow ) {
+ fl_unlock_function();
+ suppressed = 1;
+ Fl_Tooltip::current(0L);
+ return CallNextEventHandler( nextHandler, event ); // let the OS handle this for us
+ }
+ if ( part != inContent ) {
+ fl_unlock_function();
+ suppressed = 1;
+ Fl_Tooltip::current(0L);
+ // anything else to here?
+ return CallNextEventHandler( nextHandler, event ); // let the OS handle this for us
+ }
}
- if ( !IsWindowActive( xid ) )
+ suppressed = 0;
+ if (part==inContent && !IsWindowActive( xid ) ) {
CallNextEventHandler( nextHandler, event ); // let the OS handle the activation, but continue to get a click-through effect
+ }
// normal handling of mouse-down follows
fl_os_capture = xid;
sendEvent = FL_PUSH;
@@ -964,6 +998,10 @@ static pascal OSStatus carbonMouseHandler( EventHandlerCallRef nextHandler, Even
Fl::e_clicks = 0;
// fall through
case kEventMouseUp:
+ if (suppressed) {
+ suppressed = 0;
+ break;
+ }
if ( !window ) break;
if ( !sendEvent ) {
sendEvent = FL_RELEASE;
@@ -971,11 +1009,13 @@ static pascal OSStatus carbonMouseHandler( EventHandlerCallRef nextHandler, Even
Fl::e_keysym = keysym[ btn ];
// fall through
case kEventMouseMoved:
+ suppressed = 0;
if ( !sendEvent ) {
sendEvent = FL_MOVE; chord = 0;
}
// fall through
case kEventMouseDragged:
+ if (suppressed) break;
if ( !sendEvent ) {
sendEvent = FL_MOVE; // Fl::handle will convert into FL_DRAG
if (abs(pos.h-px)>5 || abs(pos.v-py)>5)
@@ -992,7 +1032,14 @@ static pascal OSStatus carbonMouseHandler( EventHandlerCallRef nextHandler, Even
Fl::e_x = pos.h;
Fl::e_y = pos.v;
SetPort( oldPort );
- Fl::handle( sendEvent, window );
+ if (GetEventKind(event)==kEventMouseDown && part!=inContent) {
+ int used = Fl::handle( sendEvent, window );
+ CallNextEventHandler( nextHandler, event ); // let the OS handle this for us
+ if (!used)
+ suppressed = 1;
+ } else {
+ Fl::handle( sendEvent, window );
+ }
break;
}
@@ -1030,6 +1077,7 @@ pascal OSStatus carbonKeyboardHandler(
static char buffer[5];
int sendEvent = 0;
Fl_Window *window = (Fl_Window*)userData;
+ Fl::first_window(window);
UInt32 mods;
static UInt32 prevMods = 0xffffffff;
@@ -1067,10 +1115,27 @@ pascal OSStatus carbonKeyboardHandler(
{
case kEventRawKeyDown:
case kEventRawKeyRepeat:
+ // When the user presses a "dead key", no information is send about
+ // which dead key symbol was created. So we need to trick Carbon into
+ // giving us the code by sending a "space" after the "dead key".
+ if (key==0) {
+ UInt32 ktState = 0;
+ KeyboardLayoutRef klr;
+ KLGetCurrentKeyboardLayout(&klr);
+ const void *kchar = 0; KLGetKeyboardLayoutProperty(klr, kKLKCHRData, &kchar);
+ KeyTranslate(kchar, (mods&0xff00) | keyCode, &ktState); // send the dead key
+ key = KeyTranslate(kchar, 0x31, &ktState); // fake a space key press
+ Fl::e_state |= 0x40000000; // mark this as a dead key
+ } else {
+ Fl::e_state &= 0xbfffffff; // clear the deadkey flag
+ }
sendEvent = FL_KEYBOARD;
// fall through
case kEventRawKeyUp:
- if ( !sendEvent ) sendEvent = FL_KEYUP;
+ if ( !sendEvent ) {
+ sendEvent = FL_KEYUP;
+ Fl::e_state &= 0xbfffffff; // clear the deadkey flag
+ }
// if the user pressed alt/option, event_key should have the keycap,
// but event_text should generate the international symbol
if ( isalpha(key) )
@@ -1081,8 +1146,9 @@ pascal OSStatus carbonKeyboardHandler(
sym = keycode_to_sym( keyCode & 0x7f, 0, macKeyLookUp[ keyCode & 0x7f ] );
else
sym = macKeyLookUp[ keyCode & 0x7f ];
- Fl::e_keysym = sym;
- if ( keyCode==0x4c ) key=0x0d;
+ Fl::e_keysym = Fl::e_original_keysym = sym;
+ // Handle FL_KP_Enter on regular keyboards and on Powerbooks
+ if ( keyCode==0x4c || keyCode==0x34) key=0x0d;
// Matt: the Mac has no concept of a NumLock key, or at least not visible
// Matt: to Carbon. The kEventKeyModifierNumLockMask is only set when
// Matt: a numeric keypad key is pressed and does not correspond with
@@ -1211,8 +1277,14 @@ void fl_open_callback(void (*cb)(const char *)) {
/**
- * initialize the Mac toolboxes and set the default menubar
+ * initialize the Mac toolboxes, dock status, and set the default menubar
*/
+
+extern "C" {
+ extern OSErr CPSEnableForegroundOperation(ProcessSerialNumber *psn, UInt32 _arg2,
+ UInt32 _arg3, UInt32 _arg4, UInt32 _arg5);
+}
+
void fl_open_display() {
static char beenHereDoneThat = 0;
if ( !beenHereDoneThat ) {
@@ -1231,6 +1303,50 @@ void fl_open_display() {
ClearMenuBar();
AppendResMenu( GetMenuHandle( 1 ), 'DRVR' );
DrawMenuBar();
+
+ // bring the application into foreground without a 'CARB' resource
+ Boolean same_psn;
+ ProcessSerialNumber cur_psn, front_psn;
+ if( !GetCurrentProcess( &cur_psn ) && !GetFrontProcess( &front_psn ) &&
+ !SameProcess( &front_psn, &cur_psn, &same_psn ) && !same_psn )
+ {
+ // only transform the application type for unbundled apps
+ CFBundleRef bundle = CFBundleGetMainBundle();
+ if( bundle )
+ {
+ FSRef execFs;
+ CFURLRef execUrl = CFBundleCopyExecutableURL( bundle );
+ CFURLGetFSRef( execUrl, &execFs );
+
+ FSRef bundleFs;
+ GetProcessBundleLocation( &cur_psn, &bundleFs );
+
+ if( !FSCompareFSRefs( &execFs, &bundleFs ) )
+ bundle = NULL;
+
+ CFRelease(execUrl);
+ }
+
+ if( !bundle )
+ {
+ // Earlier versions of this code tried to use weak linking, however it
+ // appears that this does not work on 10.2. Since 10.3 and higher provide
+ // both TransformProcessType and CPSEnableForegroundOperation, the following
+ // conditional code compiled on 10.2 will still work on newer releases...
+ OSErr err;
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2
+ if (TransformProcessType != NULL) {
+ err = TransformProcessType(&cur_psn, kProcessTransformToForegroundApplication);
+ } else
+#endif // MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2
+ err = CPSEnableForegroundOperation(&cur_psn, 0x03, 0x3C, 0x2C, 0x1103);
+
+ if (err == noErr) {
+ SetFrontProcess( &cur_psn );
+ }
+ }
+ }
}
}
@@ -1566,6 +1682,7 @@ static OSErr fillCurrentDragData(DragReference dragRef)
static pascal OSErr dndTrackingHandler( DragTrackingMessage msg, WindowPtr w, void *userData, DragReference dragRef )
{
Fl_Window *target = (Fl_Window*)userData;
+ Fl::first_window(target);
Point mp;
static int px, py;
@@ -1629,6 +1746,7 @@ static pascal OSErr dndReceiveHandler( WindowPtr w, void *userData, DragReferenc
OSErr ret;
Fl_Window *target = fl_dnd_target_window = (Fl_Window*)userData;
+ Fl::first_window(target);
GetDragMouse( dragRef, &mp, 0 );
Fl::e_x_root = mp.h;
Fl::e_y_root = mp.v;
@@ -1686,7 +1804,6 @@ void Fl_X::make(Fl_Window* w)
x->gc = 0; // stay 0 for Quickdraw; fill with CGContext for Quartz
Fl_Window *win = w->window();
Fl_X *xo = Fl_X::i(win);
- w->set_visible();
if (xo) {
x->xidNext = xo->xidChildren;
x->xidChildren = 0L;
@@ -1797,6 +1914,7 @@ void Fl_X::make(Fl_Window* w)
if (w->non_modal() && !w->modal()) {
// Major kludge: this is to have the regular look, but stay above the document windows
SetWindowClass(x->xid, kFloatingWindowClass);
+ SetWindowActivationScope(x->xid, kWindowActivationScopeAll);
}
if (!(w->flags() & Fl_Window::FL_FORCE_POSITION))
{
@@ -1813,7 +1931,6 @@ void Fl_X::make(Fl_Window* w)
x->wait_for_expose = 1;
x->next = Fl_X::first;
Fl_X::first = x;
- w->set_visible();
{ // Install Carbon Event handlers
OSStatus ret;
EventHandlerUPP mousewheelHandler = NewEventHandlerUPP( carbonMousewheelHandler ); // will not be disposed by Carbon...
@@ -1844,9 +1961,11 @@ void Fl_X::make(Fl_Window* w)
{ kEventClassWindow, kEventWindowActivated },
{ kEventClassWindow, kEventWindowDeactivated },
{ kEventClassWindow, kEventWindowClose },
+ { kEventClassWindow, kEventWindowCollapsed },
+ { kEventClassWindow, kEventWindowExpanded },
{ kEventClassWindow, kEventWindowBoundsChanging },
{ kEventClassWindow, kEventWindowBoundsChanged } };
- ret = InstallWindowEventHandler( x->xid, windowHandler, 8, windowEvents, w, 0L );
+ ret = InstallWindowEventHandler( x->xid, windowHandler, 10, windowEvents, w, 0L );
ret = InstallTrackingHandler( dndTrackingHandler, x->xid, w );
ret = InstallReceiveHandler( dndReceiveHandler, x->xid, w );
}
@@ -1858,15 +1977,20 @@ void Fl_X::make(Fl_Window* w)
if ( err==noErr ) SetFrontProcess( &psn );
}
+ if (w->size_range_set) w->size_range_();
+
+ if (winclass != kHelpWindowClass) {
+ Fl_Tooltip::enter(0);
+ }
+ if (w->size_range_set) w->size_range_();
+ ShowWindow(x->xid);
if (fl_show_iconic) {
fl_show_iconic = 0;
CollapseWindow( x->xid, true ); // \todo Mac ; untested
- } else if (winclass != kHelpWindowClass) {
- Fl_Tooltip::enter(0);
+ } else {
+ w->set_visible();
}
- ShowWindow(x->xid);
-
Rect rect;
GetWindowBounds(x->xid, kWindowContentRgn, &rect);
w->x(rect.left); w->y(rect.top);
@@ -1876,7 +2000,6 @@ void Fl_X::make(Fl_Window* w)
w->handle(Fl::e_number = FL_SHOW);
Fl::e_number = old_event;
w->redraw(); // force draw to happen
- w->set_visible();
if (w->modal()) { Fl::modal_ = w; fl_fix_focus(); }
}
@@ -1884,10 +2007,14 @@ void Fl_X::make(Fl_Window* w)
/**
- * this is a leftover from X Windows
+ * Tell the OS what window sizes we want to allow
*/
void Fl_Window::size_range_() {
size_range_set = 1;
+ HISize minSize = { minw, minh };
+ HISize maxSize = { maxw?maxw:32000, maxh?maxh:32000 };
+ if (i && i->xid)
+ SetWindowResizeLimits(i->xid, &minSize, &maxSize);
}
@@ -1939,6 +2066,7 @@ void Fl_Window::show() {
} else {
labeltype(FL_NO_LABEL);
}
+ Fl_Tooltip::exit(this);
if (!shown() || !i) {
Fl_X::make(this);
} else {
@@ -1958,34 +2086,37 @@ void Fl_Window::show() {
* resize a window
*/
void Fl_Window::resize(int X,int Y,int W,int H) {
+ if (W<=0) W = 1; // OS X does not like zero width windows
+ if (H<=0) H = 1;
int is_a_resize = (W != w() || H != h());
// printf("Fl_Winodw::resize(X=%d, Y=%d, W=%d, H=%d), is_a_resize=%d, resize_from_system=%p, this=%p\n",
// X, Y, W, H, is_a_resize, resize_from_system, this);
if (X != x() || Y != y()) set_flag(FL_FORCE_POSITION);
else if (!is_a_resize) return;
if ( (resize_from_system!=this) && (!parent()) && shown()) {
- MoveWindow(i->xid, X, Y, 0);
if (is_a_resize) {
- if (!resizable()) size_range(W>0 ? W : 1, H>0 ? H : 1, W>0 ? W : 1, H>0 ? H : 1);
- SizeWindow(i->xid, W>0 ? W : 1, H>0 ? H : 1, 1);
+ if (resizable()) {
+ if (W<minw) minw = W; // user request for resize takes priority
+ if (W>maxw) maxw = W; // over a previously set size_range
+ if (H<minh) minh = H;
+ if (H>maxh) maxh = H;
+ size_range(minw, minh, maxw, maxh);
+ } else {
+ size_range(W, H, W, H);
+ }
+ Rect dim; dim.left=X; dim.top=Y; dim.right=X+W; dim.bottom=Y+H;
+ SetWindowBounds(i->xid, kWindowContentRgn, &dim);
Rect all; all.top=-32000; all.bottom=32000; all.left=-32000; all.right=32000;
InvalWindowRect( i->xid, &all );
+ } else {
+ MoveWindow(i->xid, X, Y, 0);
}
- } else if (resize_from_system == this && size_range_set && !parent() && shown()) {
- if (size_range_set) {
- if (W < minw) W = minw;
- else if (W > maxw && maxw) W = maxw;
- if (H < minh) H = minh;
- else if (H > maxh && maxh) H = maxh;
- }
- SizeWindow(i->xid, W>0 ? W : 1, H>0 ? H : 1, 1);
}
resize_from_system = 0;
if (is_a_resize) {
Fl_Group::resize(X,Y,W,H);
if (shown()) {
redraw();
- //if (!parent()) i->wait_for_expose = 1;
}
} else {
x(X); y(Y);
@@ -1999,6 +2130,7 @@ void Fl_Window::resize(int X,int Y,int W,int H) {
void Fl_Window::make_current()
{
#ifdef __APPLE_QUARTZ__
+ OSStatus err;
Fl_X::q_release_context();
#endif
if ( !fl_window_region )
@@ -2033,15 +2165,17 @@ void Fl_Window::make_current()
DiffRgn( fl_window_region, r, fl_window_region );
DisposeRgn( r );
}
-
- fl_clip_region( 0 );
- SetPortClipRegion( GetWindowPort(i->xid), fl_window_region );
+
#ifdef __APPLE_QUARTZ__
- QDBeginCGContext(GetWindowPort(i->xid), &i->gc);
+ err = QDBeginCGContext(GetWindowPort(i->xid), &i->gc);
+ if (err!=noErr)
+ fprintf(stderr, "Error %d in QDBeginCGContext\n", (int)err);
fl_gc = i->gc;
CGContextSaveGState(fl_gc);
Fl_X::q_fill_context();
#endif
+ fl_clip_region( 0 );
+ SetPortClipRegion( GetWindowPort(i->xid), fl_window_region );
return;
}
@@ -2052,7 +2186,7 @@ extern class Fl_FontSize *fl_fontsize;
extern void fl_font(class Fl_FontSize*);
extern void fl_quartz_restore_line_style_();
-// FLTK has only on global graphics state. This function copies the FLTK state into the
+// FLTK has only one global graphics state. This function copies the FLTK state into the
// current Quartz context
void Fl_X::q_fill_context() {
if (!fl_gc) return;
@@ -2066,14 +2200,12 @@ void Fl_X::q_fill_context() {
}
CGContextTranslateCTM(fl_gc, 0.5, hgt-0.5f);
CGContextScaleCTM(fl_gc, 1.0f, -1.0f);
- static CGAffineTransform font_mx = { 1, 0, 0, -1, 0, 0 };
- CGContextSetTextMatrix(fl_gc, font_mx);
fl_font(fl_fontsize);
fl_color(fl_color_);
fl_quartz_restore_line_style_();
}
-// The only way to reste clipping to its original state is to pop the current graphics
+// The only way to reset clipping to its original state is to pop the current graphics
// state and restore the global state.
void Fl_X::q_clear_clipping() {
if (!fl_gc) return;
@@ -2086,7 +2218,11 @@ void Fl_X::q_release_context(Fl_X *x) {
if (x && x->gc!=fl_gc) return;
if (!fl_gc) return;
CGContextRestoreGState(fl_gc);
- if (fl_window) QDEndCGContext(GetWindowPort(fl_window), &fl_gc);
+ if (fl_window) {
+ OSStatus err = QDEndCGContext(GetWindowPort(fl_window), &fl_gc);
+ if (err!=noErr)
+ fprintf(stderr, "Error %d in QDEndCGContext\n", (int)err);
+ }
fl_gc = 0;
}
@@ -2159,14 +2295,15 @@ void Fl::paste(Fl_Widget &receiver, int clipboard) {
Size len = 0;
if (GetCurrentScrap(&scrap) == noErr && scrap != myScrap &&
GetScrapFlavorSize(scrap, kScrapFlavorTypeText, &len) == noErr) {
- if ( len > fl_selection_buffer_length[1] ) {
+ if ( len >= fl_selection_buffer_length[1] ) {
fl_selection_buffer_length[1] = len + 32;
delete[] fl_selection_buffer[1];
- fl_selection_buffer[1] = new char[len];
+ fl_selection_buffer[1] = new char[len + 32];
}
+ fl_selection_length[1] = len; len++;
GetScrapFlavorData( scrap, kScrapFlavorTypeText, &len,
fl_selection_buffer[1] );
- fl_selection_length[1] = len;
+ fl_selection_buffer[1][fl_selection_length[1]] = 0;
// turn all \r characters into \n:
for (int x = 0; x < len; x++) {
if (fl_selection_buffer[1][x] == '\r')
@@ -2183,34 +2320,56 @@ void Fl::paste(Fl_Widget &receiver, int clipboard) {
void Fl::add_timeout(double time, Fl_Timeout_Handler cb, void* data)
{
+ // check, if this timer slot exists already
+ for (int i = 0; i < mac_timer_used; ++i) {
+ MacTimeout& t = mac_timers[i];
+ // if so, simply change the fire interval
+ if (t.callback == cb && t.data == data) {
+ SetEventLoopTimerNextFireTime(t.timer, (EventTimerInterval)time);
+ t.pending = 1;
+ return;
+ }
+ }
+ // no existing timer to use. Create a new one:
int timer_id = -1;
+ // find an empty slot in the timer array
for (int i = 0; i < mac_timer_used; ++i) {
if ( !mac_timers[i].timer ) {
timer_id = i;
break;
}
}
+ // if there was no empty slot, append a new timer
if (timer_id == -1) {
+ // make space if needed
if (mac_timer_used == mac_timer_alloc) {
realloc_timers();
}
timer_id = mac_timer_used++;
}
-
- EventTimerInterval fireDelay = (EventTimerInterval) time;
+ // now install a brand new timer
+ MacTimeout& t = mac_timers[timer_id];
+ EventTimerInterval fireDelay = (EventTimerInterval)time;
EventLoopTimerUPP timerUPP = NewEventLoopTimerUPP(do_timer);
- EventLoopTimerRef timerRef;
+ EventLoopTimerRef timerRef = 0;
OSStatus err = InstallEventLoopTimer(GetMainEventLoop(), fireDelay, 0, timerUPP, data, &timerRef);
if (err == noErr) {
- mac_timers[timer_id].callback = cb;
- mac_timers[timer_id].data = data;
- mac_timers[timer_id].timer = timerRef;
+ t.callback = cb;
+ t.data = data;
+ t.timer = timerRef;
+ t.upp = timerUPP;
+ t.pending = 1;
+ } else {
+ if (timerRef)
+ RemoveEventLoopTimer(timerRef);
+ if (timerUPP)
+ DisposeEventLoopTimerUPP(timerUPP);
}
}
void Fl::repeat_timeout(double time, Fl_Timeout_Handler cb, void* data)
{
- remove_timeout(cb, data);
+ // currently, repeat_timeout does not subtract the trigger time of the previous timer event as it should.
add_timeout(time, cb, data);
}
@@ -2218,7 +2377,7 @@ int Fl::has_timeout(Fl_Timeout_Handler cb, void* data)
{
for (int i = 0; i < mac_timer_used; ++i) {
MacTimeout& t = mac_timers[i];
- if (t.callback == cb && t.data == data) {
+ if (t.callback == cb && t.data == data && t.pending) {
return 1;
}
}
@@ -2235,9 +2394,69 @@ void Fl::remove_timeout(Fl_Timeout_Handler cb, void* data)
}
}
+int MacUnlinkWindow(Fl_X *ip, Fl_X *start) {
+ if (!ip) return 0;
+ if (start) {
+ Fl_X *pc = start;
+ while (pc) {
+ if (pc->xidNext == ip) {
+ pc->xidNext = ip->xidNext;
+ return 1;
+ }
+ if (pc->xidChildren) {
+ if (pc->xidChildren == ip) {
+ pc->xidChildren = ip->xidNext;
+ return 1;
+ }
+ if (MacUnlinkWindow(ip, pc->xidChildren))
+ return 1;
+ }
+ pc = pc->xidNext;
+ }
+ } else {
+ for ( Fl_X *pc = Fl_X::first; pc; pc = pc->next ) {
+ if (MacUnlinkWindow(ip, pc))
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static void MacRelinkWindow(Fl_X *x, Fl_X *p) {
+ if (!x || !p) return;
+ // first, check if 'x' is already registered as a child of 'p'
+ for (Fl_X *i = p->xidChildren; i; i=i->xidNext) {
+ if (i == x) return;
+ }
+ // now add 'x' as the first child of 'p'
+ x->xidNext = p->xidChildren;
+ p->xidChildren = x;
+}
+
+void MacDestroyWindow(Fl_Window *w, WindowPtr p) {
+ MacUnmapWindow(w, p);
+ if (w && !w->parent() && p)
+ DisposeWindow(p);
+}
+void MacMapWindow(Fl_Window *w, WindowPtr p) {
+ if (w && p)
+ ShowWindow(p);
+ //+ link to window list
+ if (w && w->parent()) {
+ MacRelinkWindow(Fl_X::i(w), Fl_X::i(w->window()));
+ w->redraw();
+ }
+}
+
+void MacUnmapWindow(Fl_Window *w, WindowPtr p) {
+ if (w && !w->parent() && p)
+ HideWindow(p);
+ if (w && Fl_X::i(w))
+ MacUnlinkWindow(Fl_X::i(w));
+}
//
-// End of "$Id: Fl_mac.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: Fl_mac.cxx 5803 2007-05-06 15:54:07Z matt $".
//
diff --git a/src/Fl_own_colormap.cxx b/src/Fl_own_colormap.cxx
index 214aa23..b0df4bb 100644
--- a/src/Fl_own_colormap.cxx
+++ b/src/Fl_own_colormap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_own_colormap.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_own_colormap.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Private colormap support for the Fast Light Tool Kit (FLTK).
//
@@ -79,5 +79,5 @@ void Fl::own_colormap() {
#endif
//
-// End of "$Id: Fl_own_colormap.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_own_colormap.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_visual.cxx b/src/Fl_visual.cxx
index 4a9af35..b0c9544 100644
--- a/src/Fl_visual.cxx
+++ b/src/Fl_visual.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_visual.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: Fl_visual.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Visual support for the Fast Light Tool Kit (FLTK).
//
@@ -117,5 +117,5 @@ int Fl::visual(int flags) {
#endif
//
-// End of "$Id: Fl_visual.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: Fl_visual.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index e037811..7dd85f3 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_win32.cxx 4714 2005-12-16 11:34:04Z matt $"
+// "$Id: Fl_win32.cxx 5836 2007-05-16 12:47:49Z matt $"
//
// WIN32-specific code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -33,6 +33,7 @@
#include <FL/x.H>
#include <FL/Fl_Window.H>
#include <FL/Enumerations.H>
+#include <FL/Fl_Tooltip.H>
#include "flstring.h"
#include "Fl_Font.H"
#include <stdio.h>
@@ -223,6 +224,16 @@ MSG fl_msg;
int fl_wait(double time_to_wait) {
int have_message = 0;
+ run_checks();
+
+ // idle processing
+ static char in_idle;
+ if (Fl::idle && !in_idle) {
+ in_idle = 1;
+ Fl::idle();
+ in_idle = 0;
+ }
+
#ifndef USE_ASYNC_SELECT
if (nfds) {
// For WIN32 we need to poll for socket input FIRST, since
@@ -246,25 +257,26 @@ int fl_wait(double time_to_wait) {
if (fd[i].events & revents) fd[i].cb(f, fd[i].arg);
}
time_to_wait = 0.0; // just peek for any messages
-#ifdef __CYGWIN__
- }
-#else
} else {
// we need to check them periodically, so set a short timeout:
if (time_to_wait > .001) time_to_wait = .001;
}
-#endif
}
#endif // USE_ASYNC_SELECT
if (Fl::idle || Fl::damage())
time_to_wait = 0.0;
+ // if there are no more windows and this timer is set
+ // to FOREVER, continue through or look up indefinetely
+ if (!Fl::first_window() && time_to_wait==1e20)
+ time_to_wait = 0.0;
+
fl_unlock_function();
time_to_wait = (time_to_wait > 10000 ? 10000 : time_to_wait);
int t_msec = (int) (time_to_wait * 1000.0 + 0.5);
- int ret_val = MsgWaitForMultipleObjects(0, NULL, FALSE, t_msec, QS_ALLINPUT);
+ MsgWaitForMultipleObjects(0, NULL, FALSE, t_msec, QS_ALLINPUT);
fl_lock_function();
@@ -284,8 +296,15 @@ int fl_wait(double time_to_wait) {
}
#endif
- if (fl_msg.message == fl_wake_msg) // Used for awaking wait() from another thread
+ if (fl_msg.message == fl_wake_msg) {
+ // Used for awaking wait() from another thread
thread_message_ = (void*)fl_msg.wParam;
+ Fl_Awake_Handler func;
+ void *data;
+ while (Fl::get_awake_handler_(func, data)==0) {
+ func(data);
+ }
+ }
TranslateMessage(&fl_msg);
DispatchMessage(&fl_msg);
@@ -294,16 +313,6 @@ int fl_wait(double time_to_wait) {
}
Fl::flush();
- // idle processing
- static char in_idle;
- if (Fl::idle && !in_idle) {
- in_idle = 1;
- Fl::idle();
- in_idle = 0;
- }
-
- run_checks();
-
// This should return 0 if only timer events were handled:
return 1;
}
@@ -638,13 +647,13 @@ static void realloc_timers()
if (win32_timer_alloc == 0) {
win32_timer_alloc = 8;
}
- size_t size = sizeof(Win32Timer);
- Win32Timer* new_timers = new Win32Timer[win32_timer_alloc * 2];
- memmove(new_timers, win32_timers, sizeof(Win32Timer) * win32_timer_used);
+ win32_timer_alloc *= 2;
+ Win32Timer* new_timers = new Win32Timer[win32_timer_alloc];
+ memset(new_timers, 0, sizeof(Win32Timer) * win32_timer_used);
+ memcpy(new_timers, win32_timers, sizeof(Win32Timer) * win32_timer_used);
Win32Timer* delete_me = win32_timers;
win32_timers = new_timers;
delete [] delete_me;
- win32_timer_alloc *= 2;
}
static void delete_timer(Win32Timer& t)
@@ -714,12 +723,13 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
if (i->region) {
// Also tell WIN32 that we are drawing someplace else as well...
- InvalidateRgn(hWnd, i->region, FALSE);
CombineRgn(i->region, i->region, R, RGN_OR);
XDestroyRegion(R);
} else {
i->region = R;
}
+ if (window->type() == FL_DOUBLE_WINDOW) ValidateRgn(hWnd,0);
+ else ValidateRgn(hWnd,i->region);
window->clear_damage((uchar)(window->damage()|FL_DAMAGE_EXPOSE));
// These next two statements should not be here, so that all update
@@ -730,8 +740,6 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
fl_save_pen();
i->flush();
fl_restore_pen();
- if (window->type() == FL_DOUBLE_WINDOW) ValidateRgn(hWnd,0);
- else ValidateRgn(hWnd,i->region);
window->clear_damage();
} return 0;
@@ -804,7 +812,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
case WM_KEYUP:
case WM_SYSKEYUP:
// save the keysym until we figure out the characters:
- Fl::e_keysym = ms2fltk(wParam,lParam&(1<<24));
+ Fl::e_keysym = Fl::e_original_keysym = ms2fltk(wParam,lParam&(1<<24));
// See if TranslateMessage turned it into a WM_*CHAR message:
if (PeekMessage(&fl_msg, hWnd, WM_CHAR, WM_SYSDEADCHAR, PM_REMOVE)) {
uMsg = fl_msg.message;
@@ -833,10 +841,6 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
}
if (GetKeyState(VK_SCROLL)) state |= FL_SCROLL_LOCK;
Fl::e_state = state;
- if (lParam & (1<<31)) { // key up events.
- if (Fl::handle(FL_KEYUP, window)) return 0;
- break;
- }
static char buffer[2];
if (uMsg == WM_CHAR || uMsg == WM_SYSCHAR) {
buffer[0] = char(wParam);
@@ -890,11 +894,15 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
break;
}
}
- } else {
+ } else if ((lParam & (1<<31))==0){
buffer[0] = 0;
Fl::e_length = 0;
}
Fl::e_text = buffer;
+ if (lParam & (1<<31)) { // key up events.
+ if (Fl::handle(FL_KEYUP, window)) return 0;
+ break;
+ }
// for (int i = lParam&0xff; i--;)
while (window->parent()) window = window->window();
if (Fl::handle(FL_KEYBOARD,window)) return 0;
@@ -1127,6 +1135,10 @@ void Fl_Window::resize(int X,int Y,int W,int H) {
W += 2*bx;
H += 2*by+bt;
}
+ // avoid zero size windows. A zero sized window on Win32
+ // will cause continouly new redraw events.
+ if (W<=0) W = 1;
+ if (H<=0) H = 1;
SetWindowPos(i->xid, 0, X, Y, W, H, flags);
}
}
@@ -1303,7 +1315,7 @@ Fl_X* Fl_X::make(Fl_Window* w) {
Fl::e_number = old_event;
w->redraw(); // force draw to happen
}
- // If we've captured the mouse, we dont want do activate any
+ // If we've captured the mouse, we dont want to activate any
// other windows from the code, or we loose the capture.
ShowWindow(x->xid, !showit ? SW_SHOWMINNOACTIVE :
(Fl::grab() || (style & WS_POPUP)) ? SW_SHOWNOACTIVATE : SW_SHOWNORMAL);
@@ -1336,7 +1348,7 @@ static LRESULT CALLBACK s_TimerProc(HWND hwnd, UINT msg,
case WM_TIMER:
{
unsigned int id = wParam - 1;
- if (id < win32_timer_used && win32_timers[id].handle) {
+ if (id < (unsigned int)win32_timer_used && win32_timers[id].handle) {
Fl_Timeout_Handler cb = win32_timers[id].callback;
void* data = win32_timers[id].data;
delete_timer(win32_timers[id]);
@@ -1385,7 +1397,7 @@ void Fl::repeat_timeout(double time, Fl_Timeout_Handler cb, void* data)
wc.lpfnWndProc = (WNDPROC)s_TimerProc;
wc.hInstance = fl_display;
wc.lpszClassName = timer_class;
- ATOM atom = RegisterClassEx(&wc);
+ /*ATOM atom =*/ RegisterClassEx(&wc);
// create a zero size window to handle timer events
s_TimerWnd = CreateWindowEx(WS_EX_LEFT | WS_EX_TOOLWINDOW,
timer_class, "",
@@ -1513,6 +1525,7 @@ void Fl_Window::show() {
} else {
labeltype(FL_NO_LABEL);
}
+ Fl_Tooltip::exit(this);
if (!shown()) {
// if (can_boxcheat(box())) fl_background_pixel = fl_xpixel(color());
Fl_X::make(this);
@@ -1577,7 +1590,7 @@ void fl_free_fonts(void)
s = fl_fonts + i;
for (f=s->first; f; f=ff) {
ff = f->next;
- delete(f);
+ delete f;
s->first = ff;
}
}
@@ -1660,5 +1673,5 @@ void fl_cleanup_dc_list(void) { // clean up the list
//
-// End of "$Id: Fl_win32.cxx 4714 2005-12-16 11:34:04Z matt $".
+// End of "$Id: Fl_win32.cxx 5836 2007-05-16 12:47:49Z matt $".
//
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx
index f283590..8866196 100644
--- a/src/Fl_x.cxx
+++ b/src/Fl_x.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: Fl_x.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: Fl_x.cxx 5657 2007-02-02 19:37:30Z mike $"
//
// X specific code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2006 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -38,6 +38,7 @@
# include <FL/Fl.H>
# include <FL/x.H>
# include <FL/Fl_Window.H>
+# include <FL/Fl_Tooltip.H>
# include <stdio.h>
# include <stdlib.h>
# include "flstring.h"
@@ -366,14 +367,56 @@ void fl_close_display() {
XCloseDisplay(fl_display);
}
-int Fl::h() {
+static int fl_workarea_xywh[4] = { -1, -1, -1, -1 };
+
+static void fl_init_workarea() {
fl_open_display();
- return DisplayHeight(fl_display,fl_screen);
+
+ Atom _NET_WORKAREA = XInternAtom(fl_display, "_NET_WORKAREA", 0);
+ Atom actual;
+ unsigned long count, remaining;
+ int format;
+ unsigned *xywh;
+
+ if (XGetWindowProperty(fl_display, RootWindow(fl_display, fl_screen),
+ _NET_WORKAREA, 0, 4 * sizeof(unsigned), False,
+ XA_CARDINAL, &actual, &format, &count, &remaining,
+ (unsigned char **)&xywh) || !xywh || !xywh[2] ||
+ !xywh[3])
+ {
+ fl_workarea_xywh[0] = 0;
+ fl_workarea_xywh[1] = 0;
+ fl_workarea_xywh[2] = DisplayWidth(fl_display, fl_screen);
+ fl_workarea_xywh[3] = DisplayHeight(fl_display, fl_screen);
+ }
+ else
+ {
+ fl_workarea_xywh[0] = (int)xywh[0];
+ fl_workarea_xywh[1] = (int)xywh[1];
+ fl_workarea_xywh[2] = (int)xywh[2];
+ fl_workarea_xywh[3] = (int)xywh[3];
+ XFree(xywh);
+ }
+}
+
+int Fl::x() {
+ if (fl_workarea_xywh[0] < 0) fl_init_workarea();
+ return fl_workarea_xywh[0];
+}
+
+int Fl::y() {
+ if (fl_workarea_xywh[0] < 0) fl_init_workarea();
+ return fl_workarea_xywh[1];
}
int Fl::w() {
- fl_open_display();
- return DisplayWidth(fl_display,fl_screen);
+ if (fl_workarea_xywh[0] < 0) fl_init_workarea();
+ return fl_workarea_xywh[2];
+}
+
+int Fl::h() {
+ if (fl_workarea_xywh[0] < 0) fl_init_workarea();
+ return fl_workarea_xywh[3];
}
void Fl::get_mouse(int &xx, int &yy) {
@@ -595,8 +638,7 @@ int fl_handle(const XEvent& thisevent)
if (e.target == TARGETS) {
Atom a = XA_STRING;
XChangeProperty(fl_display, e.requestor, e.property,
- XA_ATOM, sizeof(Atom)*8, 0, (unsigned char*)&a,
- sizeof(Atom));
+ XA_ATOM, sizeof(Atom)*8, 0, (unsigned char*)&a, 1);
} else if (/*e.target == XA_STRING &&*/ fl_selection_length[clipboard]) {
XChangeProperty(fl_display, e.requestor, e.property,
e.target, 8, 0,
@@ -841,6 +883,8 @@ int fl_handle(const XEvent& thisevent)
// Map keypad keysym to character or keysym depending on
// numlock state...
unsigned long keysym1 = XKeycodeToKeysym(fl_display, keycode, 1);
+ if (keysym1 <= 0x7f || (keysym1 > 0xff9f && keysym1 <= FL_KP_Last))
+ Fl::e_original_keysym = (int)(keysym1 | FL_KP);
if ((xevent.xkey.state & Mod2Mask) &&
(keysym1 <= 0x7f || (keysym1 > 0xff9f && keysym1 <= FL_KP_Last))) {
// Store ASCII numeric keypad value...
@@ -856,6 +900,9 @@ int fl_handle(const XEvent& thisevent)
0xff0b/*XK_Clear*/, FL_Insert, FL_Delete};
keysym = table[keysym-0xff91];
}
+ } else {
+ // Store this so we can later know if the KP was used
+ Fl::e_original_keysym = (int)keysym;
}
Fl::e_keysym = int(keysym);
set_event_xy();
@@ -1324,9 +1371,13 @@ void Fl_Window::show() {
} else {
labeltype(FL_NO_LABEL);
}
+ Fl_Tooltip::exit(this);
if (!shown()) {
fl_open_display();
- if (can_boxcheat(box())) fl_background_pixel = int(fl_xpixel(color()));
+ // Don't set background pixel for double-buffered windows...
+ if (type() == FL_WINDOW && can_boxcheat(box())) {
+ fl_background_pixel = int(fl_xpixel(color()));
+ }
Fl_X::make_xid(this);
} else {
XMapRaised(fl_display, i->xid);
@@ -1350,5 +1401,5 @@ void Fl_Window::make_current() {
#endif
//
-// End of "$Id: Fl_x.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: Fl_x.cxx 5657 2007-02-02 19:37:30Z mike $".
//
diff --git a/src/Makefile b/src/Makefile
index ee7da8d..8f3240a 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 4474 2005-08-08 00:54:30Z mike $"
+# "$Id: Makefile 5689 2007-02-10 14:31:12Z mike $"
#
# Library makefile for the Fast Light Tool Kit (FLTK).
#
-# Copyright 1998-2005 by Bill Spitzak and others.
+# Copyright 1998-2007 by Bill Spitzak and others.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -128,11 +128,15 @@ CPPFILES = \
fl_draw.cxx \
fl_draw_image.cxx \
fl_draw_pixmap.cxx \
+ fl_encoding_latin1.cxx \
+ fl_encoding_mac_roman.cxx \
fl_engraved_label.cxx \
fl_file_dir.cxx \
fl_font.cxx \
+ fl_gtk.cxx \
fl_labeltype.cxx \
fl_line_style.cxx \
+ fl_open_uri.cxx \
fl_oval_box.cxx \
fl_overlay.cxx \
fl_overlay_visual.cxx \
@@ -163,6 +167,10 @@ GLCPPFILES = \
Fl_Gl_Choice.cxx \
Fl_Gl_Overlay.cxx \
Fl_Gl_Window.cxx \
+ freeglut_geometry.cxx \
+ freeglut_stroke_mono_roman.cxx \
+ freeglut_stroke_roman.cxx \
+ freeglut_teapot.cxx \
gl_draw.cxx \
gl_start.cxx \
glut_compatability.cxx \
@@ -326,7 +334,7 @@ libfltk_images.1.1.dylib: $(IMGOBJECTS) libfltk.1.1.dylib
-install_name $(libdir)/$@ \
-current_version 1.1.4 \
-compatibility_version 1.1.0 \
- $(IMGOBJECTS) -L.$(LDLIBS) $(IMAGELIBS) -lfltk
+ $(IMGOBJECTS) -L. $(LDLIBS) $(IMAGELIBS) -lfltk
$(RM) libfltk_images.dylib
$(LN) libfltk_images.1.1.dylib libfltk_images.dylib
@@ -338,54 +346,68 @@ libfltk_images_s.a: $(IMGOBJECTS)
$(LIBCOMMAND) libfltk_images_s.a libfltk_images_s.o
$(CHMOD) +x libfltk_images_s.a
-cygfltknox-1.1.dll:
- echo $(DSOCOMMAND) ../lib/libfltk.a ...
- $(DSOCOMMAND) ../lib/libfltk.a -Wl,--no-whole-archive \
+#-----------------------------------------------------------------
+# - the import libraries libfltk*.dll.a and the .dll files
+# are created from the libfltk*.a files. They are built
+# into the src dir.
+# - The _images, _gl, _forms and dlls must be linked
+# against the import libraries in the src dir.
+#-----------------------------------------------------------------
+
+cygfltknox-1.1.dll: $(LIBNAME)
+ echo $(DSOCOMMAND) $(LIBNAME) ...
+ $(DSOCOMMAND) $(LIBNAME) -Wl,--no-whole-archive \
-Wl,--out-implib=libfltk.dll.a $(LDLIBS)
-cygfltknox_forms-1.1.dll:
- echo $(DSOCOMMAND) ../lib/libfltk_forms.a ...
- $(DSOCOMMAND) ../lib/libfltk_forms.a -Wl,--no-whole-archive \
+cygfltknox_forms-1.1.dll: $(FLLIBNAME) cygfltknox-1.1.dll
+ echo $(DSOCOMMAND) $(FLLIBNAME) ...
+ $(DSOCOMMAND) $(FLLIBNAME) -Wl,--no-whole-archive \
-Wl,--out-implib=libfltk_forms.dll.a \
- -L../lib -lfltk $(LDLIBS)
+ -L. -lfltk $(LDLIBS)
-cygfltknox_gl-1.1.dll:
- echo $(DSOCOMMAND) ../lib/libfltk_gl.a ...
- $(DSOCOMMAND) ../lib/libfltk_gl.a -Wl,--no-whole-archive \
+cygfltknox_gl-1.1.dll: $(GLLIBNAME) cygfltknox-1.1.dll
+ echo $(DSOCOMMAND) $(GLLIBNAME) ...
+ $(DSOCOMMAND) $(GLLIBNAME) -Wl,--no-whole-archive \
-Wl,--out-implib=libfltk_gl.dll.a \
- -L../lib -lfltk $(GLDLIBS)
+ -L. -lfltk $(GLDLIBS)
-cygfltknox_images-1.1.dll:
- echo $(DSOCOMMAND) ../lib/libfltk_images ...
- $(DSOCOMMAND) ../lib/libfltk_images.a -Wl,--no-whole-archive \
+cygfltknox_images-1.1.dll: $(IMGLIBNAME) cygfltknox-1.1.dll
+ echo $(DSOCOMMAND) $(IMGLIBNAME) ...
+ $(DSOCOMMAND) $(IMGLIBNAME) -Wl,--no-whole-archive \
-Wl,--out-implib=libfltk_images.dll.a \
- -L../lib -lfltk -ljpeg -lpng -lz $(LDLIBS)
+ -L. -lfltk -Wl,--exclude-libs -Wl,libfltk_png.a \
+ $(IMAGELIBS) $(LDLIBS)
-mgwfltknox-1.1.dll:
- echo $(DSOCOMMAND) ../lib/libfltk.a ...
- $(DSOCOMMAND) ../lib/libfltk.a -Wl,--no-whole-archive \
+mgwfltknox-1.1.dll: $(LIBNAME)
+ echo $(DSOCOMMAND) $(LIBNAME) ...
+ $(DSOCOMMAND) $(LIBNAME) -Wl,--no-whole-archive \
-Wl,--out-implib=libfltk.dll.a $(LDLIBS)
-mgwfltknox_forms-1.1.dll:
- echo $(DSOCOMMAND) ../lib/libfltk_forms.a ...
- $(DSOCOMMAND) ../lib/libfltk_forms.a -Wl,--no-whole-archive \
+mgwfltknox_forms-1.1.dll: $(FLLIBNAME) mgwfltknox-1.1.dll
+ echo $(DSOCOMMAND) $(FLLIBNAME) ...
+ $(DSOCOMMAND) $(FLLIBNAME) -Wl,--no-whole-archive \
-Wl,--out-implib=libfltk_forms.dll.a \
- -L../lib -lfltk $(LDLIBS)
+ -L. -lfltk $(LDLIBS)
-mgwfltknox_gl-1.1.dll:
- echo $(DSOCOMMAND) ../lib/libfltk_gl.a ...
- $(DSOCOMMAND) ../lib/libfltk_gl.a -Wl,--no-whole-archive \
+mgwfltknox_gl-1.1.dll: $(GLLIBNAME) mgwfltknox-1.1.dll
+ echo $(DSOCOMMAND) $(GLLIBNAME) ...
+ $(DSOCOMMAND) $(GLLIBNAME) -Wl,--no-whole-archive \
-Wl,--out-implib=libfltk_gl.dll.a \
- -L../lib -lfltk $(GLDLIBS)
+ -L. -lfltk $(GLDLIBS)
-mgwfltknox_images-1.1.dll:
- echo $(DSOCOMMAND) ../lib/libfltk_images ...
- $(DSOCOMMAND) ../lib/libfltk_images.a -Wl,--no-whole-archive \
+#-----------------------------------------------------
+# See STR #1585 for --exclude-libs
+#-----------------------------------------------------
+
+mgwfltknox_images-1.1.dll: $(IMGLIBNAME) mgwfltknox-1.1.dll
+ echo $(DSOCOMMAND) $(IMGLIBNAME) ...
+ $(DSOCOMMAND) $(IMGLIBNAME) -Wl,--no-whole-archive \
-Wl,--out-implib=libfltk_images.dll.a \
- -L../lib -lfltk -ljpeg -lpng -lz $(LDLIBS)
+ -L. -lfltk -Wl,--exclude-libs -Wl,libfltk_png.a \
+ $(IMAGELIBS) $(LDLIBS)
clean:
- -$(RM) *.o core.* *~ *.bck *.bck
+ -$(RM) *.o *.dll.a core.* *~ *.bck *.bck
-$(RM) $(DSONAME) $(FLDSONAME) $(GLDSONAME) $(IMGDSONAME) \
../lib/$(LIBNAME) ../lib/$(FLLIBNAME) ../lib/$(GLLIBNAME) \
../lib/$(IMGLIBNAME) \
@@ -405,7 +427,7 @@ include makedepend
# These dependencies aren't part of the makedepend file since
# they are part of the WIN32 and MacOS code base...
Fl_get_key.o: Fl_get_key_mac.cxx Fl_get_key_win32.cxx
-Fl_x.o: Fl_mac.cxx Fl_win32.cxx
+Fl.o: Fl_mac.cxx Fl_win32.cxx
fl_color.o: fl_color_mac.cxx fl_color_win32.cxx
fl_dnd.o: fl_dnd_mac.cxx fl_dnd_win32.cxx fl_dnd_x.cxx
fl_draw_image.o: fl_draw_image_mac.cxx fl_draw_image_win32.cxx
@@ -421,12 +443,14 @@ Fl_Bitmap.o: ../FL/mac.H ../FL/win32.H
fl_color.o: ../FL/mac.H ../FL/win32.H
fl_cursor.o: ../FL/mac.H ../FL/win32.H
fl_dnd.o: ../FL/mac.H ../FL/win32.H
-Fl.o: ../FL/mac.H ../FL/win32.H
+Fl.o: ../FL/mac.H ../FL/win32.H Fl_win32.cxx Fl_mac.cxx
Fl_Double_Window.o: ../FL/mac.H ../FL/win32.H
fl_draw_image.o: ../FL/mac.H ../FL/win32.H
fl_draw_image_mac.o: ../FL/mac.H ../FL/win32.H
fl_draw_image_win32.o: ../FL/mac.H ../FL/win32.H
fl_draw_pixmap.o: ../FL/mac.H ../FL/win32.H
+fl_encoding_latin1.o: ../FL/mac.H ../FL/win32.H
+fl_encoding_mac_roman.o: ../FL/mac.H ../FL/win32.H
Fl_File_Chooser2.o: ../FL/mac.H ../FL/win32.H
fl_font.o: ../FL/mac.H ../FL/win32.H
Fl_get_key.o: ../FL/mac.H ../FL/win32.H
@@ -467,171 +491,142 @@ install: $(LIBNAME) $(DSONAME) \
$(GLLIBNAME) $(GLDSONAME) \
$(IMGLIBNAME) $(IMGDSONAME)
echo "Installing libraries in $(DESTDIR)$(libdir)..."
- -$(MKDIR) $(DESTDIR)$(libdir)
- -$(MKDIR) $(DESTDIR)$(bindir)
+ -$(INSTALL_DIR) $(DESTDIR)$(libdir)
+ -$(INSTALL_DIR) $(DESTDIR)$(bindir)
$(RM) $(DESTDIR)$(libdir)/$(LIBNAME)
- -$(CP) $(LIBNAME) $(FLLIBNAME) $(GLLIBNAME) $(IMGLIBNAME) $(DESTDIR)$(libdir)
+ $(INSTALL_LIB) $(LIBNAME) $(DESTDIR)$(libdir)
+ $(INSTALL_LIB) $(FLLIBNAME) $(DESTDIR)$(libdir)
+ $(INSTALL_LIB) $(IMGLIBNAME) $(DESTDIR)$(libdir)
$(RANLIB) $(DESTDIR)$(libdir)/$(LIBNAME)
$(RANLIB) $(DESTDIR)$(libdir)/$(FLLIBNAME)
if test x$(GLLIBNAME) != x; then \
+ $(INSTALL_LIB) $(GLLIBNAME) $(DESTDIR)$(libdir); \
$(RANLIB) $(DESTDIR)$(libdir)/$(GLLIBNAME); \
fi
$(RANLIB) $(DESTDIR)$(libdir)/$(IMGLIBNAME)
if test x$(DSONAME) = xlibfltk.so.1.1; then\
$(RM) $(DESTDIR)$(libdir)/libfltk.so*;\
- $(CP) libfltk.so.1.1 $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk.so.1.1; \
+ $(INSTALL_LIB) libfltk.so.1.1 $(DESTDIR)$(libdir); \
$(LN) libfltk.so.1.1 $(DESTDIR)$(libdir)/libfltk.so;\
fi
if test x$(DSONAME) = xlibfltk.sl.1.1; then\
$(RM) $(DESTDIR)$(libdir)/libfltk.sl*;\
- $(CP) libfltk.sl.1.1 $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk.sl.1.1; \
+ $(INSTALL_LIB) libfltk.sl.1.1 $(DESTDIR)$(libdir); \
$(LN) libfltk.sl.1.1 $(DESTDIR)$(libdir)/libfltk.sl;\
fi
if test x$(DSONAME) = xlibfltk.1.1.dylib; then\
$(RM) $(DESTDIR)$(libdir)/libfltk.*dylib;\
- $(CP) libfltk.1.1.dylib $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk.1.1.dylib; \
+ $(INSTALL_LIB) libfltk.1.1.dylib $(DESTDIR)$(libdir); \
$(LN) libfltk.1.1.dylib $(DESTDIR)$(libdir)/libfltk.dylib;\
fi
if test x$(DSONAME) = xlibfltk_s.a; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_s.a;\
- $(CP) libfltk_s.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_s.a; \
+ $(INSTALL_LIB) libfltk_s.a $(DESTDIR)$(libdir); \
fi
if test x$(DSONAME) = xcygfltknox-1.1.dll; then\
$(RM) $(DESTDIR)$(bindir)/$(DSONAME);\
- $(CP) $(DSONAME) $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$(DSONAME); \
+ $(INSTALL_LIB) $(DSONAME) $(DESTDIR)$(bindir); \
$(RM) $(DESTDIR)$(libdir)/libfltk.dll.a;\
- $(CP) libfltk.dll.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk.dll.a; \
+ $(INSTALL_LIB) libfltk.dll.a $(DESTDIR)$(libdir); \
fi
if test x$(DSONAME) = xmgwfltknox-1.1.dll; then\
$(RM) $(DESTDIR)$(bindir)/$(DSONAME);\
- $(CP) $(DSONAME) $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$(DSONAME); \
+ $(INSTALL_LIB) $(DSONAME) $(DESTDIR)$(bindir); \
$(RM) $(DESTDIR)$(libdir)/libfltk.dll.a;\
- $(CP) libfltk.dll.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk.dll.a; \
+ $(INSTALL_LIB) libfltk.dll.a $(DESTDIR)$(libdir); \
fi
if test x$(FLDSONAME) = xlibfltk_forms.so.1.1; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_forms.so*;\
- $(CP) libfltk_forms.so.1.1 $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_forms.so.1.1; \
+ $(INSTALL_LIB) libfltk_forms.so.1.1 $(DESTDIR)$(libdir); \
$(LN) libfltk_forms.so.1.1 $(DESTDIR)$(libdir)/libfltk_forms.so;\
fi
if test x$(FLDSONAME) = xlibfltk_forms.sl.1.1; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_forms.sl*;\
- $(CP) libfltk_forms.sl.1.1 $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_forms.sl.1.1; \
+ $(INSTALL_LIB) libfltk_forms.sl.1.1 $(DESTDIR)$(libdir); \
$(LN) libfltk_forms.sl.1.1 $(DESTDIR)$(libdir)/libfltk_forms.sl;\
fi
if test x$(FLDSONAME) = xlibfltk_forms.1.1.dylib; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_forms.*dylib;\
- $(CP) libfltk_forms.1.1.dylib $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_forms.1.1.dylib; \
+ $(INSTALL_LIB) libfltk_forms.1.1.dylib $(DESTDIR)$(libdir); \
$(LN) libfltk_forms.1.1.dylib $(DESTDIR)$(libdir)/libfltk_forms.dylib;\
fi
if test x$(FLDSONAME) = xlibfltk_forms_s.a; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_forms_s.a;\
- $(CP) libfltk_forms_s.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_forms.a; \
+ $(INSTALL_LIB) libfltk_forms_s.a $(DESTDIR)$(libdir); \
fi
if test x$(FLDSONAME) = xcygfltknox_forms-1.1.dll; then\
$(RM) $(DESTDIR)$(bindir)/$(FLDSONAME);\
- $(CP) $(FLDSONAME) $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$(FLDSONAME); \
+ $(INSTALL_LIB) $(FLDSONAME) $(DESTDIR)$(bindir); \
$(RM) $(DESTDIR)$(libdir)/libfltk_forms.dll.a;\
- $(CP) libfltk_forms.dll.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_forms.dll.a; \
+ $(INSTALL_LIB) libfltk_forms.dll.a $(DESTDIR)$(libdir); \
fi
if test x$(FLDSONAME) = xmgwfltknox_forms-1.1.dll; then\
$(RM) $(DESTDIR)$(bindir)/$(FLDSONAME);\
- $(CP) $(FLDSONAME) $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$(FLDSONAME); \
+ $(INSTALL_LIB) $(FLDSONAME) $(DESTDIR)$(bindir); \
$(RM) $(DESTDIR)$(libdir)/libfltk_forms.dll.a;\
- $(CP) libfltk_forms.dll.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_forms.dll.a; \
+ $(INSTALL_LIB) libfltk_forms.dll.a $(DESTDIR)$(libdir); \
fi
if test x$(GLDSONAME) = xlibfltk_gl.so.1.1; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_gl.so*;\
- $(CP) libfltk_gl.so.1.1 $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_gl.so.1.1; \
+ $(INSTALL_LIB) libfltk_gl.so.1.1 $(DESTDIR)$(libdir); \
$(LN) libfltk_gl.so.1.1 $(DESTDIR)$(libdir)/libfltk_gl.so;\
fi
if test x$(GLDSONAME) = xlibfltk_gl.sl.1.1; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_gl.sl*;\
- $(CP) libfltk_gl.sl.1.1 $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_gl.sl.1.1; \
+ $(INSTALL_LIB) libfltk_gl.sl.1.1 $(DESTDIR)$(libdir); \
$(LN) libfltk_gl.sl.1.1 $(DESTDIR)$(libdir)/libfltk_gl.sl;\
fi
if test x$(GLDSONAME) = xlibfltk_gl.1.1.dylib; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_gl.*dylib;\
- $(CP) libfltk_gl.1.1.dylib $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_gl.1.1.dylib; \
+ $(INSTALL_LIB) libfltk_gl.1.1.dylib $(DESTDIR)$(libdir); \
$(LN) libfltk_gl.1.1.dylib $(DESTDIR)$(libdir)/libfltk_gl.dylib;\
fi
if test x$(GLDSONAME) = xlibfltk_gl_s.a; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_gl_s.a;\
- $(CP) libfltk_gl_s.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_gl.a; \
+ $(INSTALL_LIB) libfltk_gl_s.a $(DESTDIR)$(libdir); \
fi
if test x$(GLDSONAME) = xcygfltknox_gl-1.1.dll; then\
$(RM) $(DESTDIR)$(bindir)/$(GLDSONAME);\
- $(CP) $(GLDSONAME) $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$(GLDSONAME); \
+ $(INSTALL_LIB) $(GLDSONAME) $(DESTDIR)$(bindir); \
$(RM) $(DESTDIR)$(libdir)/libfltk_gl.dll.a;\
- $(CP) libfltk_gl.dll.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_gl.dll.a; \
+ $(INSTALL_LIB) libfltk_gl.dll.a $(DESTDIR)$(libdir); \
fi
if test x$(GLDSONAME) = xmgwfltknox_gl-1.1.dll; then\
$(RM) $(DESTDIR)$(bindir)/$(GLDSONAME);\
- $(CP) $(GLDSONAME) $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$(GLDSONAME); \
+ $(INSTALL_LIB) $(GLDSONAME) $(DESTDIR)$(bindir); \
$(RM) $(DESTDIR)$(libdir)/libfltk_gl.dll.a;\
- $(CP) libfltk_gl.dll.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_gl.dll.a; \
+ $(INSTALL_LIB) libfltk_gl.dll.a $(DESTDIR)$(libdir); \
fi
if test x$(IMGDSONAME) = xlibfltk_images.so.1.1; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_images.so*;\
- $(CP) libfltk_images.so.1.1 $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_images.so.1.1; \
+ $(INSTALL_LIB) libfltk_images.so.1.1 $(DESTDIR)$(libdir); \
$(LN) libfltk_images.so.1.1 $(DESTDIR)$(libdir)/libfltk_images.so;\
fi
if test x$(IMGDSONAME) = xlibfltk_images.sl.1.1; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_images.sl*;\
- $(CP) libfltk_images.sl.1.1 $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_images.sl.1.1; \
+ $(INSTALL_LIB) libfltk_images.sl.1.1 $(DESTDIR)$(libdir); \
$(LN) libfltk_images.sl.1.1 $(DESTDIR)$(libdir)/libfltk_images.sl;\
fi
if test x$(IMGDSONAME) = xlibfltk_images.1.1.dylib; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_images.*dylib;\
- $(CP) libfltk_images.1.1.dylib $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_images.1.1.dylib; \
+ $(INSTALL_LIB) libfltk_images.1.1.dylib $(DESTDIR)$(libdir); \
$(LN) libfltk_images.1.1.dylib $(DESTDIR)$(libdir)/libfltk_images.dylib;\
fi
if test x$(IMGDSONAME) = xlibfltk_images_s.a; then\
$(RM) $(DESTDIR)$(libdir)/libfltk_images_s.a;\
- $(CP) libfltk_images_s.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_images.a; \
+ $(INSTALL_LIB) libfltk_images_s.a $(DESTDIR)$(libdir); \
fi
if test x$(IMGDSONAME) = xcygfltknox_images-1.1.dll; then\
$(RM) $(DESTDIR)$(bindir)/$(IMGDSONAME); \
- $(CP) $(IMGDSONAME) $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$(IMGDSONAME); \
+ $(INSTALL_LIB) $(IMGDSONAME) $(DESTDIR)$(bindir); \
$(RM) $(DESTDIR)$(libdir)/libfltk_images.dll.a;\
- $(CP) libfltk_images.dll.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_images.dll.a; \
+ $(INSTALL_LIB) libfltk_images.dll.a $(DESTDIR)$(libdir); \
fi
if test x$(IMGDSONAME) = xmgwfltknox_images-1.1.dll; then\
$(RM) $(DESTDIR)$(bindir)/$(IMGDSONAME); \
- $(CP) $(IMGDSONAME) $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$(IMGDSONAME); \
+ $(INSTALL_LIB) $(IMGDSONAME) $(DESTDIR)$(bindir); \
$(RM) $(DESTDIR)$(libdir)/libfltk_images.dll.a;\
- $(CP) libfltk_images.dll.a $(DESTDIR)$(libdir); \
- $(CHMOD) 755 $(DESTDIR)$(libdir)/libfltk_images.dll.a; \
+ $(INSTALL_LIB) libfltk_images.dll.a $(DESTDIR)$(libdir); \
fi
uninstall:
@@ -727,5 +722,5 @@ uninstall:
#
-# End of "$Id: Makefile 4474 2005-08-08 00:54:30Z mike $".
+# End of "$Id: Makefile 5689 2007-02-10 14:31:12Z mike $".
#
diff --git a/src/cgdebug.h b/src/cgdebug.h
new file mode 100644
index 0000000..a8a6053
--- /dev/null
+++ b/src/cgdebug.h
@@ -0,0 +1,215 @@
+//
+// "$Id:$"
+//
+// OS X Core Graphics debugging help for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+// This file allows easier debugging of Mac OS X Core Graphics
+// code. This file is normally not included into any FLTK builds,
+// but since it has proven to be tremendously useful in debugging
+// the FLTK port to "Quartz", I decided to add this file in case
+// more bugs show up.
+//
+// This header is activated by adding the following
+// line to "config.h"
+// #include "src/cgdebug.h"
+//
+// Running "./configure" will remove this line from "config.h".
+//
+// When used erreanously, Core Graphics prints warnings to
+// stderr. This is helpful, however it is not possible to
+// associate a line number or source file with the warning message.
+// This headr file outputs a trace of CG calls, interweaveing
+// them with CG warnings.
+//
+// Matthias
+
+#ifndef CGDEBUG
+#define CGDEBUG
+
+#include <stdio.h>
+#include <Carbon/Carbon.h>
+
+//+BitmapContextCreate
+//+BitmapContextGetData
+// ClipCGContextToRegion
+// QDBeginCGContext
+// QDEndCGContext
+
+//+AddArc
+//+AddLineToPoint
+// ClipToRect
+// ClosePath
+//+ConcatCTM
+//+DrawImage
+// FillPath
+// FillRect
+// Flush
+//+GetCTM
+// MoveToPoint
+//+Release
+// RestoreGState
+// SaveGState
+//+ScaleCTM
+//+SetLineCap
+//+SetLineDash
+//+SetLineJoin
+//+SetLineWidth
+//+SetRGBFillColor
+//+SetRGBStrokeColor
+//+SetShouldAntialias
+//+SetTextMatrix
+//+StrokePath
+//+TranslateCTM
+
+inline OSStatus dbgLocation(const char *file, int line)
+{
+ fprintf(stderr, "%s:%d ", file, line);
+ return 0;
+}
+
+inline OSStatus dbgEndl()
+{
+ fprintf(stderr, "\n");
+ return 0;
+}
+
+
+inline void dbgCGContextClipToRect(CGContextRef a, CGRect b)
+{
+ CGContextClipToRect(a, b);
+}
+
+#define CGContextClipToRect(a, b) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgCGContextClipToRect(a, b); \
+ fprintf(stderr, "\n"); }
+
+inline void dbgCGContextFillRect(CGContextRef a, CGRect b)
+{
+ CGContextFillRect(a, b);
+}
+
+#define CGContextFillRect(a, b) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgCGContextFillRect(a, b); \
+ fprintf(stderr, "\n"); }
+
+inline OSStatus dbgQDEndCGContext(CGrafPtr a, CGContextRef *b)
+{
+ return QDEndCGContext(a, b);
+}
+
+#define QDEndCGContext(a, b) ( \
+ dbgLocation(__FILE__, __LINE__) + \
+ dbgQDEndCGContext(a, b) + \
+ dbgEndl() )
+
+inline OSStatus dbgQDBeginCGContext(CGrafPtr a, CGContextRef *b)
+{
+ return QDBeginCGContext(a, b);
+}
+
+#define QDBeginCGContext(a, b) ( \
+ dbgLocation(__FILE__, __LINE__) + \
+ dbgQDBeginCGContext(a, b) + \
+ dbgEndl() )
+
+inline void dbgClipCGContextToRegion(CGContextRef a, const Rect *b, RgnHandle c)
+{
+ ClipCGContextToRegion(a, b, c);
+}
+
+#define ClipCGContextToRegion(a, b, c) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgClipCGContextToRegion(a, b, c); \
+ fprintf(stderr, "\n"); }
+
+inline void dbgCGContextMoveToPoint(CGContextRef context, float x, float y)
+{
+ CGContextMoveToPoint(context, x, y);
+}
+
+#define CGContextMoveToPoint(a, b, c) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgCGContextMoveToPoint(a, b, c); \
+ fprintf(stderr, "\n"); }
+
+inline void dbgCGContextFillPath(CGContextRef context)
+{
+ CGContextFillPath(context);
+}
+
+#define CGContextFillPath(a) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgCGContextFillPath(a); \
+ fprintf(stderr, "\n"); }
+
+inline void dbgCGContextClosePath(CGContextRef context)
+{
+ CGContextClosePath(context);
+}
+
+#define CGContextClosePath(a) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgCGContextClosePath(a); \
+ fprintf(stderr, "\n"); }
+
+inline void dbgCGContextFlush(CGContextRef context)
+{
+ CGContextFlush(context);
+}
+
+#define CGContextFlush(a) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgCGContextFlush(a); \
+ fprintf(stderr, "\n"); }
+
+inline void dbgCGContextSaveGState(CGContextRef context)
+{
+ CGContextSaveGState(context);
+}
+
+#define CGContextSaveGState(a) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgCGContextSaveGState(a); \
+ fprintf(stderr, "\n"); }
+
+inline void dbgCGContextRestoreGState(CGContextRef context)
+{
+ CGContextRestoreGState(context);
+}
+
+#define CGContextRestoreGState(a) { \
+ fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
+ dbgCGContextRestoreGState(a); \
+ fprintf(stderr, "\n"); }
+
+
+#endif
+
+//
+// End of "$Id:$".
+//
+
diff --git a/src/cmap.cxx b/src/cmap.cxx
index 255ec0d..2e1fc30 100644
--- a/src/cmap.cxx
+++ b/src/cmap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: cmap.cxx 4052 2005-02-24 21:55:12Z mike $"
+// "$Id: cmap.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Colormap generation program for the Fast Light Tool Kit (FLTK).
//
@@ -175,5 +175,5 @@ int main() {
}
//
-// End of "$Id: cmap.cxx 4052 2005-02-24 21:55:12Z mike $".
+// End of "$Id: cmap.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/filename_absolute.cxx b/src/filename_absolute.cxx
index d7410f8..c925c29 100644
--- a/src/filename_absolute.cxx
+++ b/src/filename_absolute.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: filename_absolute.cxx 4660 2005-11-27 14:45:48Z mike $"
+// "$Id: filename_absolute.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Filename expansion routines for the Fast Light Tool Kit (FLTK).
//
@@ -193,5 +193,5 @@ fl_filename_relative(char *to, // O - Relative filename
//
-// End of "$Id: filename_absolute.cxx 4660 2005-11-27 14:45:48Z mike $".
+// End of "$Id: filename_absolute.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/filename_expand.cxx b/src/filename_expand.cxx
index 366e575..a308a8d 100644
--- a/src/filename_expand.cxx
+++ b/src/filename_expand.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: filename_expand.cxx 4189 2005-03-25 17:27:07Z mike $"
+// "$Id: filename_expand.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Filename expansion routines for the Fast Light Tool Kit (FLTK).
//
@@ -106,5 +106,5 @@ int fl_filename_expand(char *to,int tolen, const char *from) {
//
-// End of "$Id: filename_expand.cxx 4189 2005-03-25 17:27:07Z mike $".
+// End of "$Id: filename_expand.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/filename_ext.cxx b/src/filename_ext.cxx
index abeca35..4648273 100644
--- a/src/filename_ext.cxx
+++ b/src/filename_ext.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: filename_ext.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: filename_ext.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Filename extension routines for the Fast Light Tool Kit (FLTK).
//
@@ -43,5 +43,5 @@ const char *fl_filename_ext(const char *buf) {
}
//
-// End of "$Id: filename_ext.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: filename_ext.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/filename_isdir.cxx b/src/filename_isdir.cxx
index 8fd42f7..80cb744 100644
--- a/src/filename_isdir.cxx
+++ b/src/filename_isdir.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: filename_isdir.cxx 4526 2005-08-18 14:08:17Z mike $"
+// "$Id: filename_isdir.cxx 5635 2007-01-23 15:02:00Z mike $"
//
// Directory detection routines for the Fast Light Tool Kit (FLTK).
//
@@ -40,18 +40,22 @@ static inline int isdirsep(char c) {return c=='/' || c=='\\';}
#define isdirsep(c) ((c)=='/')
#endif
-int fl_filename_isdir(const char* n) {
- struct stat s;
-
+int _fl_filename_isdir_quick(const char* n) {
// Do a quick optimization for filenames with a trailing slash...
if (*n && isdirsep(n[strlen(n) - 1])) return 1;
+ return fl_filename_isdir(n);
+}
-#ifdef WIN32
+int fl_filename_isdir(const char* n) {
+ struct stat s;
char fn[1024];
int length;
+
+ length = strlen(n);
+
+#ifdef WIN32
// This workaround brought to you by the fine folks at Microsoft!
// (read lots of sarcasm in that...)
- length = strlen(n);
if (length < (int)(sizeof(fn) - 1)) {
if (length < 4 && isalpha(n[0]) && n[1] == ':' &&
(isdirsep(n[2]) || !n[2])) {
@@ -67,11 +71,21 @@ int fl_filename_isdir(const char* n) {
n = fn;
}
}
+#else
+ // Matt: Just in case, we strip the slash for other operating
+ // systems as well, avoid bugs by sloppy implementations
+ // of "stat".
+ if (length > 0 && isdirsep(n[length - 1])) {
+ length --;
+ memcpy(fn, n, length);
+ fn[length] = '\0';
+ n = fn;
+ }
#endif
return !stat(n, &s) && (s.st_mode&0170000)==0040000;
}
//
-// End of "$Id: filename_isdir.cxx 4526 2005-08-18 14:08:17Z mike $".
+// End of "$Id: filename_isdir.cxx 5635 2007-01-23 15:02:00Z mike $".
//
diff --git a/src/filename_list.cxx b/src/filename_list.cxx
index 4bb086c..d986ff4 100644
--- a/src/filename_list.cxx
+++ b/src/filename_list.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: filename_list.cxx 4540 2005-08-26 20:06:29Z matt $"
+// "$Id: filename_list.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Filename list routines for the Fast Light Tool Kit (FLTK).
//
@@ -103,5 +103,5 @@ int fl_filename_list(const char *d, dirent ***list,
}
//
-// End of "$Id: filename_list.cxx 4540 2005-08-26 20:06:29Z matt $".
+// End of "$Id: filename_list.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/filename_match.cxx b/src/filename_match.cxx
index 430d1d8..6b61308 100644
--- a/src/filename_match.cxx
+++ b/src/filename_match.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: filename_match.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: filename_match.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Pattern matching routines for the Fast Light Tool Kit (FLTK).
//
@@ -102,5 +102,5 @@ int fl_filename_match(const char *s, const char *p) {
}
//
-// End of "$Id: filename_match.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: filename_match.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/filename_setext.cxx b/src/filename_setext.cxx
index eed82d0..20222bd 100644
--- a/src/filename_setext.cxx
+++ b/src/filename_setext.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: filename_setext.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: filename_setext.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Filename extension routines for the Fast Light Tool Kit (FLTK).
//
@@ -42,5 +42,5 @@ char *fl_filename_setext(char *buf, int buflen, const char *ext) {
//
-// End of "$Id: filename_setext.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: filename_setext.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_arc.cxx b/src/fl_arc.cxx
index d8e9009..4fef5c9 100644
--- a/src/fl_arc.cxx
+++ b/src/fl_arc.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_arc.cxx 4705 2005-12-14 01:58:03Z mike $"
+// "$Id: fl_arc.cxx 5349 2006-08-23 14:43:07Z matt $"
//
// Arc functions for the Fast Light Tool Kit (FLTK).
//
@@ -32,11 +32,12 @@
#include <FL/fl_draw.H>
#include <FL/math.h>
-#if defined(WIN32) && !defined(__CYGWIN__)
-// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
-// on Windows, which is supposed to be POSIX compliant...
-# define hypot _hypot
-#endif // WIN32 && !__CYGWIN__
+// avoid problems with some platforms that don't
+// implement hypot.
+static double _fl_hypot(double x, double y) {
+ return sqrt(x*x + y*y);
+}
+
void fl_arc(double x, double y, double r, double start, double end) {
@@ -50,10 +51,10 @@ void fl_arc(double x, double y, double r, double start, double end) {
// Maximum arc length to approximate with chord with error <= 0.125
double epsilon; {
- double r1 = hypot(fl_transform_dx(r,0), // Horizontal "radius"
- fl_transform_dy(r,0));
- double r2 = hypot(fl_transform_dx(0,r), // Vertical "radius"
- fl_transform_dy(0,r));
+ double r1 = _fl_hypot(fl_transform_dx(r,0), // Horizontal "radius"
+ fl_transform_dy(r,0));
+ double r2 = _fl_hypot(fl_transform_dx(0,r), // Vertical "radius"
+ fl_transform_dy(0,r));
if (r1 > r2) r1 = r2; // r1 = minimum "radius"
if (r1 < 2.) r1 = 2.; // radius for circa 9 chords/circle
@@ -82,5 +83,5 @@ void fl_circle(double x,double y,double r) {
#endif
//
-// End of "$Id: fl_arc.cxx 4705 2005-12-14 01:58:03Z mike $".
+// End of "$Id: fl_arc.cxx 5349 2006-08-23 14:43:07Z matt $".
//
diff --git a/src/fl_arci.cxx b/src/fl_arci.cxx
index 64b15b5..7d8b33f 100644
--- a/src/fl_arci.cxx
+++ b/src/fl_arci.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: fl_arci.cxx 4551 2005-08-29 21:16:38Z matt $"
+// "$Id: fl_arci.cxx 5518 2006-10-11 01:23:52Z mike $"
//
// Arc (integer) drawing functions for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -38,10 +38,10 @@
#include <FL/fl_draw.H>
#include <FL/x.H>
#ifdef WIN32
-#include <FL/math.h>
+# include <FL/math.h>
#endif
#ifdef __APPLE__
-#include <config.h>
+# include <config.h>
#endif
void fl_arc(int x,int y,int w,int h,double a1,double a2) {
@@ -51,7 +51,10 @@ void fl_arc(int x,int y,int w,int h,double a1,double a2) {
int ya = y+h/2-int(h*sin(a1/180.0*M_PI));
int xb = x+w/2+int(w*cos(a2/180.0*M_PI));
int yb = y+h/2-int(h*sin(a2/180.0*M_PI));
- Arc(fl_gc, x, y, x+w, y+h, xa, ya, xb, yb);
+ if (fabs(a1 - a2) < 90) {
+ if (xa == xb && ya == yb) SetPixel(fl_gc, xa, ya, fl_RGB());
+ else Arc(fl_gc, x, y, x+w, y+h, xa, ya, xb, yb);
+ } else Arc(fl_gc, x, y, x+w, y+h, xa, ya, xb, yb);
#elif defined(__APPLE_QD__)
Rect r; r.left=x; r.right=x+w; r.top=y; r.bottom=y+h;
a1 = a2-a1; a2 = 450-a2;
@@ -84,7 +87,13 @@ void fl_pie(int x,int y,int w,int h,double a1,double a2) {
int xb = x+w/2+int(w*cos(a2/180.0*M_PI));
int yb = y+h/2-int(h*sin(a2/180.0*M_PI));
SelectObject(fl_gc, fl_brush());
- Pie(fl_gc, x, y, x+w, y+h, xa, ya, xb, yb);
+ if (fabs(a1 - a2) < 90) {
+ if (xa == xb && ya == yb) {
+ MoveToEx(fl_gc, x+w/2, y+h/2, 0L);
+ LineTo(fl_gc, xa, ya);
+ SetPixel(fl_gc, xa, ya, fl_RGB());
+ } else Pie(fl_gc, x, y, x+w, y+h, xa, ya, xb, yb);
+ } else Pie(fl_gc, x, y, x+w, y+h, xa, ya, xb, yb);
#elif defined(__APPLE_QD__)
Rect r; r.left=x; r.right=x+w; r.top=y; r.bottom=y+h;
a1 = a2-a1; a2 = 450-a2;
@@ -113,5 +122,5 @@ void fl_pie(int x,int y,int w,int h,double a1,double a2) {
}
//
-// End of "$Id: fl_arci.cxx 4551 2005-08-29 21:16:38Z matt $".
+// End of "$Id: fl_arci.cxx 5518 2006-10-11 01:23:52Z mike $".
//
diff --git a/src/fl_ask.cxx b/src/fl_ask.cxx
index 9656000..ea23820 100644
--- a/src/fl_ask.cxx
+++ b/src/fl_ask.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_ask.cxx 4188 2005-03-25 16:11:07Z mike $"
+// "$Id: fl_ask.cxx 5805 2007-05-09 12:42:39Z matt $"
//
// Standard dialog functions for the Fast Light Tool Kit (FLTK).
//
@@ -80,7 +80,7 @@ static Fl_Window *makeform() {
o->labelcolor(FL_BLUE);
}
button[0] = new Fl_Button(310, 70, 90, 23);
- button[0]->shortcut("^[");
+ button[0]->shortcut(FL_Escape);
button[0]->align(FL_ALIGN_INSIDE|FL_ALIGN_WRAP);
button[1] = new Fl_Return_Button(210, 70, 90, 23);
button[1]->align(FL_ALIGN_INSIDE|FL_ALIGN_WRAP);
@@ -101,9 +101,10 @@ static Fl_Window *makeform() {
void resizeform() {
int i;
int message_w, message_h;
- int icon_size;
+ int text_height;
int button_w[3], button_h[3];
int x, w, h, max_w, max_h;
+ const int icon_size = 50;
fl_font(fl_message_font_, fl_message_size_);
message_w = message_h = 0;
@@ -136,8 +137,8 @@ void resizeform() {
max_h = button_h[i];
}
- if (input->visible()) icon_size = message_h + 25;
- else icon_size = message_h;
+ if (input->visible()) text_height = message_h + 25;
+ else text_height = message_h;
max_w = message_w + 10 + icon_size;
w = button_w[0] + button_w[1] + button_w[2] - 10;
@@ -148,7 +149,7 @@ void resizeform() {
message_w = max_w - 10 - icon_size;
w = max_w + 20;
- h = max_h + 30 + icon_size;
+ h = max_h + 30 + text_height;
message_form->size(w, h);
message_form->size_range(w, h, w, h);
@@ -198,6 +199,8 @@ static int innards(const char* fmt, va_list ap,
resizeform();
+ if (button[1]->visible() && !input->visible())
+ button[1]->take_focus();
message_form->hotspot(button[0]);
message_form->show();
int r;
@@ -353,5 +356,5 @@ const char *fl_password(const char *fmt, const char *defstr, ...) {
}
//
-// End of "$Id: fl_ask.cxx 4188 2005-03-25 16:11:07Z mike $".
+// End of "$Id: fl_ask.cxx 5805 2007-05-09 12:42:39Z matt $".
//
diff --git a/src/fl_boxtype.cxx b/src/fl_boxtype.cxx
index 9e43b91..d86dea3 100644
--- a/src/fl_boxtype.cxx
+++ b/src/fl_boxtype.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: fl_boxtype.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_boxtype.cxx 5505 2006-10-03 02:35:12Z mike $"
//
// Box drawing code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -237,6 +237,18 @@ static struct {
{fl_down_frame, 2,2,4,4,0}, // _FL_PLASTIC_DOWN_FRAME,
{fl_up_box, 2,2,4,4,0}, // _FL_PLASTIC_THIN_UP_BOX,
{fl_down_box, 2,2,4,4,0}, // _FL_PLASTIC_THIN_DOWN_BOX,
+ {fl_up_box, 2,2,4,4,0}, // _FL_PLASTIC_ROUND_UP_BOX,
+ {fl_down_box, 2,2,4,4,0}, // _FL_PLASTIC_ROUND_DOWN_BOX,
+ {fl_up_box, 2,2,4,4,0}, // _FL_GTK_UP_BOX,
+ {fl_down_box, 2,2,4,4,0}, // _FL_GTK_DOWN_BOX,
+ {fl_up_frame, 2,2,4,4,0}, // _FL_GTK_UP_FRAME,
+ {fl_down_frame, 2,2,4,4,0}, // _FL_GTK_DOWN_FRAME,
+ {fl_up_frame, 1,1,2,2,0}, // _FL_GTK_THIN_UP_FRAME,
+ {fl_down_frame, 1,1,2,2,0}, // _FL_GTK_THIN_DOWN_FRAME,
+ {fl_up_box, 1,1,2,2,0}, // _FL_GTK_THIN_ROUND_UP_BOX,
+ {fl_down_box, 1,1,2,2,0}, // _FL_GTK_THIN_ROUND_DOWN_BOX,
+ {fl_up_box, 2,2,4,4,0}, // _FL_GTK_ROUND_UP_BOX,
+ {fl_down_box, 2,2,4,4,0}, // _FL_GTK_ROUND_DOWN_BOX,
{fl_up_box, 3,3,6,6,0}, // FL_FREE_BOX+0
{fl_down_box, 3,3,6,6,0}, // FL_FREE_BOX+1
{fl_up_box, 3,3,6,6,0}, // FL_FREE_BOX+2
@@ -306,5 +318,5 @@ const {
}
//
-// End of "$Id: fl_boxtype.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_boxtype.cxx 5505 2006-10-03 02:35:12Z mike $".
//
diff --git a/src/fl_call_main.c b/src/fl_call_main.c
index d6eb5b8..10ae816 100644
--- a/src/fl_call_main.c
+++ b/src/fl_call_main.c
@@ -1,5 +1,5 @@
/*
- * "$Id: fl_call_main.c 4288 2005-04-16 00:13:17Z mike $"
+ * "$Id: fl_call_main.c 5274 2006-08-02 18:03:10Z mike $"
*
* Copyright 1998-2005 by Bill Spitzak and others.
*
@@ -98,10 +98,10 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
#else
/* This code to prevent "empty translation unit" or similar warnings... */
-static void dummy(void) {dummy();}
+static void dummy(void) {}
#endif
/*
- * End of "$Id: fl_call_main.c 4288 2005-04-16 00:13:17Z mike $".
+ * End of "$Id: fl_call_main.c 5274 2006-08-02 18:03:10Z mike $".
*/
diff --git a/src/fl_color.cxx b/src/fl_color.cxx
index 7dd3752..63d576e 100644
--- a/src/fl_color.cxx
+++ b/src/fl_color.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_color.cxx 4339 2005-05-12 17:08:35Z mike $"
+// "$Id: fl_color.cxx 5835 2007-05-16 11:46:07Z matt $"
//
// Color functions for the Fast Light Tool Kit (FLTK).
//
@@ -374,16 +374,16 @@ Fl_Color fl_contrast(Fl_Color fg, Fl_Color bg) {
else c2 = fl_cmap[bg];
// Compute the luminosity...
- l1 = ((c1 >> 24) * 31 + ((c1 >> 16) & 255) * 61 + ((c1 >> 8) & 255) * 8) / 100;
- l2 = ((c2 >> 24) * 31 + ((c2 >> 16) & 255) * 61 + ((c2 >> 8) & 255) * 8) / 100;
+ l1 = ((c1 >> 24) * 30 + ((c1 >> 16) & 255) * 59 + ((c1 >> 8) & 255) * 11) / 100;
+ l2 = ((c2 >> 24) * 30 + ((c2 >> 16) & 255) * 59 + ((c2 >> 8) & 255) * 11) / 100;
// Compare and return the contrasting color...
- if ((l1 - l2) > 127) return fg;
- else if ((l2 - l1) > 127) return fg;
+ if ((l1 - l2) > 99) return fg;
+ else if ((l2 - l1) > 99) return fg;
else if (l2 > 127) return FL_BLACK;
else return FL_WHITE;
}
//
-// End of "$Id: fl_color.cxx 4339 2005-05-12 17:08:35Z mike $".
+// End of "$Id: fl_color.cxx 5835 2007-05-16 11:46:07Z matt $".
//
diff --git a/src/fl_color_mac.cxx b/src/fl_color_mac.cxx
index 9c9ff9d..0245286 100644
--- a/src/fl_color_mac.cxx
+++ b/src/fl_color_mac.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_color_mac.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_color_mac.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// MacOS color functions for the Fast Light Tool Kit (FLTK).
//
@@ -110,5 +110,5 @@ void Fl::set_color(Fl_Color i, unsigned c) {
}
//
-// End of "$Id: fl_color_mac.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_color_mac.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_color_win32.cxx b/src/fl_color_win32.cxx
index 69c7941..315c393 100644
--- a/src/fl_color_win32.cxx
+++ b/src/fl_color_win32.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_color_win32.cxx 4563 2005-09-12 23:03:34Z matt $"
+// "$Id: fl_color_win32.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// WIN32 color functions for the Fast Light Tool Kit (FLTK).
//
@@ -250,5 +250,5 @@ fl_select_palette(void)
#endif
//
-// End of "$Id: fl_color_win32.cxx 4563 2005-09-12 23:03:34Z matt $".
+// End of "$Id: fl_color_win32.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_cursor.cxx b/src/fl_cursor.cxx
index 10cb629..73092d6 100644
--- a/src/fl_cursor.cxx
+++ b/src/fl_cursor.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_cursor.cxx 4634 2005-11-04 08:23:20Z matt $"
+// "$Id: fl_cursor.cxx 5654 2007-02-02 13:52:37Z matt $"
//
// Mouse cursor support for the Fast Light Tool Kit (FLTK).
//
@@ -117,114 +117,123 @@ void Fl_Window::cursor(Fl_Cursor c, Fl_Color c1, Fl_Color c2) {
#elif defined(__APPLE__)
-// warning: this function is only implemented in Quickdraw. The function
-// below may not work If FLTK is compiled with Quartz enabled
+#ifdef __BIG_ENDIAN__
+# define E(x) x
+#elif defined __LITTLE_ENDIAN__
+// Don't worry. This will be resolved at compile time
+# define E(x) (x>>8)|((x<<8)&0xff00)
+#else
+# error "Either __LITTLE_ENDIAN__ or __BIG_ENDIAN__ must be defined"
+#endif
static Cursor crsrHAND =
{
- { 0x0600, 0x0900, 0x0900, 0x0900, 0x09C0, 0x0938, 0x6926, 0x9805,
- 0x8801, 0x4801, 0x2002, 0x2002, 0x1004, 0x0804, 0x0408, 0x0408 },
- { 0x0600, 0x0F00, 0x0F00, 0x0F00, 0x0FC0, 0x0FF8, 0x6FFE, 0xFFFF,
- 0xFFFF, 0x7FFF, 0x3FFE, 0x3FFE, 0x1FFC, 0x0FFC, 0x07F8, 0x07F8 },
+ { E(0x0600), E(0x0900), E(0x0900), E(0x0900), E(0x09C0), E(0x0938), E(0x6926), E(0x9805),
+ E(0x8801), E(0x4801), E(0x2002), E(0x2002), E(0x1004), E(0x0804), E(0x0408), E(0x0408) },
+ { E(0x0600), E(0x0F00), E(0x0F00), E(0x0F00), E(0x0FC0), E(0x0FF8), E(0x6FFE), E(0xFFFF),
+ E(0xFFFF), E(0x7FFF), E(0x3FFE), E(0x3FFE), E(0x1FFC), E(0x0FFC), E(0x07F8), E(0x07F8) },
{ 1, 5 } // Hotspot: ( y, x )
}, *crsrHANDptr = &crsrHAND;
static Cursor crsrHELP =
{
- { 0x0000, 0x4000, 0x6000, 0x7000, 0x783C, 0x7C7E, 0x7E66, 0x7F06,
- 0x7F8C, 0x7C18, 0x6C18, 0x4600, 0x0618, 0x0318, 0x0300, 0x0000 },
- { 0xC000, 0xE000, 0xF000, 0xF83C, 0xFC7E, 0xFEFF, 0xFFFF, 0xFFFF,
- 0xFFFE, 0xFFFC, 0xFE3C, 0xEF3C, 0xCF3C, 0x07BC, 0x0798, 0x0380 },
+ { E(0x0000), E(0x4000), E(0x6000), E(0x7000), E(0x783C), E(0x7C7E), E(0x7E66), E(0x7F06),
+ E(0x7F8C), E(0x7C18), E(0x6C18), E(0x4600), E(0x0618), E(0x0318), E(0x0300), E(0x0000) },
+ { E(0xC000), E(0xE000), E(0xF000), E(0xF83C), E(0xFC7E), E(0xFEFF), E(0xFFFF), E(0xFFFF),
+ E(0xFFFE), E(0xFFFC), E(0xFE3C), E(0xEF3C), E(0xCF3C), E(0x07BC), E(0x0798), E(0x0380) },
{ 1, 1 }
}, *crsrHELPptr = &crsrHELP;
static Cursor crsrMOVE =
{
- { 0x0000, 0x0180, 0x03C0, 0x07E0, 0x07E0, 0x1998, 0x399C, 0x7FFE,
- 0x7FFE, 0x399C, 0x1998, 0x07E0, 0x07E0, 0x03C0, 0x0180, 0x0000 },
- { 0x0180, 0x03C0, 0x07E0, 0x0FF0, 0x1FF8, 0x3FFC, 0x7FFE, 0xFFFF,
- 0xFFFF, 0x7FFE, 0x3FFC, 0x1FF8, 0x0FF0, 0x07E0, 0x03C0, 0x0180 },
+ { E(0x0000), E(0x0180), E(0x03C0), E(0x07E0), E(0x07E0), E(0x1998), E(0x399C), E(0x7FFE),
+ E(0x7FFE), E(0x399C), E(0x1998), E(0x07E0), E(0x07E0), E(0x03C0), E(0x0180), E(0x0000) },
+ { E(0x0180), E(0x03C0), E(0x07E0), E(0x0FF0), E(0x1FF8), E(0x3FFC), E(0x7FFE), E(0xFFFF),
+ E(0xFFFF), E(0x7FFE), E(0x3FFC), E(0x1FF8), E(0x0FF0), E(0x07E0), E(0x03C0), E(0x0180) },
{ 8, 8 }
}, *crsrMOVEptr = &crsrMOVE;
static Cursor crsrNS =
{
- { 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0FF0, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0FF0, 0x07E0, 0x03C0, 0x0180, 0x0000 },
- { 0x0180, 0x03C0, 0x07E0, 0x0FF0, 0x1FF8, 0x1FF8, 0x03C0, 0x03C0,
- 0x03C0, 0x03C0, 0x1FF8, 0x1FF8, 0x0FF0, 0x07E0, 0x03C0, 0x0180 },
+ { E(0x0000), E(0x0180), E(0x03C0), E(0x07E0), E(0x0FF0), E(0x0180), E(0x0180), E(0x0180),
+ E(0x0180), E(0x0180), E(0x0180), E(0x0FF0), E(0x07E0), E(0x03C0), E(0x0180), E(0x0000) },
+ { E(0x0180), E(0x03C0), E(0x07E0), E(0x0FF0), E(0x1FF8), E(0x1FF8), E(0x03C0), E(0x03C0),
+ E(0x03C0), E(0x03C0), E(0x1FF8), E(0x1FF8), E(0x0FF0), E(0x07E0), E(0x03C0), E(0x0180) },
{ 8, 8 }
}, *crsrNSptr = &crsrNS;
static Cursor crsrWE =
{
- { 0x0000, 0x0000, 0x0000, 0x0000, 0x0810, 0x1818, 0x381C, 0x7FFE,
- 0x7FFE, 0x381C, 0x1818, 0x0810, 0x0000, 0x0000, 0x0000, 0x0000 },
- { 0x0000, 0x0000, 0x0000, 0x0C30, 0x1C38, 0x3C3C, 0x7FFE, 0xFFFF,
- 0xFFFF, 0x7FFE, 0x3C3C, 0x1C38, 0x0C30, 0x0000, 0x0000, 0x0000 },
+ { E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0810), E(0x1818), E(0x381C), E(0x7FFE),
+ E(0x7FFE), E(0x381C), E(0x1818), E(0x0810), E(0x0000), E(0x0000), E(0x0000), E(0x0000) },
+ { E(0x0000), E(0x0000), E(0x0000), E(0x0C30), E(0x1C38), E(0x3C3C), E(0x7FFE), E(0xFFFF),
+ E(0xFFFF), E(0x7FFE), E(0x3C3C), E(0x1C38), E(0x0C30), E(0x0000), E(0x0000), E(0x0000) },
{ 8, 8 }
}, *crsrWEptr = &crsrWE;
static Cursor crsrNWSE =
{
- { 0x0000, 0x7E00, 0x7C00, 0x7800, 0x7C00, 0x6E00, 0x4710, 0x03B0,
- 0x01F0, 0x00F0, 0x01F0, 0x03F0, 0x0000, 0x0000, 0x0000, 0x0000 },
- { 0xFF00, 0xFF00, 0xFE00, 0xFC00, 0xFE00, 0xFF18, 0xEFB8, 0xC7F8,
- 0x03F8, 0x01F8, 0x03F8, 0x07F8, 0x07F8, 0x0000, 0x0000, 0x0000 },
+ { E(0x0000), E(0x7E00), E(0x7C00), E(0x7800), E(0x7C00), E(0x6E00), E(0x4710), E(0x03B0),
+ E(0x01F0), E(0x00F0), E(0x01F0), E(0x03F0), E(0x0000), E(0x0000), E(0x0000), E(0x0000) },
+ { E(0xFF00), E(0xFF00), E(0xFE00), E(0xFC00), E(0xFE00), E(0xFF18), E(0xEFB8), E(0xC7F8),
+ E(0x03F8), E(0x01F8), E(0x03F8), E(0x07F8), E(0x07F8), E(0x0000), E(0x0000), E(0x0000) },
{ 8, 8 }
}, *crsrNWSEptr = &crsrNWSE;
static Cursor crsrNESW =
{
- { 0x0000, 0x03F0, 0x01F0, 0x00F0, 0x01F0, 0x03B0, 0x4710, 0x6E00,
- 0x7C00, 0x7800, 0x7C00, 0x7E00, 0x0000, 0x0000, 0x0000, 0x0000 },
- { 0x07F8, 0x07F8, 0x03F8, 0x01F8, 0x03F8, 0xC7F8, 0xEFB8, 0xFF18,
- 0xFE00, 0xFC00, 0xFE00, 0xFF00, 0xFF00, 0x0000, 0x0000, 0x0000 },
+ { E(0x0000), E(0x03F0), E(0x01F0), E(0x00F0), E(0x01F0), E(0x03B0), E(0x4710), E(0x6E00),
+ E(0x7C00), E(0x7800), E(0x7C00), E(0x7E00), E(0x0000), E(0x0000), E(0x0000), E(0x0000) },
+ { E(0x07F8), E(0x07F8), E(0x03F8), E(0x01F8), E(0x03F8), E(0xC7F8), E(0xEFB8), E(0xFF18),
+ E(0xFE00), E(0xFC00), E(0xFE00), E(0xFF00), E(0xFF00), E(0x0000), E(0x0000), E(0x0000) },
{ 8, 8 }
}, *crsrNESWptr = &crsrNESW;
static Cursor crsrNONE =
{
- { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
- { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
+ { E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000),
+ E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000) },
+ { E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000),
+ E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000), E(0x0000) },
{ 0, 0 }
}, *crsrNONEptr = &crsrNONE;
static Cursor crsrARROW =
{
- { 0x0000, 0x4000, 0x6000, 0x7000, 0x7800, 0x7C00, 0x7E00, 0x7F00,
- 0x7F80, 0x7C00, 0x6C00, 0x4600, 0x0600, 0x0300, 0x0300, 0x0000 },
- { 0xC000, 0xE000, 0xF000, 0xF800, 0xFC00, 0xFE00, 0xFF00, 0xFF80,
- 0xFFC0, 0xFFC0, 0xFE00, 0xEF00, 0xCF00, 0x0780, 0x0780, 0x0380 },
+ { E(0x0000), E(0x4000), E(0x6000), E(0x7000), E(0x7800), E(0x7C00), E(0x7E00), E(0x7F00),
+ E(0x7F80), E(0x7C00), E(0x6C00), E(0x4600), E(0x0600), E(0x0300), E(0x0300), E(0x0000) },
+ { E(0xC000), E(0xE000), E(0xF000), E(0xF800), E(0xFC00), E(0xFE00), E(0xFF00), E(0xFF80),
+ E(0xFFC0), E(0xFFC0), E(0xFE00), E(0xEF00), E(0xCF00), E(0x0780), E(0x0780), E(0x0380) },
{ 1, 1 }
}, *crsrARROWptr = &crsrARROW;
+#undef E
void Fl_Window::cursor(Fl_Cursor c, Fl_Color, Fl_Color) {
- if (!shown()) return;
if (c == FL_CURSOR_DEFAULT) {
c = cursor_default;
}
+ CursHandle icrsr = fl_default_cursor;
switch (c) {
- case FL_CURSOR_CROSS: i->cursor = GetCursor( crossCursor ); break;
- case FL_CURSOR_WAIT: i->cursor = GetCursor( watchCursor ); break;
- case FL_CURSOR_INSERT: i->cursor = GetCursor( iBeamCursor ); break;
+ case FL_CURSOR_CROSS: icrsr = GetCursor( crossCursor ); break;
+ case FL_CURSOR_WAIT: icrsr = GetCursor( watchCursor ); break;
+ case FL_CURSOR_INSERT: icrsr = GetCursor( iBeamCursor ); break;
case FL_CURSOR_N:
case FL_CURSOR_S:
- case FL_CURSOR_NS: i->cursor = &crsrNSptr; break;
- case FL_CURSOR_HELP: i->cursor = &crsrHELPptr; break;
- case FL_CURSOR_HAND: i->cursor = &crsrHANDptr; break;
- case FL_CURSOR_MOVE: i->cursor = &crsrMOVEptr; break;
+ case FL_CURSOR_NS: icrsr = &crsrNSptr; break;
+ case FL_CURSOR_HELP: icrsr = &crsrHELPptr; break;
+ case FL_CURSOR_HAND: icrsr = &crsrHANDptr; break;
+ case FL_CURSOR_MOVE: icrsr = &crsrMOVEptr; break;
case FL_CURSOR_NE:
case FL_CURSOR_SW:
- case FL_CURSOR_NESW: i->cursor = &crsrNESWptr; break;
+ case FL_CURSOR_NESW: icrsr = &crsrNESWptr; break;
case FL_CURSOR_E:
case FL_CURSOR_W:
- case FL_CURSOR_WE: i->cursor = &crsrWEptr; break;
+ case FL_CURSOR_WE: icrsr = &crsrWEptr; break;
case FL_CURSOR_SE:
case FL_CURSOR_NW:
- case FL_CURSOR_NWSE: i->cursor = &crsrNWSEptr; break;
- case FL_CURSOR_NONE: i->cursor = &crsrNONEptr; break;
- case FL_CURSOR_ARROW: i->cursor = &crsrARROWptr; break;
+ case FL_CURSOR_NWSE: icrsr = &crsrNWSEptr; break;
+ case FL_CURSOR_NONE: icrsr = &crsrNONEptr; break;
+ case FL_CURSOR_ARROW: icrsr = &crsrARROWptr; break;
case FL_CURSOR_DEFAULT:
- default:
- i->cursor = fl_default_cursor; break;
+ default: break;
+ }
+ SetCursor( *icrsr );
+ if (i) {
+ i->cursor = icrsr;
}
- SetCursor( *i->cursor );
}
#else
@@ -322,5 +331,5 @@ void Fl_Window::cursor(Fl_Cursor c, Fl_Color fg, Fl_Color bg) {
#endif
//
-// End of "$Id: fl_cursor.cxx 4634 2005-11-04 08:23:20Z matt $".
+// End of "$Id: fl_cursor.cxx 5654 2007-02-02 13:52:37Z matt $".
//
diff --git a/src/fl_curve.cxx b/src/fl_curve.cxx
index 3e22b2b..112586d 100644
--- a/src/fl_curve.cxx
+++ b/src/fl_curve.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_curve.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_curve.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Bezier curve functions for the Fast Light Tool Kit (FLTK).
//
@@ -102,5 +102,5 @@ void fl_curve(double X0, double Y0,
}
//
-// End of "$Id: fl_curve.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_curve.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_diamond_box.cxx b/src/fl_diamond_box.cxx
index cf02a32..8a85640 100644
--- a/src/fl_diamond_box.cxx
+++ b/src/fl_diamond_box.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_diamond_box.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_diamond_box.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Diamond box code for the Fast Light Tool Kit (FLTK).
//
@@ -76,5 +76,5 @@ Fl_Boxtype fl_define_FL_DIAMOND_BOX() {
}
//
-// End of "$Id: fl_diamond_box.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_diamond_box.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_dnd.cxx b/src/fl_dnd.cxx
index 58ed6fa..cff4898 100644
--- a/src/fl_dnd.cxx
+++ b/src/fl_dnd.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_dnd.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_dnd.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Drag & Drop code for the Fast Light Tool Kit (FLTK).
//
@@ -34,5 +34,5 @@
#endif
//
-// End of "$Id: fl_dnd.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_dnd.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_dnd_mac.cxx b/src/fl_dnd_mac.cxx
index e9ac0be..39809c3 100644
--- a/src/fl_dnd_mac.cxx
+++ b/src/fl_dnd_mac.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_dnd_mac.cxx 4052 2005-02-24 21:55:12Z mike $"
+// "$Id: fl_dnd_mac.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Drag & Drop code for the Fast Light Tool Kit (FLTK).
//
@@ -86,5 +86,5 @@ int Fl::dnd()
//
-// End of "$Id: fl_dnd_mac.cxx 4052 2005-02-24 21:55:12Z mike $".
+// End of "$Id: fl_dnd_mac.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_dnd_win32.cxx b/src/fl_dnd_win32.cxx
index 68aeb14..3bd1868 100644
--- a/src/fl_dnd_win32.cxx
+++ b/src/fl_dnd_win32.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_dnd_win32.cxx 4677 2005-12-01 09:02:13Z matt $"
+// "$Id: fl_dnd_win32.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Drag & Drop code for the Fast Light Tool Kit (FLTK).
//
@@ -400,5 +400,5 @@ int Fl::dnd()
//
-// End of "$Id: fl_dnd_win32.cxx 4677 2005-12-01 09:02:13Z matt $".
+// End of "$Id: fl_dnd_win32.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_dnd_x.cxx b/src/fl_dnd_x.cxx
index 363909c..6a30f2f 100644
--- a/src/fl_dnd_x.cxx
+++ b/src/fl_dnd_x.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_dnd_x.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: fl_dnd_x.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Drag & Drop code for the Fast Light Tool Kit (FLTK).
//
@@ -197,5 +197,5 @@ int Fl::dnd() {
//
-// End of "$Id: fl_dnd_x.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: fl_dnd_x.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_draw.cxx b/src/fl_draw.cxx
index b312866..0365dcf 100644
--- a/src/fl_draw.cxx
+++ b/src/fl_draw.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_draw.cxx 4670 2005-11-29 08:49:56Z mike $"
+// "$Id: fl_draw.cxx 5565 2006-12-21 19:39:26Z mike $"
//
// Label drawing code for the Fast Light Tool Kit (FLTK).
//
@@ -95,7 +95,11 @@ expand(const char* from, char* buf, double maxw, int& n, double &width,
} else if (c < ' ' || c == 127) { // ^X
*o++ = '^';
*o++ = c ^ 0x40;
- } else if (c == 0xA0) { // non-breaking space
+#ifdef __APPLE__
+ } else if (c == 0xCA) { // non-breaking space in MacRoman
+#else
+ } else if (c == 0xA0) { // non-breaking space in ISO 8859
+#endif
*o++ = ' ';
} else if (c == '@' && draw_symbols) { // Symbol???
if (p[1] && p[1] != '@') break;
@@ -154,15 +158,13 @@ void fl_draw(
symtotal = symwidth[0] + symwidth[1];
- if (str) {
- for (p = str, lines=0; p;) {
- e = expand(p, buf, w - symtotal, buflen, width, align&FL_ALIGN_WRAP,
- draw_symbols);
- lines++;
- if (!*e || (*e == '@' && e[1] != '@' && draw_symbols)) break;
- p = e;
- }
- } else lines = 0;
+ for (p = str, lines=0; p;) {
+ e = expand(p, buf, w - symtotal, buflen, width, align&FL_ALIGN_WRAP,
+ draw_symbols);
+ lines++;
+ if (!*e || (*e == '@' && e[1] != '@' && draw_symbols)) break;
+ p = e;
+ }
if ((symwidth[0] || symwidth[1]) && lines) {
if (symwidth[0]) symwidth[0] = lines * fl_height();
@@ -291,19 +293,21 @@ void fl_measure(const char* str, int& w, int& h, int draw_symbols) {
symbol[1][0] = '\0';
symwidth[1] = 0;
- if (str && str[0] == '@' && str[1] && str[1] != '@') {
- // Start with a symbol...
- for (symptr = symbol[0];
- *str && !isspace(*str) && symptr < (symbol[0] + sizeof(symbol[0]) - 1);
- *symptr++ = *str++);
- *symptr = '\0';
- if (isspace(*str)) str++;
- symwidth[0] = h;
- }
+ if (draw_symbols) {
+ if (str && str[0] == '@' && str[1] && str[1] != '@') {
+ // Start with a symbol...
+ for (symptr = symbol[0];
+ *str && !isspace(*str) && symptr < (symbol[0] + sizeof(symbol[0]) - 1);
+ *symptr++ = *str++);
+ *symptr = '\0';
+ if (isspace(*str)) str++;
+ symwidth[0] = h;
+ }
- if (str && (p = strrchr(str, '@')) != NULL && p > (str + 1)) {
- strlcpy(symbol[1], p, sizeof(symbol[1]));
- symwidth[1] = h;
+ if (str && (p = strrchr(str, '@')) != NULL && p > (str + 1) && p[-1]!='@') {
+ strlcpy(symbol[1], p, sizeof(symbol[1]));
+ symwidth[1] = h;
+ }
}
symtotal = symwidth[0] + symwidth[1];
@@ -322,11 +326,11 @@ void fl_measure(const char* str, int& w, int& h, int draw_symbols) {
}
symtotal = symwidth[0] + symwidth[1];
-
+
w = W + symtotal;
h = lines*h;
}
//
-// End of "$Id: fl_draw.cxx 4670 2005-11-29 08:49:56Z mike $".
+// End of "$Id: fl_draw.cxx 5565 2006-12-21 19:39:26Z mike $".
//
diff --git a/src/fl_draw_image.cxx b/src/fl_draw_image.cxx
index 2fffab4..a75b340 100644
--- a/src/fl_draw_image.cxx
+++ b/src/fl_draw_image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_draw_image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_draw_image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Image drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -572,5 +572,5 @@ void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
#endif
//
-// End of "$Id: fl_draw_image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_draw_image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_draw_image_mac.cxx b/src/fl_draw_image_mac.cxx
index d5af7f8..a31374f 100644
--- a/src/fl_draw_image_mac.cxx
+++ b/src/fl_draw_image_mac.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_draw_image_mac.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_draw_image_mac.cxx 5614 2007-01-18 15:25:09Z matt $"
//
// MacOS image drawing code for the Fast Light Tool Kit (FLTK).
//
@@ -175,17 +175,21 @@ static void innards(const uchar *buf, int X, int Y, int W, int H,
cb(userdata, 0, i, W, tmpBuf+i*W*delta);
}
array = (void*)tmpBuf;
- linedelta = W;
+ linedelta = W*delta;
}
// create an image context
- CGColorSpaceRef lut = CGColorSpaceCreateDeviceRGB();
- CGDataProviderRef src = CGDataProviderCreateWithData( 0L, array, linedelta*H*delta, 0L);
- CGImageRef img = CGImageCreate( W, H, 8, 8*delta, linedelta*delta,
+ CGColorSpaceRef lut = 0;
+ if (delta<=2)
+ lut = CGColorSpaceCreateDeviceGray();
+ else
+ lut = CGColorSpaceCreateDeviceRGB();
+ CGDataProviderRef src = CGDataProviderCreateWithData( 0L, array, linedelta*H, 0L);
+ CGImageRef img = CGImageCreate( W, H, 8, 8*delta, linedelta,
lut, delta&1?kCGImageAlphaNone:kCGImageAlphaNoneSkipLast,
src, 0L, false, kCGRenderingIntentDefault);
// draw the image into the destination context
if (img) {
- CGRect rect = { X, Y, W, H };
+ CGRect rect = { { X, Y }, { W, H } };
Fl_X::q_begin_image(rect, 0, 0, W, H);
CGContextDrawImage(fl_gc, rect, img);
Fl_X::q_end_image();
@@ -266,5 +270,5 @@ void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
}
//
-// End of "$Id: fl_draw_image_mac.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_draw_image_mac.cxx 5614 2007-01-18 15:25:09Z matt $".
//
diff --git a/src/fl_draw_image_win32.cxx b/src/fl_draw_image_win32.cxx
index 57c802c..543b035 100644
--- a/src/fl_draw_image_win32.cxx
+++ b/src/fl_draw_image_win32.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_draw_image_win32.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_draw_image_win32.cxx 5436 2006-09-16 16:02:00Z matt $"
//
// WIN32 image drawing code for the Fast Light Tool Kit (FLTK).
//
@@ -112,13 +112,17 @@ static void monodither(uchar* to, const uchar* from, int w, int delta) {
#endif // USE_COLORMAP
static void innards(const uchar *buf, int X, int Y, int W, int H,
- int delta, int linedelta, int mono,
+ int delta, int linedelta, int depth,
Fl_Draw_Image_Cb cb, void* userdata)
{
#if USE_COLORMAP
char indexed = (fl_palette != 0);
#endif
+ if (depth==0) depth = 3;
+ if (indexed || !fl_can_do_alpha_blending())
+ depth = (depth-1)|1;
+
if (!linedelta) linedelta = W*delta;
int x, y, w, h;
@@ -144,7 +148,7 @@ static void innards(const uchar *buf, int X, int Y, int W, int H,
}
} else
#endif
- if (mono) {
+ if (depth<3) {
for (int i=0; i<256; i++) {
bmi.bmiColors[i].rgbBlue = (uchar)i;
bmi.bmiColors[i].rgbGreen = (uchar)i;
@@ -154,11 +158,11 @@ static void innards(const uchar *buf, int X, int Y, int W, int H,
}
bmi.bmiHeader.biWidth = w;
#if USE_COLORMAP
- bmi.bmiHeader.biBitCount = mono|indexed ? 8 : 24;
- int pixelsize = mono|indexed ? 1 : 3;
+ bmi.bmiHeader.biBitCount = indexed ? 8 : depth*8;
+ int pixelsize = indexed ? 1 : depth;
#else
- bmi.bmiHeader.biBitCount = mono ? 8 : 24;
- int pixelsize = mono ? 1 : 3;
+ bmi.bmiHeader.biBitCount = depth*8;
+ int pixelsize = depth;
#endif
int linesize = (pixelsize*w+3)&~3;
@@ -200,22 +204,44 @@ static void innards(const uchar *buf, int X, int Y, int W, int H,
uchar *to = (uchar*)buffer+(blocking-k-1)*linesize;
#if USE_COLORMAP
if (indexed) {
- if (mono)
+ if (depth<3)
monodither(to, from, w, delta);
else
dither(to, from, w, delta);
to += w;
} else
#endif
- if (mono) {
- for (int i=w; i--; from += delta) *to++ = *from;
- } else {
- for (int i=w; i--; from += delta, to += 3) {
- uchar r = from[0];
- to[0] = from[2];
- to[1] = from[1];
- to[2] = r;
- }
+ {
+ int i;
+ switch (depth) {
+ case 1:
+ for (i=w; i--; from += delta) *to++ = *from;
+ break;
+ case 2:
+ for (i=w; i--; from += delta) {
+ *to++ = *from;
+ *to++ = *from;
+ }
+ break;
+ case 3:
+ for (i=w; i--; from += delta, to += 3) {
+ uchar r = from[0];
+ to[0] = from[2];
+ to[1] = from[1];
+ to[2] = r;
+ }
+ break;
+ case 4:
+ for (i=w; i--; from += delta, to += 4) {
+ uchar a = from[3];
+ uchar r = from[0];
+ to[0] = (from[2]*a)>>8;
+ to[1] = (from[1]*a)>>8;
+ to[2] = (r*a)>>8;
+ to[3] = from[3];
+ }
+ break;
+ }
}
}
SetDIBitsToDevice(fl_gc, x, y+j-k, w, k, 0, 0, 0, k,
@@ -230,19 +256,44 @@ static void innards(const uchar *buf, int X, int Y, int W, int H,
}
}
+static int fl_abs(int v) { return v<0 ? -v : v; }
+
void fl_draw_image(const uchar* buf, int x, int y, int w, int h, int d, int l){
- innards(buf,x,y,w,h,d,l,(d<3&&d>-3),0,0);
+ if (fl_abs(d)&FL_IMAGE_WITH_ALPHA) {
+ d ^= FL_IMAGE_WITH_ALPHA;
+ innards(buf,x,y,w,h,d,l,fl_abs(d),0,0);
+ } else {
+ innards(buf,x,y,w,h,d,l,(d<3&&d>-3),0,0);
+ }
}
+
void fl_draw_image(Fl_Draw_Image_Cb cb, void* data,
int x, int y, int w, int h,int d) {
- innards(0,x,y,w,h,d,0,(d<3&&d>-3),cb,data);
+ if (fl_abs(d)&FL_IMAGE_WITH_ALPHA) {
+ d ^= FL_IMAGE_WITH_ALPHA;
+ innards(0,x,y,w,h,d,0,(d<3&&d>-3),cb,data);
+ } else {
+ innards(0,x,y,w,h,d,0,(d<3&&d>-3),cb,data);
+ }
}
+
void fl_draw_image_mono(const uchar* buf, int x, int y, int w, int h, int d, int l){
- innards(buf,x,y,w,h,d,l,1,0,0);
+ if (fl_abs(d)&FL_IMAGE_WITH_ALPHA) {
+ d ^= FL_IMAGE_WITH_ALPHA;
+ innards(buf,x,y,w,h,d,l,1,0,0);
+ } else {
+ innards(buf,x,y,w,h,d,l,1,0,0);
+ }
}
+
void fl_draw_image_mono(Fl_Draw_Image_Cb cb, void* data,
int x, int y, int w, int h,int d) {
- innards(0,x,y,w,h,d,0,1,cb,data);
+ if (fl_abs(d)&FL_IMAGE_WITH_ALPHA) {
+ d ^= FL_IMAGE_WITH_ALPHA;
+ innards(0,x,y,w,h,d,0,1,cb,data);
+ } else {
+ innards(0,x,y,w,h,d,0,1,cb,data);
+ }
}
void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
@@ -260,5 +311,5 @@ void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
}
//
-// End of "$Id: fl_draw_image_win32.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_draw_image_win32.cxx 5436 2006-09-16 16:02:00Z matt $".
//
diff --git a/src/fl_draw_pixmap.cxx b/src/fl_draw_pixmap.cxx
index deeb11e..a1238ce 100644
--- a/src/fl_draw_pixmap.cxx
+++ b/src/fl_draw_pixmap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_draw_pixmap.cxx 4723 2005-12-30 10:13:17Z matt $"
+// "$Id: fl_draw_pixmap.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Pixmap drawing code for the Fast Light Tool Kit (FLTK).
//
@@ -322,7 +322,7 @@ int fl_draw_pixmap(const char*const* di, int x, int y, Fl_Color bg) {
src, 0L, false, kCGRenderingIntentDefault);
CGColorSpaceRelease(lut);
CGDataProviderRelease(src);
- CGRect rect = { x, y, d.w, d.h };
+ CGRect rect = { { x, y} , { d.w, d.h } };
Fl_X::q_begin_image(rect, x, y, d.w, d.h);
CGContextDrawImage(fl_gc, rect, img);
Fl_X::q_end_image();
@@ -337,5 +337,5 @@ int fl_draw_pixmap(const char*const* di, int x, int y, Fl_Color bg) {
}
//
-// End of "$Id: fl_draw_pixmap.cxx 4723 2005-12-30 10:13:17Z matt $".
+// End of "$Id: fl_draw_pixmap.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_encoding_latin1.cxx b/src/fl_encoding_latin1.cxx
new file mode 100644
index 0000000..1e61f4b
--- /dev/null
+++ b/src/fl_encoding_latin1.cxx
@@ -0,0 +1,137 @@
+//
+// "$Id: fl_encoding_latin1.cxx 5408 2006-09-04 18:46:28Z matt $"
+//
+// Convert MSWindows-1252 (Latin-1) encoded text to the local encoding.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#include <FL/fl_draw.H>
+#include <FL/Enumerations.H>
+#include <stdlib.h>
+#include "flstring.h"
+
+#ifdef __APPLE__
+
+// These function assume a western code page. If you need to support
+// scripts that are not part of this code page, you might want to
+// take a look at FLTK2, which uses utf8 for text encoding.
+//
+// By keeping these conversion tables in their own module, they will not
+// be statically linked (by a smart linker) unless actually used.
+//
+// On MS-Windows, nothing need to be converted. We simply return the
+// original pointer.
+//
+// Most X11 implementations seem to default to Latin-1 as a code since it
+// is a superset of ISO 8859-1, the original wetsern codepage on X11.
+//
+// Apple's OS X however renders text in MacRoman for western settings. The
+// lookup tables below will convert all common character codes and replace
+// unknown characters with an upsidedown question mark.
+
+// This table converts MSWindows-1252/Latin 1 into MacRoman encoding
+static uchar latin2roman[128] = {
+0xdb, 0xc0, 0xe2, 0xc4, 0xe3, 0xc9, 0xa0, 0xe0, 0xf6, 0xe4, 0xc0, 0xdc, 0xce, 0xc0, 0xc0, 0xc0,
+0xc0, 0xd4, 0xd5, 0xd2, 0xd3, 0xa5, 0xd0, 0xd1, 0xf7, 0xaa, 0xc0, 0xdd, 0xcf, 0xc0, 0xc0, 0xd9,
+0xca, 0xc1, 0xa2, 0xa3, 0xc0, 0xb4, 0xc0, 0xa4, 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0xc0, 0xa8, 0xf8,
+0xa1, 0xb1, 0xc0, 0xc0, 0xab, 0xb5, 0xa6, 0xe1, 0xfc, 0xc0, 0xbc, 0xc8, 0xc0, 0xc0, 0xc0, 0xc0,
+0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
+0xc0, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xc0, 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0xc0, 0xc0, 0xa7,
+0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95,
+0xc0, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xc0, 0xc0, 0xd8
+};
+
+// This table converts MacRoman into MSWindows-1252/Latin 1
+static uchar roman2latin[128] = {
+0xc4, 0xc5, 0xc7, 0xc9, 0xd1, 0xd6, 0xdc, 0xe1, 0xe0, 0xe2, 0xe4, 0xe3, 0xe5, 0xe7, 0xe9, 0xe8,
+0xea, 0xeb, 0xed, 0xec, 0xee, 0xef, 0xf1, 0xf3, 0xf2, 0xf4, 0xf6, 0xf5, 0xfa, 0xf9, 0xfb, 0xfc,
+0x86, 0xb0, 0xa2, 0xa3, 0xa7, 0x95, 0xb6, 0xdf, 0xae, 0xa9, 0x99, 0xb4, 0xa8, 0xbf, 0xc6, 0xd8,
+0xbf, 0xb1, 0xbf, 0xbf, 0xa5, 0xb5, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xaa, 0xba, 0xbf, 0xe6, 0xf8,
+0xbf, 0xa1, 0xac, 0xbf, 0x83, 0xbf, 0xbf, 0xab, 0xbb, 0x85, 0xa0, 0xc0, 0xc3, 0xd5, 0x8c, 0x9c,
+0x96, 0x97, 0x93, 0x94, 0x91, 0x92, 0xf7, 0xbf, 0xff, 0x9f, 0xbf, 0x80, 0x8b, 0x9b, 0xbf, 0xbf,
+0x87, 0xb7, 0x82, 0x84, 0x89, 0xc2, 0xca, 0xc1, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xd3, 0xd4,
+0xbf, 0xd2, 0xda, 0xdb, 0xd9, 0xbf, 0x88, 0x98, 0xaf, 0xbf, 0xbf, 0xbf, 0xb8, 0xbf, 0xbf, 0xbf
+};
+
+static char *buf = 0;
+static int n_buf = 0;
+
+const char *fl_latin1_to_local(const char *t, int n)
+{
+ if (n==-1) n = strlen(t);
+ if (n<=n_buf) {
+ n_buf = (n + 257) & 0x7fffff00;
+ if (buf) free(buf);
+ buf = (char*)malloc(n_buf);
+ }
+ const uchar *src = (const uchar*)t;
+ uchar *dst = (uchar*)buf;
+ for ( ; n>0; n--) {
+ uchar c = *src++;
+ if (c>127)
+ *dst = latin2roman[c-128];
+ else
+ *dst = c;
+ }
+ //*dst = 0; // this would be wrong!
+ return buf;
+}
+
+const char *fl_local_to_latin1(const char *t, int n)
+{
+ if (n==-1) n = strlen(t);
+ if (n<=n_buf) {
+ n_buf = (n + 257) & 0x7fffff00;
+ if (buf) free(buf);
+ buf = (char*)malloc(n_buf);
+ }
+ const uchar *src = (const uchar*)t;
+ uchar *dst = (uchar*)buf;
+ for ( ; n>0; n--) {
+ uchar c = *src++;
+ if (c>127)
+ *dst++ = roman2latin[c-128];
+ else
+ *dst++ = c;
+ }
+ //*dst = 0; // this would be wrong
+ return buf;
+}
+
+#else
+
+const char *fl_latin1_to_local(const char *t, int)
+{
+ return t;
+}
+
+const char *fl_local_to_latin1(const char *t, int)
+{
+ return t;
+}
+
+#endif
+
+//
+// End of "$Id: fl_encoding_latin1.cxx 5408 2006-09-04 18:46:28Z matt $".
+//
diff --git a/src/fl_encoding_mac_roman.cxx b/src/fl_encoding_mac_roman.cxx
new file mode 100644
index 0000000..9144549
--- /dev/null
+++ b/src/fl_encoding_mac_roman.cxx
@@ -0,0 +1,134 @@
+//
+// "$Id: fl_encoding_mac_roman.cxx 5190 2006-06-09 16:16:34Z mike $"
+//
+// Convert Mac Roman encoded text to the local encoding.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#include <FL/fl_draw.H>
+#include <FL/Enumerations.H>
+#include <stdlib.h>
+#include "flstring.h"
+
+// These function assume a western code page. If you need to support
+// scripts that are not part of this code page, you might want to
+// take a look at FLTK2, which uses utf8 for text encoding.
+//
+// By keeping these conversion tables in their own module, they will not
+// be statically linked (by a smart linker) unless actually used.
+//
+// On Mac OS X, nothing need to be converted. We simply return the
+// original pointer.
+//
+// MSWindows and X11 render text in ISO or Latin-1 for western settings. The
+// lookup tables below will convert all common character codes and replace
+// unknown characters with an upsidedown question mark.
+
+#ifdef __APPLE__
+
+const char *fl_mac_roman_to_local(const char *t, int)
+{
+ return t;
+}
+
+const char *fl_local_to_mac_roman(const char *t, int)
+{
+ return t;
+}
+
+#else
+
+// This table converts MSWindows-1252/Latin 1 into MacRoman encoding
+static uchar latin2roman[256] = {
+0xdb, 0xc0, 0xe2, 0xc4, 0xe3, 0xc9, 0xa0, 0xe0, 0xf6, 0xe4, 0xc0, 0xdc, 0xce, 0xc0, 0xc0, 0xc0,
+0xc0, 0xd4, 0xd5, 0xd2, 0xd3, 0xa5, 0xd0, 0xd1, 0xf7, 0xaa, 0xc0, 0xdd, 0xcf, 0xc0, 0xc0, 0xd9,
+0xca, 0xc1, 0xa2, 0xa3, 0xc0, 0xb4, 0xc0, 0xa4, 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0xc0, 0xa8, 0xf8,
+0xa1, 0xb1, 0xc0, 0xc0, 0xab, 0xb5, 0xa6, 0xe1, 0xfc, 0xc0, 0xbc, 0xc8, 0xc0, 0xc0, 0xc0, 0xc0,
+0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
+0xc0, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xc0, 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0xc0, 0xc0, 0xa7,
+0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95,
+0xc0, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xc0, 0xc0, 0xd8
+};
+
+// This table converts MacRoman into MSWindows-1252/Latin 1
+static uchar roman2latin[256] = {
+0xc4, 0xc5, 0xc7, 0xc9, 0xd1, 0xd6, 0xdc, 0xe1, 0xe0, 0xe2, 0xe4, 0xe3, 0xe5, 0xe7, 0xe9, 0xe8,
+0xea, 0xeb, 0xed, 0xec, 0xee, 0xef, 0xf1, 0xf3, 0xf2, 0xf4, 0xf6, 0xf5, 0xfa, 0xf9, 0xfb, 0xfc,
+0x86, 0xb0, 0xa2, 0xa3, 0xa7, 0x95, 0xb6, 0xdf, 0xae, 0xa9, 0x99, 0xb4, 0xa8, 0xbf, 0xc6, 0xd8,
+0xbf, 0xb1, 0xbf, 0xbf, 0xa5, 0xb5, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xaa, 0xba, 0xbf, 0xe6, 0xf8,
+0xbf, 0xa1, 0xac, 0xbf, 0x83, 0xbf, 0xbf, 0xab, 0xbb, 0x85, 0xa0, 0xc0, 0xc3, 0xd5, 0x8c, 0x9c,
+0x96, 0x97, 0x93, 0x94, 0x91, 0x92, 0xf7, 0xbf, 0xff, 0x9f, 0xbf, 0x80, 0x8b, 0x9b, 0xbf, 0xbf,
+0x87, 0xb7, 0x82, 0x84, 0x89, 0xc2, 0xca, 0xc1, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xd3, 0xd4,
+0xbf, 0xd2, 0xda, 0xdb, 0xd9, 0xbf, 0x88, 0x98, 0xaf, 0xbf, 0xbf, 0xbf, 0xb8, 0xbf, 0xbf, 0xbf
+};
+
+static char *buf = 0;
+static int n_buf = 0;
+
+const char *fl_local_to_mac_roman(const char *t, int n)
+{
+ if (n==-1) n = strlen(t);
+ if (n<=n_buf) {
+ n_buf = (n + 257) & 0x7fffff00;
+ if (buf) free(buf);
+ buf = (char*)malloc(n_buf);
+ }
+ const uchar *src = (const uchar*)t;
+ uchar *dst = (uchar*)buf;
+ for ( ; n>0; n--) {
+ uchar c = *src;
+ if (c>127)
+ *dst = latin2roman[c-128];
+ else
+ *dst = c;
+ }
+ //*dst = 0; // this would be wrong!
+ return buf;
+}
+
+const char *fl_mac_roman_to_local(const char *t, int n)
+{
+ if (n==-1) n = strlen(t);
+ if (n<=n_buf) {
+ n_buf = (n + 257) & 0x7fffff00;
+ if (buf) free(buf);
+ buf = (char*)malloc(n_buf);
+ }
+ const uchar *src = (const uchar*)t;
+ uchar *dst = (uchar*)buf;
+ for ( ; n>0; n--) {
+ uchar c = *src++;
+ if (c>127)
+ *dst++ = roman2latin[c-128];
+ else
+ *dst++ = c;
+ }
+ //*dst = 0; // this would be wrong
+ return buf;
+}
+
+#endif
+
+//
+// End of "$Id: fl_encoding_mac_roman.cxx 5190 2006-06-09 16:16:34Z mike $".
+//
diff --git a/src/fl_engraved_label.cxx b/src/fl_engraved_label.cxx
index 080a8b6..0fe4a0f 100644
--- a/src/fl_engraved_label.cxx
+++ b/src/fl_engraved_label.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_engraved_label.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_engraved_label.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Engraved label drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -89,5 +89,5 @@ Fl_Labeltype fl_define_FL_EMBOSSED_LABEL() {
}
//
-// End of "$Id: fl_engraved_label.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_engraved_label.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_file_dir.cxx b/src/fl_file_dir.cxx
index a91b0f3..ff23c22 100644
--- a/src/fl_file_dir.cxx
+++ b/src/fl_file_dir.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_file_dir.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_file_dir.cxx 5417 2006-09-05 09:57:41Z matt $"
//
// File chooser widget for the Fast Light Tool Kit (FLTK).
//
@@ -74,12 +74,19 @@ fl_file_chooser(const char *message, // I - Message in titlebar
fc->callback(callback, 0);
} else {
fc->type(Fl_File_Chooser::CREATE);
+ // see, if we use the same pattern between calls
+ char same_pattern = 0;
+ const char *fcf = fc->filter();
+ if ( fcf && pat && strcmp(fcf, pat)==0)
+ same_pattern = 1;
+ else if ( (fcf==0L || *fcf==0) && (pat==0L || *pat==0) )
+ same_pattern = 1;
+ // now set the pattern to the new pattern (even if they are the same)
fc->filter(pat);
fc->label(message);
- if (!fname || !*fname) {
- if (fc->filter() != pat && (!pat || !fc->filter() ||
- strcmp(pat, fc->filter())) && fc->value()) {
+ if (!fname) { // null pointer reuses same filename if pattern didn't change
+ if (!same_pattern && fc->value()) {
// if pattern is different, remove name but leave old directory:
strlcpy(retname, fc->value(), sizeof(retname));
@@ -93,13 +100,24 @@ fl_file_chooser(const char *message, // I - Message in titlebar
else
*p = '\0';
}
-
// Set the directory...
- fc->directory(retname);
+ fc->value(retname);
+ } else {
+ // re-use the previously selected name
}
+ } else if (!*fname) { // empty filename reuses directory with empty name
+ const char *fcv = fc->value();
+ if (fcv)
+ strlcpy(retname, fc->value(), sizeof(retname));
+ else
+ *retname = 0;
+ const char *n = fl_filename_name(retname);
+ if (n) *((char*)n) = 0;
+ fc->value("");
+ fc->directory(retname);
+ } else {
+ fc->value(fname);
}
- else
- fc->value(fname);
}
fc->ok_label(current_label);
@@ -156,5 +174,5 @@ fl_dir_chooser(const char *message, // I - Message for titlebar
//
-// End of "$Id: fl_file_dir.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_file_dir.cxx 5417 2006-09-05 09:57:41Z matt $".
//
diff --git a/src/fl_font.cxx b/src/fl_font.cxx
index 6c1cde1..a2f5fdd 100644
--- a/src/fl_font.cxx
+++ b/src/fl_font.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_font.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_font.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Font selection code for the Fast Light Tool Kit (FLTK).
//
@@ -56,5 +56,5 @@ void fl_draw(const char* str, int x, int y) {
}
//
-// End of "$Id: fl_font.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_font.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_font_mac.cxx b/src/fl_font_mac.cxx
index ebcc5ca..b83c77f 100644
--- a/src/fl_font_mac.cxx
+++ b/src/fl_font_mac.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_font_mac.cxx 4587 2005-10-09 16:27:45Z matt $"
+// "$Id: fl_font_mac.cxx 5651 2007-02-01 20:13:57Z matt $"
//
// MacOS font selection routines for the Fast Light Tool Kit (FLTK).
//
@@ -27,12 +27,6 @@
#include <config.h>
-//: MeasureText, FontMetrics, WidthTabHandle, GetSysFont, SysFontSize
-//: TextSize, TextFont
-//: GetFNum (theName: Str255; VAR familyID: Integer);
-//: FUNCTION FMSwapFont (inRec: FMInput): FMOutPtr;
-//: SetFractEnable
-
Fl_FontSize::Fl_FontSize(const char* name, int Size) {
next = 0;
# if HAVE_GL
@@ -57,24 +51,66 @@ Fl_FontSize::Fl_FontSize(const char* name, int Size) {
for (int i=0; i<256; i++) width[i] = fOut->widMax;
minsize = maxsize = size;
#elif defined(__APPLE_QUARTZ__)
+ knowWidths = 0;
+ // OpenGL needs those for its font handling
q_name = strdup(name);
size = Size;
+ OSStatus err;
+ // fill our structure with a few default values
ascent = Size*3/4;
descent = Size-ascent;
q_width = Size*2/3;
minsize = maxsize = Size;
- // Using ATS to get the genral Glyph size information
- CFStringRef cfname = CFStringCreateWithCString(0L, q_name, kCFStringEncodingASCII);
+ // now use ATS to get the actual Glyph size information
+ CFStringRef cfname = CFStringCreateWithCString(0L, name, kCFStringEncodingASCII);
ATSFontRef font = ATSFontFindFromName(cfname, kATSOptionFlagsDefault);
if (font) {
ATSFontMetrics m = { 0 };
ATSFontGetHorizontalMetrics(font, kATSOptionFlagsDefault, &m);
- if (m.avgAdvanceWidth) q_width = int(m.avgAdvanceWidth*size);
- // playing with the offsets a little to make standard sizes fit
- if (m.ascent) ascent = int(m.ascent*size-0.5f);
- if (m.descent) descent = -int(m.descent*size-1.5f);
+ if (m.avgAdvanceWidth) q_width = int(m.avgAdvanceWidth*Size);
+ // playing with the offsets a little to make standard sizes fit
+ if (m.ascent) ascent = int(m.ascent*Size-0.5f);
+ if (m.descent) descent = -int(m.descent*Size-1.5f);
}
CFRelease(cfname);
+ // now we allocate everything needed to render text in this font later
+ // get us the default layout and style
+ err = ATSUCreateTextLayout(&layout);
+ UniChar mTxt[2] = { 65, 0 };
+ err = ATSUSetTextPointerLocation(layout, mTxt, kATSUFromTextBeginning, 1, 1);
+ err = ATSUCreateStyle(&style);
+ err = ATSUSetRunStyle(layout, style, kATSUFromTextBeginning, kATSUToTextEnd);
+ // now set the actual font, size and attributes. We also set the font matrix to
+ // render our font up-side-down, so when rendered through our inverted CGContext,
+ // text will appear normal again.
+ Fixed fsize = IntToFixed(Size);
+ ATSUFontID fontID = FMGetFontFromATSFontRef(font);
+ static CGAffineTransform font_mx = { 1, 0, 0, -1, 0, 0 };
+ ATSUAttributeTag sTag[] = { kATSUFontTag, kATSUSizeTag, kATSUFontMatrixTag };
+ ByteCount sBytes[] = { sizeof(ATSUFontID), sizeof(Fixed), sizeof(CGAffineTransform) };
+ ATSUAttributeValuePtr sAttr[] = { &fontID, &fsize, &font_mx };
+ err = ATSUSetAttributes(style, 3, sTag, sBytes, sAttr);
+ // next, make sure that Quartz will only render at integer coordinates
+ ATSLineLayoutOptions llo = kATSLineUseDeviceMetrics|kATSLineDisableAllLayoutOperations;
+ ATSUAttributeTag aTag[] = { kATSULineLayoutOptionsTag };
+ ByteCount aBytes[] = { sizeof(ATSLineLayoutOptions) };
+ ATSUAttributeValuePtr aAttr[] = { &llo };
+ err = ATSUSetLineControls (layout, kATSUFromTextBeginning, 1, aTag, aBytes, aAttr);
+ // now we are finally ready to measure some letter to get the bounding box
+ Fixed bBefore, bAfter, bAscent, bDescent;
+ err = ATSUGetUnjustifiedBounds(layout, kATSUFromTextBeginning, 1, &bBefore, &bAfter, &bAscent, &bDescent);
+ // Requesting a certain height font on Mac does not guarantee that ascent+descent
+ // equal the requested height. fl_height will reflect the actual height that we got.
+ // The font "Apple Chancery" is a pretty extreme example of overlapping letters.
+ float fa = -FixedToFloat(bAscent), fd = -FixedToFloat(bDescent);
+ if (fa>0.0f && fd>0.0f) {
+ //float f = Size/(fa+fd);
+ ascent = fa; //int(fa*f+0.5f);
+ descent = fd; //Size - ascent;
+ }
+ int w = FixedToInt(bAfter);
+ if (w)
+ q_width = FixedToInt(bAfter);
#endif
}
@@ -97,7 +133,8 @@ Fl_FontSize::~Fl_FontSize() {
*/
if (this == fl_fontsize) fl_fontsize = 0;
#ifdef __APPLE_QUARTZ__
- free(q_name);
+ ATSUDisposeTextLayout(layout);
+ ATSUDisposeStyle(style);
#endif
}
@@ -141,6 +178,47 @@ static Fl_Fontdesc built_in_table[] = {
#endif
};
+#ifdef __APPLE_QUARTZ__
+static UniChar utf16lut[128] = {
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7,
+};
+static UniChar *utf16buf = 0;
+static int utf16len = 0;
+UniChar *fl_macToUtf16(const char *txt, int len)
+{
+ if ((len+1)>utf16len) {
+ utf16len = len+100;
+ free(utf16buf);
+ utf16buf = (UniChar*)malloc((utf16len+1)*sizeof(UniChar));
+ }
+ int i;
+ unsigned char c;
+ const unsigned char *src = (unsigned char const*)txt;
+ UniChar *dst = utf16buf;
+ for (i=0; i<len; i++) {
+ c = *src++;
+ *dst++ =(c<128) ? c : utf16lut[c-128];
+ }
+ *dst = 0;
+ return utf16buf;
+}
+#endif
+
Fl_Fontdesc* fl_fonts = built_in_table;
void fl_font(Fl_FontSize* s) {
@@ -161,9 +239,7 @@ void fl_font(Fl_FontSize* s) {
fl_fontsize->knowMetrics = 1;
}
#elif defined(__APPLE_QUARTZ__)
- if (!s) return;
- if (!fl_gc) return; // no worries, we will assign the font to the context later
- CGContextSelectFont(fl_gc, s->q_name, (float)s->size, kCGEncodingMacRoman);
+ // we will use fl_fontsize later to access the required style and layout
#else
# error : need to defined either Quartz or Quickdraw
#endif
@@ -188,6 +264,11 @@ int fl_font_ = 0;
int fl_size_ = 0;
void fl_font(int fnum, int size) {
+ if (fnum==-1) {
+ fl_font_ = 0;
+ fl_size_ = 0;
+ return;
+ }
fl_font_ = fnum;
fl_size_ = size;
fl_font(find(fnum, size));
@@ -203,88 +284,69 @@ int fl_descent() {
else return -1;
}
-// MRS: The default character set is MacRoman, which is different from
-// ISO-8859-1; in FLTK 2.0 we'll use UTF-8 with Quartz...
-
-static uchar macroman_lut[256] = {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 202, 193, 162, 163, 164, 180, 166, 164, 172, 169, 187, 199, 194, 173, 168, 248,
- 161, 177, 178, 179, 171, 181, 166, 225, 252, 185, 188, 200, 188, 189, 190, 192,
- 203, 231, 229, 204, 128, 129, 174, 130, 233, 131, 230, 232, 237, 234, 235, 236,
- 208, 132, 241, 238, 239, 205, 133, 215, 175, 244, 242, 243, 134, 221, 222, 167,
- 136, 135, 137, 139, 138, 140, 190, 141, 143, 142, 144, 145, 147, 146, 148, 149,
- 240, 150, 152, 151, 153, 155, 154, 214, 191, 157, 156, 158, 159, 253, 254, 216
-};
-
-static char *iso_buf = 0;
-static int n_iso_buf = 0;
-
-// this function must be available for OpenGL character drawing as well
-const char *fl_iso2macRoman(const char *s, int n) {
- // do not do a text lookup for 'Symbol' or 'WebDings'. This fails
- // if the user assigns a new font to these numbers though.
- if (fl_font_ == 12 || fl_font_ == 15)
- return s;
- if (n>n_iso_buf) {
- if (iso_buf) free(iso_buf);
- iso_buf = (char*)malloc(n+500);
- n_iso_buf = n;
- }
- uchar *src = (uchar*)s;
- uchar *dst = (uchar*)iso_buf;
- for (;n--;) {
- *dst++ = macroman_lut[*src++];
- }
- return iso_buf;
-}
-
-double fl_width(const char* c, int n) {
- const char *txt = fl_iso2macRoman(c, n);
+double fl_width(const char* txt, int n) {
#ifdef __APPLE_QD__
return (double)TextWidth( txt, 0, n );
#else
- if (!fl_gc) {
- Fl_Window *w = Fl::first_window();
- if (w) w->make_current();
- if (!fl_gc) return -1;
+ if (!fl_fontsize) {
+ fl_font(0, 12); // avoid a crash!
+ if (!fl_fontsize)
+ return 8*n; // user must select a font first!
+ }
+ if (!fl_fontsize->knowWidths) {
+ if (!fl_gc) {
+ Fl_Window *w = Fl::first_window();
+ if (w) w->make_current();
+ if (!fl_gc) {
+ if (fl_fontsize) return fl_fontsize->q_width*n;
+ return 8*n;
+ // We fall back to some internal QuickDraw port.
+ // The result should be the same.
+ }
+ }
+ char buf[2];
+ for (int i=0; i<256; i++) {
+ OSStatus err;
+ buf[0] = (char)i;
+ // convert to UTF-16 first
+ UniChar *uniStr = fl_macToUtf16(buf, 1);
+ // now collect our ATSU resources
+ ATSUTextLayout layout = fl_fontsize->layout;
+ // activate the current GC
+ ByteCount iSize = sizeof(CGContextRef);
+ ATSUAttributeTag iTag = kATSUCGContextTag;
+ ATSUAttributeValuePtr iValuePtr=&fl_gc;
+ ATSUSetLayoutControls(layout, 1, &iTag, &iSize, &iValuePtr);
+ // now measure the bounding box
+ err = ATSUSetTextPointerLocation(layout, uniStr, kATSUFromTextBeginning, 1, 1);
+ Fixed bBefore, bAfter, bAscent, bDescent;
+ err = ATSUGetUnjustifiedBounds(layout, kATSUFromTextBeginning, 1, &bBefore, &bAfter, &bAscent, &bDescent);
+ fl_fontsize->width[i] = FixedToInt(bAfter);
+ }
+ fl_fontsize->knowWidths = 1;
}
- // according to the Apple developer docs, this is the correct way to
- // find the length of a rendered text...
- CGContextSetTextPosition(fl_gc, 0, 0);
- CGContextSetTextDrawingMode(fl_gc, kCGTextInvisible);
- CGContextShowText(fl_gc, txt, n);
- CGContextSetTextDrawingMode(fl_gc, kCGTextFill);
- CGPoint p = CGContextGetTextPosition(fl_gc);
- return p.x;
+ int len = 0;
+ const char *src = txt;
+ for (int j=0; j<n; j++) {
+ unsigned char c = *src++;
+ len += fl_fontsize->width[c];
+ }
+ return len;
#endif
}
double fl_width(uchar c) {
-#ifdef __APPLE_QD__
- return (double)TextWidth((const char*)(macroman_lut + c), 0, 1 );
-#else
return fl_width((const char*)(&c), 1);
-#endif
}
void fl_draw(const char *str, int n, float x, float y);
void fl_draw(const char* str, int n, int x, int y) {
#ifdef __APPLE_QD__
- const char *txt = fl_iso2macRoman(str, n);
MoveTo(x, y);
- DrawText((const char *)txt, 0, n);
+ DrawText((const char *)str, 0, n);
#elif defined(__APPLE_QUARTZ__)
- fl_draw(str, n, (float)x, (float)y);
+ fl_draw(str, n, (float)x-0.0f, (float)y-0.5f);
#else
# error : neither Quartz no Quickdraw chosen
#endif
@@ -294,13 +356,24 @@ void fl_draw(const char *str, int n, float x, float y) {
#ifdef __APPLE_QD__
fl_draw(str, n, (int)x, (int)y);
#elif defined(__APPLE_QUARTZ__)
- const char *txt = fl_iso2macRoman(str, n);
- CGContextShowTextAtPoint(fl_gc, x, y, txt, n);
+ OSStatus err;
+ // convert to UTF-16 first
+ UniChar *uniStr = fl_macToUtf16(str, n);
+ // now collect our ATSU resources
+ ATSUTextLayout layout = fl_fontsize->layout;
+
+ ByteCount iSize = sizeof(CGContextRef);
+ ATSUAttributeTag iTag = kATSUCGContextTag;
+ ATSUAttributeValuePtr iValuePtr=&fl_gc;
+ ATSUSetLayoutControls(layout, 1, &iTag, &iSize, &iValuePtr);
+
+ err = ATSUSetTextPointerLocation(layout, uniStr, kATSUFromTextBeginning, n, n);
+ err = ATSUDrawText(layout, kATSUFromTextBeginning, n, FloatToFixed(x), FloatToFixed(y));
#else
# error : neither Quartz no Quickdraw chosen
#endif
}
//
-// End of "$Id: fl_font_mac.cxx 4587 2005-10-09 16:27:45Z matt $".
+// End of "$Id: fl_font_mac.cxx 5651 2007-02-01 20:13:57Z matt $".
//
diff --git a/src/fl_font_win32.cxx b/src/fl_font_win32.cxx
index 108b5cc..ee7d600 100644
--- a/src/fl_font_win32.cxx
+++ b/src/fl_font_win32.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_font_win32.cxx 4329 2005-05-12 13:37:49Z mike $"
+// "$Id: fl_font_win32.cxx 5420 2006-09-05 11:16:15Z matt $"
//
// WIN32 font selection routines for the Fast Light Tool Kit (FLTK).
//
@@ -126,6 +126,10 @@ int fl_size_ = 0;
//static HDC font_gc;
void fl_font(int fnum, int size) {
+ if (fnum==-1) { // just make sure that we will load a new font next time
+ fl_font_ = 0; fl_size_ = 0;
+ return;
+ }
if (fnum == fl_font_ && size == fl_size_) return;
fl_font_ = fnum; fl_size_ = size;
fl_fontsize = find(fnum, size);
@@ -165,5 +169,5 @@ void fl_draw(const char* str, int n, float x, float y) {
}
//
-// End of "$Id: fl_font_win32.cxx 4329 2005-05-12 13:37:49Z mike $".
+// End of "$Id: fl_font_win32.cxx 5420 2006-09-05 11:16:15Z matt $".
//
diff --git a/src/fl_font_x.cxx b/src/fl_font_x.cxx
index c87289f..be1be0a 100644
--- a/src/fl_font_x.cxx
+++ b/src/fl_font_x.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_font_x.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_font_x.cxx 5421 2006-09-05 11:26:41Z matt $"
//
// Standard X11 font selection code for the Fast Light Tool Kit (FLTK).
//
@@ -196,9 +196,14 @@ static Fl_FontSize* find(int fnum, int size) {
int fl_font_ = 0;
int fl_size_ = 0;
XFontStruct* fl_xfont = 0;
+void *fl_xftfont = 0;
static GC font_gc;
void fl_font(int fnum, int size) {
+ if (fnum==-1) {
+ fl_font_ = 0; fl_size_ = 0;
+ return;
+ }
if (fnum == fl_font_ && size == fl_size_) return;
fl_font_ = fnum; fl_size_ = size;
Fl_FontSize* f = find(fnum, size);
@@ -260,5 +265,5 @@ void fl_draw(const char* str, int n, float x, float y) {
}
//
-// End of "$Id: fl_font_x.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_font_x.cxx 5421 2006-09-05 11:26:41Z matt $".
//
diff --git a/src/fl_font_xft.cxx b/src/fl_font_xft.cxx
index 5e964ac..3073b78 100644
--- a/src/fl_font_xft.cxx
+++ b/src/fl_font_xft.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_font_xft.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_font_xft.cxx 5535 2006-10-30 14:16:08Z mike $"
//
// Xft font code for the Fast Light Tool Kit (FLTK).
//
@@ -91,12 +91,18 @@ Fl_Fontdesc* fl_fonts = built_in_table;
int fl_font_ = 0;
int fl_size_ = 0;
XFontStruct* fl_xfont = 0;
+void *fl_xftfont = 0;
const char* fl_encoding_ = "iso8859-1";
Fl_FontSize* fl_fontsize = 0;
void fl_font(int fnum, int size) {
- if (fnum == fl_font_ && size == fl_size_ &&
- !strcasecmp(fl_fontsize->encoding, fl_encoding_))
+ if (fnum==-1) { // special case to stop font caching
+ fl_font_ = 0; fl_size_ = 0;
+ return;
+ }
+ if (fnum == fl_font_ && size == fl_size_
+ && fl_fontsize
+ && !strcasecmp(fl_fontsize->encoding, fl_encoding_))
return;
fl_font_ = fnum; fl_size_ = size;
Fl_Fontdesc *font = fl_fonts + fnum;
@@ -115,6 +121,7 @@ void fl_font(int fnum, int size) {
#if XFT_MAJOR < 2
fl_xfont = f->font->u.core.font;
#endif // XFT_MAJOR < 2
+ fl_xftfont = (void*)f->font;
}
static XftFont* fontopen(const char* name, bool core) {
@@ -138,7 +145,7 @@ static XftFont* fontopen(const char* name, bool core) {
XFT_PIXEL_SIZE, XftTypeDouble, (double)fl_size_,
core ? XFT_CORE : 0, XftTypeBool, true,
XFT_RENDER, XftTypeBool, false,
- 0);
+ (void *)0);
}
Fl_FontSize::Fl_FontSize(const char* name) {
@@ -261,5 +268,5 @@ void fl_draw(const char* str, int n, float x, float y) {
}
//
-// End of "$Id: fl_font_xft.cxx 4288 2005-04-16 00:13:17Z mike $"
+// End of "$Id: fl_font_xft.cxx 5535 2006-10-30 14:16:08Z mike $"
//
diff --git a/src/fl_gtk.cxx b/src/fl_gtk.cxx
new file mode 100644
index 0000000..9894142
--- /dev/null
+++ b/src/fl_gtk.cxx
@@ -0,0 +1,304 @@
+//
+// "$Id: fl_gtk.cxx 5721 2007-02-27 19:23:24Z matt $"
+//
+// "GTK" drawing routines for the Fast Light Tool Kit (FLTK).
+//
+// These box types provide a GTK+ look, based on Red Hat's Bluecurve
+// theme...
+//
+// Copyright 2006 by Michael Sweet.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+// Box drawing code for an obscure box type.
+// These box types are in seperate files so they are not linked
+// in if not used.
+
+#include <FL/Fl.H>
+#include <FL/fl_draw.H>
+
+extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*);
+
+
+static void gtk_color(Fl_Color c) {
+ if (Fl::draw_box_active()) fl_color(c);
+ else fl_color(fl_inactive(c));
+}
+
+
+static void gtk_up_frame(int x, int y, int w, int h, Fl_Color c) {
+ gtk_color(fl_color_average(FL_WHITE, c, 0.5));
+ fl_xyline(x + 2, y + 1, x + w - 3);
+ fl_yxline(x + 1, y + 2, y + h - 3);
+
+ gtk_color(fl_color_average(FL_BLACK, c, 0.5));
+ fl_begin_loop();
+ fl_vertex(x, y + 2);
+ fl_vertex(x + 2, y);
+ fl_vertex(x + w - 3, y);
+ fl_vertex(x + w - 1, y + 2);
+ fl_vertex(x + w - 1, y + h - 3);
+ fl_vertex(x + w - 3, y + h - 1);
+ fl_vertex(x + 2, y + h - 1);
+ fl_vertex(x, y + h - 3);
+ fl_end_loop();
+}
+
+
+static void gtk_up_box(int x, int y, int w, int h, Fl_Color c) {
+ gtk_up_frame(x, y, w, h, c);
+
+ gtk_color(fl_color_average(FL_WHITE, c, 0.4f));
+ fl_xyline(x + 2, y + 2, x + w - 3);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.2f));
+ fl_xyline(x + 2, y + 3, x + w - 3);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.1f));
+ fl_xyline(x + 2, y + 4, x + w - 3);
+ gtk_color(c);
+ fl_rectf(x + 2, y + 5, w - 4, h - 7);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.025f));
+ fl_xyline(x + 2, y + h - 4, x + w - 3);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.05f));
+ fl_xyline(x + 2, y + h - 3, x + w - 3);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.1f));
+ fl_xyline(x + 2, y + h - 2, x + w - 3);
+ fl_yxline(x + w - 2, y + 2, y + h - 3);
+}
+
+
+static void gtk_down_frame(int x, int y, int w, int h, Fl_Color c) {
+ gtk_color(fl_color_average(FL_BLACK, c, 0.5));
+ fl_begin_loop();
+ fl_vertex(x, y + 2);
+ fl_vertex(x + 2, y);
+ fl_vertex(x + w - 3, y);
+ fl_vertex(x + w - 1, y + 2);
+ fl_vertex(x + w - 1, y + h - 3);
+ fl_vertex(x + w - 3, y + h - 1);
+ fl_vertex(x + 2, y + h - 1);
+ fl_vertex(x, y + h - 3);
+ fl_end_loop();
+
+ gtk_color(fl_color_average(FL_BLACK, c, 0.1f));
+ fl_xyline(x + 2, y + 1, x + w - 3);
+ fl_yxline(x + 1, y + 2, y + h - 3);
+
+ gtk_color(fl_color_average(FL_BLACK, c, 0.05f));
+ fl_yxline(x + 2, y + h - 2, y + 2, x + w - 2);
+}
+
+
+static void gtk_down_box(int x, int y, int w, int h, Fl_Color c) {
+ gtk_down_frame(x, y, w, h, c);
+
+ gtk_color(c);
+ fl_rectf(x + 3, y + 3, w - 5, h - 4);
+ fl_yxline(x + w - 2, y + 3, y + h - 3);
+}
+
+
+static void gtk_thin_up_frame(int x, int y, int w, int h, Fl_Color c) {
+ gtk_color(fl_color_average(FL_WHITE, c, 0.6f));
+ fl_xyline(x + 1, y, x + w - 2);
+ fl_yxline(x, y + 1, y + h - 2);
+
+ gtk_color(fl_color_average(FL_BLACK, c, 0.4f));
+ fl_xyline(x + 1, y + h - 1, x + w - 2);
+ fl_yxline(x + w - 1, y + 1, y + h - 2);
+}
+
+
+static void gtk_thin_up_box(int x, int y, int w, int h, Fl_Color c) {
+ gtk_thin_up_frame(x, y, w, h, c);
+
+ gtk_color(fl_color_average(FL_WHITE, c, 0.4f));
+ fl_xyline(x + 1, y + 1, x + w - 2);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.2f));
+ fl_xyline(x + 1, y + 2, x + w - 2);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.1f));
+ fl_xyline(x + 1, y + 3, x + w - 2);
+ gtk_color(c);
+ fl_rectf(x + 1, y + 4, w - 2, h - 8);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.025f));
+ fl_xyline(x + 1, y + h - 4, x + w - 2);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.05f));
+ fl_xyline(x + 1, y + h - 3, x + w - 2);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.1f));
+ fl_xyline(x + 1, y + h - 2, x + w - 2);
+}
+
+
+static void gtk_thin_down_frame(int x, int y, int w, int h, Fl_Color c) {
+ gtk_color(fl_color_average(FL_BLACK, c, 0.4f));
+ fl_xyline(x + 1, y, x + w - 2);
+ fl_yxline(x, y + 1, y + h - 2);
+
+ gtk_color(fl_color_average(FL_WHITE, c, 0.6f));
+ fl_xyline(x + 1, y + h - 1, x + w - 2);
+ fl_yxline(x + w - 1, y + 1, y + h - 2);
+}
+
+
+static void gtk_thin_down_box(int x, int y, int w, int h, Fl_Color c) {
+ gtk_thin_down_frame(x, y, w, h, c);
+
+ gtk_color(c);
+ fl_rectf(x + 1, y + 1, w - 2, h - 2);
+}
+
+//------------------------
+// new GTK+ style for round buttons
+#if 1
+
+static void fl_arc_i(int x,int y,int w,int h,double a1,double a2) {
+ fl_arc(x,y,w,h,a1,a2);
+}
+
+enum {UPPER_LEFT, LOWER_RIGHT, CLOSED, FILL};
+
+static void draw(int which, int x,int y,int w,int h, int inset)
+{
+ if (inset*2 >= w) inset = (w-1)/2;
+ if (inset*2 >= h) inset = (h-1)/2;
+ x += inset;
+ y += inset;
+ w -= 2*inset;
+ h -= 2*inset;
+ int d = w <= h ? w : h;
+ if (d <= 1) return;
+ void (*f)(int,int,int,int,double,double);
+ f = (which==FILL) ? fl_pie : fl_arc_i;
+ if (which >= CLOSED) {
+ f(x+w-d, y, d, d, w<=h ? 0 : -90, w<=h ? 180 : 90);
+ f(x, y+h-d, d, d, w<=h ? 180 : 90, w<=h ? 360 : 270);
+ } else if (which == UPPER_LEFT) {
+ f(x+w-d, y, d, d, 45, w<=h ? 180 : 90);
+ f(x, y+h-d, d, d, w<=h ? 180 : 90, 225);
+ } else { // LOWER_RIGHT
+ f(x, y+h-d, d, d, 225, w<=h ? 360 : 270);
+ f(x+w-d, y, d, d, w<=h ? 360 : 270, 360+45);
+ }
+ if (which == FILL) {
+ if (w < h)
+ fl_rectf(x, y+d/2, w, h-(d&-2));
+ else if (w > h)
+ fl_rectf(x+d/2, y, w-(d&-2), h);
+ } else {
+ if (w < h) {
+ if (which != UPPER_LEFT) fl_yxline(x+w-1, y+d/2-1, y+h-d/2+1);
+ if (which != LOWER_RIGHT) fl_yxline(x, y+d/2-1, y+h-d/2+1);
+ } else if (w > h) {
+ if (which != UPPER_LEFT) fl_xyline(x+d/2-1, y+h-1, x+w-d/2+1);
+ if (which != LOWER_RIGHT) fl_xyline(x+d/2-1, y, x+w-d/2+1);
+ }
+ }
+}
+
+void gtk_round_up_box(int x, int y, int w, int h, Fl_Color c) {
+ fl_color(c);
+ draw(FILL, x, y, w, h, 2);
+
+ gtk_color(fl_color_average(FL_BLACK, c, 0.025f));
+ draw(LOWER_RIGHT, x+1, y, w-2, h, 2);
+ draw(LOWER_RIGHT, x, y, w, h, 3);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.05f));
+ draw(LOWER_RIGHT, x+1, y, w-2, h, 1);
+ draw(LOWER_RIGHT, x, y, w, h, 2);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.1f));
+ draw(LOWER_RIGHT, x+1, y, w-2, h, 0);
+ draw(LOWER_RIGHT, x, y, w, h, 1);
+
+ gtk_color(fl_color_average(FL_WHITE, c, 0.1f));
+ draw(UPPER_LEFT, x, y, w, h, 4);
+ draw(UPPER_LEFT, x+1, y, w-2, h, 3);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.2f));
+ draw(UPPER_LEFT, x, y, w, h, 3);
+ draw(UPPER_LEFT, x+1, y, w-2, h, 2);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.4f));
+ draw(UPPER_LEFT, x, y, w, h, 2);
+ draw(UPPER_LEFT, x+1, y, w-2, h, 1);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.5f));
+ draw(UPPER_LEFT, x, y, w, h, 1);
+ draw(UPPER_LEFT, x+1, y, w-2, h, 0);
+
+ gtk_color(fl_color_average(FL_BLACK, c, 0.5f));
+ draw(CLOSED, x, y, w, h, 0);
+}
+
+void gtk_round_down_box(int x, int y, int w, int h, Fl_Color c) {
+ fl_color(c);
+ draw(FILL, x, y, w, h, 2);
+
+ gtk_color(fl_color_average(FL_BLACK, c, 0.05f));
+ draw(UPPER_LEFT, x, y, w, h, 2);
+ draw(UPPER_LEFT, x+1, y, w-2, h, 1);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.1f));
+ draw(UPPER_LEFT, x, y, w, h, 1);
+ draw(UPPER_LEFT, x+1, y, w-2, h, 0);
+
+ gtk_color(fl_color_average(FL_BLACK, c, 0.5f));
+ draw(CLOSED, x, y, w, h, 0);
+}
+
+#else
+
+static void gtk_round_up_box(int x, int y, int w, int h, Fl_Color c) {
+ gtk_color(c);
+ fl_pie(x, y, w, h, 0.0, 360.0);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.5f));
+ fl_arc(x, y, w, h, 45.0, 180.0);
+ gtk_color(fl_color_average(FL_WHITE, c, 0.25f));
+ fl_arc(x, y, w, h, 180.0, 405.0);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.5f));
+ fl_arc(x, y, w, h, 225.0, 360.0);
+}
+
+
+static void gtk_round_down_box(int x, int y, int w, int h, Fl_Color c) {
+ gtk_color(c);
+ fl_pie(x, y, w, h, 0.0, 360.0);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.2));
+ fl_arc(x + 1, y, w, h, 90.0, 210.0);
+ gtk_color(fl_color_average(FL_BLACK, c, 0.6));
+ fl_arc(x, y, w, h, 0.0, 360.0);
+}
+
+#endif
+
+Fl_Boxtype fl_define_FL_GTK_UP_BOX() {
+ fl_internal_boxtype(_FL_GTK_UP_BOX, gtk_up_box);
+ fl_internal_boxtype(_FL_GTK_DOWN_BOX, gtk_down_box);
+ fl_internal_boxtype(_FL_GTK_UP_FRAME, gtk_up_frame);
+ fl_internal_boxtype(_FL_GTK_DOWN_FRAME, gtk_down_frame);
+ fl_internal_boxtype(_FL_GTK_THIN_UP_BOX, gtk_thin_up_box);
+ fl_internal_boxtype(_FL_GTK_THIN_DOWN_BOX, gtk_thin_down_box);
+ fl_internal_boxtype(_FL_GTK_THIN_UP_FRAME, gtk_thin_up_frame);
+ fl_internal_boxtype(_FL_GTK_THIN_DOWN_FRAME, gtk_thin_down_frame);
+ fl_internal_boxtype(_FL_GTK_ROUND_UP_BOX, gtk_round_up_box);
+ fl_internal_boxtype(_FL_GTK_ROUND_DOWN_BOX, gtk_round_down_box);
+
+ return _FL_GTK_UP_BOX;
+}
+
+
+//
+// End of "$Id: fl_gtk.cxx 5721 2007-02-27 19:23:24Z matt $".
+//
diff --git a/src/fl_images_core.cxx b/src/fl_images_core.cxx
index 6af6ec5..95c0ebb 100644
--- a/src/fl_images_core.cxx
+++ b/src/fl_images_core.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_images_core.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_images_core.cxx 5260 2006-07-18 01:10:51Z mike $"
//
// FLTK images library core.
//
@@ -89,7 +89,7 @@ fl_check_images(const char *name, // I - Filename
#ifdef HAVE_LIBJPEG
if (memcmp(header, "\377\330\377", 3) == 0 &&
// Start-of-Image
- header[3] >= 0xe0 && header[3] <= 0xef)
+ header[3] >= 0xc0 && header[3] <= 0xef)
// APPn for JPEG file
return new Fl_JPEG_Image(name);
#endif // HAVE_LIBJPEG
@@ -99,5 +99,5 @@ fl_check_images(const char *name, // I - Filename
//
-// End of "$Id: fl_images_core.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_images_core.cxx 5260 2006-07-18 01:10:51Z mike $".
//
diff --git a/src/fl_labeltype.cxx b/src/fl_labeltype.cxx
index 61ddee8..f96ab45 100644
--- a/src/fl_labeltype.cxx
+++ b/src/fl_labeltype.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_labeltype.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_labeltype.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Label drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -129,5 +129,5 @@ void Fl_Widget::draw_label(int X, int Y, int W, int H, Fl_Align a) const {
#include <FL/Fl_Input_.H>
//
-// End of "$Id: fl_labeltype.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_labeltype.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_line_style.cxx b/src/fl_line_style.cxx
index c2b7cf6..55b5988 100644
--- a/src/fl_line_style.cxx
+++ b/src/fl_line_style.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_line_style.cxx 4563 2005-09-12 23:03:34Z matt $"
+// "$Id: fl_line_style.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Line style code for the Fast Light Tool Kit (FLTK).
//
@@ -161,5 +161,5 @@ void fl_line_style(int style, int width, char* dashes) {
//
-// End of "$Id: fl_line_style.cxx 4563 2005-09-12 23:03:34Z matt $".
+// End of "$Id: fl_line_style.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_open_uri.cxx b/src/fl_open_uri.cxx
new file mode 100644
index 0000000..f8a9cd7
--- /dev/null
+++ b/src/fl_open_uri.cxx
@@ -0,0 +1,370 @@
+//
+// "$Id: fl_open_uri.cxx 5636 2007-01-23 20:45:28Z mike $"
+//
+// fl_open_uri() code for FLTK.
+//
+// Test with:
+//
+// gcc -I/fltk/dir -I/fltk/dir/src -DTEST -o fl_open_uri fl_open_uri.cxx -lfltk
+//
+// Copyright 2003-2007 by Michael R Sweet
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+
+//
+// Include necessary headers...
+//
+
+#include <FL/filename.H>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/types.h>
+#include "flstring.h"
+#ifdef WIN32
+# include <windows.h>
+# include <shellapi.h>
+#else
+# include <sys/wait.h>
+# include <signal.h>
+# include <fcntl.h>
+# include <unistd.h>
+#endif // WIN32
+
+
+//
+// Local functions...
+//
+
+#if !defined(WIN32) && !defined(__APPLE__)
+static char *path_find(const char *program, char *filename, int filesize);
+#endif // !WIN32 && !__APPLE__
+#ifndef WIN32
+static int run_program(const char *program, char **argv, char *msg, int msglen);
+#endif // !WIN32
+
+
+/**
+ * Open the specified URI.
+ *
+ * fl_open_uri() opens the specified Uniform Resource Identifier (URI)
+ * using an operating-system dependent program or interface. For URIs
+ * using the "ftp", "http", or "https" schemes, the system default web
+ * browser is used to open the URI, while "mailto" and "news" URIs are
+ * typically opened using the system default mail reader and "file" URIs
+ * are opened using the file system navigator.
+ *
+ * On success, the (optional) msg buffer is filled with the command that
+ * was run to open the URI; on Windows, this will always be "open uri".
+ *
+ * On failure, the msg buffer is filled with an English error message.
+ *
+ * @param uri The URI to open
+ * @param msg Optional buffer which contains the command or error message
+ * @param msglen Length of optional buffer
+ * @return 1 on success, 0 on failure
+ */
+
+int
+fl_open_uri(const char *uri, char *msg, int msglen) {
+ // Supported URI schemes...
+ static const char * const schemes[] = {
+ "file://",
+ "ftp://",
+ "http://",
+ "https://",
+ "mailto:",
+ "news://",
+ NULL
+ };
+
+ // Validate the URI scheme...
+ int i;
+ for (i = 0; schemes[i]; i ++)
+ if (!strncmp(uri, schemes[i], strlen(schemes[i])))
+ break;
+
+ if (!schemes[i]) {
+ if (msg) {
+ char scheme[255];
+ if (sscanf(uri, "%254[^:]", scheme) == 1) {
+ snprintf(msg, msglen, "URI scheme \"%s\" not supported.", scheme);
+ } else {
+ snprintf(msg, msglen, "Bad URI \"%s\"", uri);
+ }
+ }
+
+ return 0;
+ }
+
+#ifdef WIN32
+ if (msg) snprintf(msg, msglen, "open %s", uri);
+
+ return (int)ShellExecute(HWND_DESKTOP, "open", uri, NULL, NULL, SW_SHOW) > 32;
+
+#elif defined(__APPLE__)
+ char *argv[3]; // Command-line arguments
+
+ argv[0] = "open";
+ argv[1] = (char *)uri;
+ argv[2] = 0;
+
+ if (msg) snprintf(msg, msglen, "open %s", uri);
+
+ return run_program("/usr/bin/open", argv, msg, msglen) != 0;
+
+#else // !WIN32 && !__APPLE__
+ // Run any of several well-known commands to open the URI.
+ //
+ // We give preference to the Portland group's xdg-utils
+ // programs which run the user's preferred web browser, etc.
+ // based on the current desktop environment in use. We fall
+ // back on older standards and then finally test popular programs
+ // until we find one we can use.
+ //
+ // Note that we specifically do not support the MAILER and
+ // BROWSER environment variables because we have no idea whether
+ // we need to run the listed commands in a terminal program.
+
+ char command[1024], // Command to run...
+ *argv[4], // Command-line arguments
+ remote[1024]; // Remote-mode command...
+ const char * const *commands; // Array of commands to check...
+ static const char * const browsers[] = {
+ "xdg-open", // Portland
+ "htmlview", // Freedesktop.org
+ "firefox",
+ "mozilla",
+ "netscape",
+ "konqueror", // KDE
+ "opera",
+ "hotjava", // Solaris
+ "mosaic",
+ NULL
+ };
+ static const char * const readers[] = {
+ "xdg-email", // Portland
+ "thunderbird",
+ "mozilla",
+ "netscape",
+ "evolution", // GNOME
+ "kmailservice", // KDE
+ NULL
+ };
+ static const char * const managers[] = {
+ "xdg-open", // Portland
+ "fm", // IRIX
+ "dtaction", // CDE
+ "nautilus", // GNOME
+ "konqueror", // KDE
+ NULL
+ };
+
+ // Figure out which commands to check for...
+ if (!strncmp(uri, "file://", 7)) commands = managers;
+ else if (!strncmp(uri, "mailto:", 7) ||
+ !strncmp(uri, "news:", 5)) commands = readers;
+ else commands = browsers;
+
+ // Find the command to run...
+ for (i = 0; commands[i]; i ++)
+ if (path_find(commands[i], command, sizeof(command))) break;
+
+ if (!commands[i]) {
+ if (msg) {
+ snprintf(msg, msglen, "No helper application found for \"%s\"", uri);
+ }
+
+ return 0;
+ }
+
+ // Handle command-specific arguments...
+ argv[0] = (char *)commands[i];
+
+ if (!strcmp(commands[i], "firefox") ||
+ !strcmp(commands[i], "mozilla") ||
+ !strcmp(commands[i], "netscape") ||
+ !strcmp(commands[i], "thunderbird")) {
+ // program -remote openURL(uri)
+ snprintf(remote, sizeof(remote), "openURL(%s)", uri);
+
+ argv[1] = (char *)"-remote";
+ argv[2] = remote;
+ argv[3] = 0;
+ } else if (!strcmp(commands[i], "dtaction")) {
+ // dtaction open uri
+ argv[1] = (char *)"open";
+ argv[2] = (char *)uri;
+ argv[3] = 0;
+ } else {
+ // program uri
+ argv[1] = (char *)uri;
+ argv[2] = 0;
+ }
+
+ if (msg) {
+ strlcpy(msg, argv[0], msglen);
+
+ for (i = 1; argv[i]; i ++) {
+ strlcat(msg, " ", msglen);
+ strlcat(msg, argv[i], msglen);
+ }
+ }
+
+ return run_program(command, argv, msg, msglen) != 0;
+#endif // WIN32
+}
+
+
+#if !defined(WIN32) && !defined(__APPLE__)
+// Find a program in the path...
+static char *path_find(const char *program, char *filename, int filesize) {
+ const char *path; // Search path
+ char *ptr, // Pointer into filename
+ *end; // End of filename buffer
+
+
+ if ((path = getenv("PATH")) == NULL) path = "/bin:/usr/bin";
+
+ for (ptr = filename, end = filename + filesize - 1; *path; path ++) {
+ if (*path == ':') {
+ if (ptr > filename && ptr[-1] != '/' && ptr < end) *ptr++ = '/';
+
+ strlcpy(ptr, program, end - ptr + 1);
+
+ if (!access(filename, X_OK)) return filename;
+
+ ptr = filename;
+ } else if (ptr < end) *ptr++ = *path;
+ }
+
+ if (ptr > filename) {
+ if (ptr[-1] != '/' && ptr < end) *ptr++ = '/';
+
+ strlcpy(ptr, program, end - ptr + 1);
+
+ if (!access(filename, X_OK)) return filename;
+ }
+
+ return 0;
+}
+#endif // !WIN32 && !__APPLE__
+
+
+#ifndef WIN32
+// Run the specified program, returning 1 on success and 0 on failure
+static int
+run_program(const char *program, char **argv, char *msg, int msglen) {
+ pid_t pid; // Process ID of first child
+ int status; // Exit status from first child
+ sigset_t set, oldset; // Signal masks
+
+
+ // Block SIGCHLD while we run the program...
+ //
+ // Note that I only use the POSIX signal APIs, however older operating
+ // systems may either not support POSIX signals or have side effects.
+ // IRIX, for example, provides three separate and incompatible signal
+ // APIs, so it is possible that an application setting a signal handler
+ // via signal() or sigset() will not have its SIGCHLD signals blocked...
+
+ sigemptyset(&set);
+ sigaddset(&set, SIGCHLD);
+ sigprocmask(SIG_BLOCK, &set, &oldset);
+
+ // Create child processes that actually run the program for us...
+ if ((pid = fork()) == 0) {
+ // First child comes here, fork a second child and exit...
+ if (!fork()) {
+ // Second child comes here, redirect stdin/out/err to /dev/null...
+ close(0);
+ open("/dev/null", O_RDONLY);
+
+ close(1);
+ open("/dev/null", O_WRONLY);
+
+ close(2);
+ open("/dev/null", O_WRONLY);
+
+ // Detach from the current process group...
+ setsid();
+
+ // Run the program...
+ execv(program, argv);
+ _exit(0);
+ } else {
+ // First child gets here, exit immediately...
+ _exit(0);
+ }
+ } else if (pid < 0) {
+ // Restore signal handling...
+ sigprocmask(SIG_SETMASK, &oldset, NULL);
+
+ // Return indicating failure...
+ return 0;
+ }
+
+ // Wait for the first child to exit...
+ while (waitpid(pid, &status, 0) < 0) {
+ if (errno != EINTR) {
+ // Someone else grabbed the child status...
+ if (msg) snprintf(msg, msglen, "waitpid(%ld) failed: %s", (long)pid,
+ strerror(errno));
+
+ // Restore signal handling...
+ sigprocmask(SIG_SETMASK, &oldset, NULL);
+
+ // Return indicating failure...
+ return 0;
+ }
+ }
+
+ // Restore signal handling...
+ sigprocmask(SIG_SETMASK, &oldset, NULL);
+
+ // Return indicating success...
+ return 1;
+}
+#endif // !WIN32
+
+
+#ifdef TEST
+//
+// Test code...
+//
+
+// Open the URI on the command-line...
+int main(int argc, char **argv) {
+ char msg[1024];
+
+
+ if (argc != 2) {
+ puts("Usage: fl_open_uri URI");
+ return 1;
+ }
+
+ if (!fl_open_uri(argv[1], msg, sizeof(msg))) {
+ puts(msg);
+ return 1;
+ } else return 0;
+}
+#endif // TEST
+
+
+//
+// End of "$Id: fl_open_uri.cxx 5636 2007-01-23 20:45:28Z mike $".
+//
diff --git a/src/fl_oval_box.cxx b/src/fl_oval_box.cxx
index 0c412d2..ff88faf 100644
--- a/src/fl_oval_box.cxx
+++ b/src/fl_oval_box.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_oval_box.cxx 4551 2005-08-29 21:16:38Z matt $"
+// "$Id: fl_oval_box.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Oval box drawing code for the Fast Light Tool Kit (FLTK).
//
@@ -62,5 +62,5 @@ Fl_Boxtype fl_define_FL_OVAL_BOX() {
}
//
-// End of "$Id: fl_oval_box.cxx 4551 2005-08-29 21:16:38Z matt $".
+// End of "$Id: fl_oval_box.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_overlay.cxx b/src/fl_overlay.cxx
index dd10f0b..f3e5ce4 100644
--- a/src/fl_overlay.cxx
+++ b/src/fl_overlay.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_overlay.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_overlay.cxx 5614 2007-01-18 15:25:09Z matt $"
//
// Overlay support for the Fast Light Tool Kit (FLTK).
//
@@ -36,31 +36,77 @@
#include <config.h>
#endif
+//#define USE_XOR
+
static int px,py,pw,ph;
+#ifndef USE_XOR
+#include <stdlib.h>
+static uchar *bgN = 0L, *bgS = 0L, *bgE = 0L, *bgW = 0L;
+static int bgx, bgy, bgw, bgh;
+#endif
+
static void draw_current_rect() {
-#ifdef WIN32
+#ifdef USE_XOR
+# ifdef WIN32
int old = SetROP2(fl_gc, R2_NOT);
fl_rect(px, py, pw, ph);
SetROP2(fl_gc, old);
-#elif defined(__APPLE_QD__)
+# elif defined(__APPLE_QD__)
PenMode( patXor );
fl_rect(px, py, pw, ph);
PenMode( patCopy );
-#elif defined(__APPLE_QUARTZ__)
+# elif defined(__APPLE_QUARTZ__)
// warning: Quartz does not support xor drawing
// Use the Fl_Overlay_Window instead.
+ fl_color(FL_WHITE);
fl_rect(px, py, pw, ph);
-#else
+# else
XSetFunction(fl_display, fl_gc, GXxor);
XSetForeground(fl_display, fl_gc, 0xffffffff);
XDrawRectangle(fl_display, fl_window, fl_gc, px, py, pw, ph);
XSetFunction(fl_display, fl_gc, GXcopy);
+# endif
+#else
+ if (bgN) { free(bgN); bgN = 0L; }
+ if (bgS) { free(bgS); bgS = 0L; }
+ if (bgE) { free(bgE); bgE = 0L; }
+ if (bgW) { free(bgW); bgW = 0L; }
+ if (pw>0 && ph>0) {
+ bgE = fl_read_image(0L, px+pw-1, py, 1, ph);
+ bgW = fl_read_image(0L, px, py, 1, ph);
+ bgS = fl_read_image(0L, px, py+ph-1, pw, 1);
+ bgN = fl_read_image(0L, px, py, pw, 1);
+ bgx = px; bgy = py;
+ bgw = pw; bgh = ph;
+ }
+ fl_color(FL_WHITE);
+ fl_line_style(FL_SOLID);
+ fl_rect(px, py, pw, ph);
+ fl_color(FL_BLACK);
+ fl_line_style(FL_DOT);
+ fl_rect(px, py, pw, ph);
+ fl_line_style(FL_SOLID);
+#endif
+}
+
+static void erase_current_rect() {
+#ifdef USE_XOR
+# ifdef __APPLE_QUARTZ__
+ fl_rect(px, py, pw, ph);
+# else
+ draw_current_rect();
+# endif
+#else
+ if (bgN) fl_draw_image(bgN, bgx, bgy, bgw, 1);
+ if (bgS) fl_draw_image(bgS, bgx, bgy+bgh-1, bgw, 1);
+ if (bgW) fl_draw_image(bgW, bgx, bgy, 1, bgh);
+ if (bgE) fl_draw_image(bgE, bgx+bgw-1, bgy, 1, bgh);
#endif
}
void fl_overlay_clear() {
- if (pw > 0) {draw_current_rect(); pw = 0;}
+ if (pw > 0) {erase_current_rect(); pw = 0;}
}
void fl_overlay_rect(int x, int y, int w, int h) {
@@ -68,12 +114,12 @@ void fl_overlay_rect(int x, int y, int w, int h) {
if (h < 0) {y += h; h = -h;} else if (!h) h = 1;
if (pw > 0) {
if (x==px && y==py && w==pw && h==ph) return;
- draw_current_rect();
+ erase_current_rect();
}
px = x; py = y; pw = w; ph = h;
draw_current_rect();
}
//
-// End of "$Id: fl_overlay.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_overlay.cxx 5614 2007-01-18 15:25:09Z matt $".
//
diff --git a/src/fl_overlay_visual.cxx b/src/fl_overlay_visual.cxx
index 6749ce3..d0a1ae7 100644
--- a/src/fl_overlay_visual.cxx
+++ b/src/fl_overlay_visual.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_overlay_visual.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_overlay_visual.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// X overlay support for the Fast Light Tool Kit (FLTK).
//
@@ -101,5 +101,5 @@ XVisualInfo *fl_find_overlay_visual() {
#endif
//
-// End of "$Id: fl_overlay_visual.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_overlay_visual.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_plastic.cxx b/src/fl_plastic.cxx
index b18641b..fe25318 100644
--- a/src/fl_plastic.cxx
+++ b/src/fl_plastic.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_plastic.cxx 4646 2005-11-07 11:16:24Z matt $"
+// "$Id: fl_plastic.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// "Plastic" drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -377,5 +377,5 @@ Fl_Boxtype fl_define_FL_PLASTIC_UP_BOX() {
//
-// End of "$Id: fl_plastic.cxx 4646 2005-11-07 11:16:24Z matt $".
+// End of "$Id: fl_plastic.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_read_image.cxx b/src/fl_read_image.cxx
index 6d37c64..f58ebe9 100644
--- a/src/fl_read_image.cxx
+++ b/src/fl_read_image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_read_image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_read_image.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// X11 image reading routines for the Fast Light Tool Kit (FLTK).
//
@@ -421,5 +421,5 @@ fl_read_image(uchar *p, // I - Pixel buffer or NULL to allocate
#endif
//
-// End of "$Id: fl_read_image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_read_image.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_read_image_mac.cxx b/src/fl_read_image_mac.cxx
index 7557f09..1c015aa 100644
--- a/src/fl_read_image_mac.cxx
+++ b/src/fl_read_image_mac.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: fl_read_image_mac.cxx 4393 2005-06-02 07:01:25Z matt $"
+// "$Id: fl_read_image_mac.cxx 5614 2007-01-18 15:25:09Z matt $"
//
// WIN32 image reading routines for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -43,7 +43,7 @@ fl_read_image(uchar *p, // I - Pixel buffer or NULL to allocate
int alpha) { // I - Alpha value for image (0 for none)
Rect src, // Source rectangle
dst; // Destination rectangle
- Fl_Offscreen osbuffer; // Temporary off-screen buffer for copy
+ GWorldPtr osbuffer; // Temporary off-screen buffer for copy
GrafPtr srcPort; // Source port
RGBColor rgb; // RGB colors for copy mask...
PixMapHandle pm; // Pixmap handle for off-screen buffer
@@ -54,12 +54,6 @@ fl_read_image(uchar *p, // I - Pixel buffer or NULL to allocate
int d; // Depth of image
int rowBytes; // Number of bytes per row...
-
- // Get an off-screen buffer for copying the image...
- osbuffer = fl_create_offscreen(w,h);
-
- if (!osbuffer) return 0;
-
// Set the source and destination rectangles...
src.top = y;
src.left = x;
@@ -71,6 +65,14 @@ fl_read_image(uchar *p, // I - Pixel buffer or NULL to allocate
dst.bottom = h;
dst.right = w;
+ // Get an off-screen buffer for copying the image...
+ QDErr err = NewGWorld(&osbuffer, 0, &dst, 0L, 0L, 0);
+ if (!osbuffer) return 0;
+ if (err!=noErr) {
+ DisposeGWorld(osbuffer);
+ return 0;
+ }
+
// Get the source port...
GetPort(&srcPort);
@@ -108,15 +110,22 @@ fl_read_image(uchar *p, // I - Pixel buffer or NULL to allocate
// Copy the image from the off-screen buffer to the memory buffer.
for (idy = 0, pdst = p; idy < h; idy ++)
+#ifdef __i386__
+ for (idx = 0, psrc = base + idy * rowBytes; idx < w; idx ++, psrc += 4, pdst += d) {
+ pdst[0] = psrc[2];
+ pdst[1] = psrc[1];
+ pdst[2] = psrc[0];
+ }
+#else
for (idx = 0, psrc = base + idy * rowBytes + 1; idx < w; idx ++, psrc += 4, pdst += d) {
pdst[0] = psrc[0];
pdst[1] = psrc[1];
pdst[2] = psrc[2];
}
-
+#endif // __i386__
// Unlock and delete the off-screen buffer, then return...
UnlockPixels(pm);
- fl_delete_offscreen(osbuffer);
+ DisposeGWorld(osbuffer);
SetPort(srcPort);
return p;
@@ -124,5 +133,5 @@ fl_read_image(uchar *p, // I - Pixel buffer or NULL to allocate
//
-// End of "$Id: fl_read_image_mac.cxx 4393 2005-06-02 07:01:25Z matt $".
+// End of "$Id: fl_read_image_mac.cxx 5614 2007-01-18 15:25:09Z matt $".
//
diff --git a/src/fl_read_image_win32.cxx b/src/fl_read_image_win32.cxx
index 3a5f688..8d651f4 100644
--- a/src/fl_read_image_win32.cxx
+++ b/src/fl_read_image_win32.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_read_image_win32.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_read_image_win32.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// WIN32 image reading routines for the Fast Light Tool Kit (FLTK).
//
@@ -55,11 +55,11 @@ fl_read_image(uchar *p, // I - Pixel buffer or NULL to allocate
for (x = 0; x < w; x ++, ptr += d) {
COLORREF c = GetPixel(fl_gc, X + x, Y + y);
- ptr[0] = c;
+ ptr[0] = (uchar)c;
c >>= 8;
- ptr[1] = c;
+ ptr[1] = (uchar)c;
c >>= 8;
- ptr[2] = c;
+ ptr[2] = (uchar)c;
}
}
@@ -68,5 +68,5 @@ fl_read_image(uchar *p, // I - Pixel buffer or NULL to allocate
//
-// End of "$Id: fl_read_image_win32.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_read_image_win32.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_rect.cxx b/src/fl_rect.cxx
index 0c22b4c..501cdec 100644
--- a/src/fl_rect.cxx
+++ b/src/fl_rect.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_rect.cxx 4711 2005-12-14 13:51:51Z matt $"
+// "$Id: fl_rect.cxx 5692 2007-02-12 16:41:41Z matt $"
//
// Rectangle drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -483,7 +483,7 @@ void fl_restore_clip() {
}
# endif
#elif defined(__APPLE_QUARTZ__)
- if ( fl_window )
+ if ( fl_window ) // clipping for a true window
{
GrafPtr port = GetWindowPort( fl_window );
if ( port ) {
@@ -497,6 +497,16 @@ void fl_restore_clip() {
Fl_X::q_fill_context();
DisposeRgn( portClip );
}
+ } else if (fl_gc) { // clipping for an offscreen drawing world (CGBitmap)
+ Rect portRect;
+ portRect.top = 0;
+ portRect.left = 0;
+ portRect.bottom = CGBitmapContextGetHeight(fl_gc);
+ portRect.right = CGBitmapContextGetWidth(fl_gc);
+ Fl_X::q_clear_clipping();
+ if (r)
+ ClipCGContextToRegion(fl_gc, &portRect, r);
+ Fl_X::q_fill_context();
}
#else
if (r) XSetRegion(fl_display, fl_gc, r);
@@ -671,5 +681,5 @@ int fl_clip_box(int x, int y, int w, int h, int& X, int& Y, int& W, int& H){
}
//
-// End of "$Id: fl_rect.cxx 4711 2005-12-14 13:51:51Z matt $".
+// End of "$Id: fl_rect.cxx 5692 2007-02-12 16:41:41Z matt $".
//
diff --git a/src/fl_round_box.cxx b/src/fl_round_box.cxx
index b2d494e..b02fe6f 100644
--- a/src/fl_round_box.cxx
+++ b/src/fl_round_box.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_round_box.cxx 4551 2005-08-29 21:16:38Z matt $"
+// "$Id: fl_round_box.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Round box drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -118,5 +118,5 @@ Fl_Boxtype fl_define_FL_ROUND_UP_BOX() {
}
//
-// End of "$Id: fl_round_box.cxx 4551 2005-08-29 21:16:38Z matt $".
+// End of "$Id: fl_round_box.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_rounded_box.cxx b/src/fl_rounded_box.cxx
index c79f138..5e110f7 100644
--- a/src/fl_rounded_box.cxx
+++ b/src/fl_rounded_box.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_rounded_box.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_rounded_box.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Rounded box drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -95,5 +95,5 @@ Fl_Boxtype fl_define_FL_RSHADOW_BOX() {
}
//
-// End of "$Id: fl_rounded_box.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_rounded_box.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_scroll_area.cxx b/src/fl_scroll_area.cxx
index 79a7763..6196869 100644
--- a/src/fl_scroll_area.cxx
+++ b/src/fl_scroll_area.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_scroll_area.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_scroll_area.cxx 5714 2007-02-25 00:00:49Z matt $"
//
// Scrolling routines for the Fast Light Tool Kit (FLTK).
//
@@ -32,6 +32,7 @@
#include <config.h>
#include <FL/Fl.H>
#include <FL/x.H>
+#include <FL/fl_draw.H>
// scroll a rectangle and redraw the newly exposed portions:
void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
@@ -72,39 +73,59 @@ void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
clip_h = H-src_h;
}
#ifdef WIN32
- BitBlt(fl_gc, dest_x, dest_y, src_w, src_h, fl_gc, src_x, src_y,SRCCOPY);
- // NYI: need to redraw areas that the source of BitBlt was bad due to
- // overlapped windows, probably similar to X version:
- // MRS: basic code needs to redraw parts that scrolled from off-screen...
- int temp, limit;
- int wx, wy;
-
- // Compute the X position of the current window;
- // this only works when scrolling in response to
- // a user event; Fl_Window::x/y_root() do not work
- // on WIN32...
- wx = Fl::event_x_root() - Fl::event_x();
- wy = Fl::event_y_root() - Fl::event_y();
+ typedef int (WINAPI* fl_GetRandomRgn_func)(HDC, HRGN, INT);
+ static fl_GetRandomRgn_func fl_GetRandomRgn = 0L;
+ static char first_time = 1;
- temp = wx + src_x;
- if (temp < Fl::x()) {
- draw_area(data, dest_x, dest_y, Fl::x() - temp, src_h);
- }
- temp = wx + src_x + src_w;
- limit = Fl::x() + Fl::w();
- if (temp > limit) {
- draw_area(data, dest_x + src_w - temp + limit, dest_y, temp - limit, src_h);
+ // We will have to do some Region magic now, so let's see if the
+ // required function is available (and it should be staring w/Win95)
+ if (first_time) {
+ HMODULE hMod = GetModuleHandle("GDI32.DLL");
+ if (hMod) {
+ fl_GetRandomRgn = (fl_GetRandomRgn_func)GetProcAddress(hMod, "GetRandomRgn");
+ }
+ first_time = 0;
}
- temp = wy + src_y;
- if (temp < Fl::y()) {
- draw_area(data, dest_x, dest_y, src_w, Fl::y() - temp);
- }
- temp = wy + src_y + src_h;
- limit = Fl::y() + Fl::h();
- if (temp > limit) {
- draw_area(data, dest_x, dest_y + src_h - temp + limit, src_w, temp - limit);
+ // Now check if the source scrolling area is fully visible.
+ // If it is, we will do a quick scroll and just update the
+ // newly exposed area. If it is not, we go the safe route and
+ // re-render the full area instead.
+ // Note 1: we could go and find the areas that are actually
+ // obscured and recursively call fl_scroll for the newly found
+ // rectangles. However, this practice would rely on the
+ // elements of the undocumented Rgn structure.
+ // Note 2: although this method should take care of most
+ // multi-screen solutions, it will not solve issues scrolling
+ // from a different resolution screen onto another.
+ // Note 3: this has been tested with image maps, too.
+ if (fl_GetRandomRgn) {
+ // get the DC region minus all overlapping windows
+ HRGN sys_rgn = CreateRectRgn(0, 0, 0, 0);
+ fl_GetRandomRgn(fl_gc, sys_rgn, 4);
+ // now get the source scrolling rectangle
+ HRGN src_rgn = CreateRectRgn(src_x, src_y, src_x+src_w, src_y+src_h);
+ POINT offset = { 0, 0 };
+ if (GetDCOrgEx(fl_gc, &offset)) {
+ OffsetRgn(src_rgn, offset.x, offset.y);
+ }
+ // see if all source pixels are available in the system region
+ // Note: we could be a bit more merciful and subtract the
+ // scroll destination region as well.
+ HRGN dst_rgn = CreateRectRgn(0, 0, 0, 0);
+ int r = CombineRgn(dst_rgn, src_rgn, sys_rgn, RGN_DIFF);
+ DeleteObject(dst_rgn);
+ DeleteObject(src_rgn);
+ DeleteObject(sys_rgn);
+ if (r!=NULLREGION) {
+ draw_area(data,X,Y,W,H);
+ return;
+ }
}
+
+ // Great, we can do an accelerated scroll insteasd of re-rendering
+ BitBlt(fl_gc, dest_x, dest_y, src_w, src_h, fl_gc, src_x, src_y,SRCCOPY);
+
#elif defined(__APPLE_QD__)
Rect src = { src_y, src_x, src_y+src_h, src_x+src_w };
Rect dst = { dest_y, dest_x, dest_y+src_h, dest_x+src_w };
@@ -114,6 +135,9 @@ void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
GetPortBitMapForCopyBits( GetWindowPort(fl_window) ), &src, &dst, srcCopy, 0L);
#elif defined(__APPLE_QUARTZ__)
// warning: there does not seem to be an equivalent to this function in Quartz
+ // ScrollWindowRect is a QuickDraw function and won't work here.
+ // Since on OS X all windows are fully double buffered, we need not
+ // worry about offscreen or obscured areas
Rect src = { src_y, src_x, src_y+src_h, src_x+src_w };
Rect dst = { dest_y, dest_x, dest_y+src_h, dest_x+src_w };
static RGBColor bg = { 0xffff, 0xffff, 0xffff }; RGBBackColor( &bg );
@@ -138,5 +162,5 @@ void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
}
//
-// End of "$Id: fl_scroll_area.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_scroll_area.cxx 5714 2007-02-25 00:00:49Z matt $".
//
diff --git a/src/fl_set_font.cxx b/src/fl_set_font.cxx
index 45a1c57..803d01a 100644
--- a/src/fl_set_font.cxx
+++ b/src/fl_set_font.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_set_font.cxx 4424 2005-07-16 08:13:20Z matt $"
+// "$Id: fl_set_font.cxx 5420 2006-09-05 11:16:15Z matt $"
//
// Font utilities for the Fast Light Tool Kit (FLTK).
//
@@ -30,6 +30,7 @@
#include <FL/Fl.H>
#include <FL/x.H>
+#include <FL/fl_draw.H>
#include "flstring.h"
#include "Fl_Font.H"
#include <stdlib.h>
@@ -75,6 +76,7 @@ void Fl::set_font(Fl_Font fnum, const char* name) {
s->xlist = 0;
#endif
s->first = 0;
+ fl_font(-1, 0);
}
void Fl::set_font(Fl_Font fnum, Fl_Font from) {
@@ -84,5 +86,5 @@ void Fl::set_font(Fl_Font fnum, Fl_Font from) {
const char* Fl::get_font(Fl_Font fnum) {return fl_fonts[fnum].name;}
//
-// End of "$Id: fl_set_font.cxx 4424 2005-07-16 08:13:20Z matt $".
+// End of "$Id: fl_set_font.cxx 5420 2006-09-05 11:16:15Z matt $".
//
diff --git a/src/fl_set_fonts.cxx b/src/fl_set_fonts.cxx
index 82e0c7c..9b528b4 100644
--- a/src/fl_set_fonts.cxx
+++ b/src/fl_set_fonts.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_set_fonts.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_set_fonts.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// More font utilities for the Fast Light Tool Kit (FLTK).
//
@@ -42,5 +42,5 @@
#endif // WIN32
//
-// End of "$Id: fl_set_fonts.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_set_fonts.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_set_fonts_mac.cxx b/src/fl_set_fonts_mac.cxx
index 19bed85..2126dd0 100644
--- a/src/fl_set_fonts_mac.cxx
+++ b/src/fl_set_fonts_mac.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_set_fonts_mac.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_set_fonts_mac.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// MacOS font utilities for the Fast Light Tool Kit (FLTK).
//
@@ -209,5 +209,5 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
}
//
-// End of "$Id: fl_set_fonts_mac.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_set_fonts_mac.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_set_fonts_win32.cxx b/src/fl_set_fonts_win32.cxx
index 19dee2a..2e5c895 100755
--- a/src/fl_set_fonts_win32.cxx
+++ b/src/fl_set_fonts_win32.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_set_fonts_win32.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_set_fonts_win32.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// WIN32 font utilities for the Fast Light Tool Kit (FLTK).
//
@@ -145,5 +145,5 @@ Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
//
-// End of "$Id: fl_set_fonts_win32.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_set_fonts_win32.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_set_fonts_x.cxx b/src/fl_set_fonts_x.cxx
index 758bfff..945de4e 100644
--- a/src/fl_set_fonts_x.cxx
+++ b/src/fl_set_fonts_x.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_set_fonts_x.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_set_fonts_x.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// X11 font utilities for the Fast Light Tool Kit (FLTK).
//
@@ -346,5 +346,5 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
}
//
-// End of "$Id: fl_set_fonts_x.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_set_fonts_x.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_set_fonts_xft.cxx b/src/fl_set_fonts_xft.cxx
index 36db168..951b7ed 100644
--- a/src/fl_set_fonts_xft.cxx
+++ b/src/fl_set_fonts_xft.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: fl_set_fonts_xft.cxx 4593 2005-10-13 14:27:19Z mike $"
+// "$Id: fl_set_fonts_xft.cxx 5505 2006-10-03 02:35:12Z mike $"
//
// More font utilities for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -183,8 +183,9 @@ STYLE_DONE:
static int fl_free_font = FL_FREE_FONT;
// Uses the fontconfig lib to construct a list of all installed fonts.
-// I tried using XftListFonts for this, but the API is tricky - and when I looked
-// at the XftList* code, it calls the Fc* functions anyway... so...
+// I tried using XftListFonts for this, but the API is tricky - and when
+// I looked at the XftList* code, it calls the Fc* functions anyway, so...
+//
// Also, for now I'm ignoring the "pattern_name" and just getting everything...
// AND I don't try and skip the fonts we've already loaded in the defaults.
// Blimey! What a hack!
@@ -205,23 +206,25 @@ Fl_Font Fl::set_fonts(const char* pattern_name)
// Make sure fontconfig is ready... is this necessary? The docs say it is
// safe to call it multiple times, so just go for it anyway!
- if (!FcInit ())
+ if (!FcInit())
{
// What to do? Just return defaults...
return FL_FREE_FONT;
}
- // Create a search pattern that will match every font name - I think this does the
- // Right Thing... but am not certain...
- // This could possibly be "enhanced" to pay attention to the requested "pattern_name"?
- fnt_pattern = FcPatternCreate ();
- fnt_obj_set = FcObjectSetBuild (FC_FAMILY, FC_STYLE, 0);
+ // Create a search pattern that will match every font name - I think this
+ // does the Right Thing, but am not certain...
+ //
+ // This could possibly be "enhanced" to pay attention to the requested
+ // "pattern_name"?
+ fnt_pattern = FcPatternCreate();
+ fnt_obj_set = FcObjectSetBuild(FC_FAMILY, FC_STYLE, (void *)0);
// Hopefully, this is a set of all the fonts...
- fnt_set = FcFontList (0, fnt_pattern, fnt_obj_set);
+ fnt_set = FcFontList(0, fnt_pattern, fnt_obj_set);
// We don't need the fnt_pattern any more, release it
- FcPatternDestroy (fnt_pattern);
+ FcPatternDestroy(fnt_pattern);
// Now, if we got any fonts, iterate through them...
if (fnt_set)
@@ -243,7 +246,7 @@ Fl_Font Fl::set_fonts(const char* pattern_name)
// Convert from fontconfig internal pattern to human readable name
// NOTE: This WILL malloc storage, so we need to free it later...
- font = FcNameUnparse (fnt_set->fonts[j]);
+ font = FcNameUnparse(fnt_set->fonts[j]);
// The returned strings look like this...
// Century Schoolbook:style=Bold Italic,fed kursiv,Fett Kursiv,...
@@ -287,7 +290,7 @@ Fl_Font Fl::set_fonts(const char* pattern_name)
}
// Release the fnt_set - we don't need it any more
- FcFontSetDestroy (fnt_set);
+ FcFontSetDestroy(fnt_set);
// Sort the list into alphabetic order
qsort(full_list, font_count, sizeof(*full_list), name_sort);
@@ -311,7 +314,7 @@ Fl_Font Fl::set_fonts(const char* pattern_name)
}
}
// Now we are done with the list, release it fully
- free (full_list);
+ free(full_list);
}
return (Fl_Font)fl_free_font;
} // ::set_fonts
@@ -335,8 +338,10 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
fl_open_display();
XftFontSet* fs = XftListFonts(fl_display, fl_screen,
- XFT_FAMILY, XftTypeString, s->name+1, 0,
- XFT_PIXEL_SIZE, 0);
+ XFT_FAMILY, XftTypeString, s->name+1,
+ (void *)0,
+ XFT_PIXEL_SIZE,
+ (void *)0);
static int* array = 0;
static int array_size = 0;
if (fs->nfont >= array_size) {
@@ -357,5 +362,5 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
}
//
-// End of "$Id: fl_set_fonts_xft.cxx 4593 2005-10-13 14:27:19Z mike $".
+// End of "$Id: fl_set_fonts_xft.cxx 5505 2006-10-03 02:35:12Z mike $".
//
diff --git a/src/fl_shadow_box.cxx b/src/fl_shadow_box.cxx
index 879ecf7..00bcc51 100644
--- a/src/fl_shadow_box.cxx
+++ b/src/fl_shadow_box.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_shadow_box.cxx 4551 2005-08-29 21:16:38Z matt $"
+// "$Id: fl_shadow_box.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Shadow box drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -52,5 +52,5 @@ Fl_Boxtype fl_define_FL_SHADOW_BOX() {
}
//
-// End of "$Id: fl_shadow_box.cxx 4551 2005-08-29 21:16:38Z matt $".
+// End of "$Id: fl_shadow_box.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_shortcut.cxx b/src/fl_shortcut.cxx
index 4b2e754..828306b 100644
--- a/src/fl_shortcut.cxx
+++ b/src/fl_shortcut.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_shortcut.cxx 4727 2005-12-30 14:11:04Z matt $"
+// "$Id: fl_shortcut.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Shortcut support routines for the Fast Light Tool Kit (FLTK).
//
@@ -55,7 +55,12 @@ int Fl::test_shortcut(int shortcut) {
if (!shortcut) return 0;
int v = shortcut & 0xffff;
- if (v > 32 && v < 0x7f || v > 0xa0 && v <= 0xff) {
+#ifdef __APPLE__
+ if (v > 32 && v < 0x7f || v >= 0x80 && v <= 0xff) {
+#else
+ // most X11 use MSWindows Latin-1 if set to Western encoding, so 0x80 to 0xa0 are defined
+ if (v > 32 && v < 0x7f || v >= 0x80 && v <= 0xff) {
+#endif
if (isupper(v)) {
shortcut |= FL_SHIFT;
}
@@ -127,7 +132,11 @@ const char * fl_shortcut_label(int shortcut) {
if (!shortcut) {*p = 0; return buf;}
// fix upper case shortcuts
int v = shortcut & 0xffff;
- if (v > 32 && v < 0x7f || v > 0xa0 && v <= 0xff) {
+#ifdef __APPLE__
+ if (v > 32 && v < 0x7f || v >= 0x80 && v <= 0xff) {
+#else
+ if (v > 32 && v < 0x7f || v >= 0xa0 && v <= 0xff) {
+#endif
if (isupper(v)) {
shortcut |= FL_SHIFT;
}
@@ -217,5 +226,5 @@ int Fl_Widget::test_shortcut() {
}
//
-// End of "$Id: fl_shortcut.cxx 4727 2005-12-30 14:11:04Z matt $".
+// End of "$Id: fl_shortcut.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_show_colormap.cxx b/src/fl_show_colormap.cxx
index 926e9e4..58d77e8 100644
--- a/src/fl_show_colormap.cxx
+++ b/src/fl_show_colormap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_show_colormap.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_show_colormap.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Colormap color selection dialog for the Fast Light Tool Kit (FLTK).
//
@@ -157,5 +157,5 @@ Fl_Color fl_show_colormap(Fl_Color oldcol) {
}
//
-// End of "$Id: fl_show_colormap.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_show_colormap.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_symbols.cxx b/src/fl_symbols.cxx
index e83eed4..e272545 100644
--- a/src/fl_symbols.cxx
+++ b/src/fl_symbols.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_symbols.cxx 4721 2005-12-19 16:52:11Z matt $"
+// "$Id: fl_symbols.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Symbol drawing code for the Fast Light Tool Kit (FLTK).
//
@@ -696,5 +696,5 @@ static void fl_init_symbols(void) {
}
//
-// End of "$Id: fl_symbols.cxx 4721 2005-12-19 16:52:11Z matt $".
+// End of "$Id: fl_symbols.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/fl_vertex.cxx b/src/fl_vertex.cxx
index 70de107..87faee2 100644
--- a/src/fl_vertex.cxx
+++ b/src/fl_vertex.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_vertex.cxx 4430 2005-07-17 12:17:50Z matt $"
+// "$Id: fl_vertex.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Portable drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -321,5 +321,5 @@ void fl_circle(double x, double y,double r) {
}
//
-// End of "$Id: fl_vertex.cxx 4430 2005-07-17 12:17:50Z matt $".
+// End of "$Id: fl_vertex.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/flstring.h b/src/flstring.h
index a504ce9..9455a7c 100644
--- a/src/flstring.h
+++ b/src/flstring.h
@@ -1,9 +1,9 @@
/*
- * "$Id: flstring.h 4660 2005-11-27 14:45:48Z mike $"
+ * "$Id: flstring.h 5701 2007-02-20 18:43:10Z mike $"
*
* Common string header file for the Fast Light Tool Kit (FLTK).
*
- * Copyright 1998-2005 by Bill Spitzak and others.
+ * Copyright 1998-2007 by Bill Spitzak and others.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -52,10 +52,12 @@
# define strcasecmp(s,t) _stricmp((s), (t))
# define strncasecmp(s,t,n) _strnicmp((s), (t), (n))
// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
-// on Windows, which is supposed to be POSIX compliant... Some of these functions
-// are also defined in ISO C99...
-# define strdup _strdup
-# define unlink _unlink
+// on Windows, which is supposed to be POSIX compliant... Some of these
+// functions are also defined in ISO C99...
+# ifndef __WATCOMC__
+# define strdup _strdup
+# define unlink _unlink
+# endif // !__WATCOMC__
# elif defined(__EMX__)
# define strcasecmp(s,t) stricmp((s), (t))
# define strncasecmp(s,t,n) strnicmp((s), (t), (n))
@@ -109,5 +111,5 @@ FL_EXPORT extern size_t fl_strlcpy(char *, const char *, size_t);
/*
- * End of "$Id: flstring.h 4660 2005-11-27 14:45:48Z mike $".
+ * End of "$Id: flstring.h 5701 2007-02-20 18:43:10Z mike $".
*/
diff --git a/src/forms_bitmap.cxx b/src/forms_bitmap.cxx
index f577d15..6b3ceba 100644
--- a/src/forms_bitmap.cxx
+++ b/src/forms_bitmap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: forms_bitmap.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: forms_bitmap.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Forms compatible bitmap function for the Fast Light Tool Kit (FLTK).
//
@@ -48,5 +48,5 @@ void Fl_FormsBitmap::draw() {
}
//
-// End of "$Id: forms_bitmap.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: forms_bitmap.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/forms_compatability.cxx b/src/forms_compatability.cxx
index 17cdc69..0de75da 100755
--- a/src/forms_compatability.cxx
+++ b/src/forms_compatability.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: forms_compatability.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: forms_compatability.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Forms compatibility functions for the Fast Light Tool Kit (FLTK).
//
@@ -207,5 +207,5 @@ char *fl_show_simple_input(const char *str1, const char *defstr) {
}
//
-// End of "$Id: forms_compatability.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: forms_compatability.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/forms_free.cxx b/src/forms_free.cxx
index 9111004..235b4b5 100644
--- a/src/forms_free.cxx
+++ b/src/forms_free.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: forms_free.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: forms_free.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Forms free widget routines for the Fast Light Tool Kit (FLTK).
//
@@ -77,5 +77,5 @@ int Fl_Free::handle(int e) {
}
//
-// End of "$Id: forms_free.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: forms_free.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/forms_fselect.cxx b/src/forms_fselect.cxx
index 8e80c95..855e719 100644
--- a/src/forms_fselect.cxx
+++ b/src/forms_fselect.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: forms_fselect.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: forms_fselect.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Forms file selection routines for the Fast Light Tool Kit (FLTK).
//
@@ -63,5 +63,5 @@ char* fl_get_pattern() {return (char *)fl_pattern;}
char* fl_get_filename() {return fl_filename;}
//
-// End of "$Id: forms_fselect.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: forms_fselect.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/forms_pixmap.cxx b/src/forms_pixmap.cxx
index f784231..4a4459d 100644
--- a/src/forms_pixmap.cxx
+++ b/src/forms_pixmap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: forms_pixmap.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: forms_pixmap.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Forms pixmap drawing routines for the Fast Light Tool Kit (FLTK).
//
@@ -48,5 +48,5 @@ void Fl_FormsPixmap::draw() {
}
//
-// End of "$Id: forms_pixmap.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: forms_pixmap.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/forms_timer.cxx b/src/forms_timer.cxx
index 5719775..9491374 100644
--- a/src/forms_timer.cxx
+++ b/src/forms_timer.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: forms_timer.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: forms_timer.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// Forms timer object for the Fast Light Tool Kit (FLTK).
//
@@ -165,5 +165,5 @@ void Fl_Timer::suspended(char d) {
}
//
-// End of "$Id: forms_timer.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: forms_timer.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/freeglut_geometry.cxx b/src/freeglut_geometry.cxx
new file mode 100644
index 0000000..a5a185f
--- /dev/null
+++ b/src/freeglut_geometry.cxx
@@ -0,0 +1,1110 @@
+/*
+ * freeglut_geometry.c
+ *
+ * Freeglut geometry rendering methods.
+ *
+ * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+ * Written by Pawel W. Olszta, <olszta@sourceforge.net>
+ * Creation date: Fri Dec 3 1999
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <FL/glut.H>
+#include <FL/math.h>
+#include <stdlib.h>
+
+/*
+ * TODO BEFORE THE STABLE RELEASE:
+ *
+ * Following functions have been contributed by Andreas Umbach.
+ *
+ * glutWireCube() -- looks OK
+ * glutSolidCube() -- OK
+ *
+ * Those functions have been implemented by John Fay.
+ *
+ * glutWireTorus() -- looks OK
+ * glutSolidTorus() -- looks OK
+ * glutWireDodecahedron() -- looks OK
+ * glutSolidDodecahedron() -- looks OK
+ * glutWireOctahedron() -- looks OK
+ * glutSolidOctahedron() -- looks OK
+ * glutWireTetrahedron() -- looks OK
+ * glutSolidTetrahedron() -- looks OK
+ * glutWireIcosahedron() -- looks OK
+ * glutSolidIcosahedron() -- looks OK
+ *
+ * The Following functions have been updated by Nigel Stewart, based
+ * on FreeGLUT 2.0.0 implementations:
+ *
+ * glutWireSphere() -- looks OK
+ * glutSolidSphere() -- looks OK
+ * glutWireCone() -- looks OK
+ * glutSolidCone() -- looks OK
+ */
+
+
+/* -- INTERFACE FUNCTIONS -------------------------------------------------- */
+
+/*
+ * Draws a wireframed cube. Code contributed by Andreas Umbach <marvin@dataway.ch>
+ */
+void glutWireCube( GLdouble dSize )
+{
+ double size = dSize * 0.5;
+
+# define V(a,b,c) glVertex3d( a size, b size, c size );
+# define N(a,b,c) glNormal3d( a, b, c );
+
+ /* PWO: I dared to convert the code to use macros... */
+ glBegin( GL_LINE_LOOP ); N( 1.0, 0.0, 0.0); V(+,-,+); V(+,-,-); V(+,+,-); V(+,+,+); glEnd();
+ glBegin( GL_LINE_LOOP ); N( 0.0, 1.0, 0.0); V(+,+,+); V(+,+,-); V(-,+,-); V(-,+,+); glEnd();
+ glBegin( GL_LINE_LOOP ); N( 0.0, 0.0, 1.0); V(+,+,+); V(-,+,+); V(-,-,+); V(+,-,+); glEnd();
+ glBegin( GL_LINE_LOOP ); N(-1.0, 0.0, 0.0); V(-,-,+); V(-,+,+); V(-,+,-); V(-,-,-); glEnd();
+ glBegin( GL_LINE_LOOP ); N( 0.0,-1.0, 0.0); V(-,-,+); V(-,-,-); V(+,-,-); V(+,-,+); glEnd();
+ glBegin( GL_LINE_LOOP ); N( 0.0, 0.0,-1.0); V(-,-,-); V(-,+,-); V(+,+,-); V(+,-,-); glEnd();
+
+# undef V
+# undef N
+}
+
+/*
+ * Draws a solid cube. Code contributed by Andreas Umbach <marvin@dataway.ch>
+ */
+void glutSolidCube( GLdouble dSize )
+{
+ double size = dSize * 0.5;
+
+# define V(a,b,c) glVertex3d( a size, b size, c size );
+# define N(a,b,c) glNormal3d( a, b, c );
+
+ /* PWO: Again, I dared to convert the code to use macros... */
+ glBegin( GL_QUADS );
+ N( 1.0, 0.0, 0.0); V(+,-,+); V(+,-,-); V(+,+,-); V(+,+,+);
+ N( 0.0, 1.0, 0.0); V(+,+,+); V(+,+,-); V(-,+,-); V(-,+,+);
+ N( 0.0, 0.0, 1.0); V(+,+,+); V(-,+,+); V(-,-,+); V(+,-,+);
+ N(-1.0, 0.0, 0.0); V(-,-,+); V(-,+,+); V(-,+,-); V(-,-,-);
+ N( 0.0,-1.0, 0.0); V(-,-,+); V(-,-,-); V(+,-,-); V(+,-,+);
+ N( 0.0, 0.0,-1.0); V(-,-,-); V(-,+,-); V(+,+,-); V(+,-,-);
+ glEnd();
+
+# undef V
+# undef N
+}
+
+/*
+ * Compute lookup table of cos and sin values forming a cirle
+ *
+ * Notes:
+ * It is the responsibility of the caller to free these tables
+ * The size of the table is (n+1) to form a connected loop
+ * The last entry is exactly the same as the first
+ * The sign of n can be flipped to get the reverse loop
+ */
+
+static void fghCircleTable(double **sint,double **cost,const int n)
+{
+ int i;
+
+ /* Table size, the sign of n flips the circle direction */
+
+ const int size = abs(n);
+
+ /* Determine the angle between samples */
+
+ const double angle = 2*M_PI/(double)( ( n == 0 ) ? 1 : n );
+
+ /* Allocate memory for n samples, plus duplicate of first entry at the end */
+
+ *sint = (double *) calloc(sizeof(double), size+1);
+ *cost = (double *) calloc(sizeof(double), size+1);
+
+ /* Bail out if memory allocation fails, fgError never returns */
+
+ if (!(*sint) || !(*cost))
+ {
+ if (*sint) free(*sint);
+ if (*cost) free(*cost);
+ return;
+ }
+
+ /* Compute cos and sin around the circle */
+
+ (*sint)[0] = 0.0;
+ (*cost)[0] = 1.0;
+
+ for (i=1; i<size; i++)
+ {
+ (*sint)[i] = sin(angle*i);
+ (*cost)[i] = cos(angle*i);
+ }
+
+ /* Last sample is duplicate of the first */
+
+ (*sint)[size] = (*sint)[0];
+ (*cost)[size] = (*cost)[0];
+}
+
+/*
+ * Draws a solid sphere
+ */
+void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks)
+{
+ int i,j;
+
+ /* Adjust z and radius as stacks are drawn. */
+
+ double z0,z1;
+ double r0,r1;
+
+ /* Pre-computed circle */
+
+ double *sint1,*cost1;
+ double *sint2,*cost2;
+
+ fghCircleTable(&sint1,&cost1,-slices);
+ fghCircleTable(&sint2,&cost2,stacks*2);
+
+ /* The top stack is covered with a triangle fan */
+
+ z0 = 1.0;
+ z1 = cost2[(stacks>0)?1:0];
+ r0 = 0.0;
+ r1 = sint2[(stacks>0)?1:0];
+
+ glBegin(GL_TRIANGLE_FAN);
+
+ glNormal3d(0,0,1);
+ glVertex3d(0,0,radius);
+
+ for (j=slices; j>=0; j--)
+ {
+ glNormal3d(cost1[j]*r1, sint1[j]*r1, z1 );
+ glVertex3d(cost1[j]*r1*radius, sint1[j]*r1*radius, z1*radius);
+ }
+
+ glEnd();
+
+ /* Cover each stack with a quad strip, except the top and bottom stacks */
+
+ for( i=1; i<stacks-1; i++ )
+ {
+ z0 = z1; z1 = cost2[i+1];
+ r0 = r1; r1 = sint2[i+1];
+
+ glBegin(GL_QUAD_STRIP);
+
+ for(j=0; j<=slices; j++)
+ {
+ glNormal3d(cost1[j]*r1, sint1[j]*r1, z1 );
+ glVertex3d(cost1[j]*r1*radius, sint1[j]*r1*radius, z1*radius);
+ glNormal3d(cost1[j]*r0, sint1[j]*r0, z0 );
+ glVertex3d(cost1[j]*r0*radius, sint1[j]*r0*radius, z0*radius);
+ }
+
+ glEnd();
+ }
+
+ /* The bottom stack is covered with a triangle fan */
+
+ z0 = z1;
+ r0 = r1;
+
+ glBegin(GL_TRIANGLE_FAN);
+
+ glNormal3d(0,0,-1);
+ glVertex3d(0,0,-radius);
+
+ for (j=0; j<=slices; j++)
+ {
+ glNormal3d(cost1[j]*r0, sint1[j]*r0, z0 );
+ glVertex3d(cost1[j]*r0*radius, sint1[j]*r0*radius, z0*radius);
+ }
+
+ glEnd();
+
+ /* Release sin and cos tables */
+
+ free(sint1);
+ free(cost1);
+ free(sint2);
+ free(cost2);
+}
+
+/*
+ * Draws a wire sphere
+ */
+void glutWireSphere(GLdouble radius, GLint slices, GLint stacks)
+{
+ int i,j;
+
+ /* Adjust z and radius as stacks and slices are drawn. */
+
+ double r;
+ double x,y,z;
+
+ /* Pre-computed circle */
+
+ double *sint1,*cost1;
+ double *sint2,*cost2;
+
+ fghCircleTable(&sint1,&cost1,-slices );
+ fghCircleTable(&sint2,&cost2, stacks*2);
+
+ /* Draw a line loop for each stack */
+
+ for (i=1; i<stacks; i++)
+ {
+ z = cost2[i];
+ r = sint2[i];
+
+ glBegin(GL_LINE_LOOP);
+
+ for(j=0; j<=slices; j++)
+ {
+ x = cost1[j];
+ y = sint1[j];
+
+ glNormal3d(x,y,z);
+ glVertex3d(x*r*radius,y*r*radius,z*radius);
+ }
+
+ glEnd();
+ }
+
+ /* Draw a line loop for each slice */
+
+ for (i=0; i<slices; i++)
+ {
+ glBegin(GL_LINE_STRIP);
+
+ for(j=0; j<=stacks; j++)
+ {
+ x = cost1[i]*sint2[j];
+ y = sint1[i]*sint2[j];
+ z = cost2[j];
+
+ glNormal3d(x,y,z);
+ glVertex3d(x*radius,y*radius,z*radius);
+ }
+
+ glEnd();
+ }
+
+ /* Release sin and cos tables */
+
+ free(sint1);
+ free(cost1);
+ free(sint2);
+ free(cost2);
+}
+
+/*
+ * Draws a solid cone
+ */
+void glutSolidCone( GLdouble base, GLdouble height, GLint slices, GLint stacks )
+{
+ int i,j;
+
+ /* Step in z and radius as stacks are drawn. */
+
+ double z0,z1;
+ double r0,r1;
+
+ const double zStep = height / ( ( stacks > 0 ) ? stacks : 1 );
+ const double rStep = base / ( ( stacks > 0 ) ? stacks : 1 );
+
+ /* Scaling factors for vertex normals */
+
+ const double cosn = ( height / sqrt ( height * height + base * base ));
+ const double sinn = ( base / sqrt ( height * height + base * base ));
+
+ /* Pre-computed circle */
+
+ double *sint,*cost;
+
+ fghCircleTable(&sint,&cost,-slices);
+
+ /* Cover the circular base with a triangle fan... */
+
+ z0 = 0.0;
+ z1 = zStep;
+
+ r0 = base;
+ r1 = r0 - rStep;
+
+ glBegin(GL_TRIANGLE_FAN);
+
+ glNormal3d(0.0,0.0,-1.0);
+ glVertex3d(0.0,0.0, z0 );
+
+ for (j=0; j<=slices; j++)
+ glVertex3d(cost[j]*r0, sint[j]*r0, z0);
+
+ glEnd();
+
+ /* Cover each stack with a quad strip, except the top stack */
+
+ for( i=0; i<stacks-1; i++ )
+ {
+ glBegin(GL_QUAD_STRIP);
+
+ for(j=0; j<=slices; j++)
+ {
+ glNormal3d(cost[j]*sinn, sint[j]*sinn, cosn);
+ glVertex3d(cost[j]*r0, sint[j]*r0, z0 );
+ glVertex3d(cost[j]*r1, sint[j]*r1, z1 );
+ }
+
+ z0 = z1; z1 += zStep;
+ r0 = r1; r1 -= rStep;
+
+ glEnd();
+ }
+
+ /* The top stack is covered with individual triangles */
+
+ glBegin(GL_TRIANGLES);
+
+ glNormal3d(cost[0]*sinn, sint[0]*sinn, cosn);
+
+ for (j=0; j<slices; j++)
+ {
+ glVertex3d(cost[j+0]*r0, sint[j+0]*r0, z0 );
+ glVertex3d(0, 0, height);
+ glNormal3d(cost[j+1]*sinn, sint[j+1]*sinn, cosn );
+ glVertex3d(cost[j+1]*r0, sint[j+1]*r0, z0 );
+ }
+
+ glEnd();
+
+ /* Release sin and cos tables */
+
+ free(sint);
+ free(cost);
+}
+
+/*
+ * Draws a wire cone
+ */
+void glutWireCone( GLdouble base, GLdouble height, GLint slices, GLint stacks)
+{
+ int i,j;
+
+ /* Step in z and radius as stacks are drawn. */
+
+ double z = 0.0;
+ double r = base;
+
+ const double zStep = height / ( ( stacks > 0 ) ? stacks : 1 );
+ const double rStep = base / ( ( stacks > 0 ) ? stacks : 1 );
+
+ /* Scaling factors for vertex normals */
+
+ const double cosn = ( height / sqrt ( height * height + base * base ));
+ const double sinn = ( base / sqrt ( height * height + base * base ));
+
+ /* Pre-computed circle */
+
+ double *sint,*cost;
+
+ fghCircleTable(&sint,&cost,-slices);
+
+ /* Draw the stacks... */
+
+ for (i=0; i<stacks; i++)
+ {
+ glBegin(GL_LINE_LOOP);
+
+ for( j=0; j<slices; j++ )
+ {
+ glNormal3d(cost[j]*sinn, sint[j]*sinn, cosn);
+ glVertex3d(cost[j]*r, sint[j]*r, z );
+ }
+
+ glEnd();
+
+ z += zStep;
+ r -= rStep;
+ }
+
+ /* Draw the slices */
+
+ r = base;
+
+ glBegin(GL_LINES);
+
+ for (j=0; j<slices; j++)
+ {
+ glNormal3d(cost[j]*sinn, sint[j]*sinn, cosn );
+ glVertex3d(cost[j]*r, sint[j]*r, 0.0 );
+ glVertex3d(0.0, 0.0, height);
+ }
+
+ glEnd();
+
+ /* Release sin and cos tables */
+
+ free(sint);
+ free(cost);
+}
+
+
+/*
+ * Draws a solid cylinder
+ */
+void glutSolidCylinder(GLdouble radius, GLdouble height, GLint slices, GLint stacks)
+{
+ int i,j;
+
+ /* Step in z and radius as stacks are drawn. */
+
+ double z0,z1;
+ const double zStep = height / ( ( stacks > 0 ) ? stacks : 1 );
+
+ /* Pre-computed circle */
+
+ double *sint,*cost;
+
+ fghCircleTable(&sint,&cost,-slices);
+
+ /* Cover the base and top */
+
+ glBegin(GL_TRIANGLE_FAN);
+ glNormal3d(0.0, 0.0, -1.0 );
+ glVertex3d(0.0, 0.0, 0.0 );
+ for (j=0; j<=slices; j++)
+ glVertex3d(cost[j]*radius, sint[j]*radius, 0.0);
+ glEnd();
+
+ glBegin(GL_TRIANGLE_FAN);
+ glNormal3d(0.0, 0.0, 1.0 );
+ glVertex3d(0.0, 0.0, height);
+ for (j=slices; j>=0; j--)
+ glVertex3d(cost[j]*radius, sint[j]*radius, height);
+ glEnd();
+
+ /* Do the stacks */
+
+ z0 = 0.0;
+ z1 = zStep;
+
+ for (i=1; i<=stacks; i++)
+ {
+ if (i==stacks)
+ z1 = height;
+
+ glBegin(GL_QUAD_STRIP);
+ for (j=0; j<=slices; j++ )
+ {
+ glNormal3d(cost[j], sint[j], 0.0 );
+ glVertex3d(cost[j]*radius, sint[j]*radius, z0 );
+ glVertex3d(cost[j]*radius, sint[j]*radius, z1 );
+ }
+ glEnd();
+
+ z0 = z1; z1 += zStep;
+ }
+
+ /* Release sin and cos tables */
+
+ free(sint);
+ free(cost);
+}
+
+/*
+ * Draws a wire cylinder
+ */
+void glutWireCylinder(GLdouble radius, GLdouble height, GLint slices, GLint stacks)
+{
+ int i,j;
+
+ /* Step in z and radius as stacks are drawn. */
+
+ double z = 0.0;
+ const double zStep = height / ( ( stacks > 0 ) ? stacks : 1 );
+
+ /* Pre-computed circle */
+
+ double *sint,*cost;
+
+ fghCircleTable(&sint,&cost,-slices);
+
+ /* Draw the stacks... */
+
+ for (i=0; i<=stacks; i++)
+ {
+ if (i==stacks)
+ z = height;
+
+ glBegin(GL_LINE_LOOP);
+
+ for( j=0; j<slices; j++ )
+ {
+ glNormal3d(cost[j], sint[j], 0.0);
+ glVertex3d(cost[j]*radius, sint[j]*radius, z );
+ }
+
+ glEnd();
+
+ z += zStep;
+ }
+
+ /* Draw the slices */
+
+ glBegin(GL_LINES);
+
+ for (j=0; j<slices; j++)
+ {
+ glNormal3d(cost[j], sint[j], 0.0 );
+ glVertex3d(cost[j]*radius, sint[j]*radius, 0.0 );
+ glVertex3d(cost[j]*radius, sint[j]*radius, height);
+ }
+
+ glEnd();
+
+ /* Release sin and cos tables */
+
+ free(sint);
+ free(cost);
+}
+
+/*
+ * Draws a wire torus
+ */
+void glutWireTorus( GLdouble dInnerRadius, GLdouble dOuterRadius, GLint nSides, GLint nRings )
+{
+ double iradius = dInnerRadius, oradius = dOuterRadius, phi, psi, dpsi, dphi;
+ double *vertex, *normal;
+ int i, j;
+ double spsi, cpsi, sphi, cphi ;
+
+ if ( nSides < 1 ) nSides = 1;
+ if ( nRings < 1 ) nRings = 1;
+
+ /* Allocate the vertices array */
+ vertex = (double *)calloc( sizeof(double), 3 * nSides * nRings );
+ normal = (double *)calloc( sizeof(double), 3 * nSides * nRings );
+
+ glPushMatrix();
+
+ dpsi = 2.0 * M_PI / (double)nRings ;
+ dphi = -2.0 * M_PI / (double)nSides ;
+ psi = 0.0;
+
+ for( j=0; j<nRings; j++ )
+ {
+ cpsi = cos ( psi ) ;
+ spsi = sin ( psi ) ;
+ phi = 0.0;
+
+ for( i=0; i<nSides; i++ )
+ {
+ int offset = 3 * ( j * nSides + i ) ;
+ cphi = cos ( phi ) ;
+ sphi = sin ( phi ) ;
+ *(vertex + offset + 0) = cpsi * ( oradius + cphi * iradius ) ;
+ *(vertex + offset + 1) = spsi * ( oradius + cphi * iradius ) ;
+ *(vertex + offset + 2) = sphi * iradius ;
+ *(normal + offset + 0) = cpsi * cphi ;
+ *(normal + offset + 1) = spsi * cphi ;
+ *(normal + offset + 2) = sphi ;
+ phi += dphi;
+ }
+
+ psi += dpsi;
+ }
+
+ for( i=0; i<nSides; i++ )
+ {
+ glBegin( GL_LINE_LOOP );
+
+ for( j=0; j<nRings; j++ )
+ {
+ int offset = 3 * ( j * nSides + i ) ;
+ glNormal3dv( normal + offset );
+ glVertex3dv( vertex + offset );
+ }
+
+ glEnd();
+ }
+
+ for( j=0; j<nRings; j++ )
+ {
+ glBegin(GL_LINE_LOOP);
+
+ for( i=0; i<nSides; i++ )
+ {
+ int offset = 3 * ( j * nSides + i ) ;
+ glNormal3dv( normal + offset );
+ glVertex3dv( vertex + offset );
+ }
+
+ glEnd();
+ }
+
+ free ( vertex ) ;
+ free ( normal ) ;
+ glPopMatrix();
+}
+
+/*
+ * Draws a solid torus
+ */
+void glutSolidTorus( GLdouble dInnerRadius, GLdouble dOuterRadius, GLint nSides, GLint nRings )
+{
+ double iradius = dInnerRadius, oradius = dOuterRadius, phi, psi, dpsi, dphi;
+ double *vertex, *normal;
+ int i, j;
+ double spsi, cpsi, sphi, cphi ;
+
+ if ( nSides < 1 ) nSides = 1;
+ if ( nRings < 1 ) nRings = 1;
+
+ /* Increment the number of sides and rings to allow for one more point than surface */
+ nSides ++ ;
+ nRings ++ ;
+
+ /* Allocate the vertices array */
+ vertex = (double *)calloc( sizeof(double), 3 * nSides * nRings );
+ normal = (double *)calloc( sizeof(double), 3 * nSides * nRings );
+
+ glPushMatrix();
+
+ dpsi = 2.0 * M_PI / (double)(nRings - 1) ;
+ dphi = -2.0 * M_PI / (double)(nSides - 1) ;
+ psi = 0.0;
+
+ for( j=0; j<nRings; j++ )
+ {
+ cpsi = cos ( psi ) ;
+ spsi = sin ( psi ) ;
+ phi = 0.0;
+
+ for( i=0; i<nSides; i++ )
+ {
+ int offset = 3 * ( j * nSides + i ) ;
+ cphi = cos ( phi ) ;
+ sphi = sin ( phi ) ;
+ *(vertex + offset + 0) = cpsi * ( oradius + cphi * iradius ) ;
+ *(vertex + offset + 1) = spsi * ( oradius + cphi * iradius ) ;
+ *(vertex + offset + 2) = sphi * iradius ;
+ *(normal + offset + 0) = cpsi * cphi ;
+ *(normal + offset + 1) = spsi * cphi ;
+ *(normal + offset + 2) = sphi ;
+ phi += dphi;
+ }
+
+ psi += dpsi;
+ }
+
+ glBegin( GL_QUADS );
+ for( i=0; i<nSides-1; i++ )
+ {
+ for( j=0; j<nRings-1; j++ )
+ {
+ int offset = 3 * ( j * nSides + i ) ;
+ glNormal3dv( normal + offset );
+ glVertex3dv( vertex + offset );
+ glNormal3dv( normal + offset + 3 );
+ glVertex3dv( vertex + offset + 3 );
+ glNormal3dv( normal + offset + 3 * nSides + 3 );
+ glVertex3dv( vertex + offset + 3 * nSides + 3 );
+ glNormal3dv( normal + offset + 3 * nSides );
+ glVertex3dv( vertex + offset + 3 * nSides );
+ }
+ }
+
+ glEnd();
+
+ free ( vertex ) ;
+ free ( normal ) ;
+ glPopMatrix();
+}
+
+/*
+ *
+ */
+void glutWireDodecahedron( void )
+{
+ /* Magic Numbers: It is possible to create a dodecahedron by attaching two pentagons to each face of
+ * of a cube. The coordinates of the points are:
+ * (+-x,0, z); (+-1, 1, 1); (0, z, x )
+ * where x = (-1 + sqrt(5))/2, z = (1 + sqrt(5))/2 or
+ * x = 0.61803398875 and z = 1.61803398875.
+ */
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( 0.0, 0.525731112119, 0.850650808354 ) ; glVertex3d ( 0.0, 1.61803398875, 0.61803398875 ) ; glVertex3d ( -1.0, 1.0, 1.0 ) ; glVertex3d ( -0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 1.0, 1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( 0.0, 0.525731112119, -0.850650808354 ) ; glVertex3d ( 0.0, 1.61803398875, -0.61803398875 ) ; glVertex3d ( 1.0, 1.0, -1.0 ) ; glVertex3d ( 0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( -0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( -1.0, 1.0, -1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( 0.0, -0.525731112119, 0.850650808354 ) ; glVertex3d ( 0.0, -1.61803398875, 0.61803398875 ) ; glVertex3d ( 1.0, -1.0, 1.0 ) ; glVertex3d ( 0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( -0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( -1.0, -1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( 0.0, -0.525731112119, -0.850650808354 ) ; glVertex3d ( 0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( -0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( 0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( 1.0, -1.0, -1.0 ) ;
+ glEnd () ;
+
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( 0.850650808354, 0.0, 0.525731112119 ) ; glVertex3d ( 0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 1.0, -1.0, 1.0 ) ; glVertex3d ( 1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( 1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( 1.0, 1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( -0.850650808354, 0.0, 0.525731112119 ) ; glVertex3d ( -0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( -1.0, 1.0, 1.0 ) ; glVertex3d ( -1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( -1.0, -1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( 0.850650808354, 0.0, -0.525731112119 ) ; glVertex3d ( 0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( 1.0, 1.0, -1.0 ) ; glVertex3d ( 1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( 1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( 1.0, -1.0, -1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( -0.850650808354, 0.0, -0.525731112119 ) ; glVertex3d ( -0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( -1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( -1.0, 1.0, -1.0 ) ;
+ glEnd () ;
+
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( 0.525731112119, 0.850650808354, 0.0 ) ; glVertex3d ( 1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( 1.0, 1.0, -1.0 ) ; glVertex3d ( 0.0, 1.61803398875, -0.61803398875 ) ; glVertex3d ( 0.0, 1.61803398875, 0.61803398875 ) ; glVertex3d ( 1.0, 1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( 0.525731112119, -0.850650808354, 0.0 ) ; glVertex3d ( 1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( 1.0, -1.0, 1.0 ) ; glVertex3d ( 0.0, -1.61803398875, 0.61803398875 ) ; glVertex3d ( 0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d ( 1.0, -1.0, -1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( -0.525731112119, 0.850650808354, 0.0 ) ; glVertex3d ( -1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( -1.0, 1.0, 1.0 ) ; glVertex3d ( 0.0, 1.61803398875, 0.61803398875 ) ; glVertex3d ( 0.0, 1.61803398875, -0.61803398875 ) ; glVertex3d ( -1.0, 1.0, -1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( -0.525731112119, -0.850650808354, 0.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( 0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d ( 0.0, -1.61803398875, 0.61803398875 ) ; glVertex3d ( -1.0, -1.0, 1.0 ) ;
+ glEnd () ;
+}
+
+/*
+ *
+ */
+void glutSolidDodecahedron( void )
+{
+ /* Magic Numbers: It is possible to create a dodecahedron by attaching two pentagons to each face of
+ * of a cube. The coordinates of the points are:
+ * (+-x,0, z); (+-1, 1, 1); (0, z, x )
+ * where x = (-1 + sqrt(5))/2, z = (1 + sqrt(5))/2 or
+ * x = 0.61803398875 and z = 1.61803398875.
+ */
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( 0.0, 0.525731112119, 0.850650808354 ) ; glVertex3d ( 0.0, 1.61803398875, 0.61803398875 ) ; glVertex3d ( -1.0, 1.0, 1.0 ) ; glVertex3d ( -0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 1.0, 1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( 0.0, 0.525731112119, -0.850650808354 ) ; glVertex3d ( 0.0, 1.61803398875, -0.61803398875 ) ; glVertex3d ( 1.0, 1.0, -1.0 ) ; glVertex3d ( 0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( -0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( -1.0, 1.0, -1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( 0.0, -0.525731112119, 0.850650808354 ) ; glVertex3d ( 0.0, -1.61803398875, 0.61803398875 ) ; glVertex3d ( 1.0, -1.0, 1.0 ) ; glVertex3d ( 0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( -0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( -1.0, -1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( 0.0, -0.525731112119, -0.850650808354 ) ; glVertex3d ( 0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( -0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( 0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( 1.0, -1.0, -1.0 ) ;
+ glEnd () ;
+
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( 0.850650808354, 0.0, 0.525731112119 ) ; glVertex3d ( 0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 1.0, -1.0, 1.0 ) ; glVertex3d ( 1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( 1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( 1.0, 1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( -0.850650808354, 0.0, 0.525731112119 ) ; glVertex3d ( -0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( -1.0, 1.0, 1.0 ) ; glVertex3d ( -1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( -1.0, -1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( 0.850650808354, 0.0, -0.525731112119 ) ; glVertex3d ( 0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( 1.0, 1.0, -1.0 ) ; glVertex3d ( 1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( 1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( 1.0, -1.0, -1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( -0.850650808354, 0.0, -0.525731112119 ) ; glVertex3d ( -0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( -1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( -1.0, 1.0, -1.0 ) ;
+ glEnd () ;
+
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( 0.525731112119, 0.850650808354, 0.0 ) ; glVertex3d ( 1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( 1.0, 1.0, -1.0 ) ; glVertex3d ( 0.0, 1.61803398875, -0.61803398875 ) ; glVertex3d ( 0.0, 1.61803398875, 0.61803398875 ) ; glVertex3d ( 1.0, 1.0, 1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( 0.525731112119, -0.850650808354, 0.0 ) ; glVertex3d ( 1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( 1.0, -1.0, 1.0 ) ; glVertex3d ( 0.0, -1.61803398875, 0.61803398875 ) ; glVertex3d ( 0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d ( 1.0, -1.0, -1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( -0.525731112119, 0.850650808354, 0.0 ) ; glVertex3d ( -1.61803398875, 0.61803398875, 0.0 ) ; glVertex3d ( -1.0, 1.0, 1.0 ) ; glVertex3d ( 0.0, 1.61803398875, 0.61803398875 ) ; glVertex3d ( 0.0, 1.61803398875, -0.61803398875 ) ; glVertex3d ( -1.0, 1.0, -1.0 ) ;
+ glEnd () ;
+ glBegin ( GL_POLYGON ) ;
+ glNormal3d ( -0.525731112119, -0.850650808354, 0.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( 0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d ( 0.0, -1.61803398875, 0.61803398875 ) ; glVertex3d ( -1.0, -1.0, 1.0 ) ;
+ glEnd () ;
+}
+
+/*
+ *
+ */
+void glutWireOctahedron( void )
+{
+#define RADIUS 1.0f
+ glBegin( GL_LINE_LOOP );
+ glNormal3d( 0.577350269189, 0.577350269189, 0.577350269189); glVertex3d( RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, RADIUS, 0.0 ); glVertex3d( 0.0, 0.0, RADIUS );
+ glNormal3d( 0.577350269189, 0.577350269189,-0.577350269189); glVertex3d( RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, 0.0,-RADIUS ); glVertex3d( 0.0, RADIUS, 0.0 );
+ glNormal3d( 0.577350269189,-0.577350269189, 0.577350269189); glVertex3d( RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, 0.0, RADIUS ); glVertex3d( 0.0,-RADIUS, 0.0 );
+ glNormal3d( 0.577350269189,-0.577350269189,-0.577350269189); glVertex3d( RADIUS, 0.0, 0.0 ); glVertex3d( 0.0,-RADIUS, 0.0 ); glVertex3d( 0.0, 0.0,-RADIUS );
+ glNormal3d(-0.577350269189, 0.577350269189, 0.577350269189); glVertex3d(-RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, 0.0, RADIUS ); glVertex3d( 0.0, RADIUS, 0.0 );
+ glNormal3d(-0.577350269189, 0.577350269189,-0.577350269189); glVertex3d(-RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, RADIUS, 0.0 ); glVertex3d( 0.0, 0.0,-RADIUS );
+ glNormal3d(-0.577350269189,-0.577350269189, 0.577350269189); glVertex3d(-RADIUS, 0.0, 0.0 ); glVertex3d( 0.0,-RADIUS, 0.0 ); glVertex3d( 0.0, 0.0, RADIUS );
+ glNormal3d(-0.577350269189,-0.577350269189,-0.577350269189); glVertex3d(-RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, 0.0,-RADIUS ); glVertex3d( 0.0,-RADIUS, 0.0 );
+ glEnd();
+#undef RADIUS
+}
+
+/*
+ *
+ */
+void glutSolidOctahedron( void )
+{
+#define RADIUS 1.0f
+ glBegin( GL_TRIANGLES );
+ glNormal3d( 0.577350269189, 0.577350269189, 0.577350269189); glVertex3d( RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, RADIUS, 0.0 ); glVertex3d( 0.0, 0.0, RADIUS );
+ glNormal3d( 0.577350269189, 0.577350269189,-0.577350269189); glVertex3d( RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, 0.0,-RADIUS ); glVertex3d( 0.0, RADIUS, 0.0 );
+ glNormal3d( 0.577350269189,-0.577350269189, 0.577350269189); glVertex3d( RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, 0.0, RADIUS ); glVertex3d( 0.0,-RADIUS, 0.0 );
+ glNormal3d( 0.577350269189,-0.577350269189,-0.577350269189); glVertex3d( RADIUS, 0.0, 0.0 ); glVertex3d( 0.0,-RADIUS, 0.0 ); glVertex3d( 0.0, 0.0,-RADIUS );
+ glNormal3d(-0.577350269189, 0.577350269189, 0.577350269189); glVertex3d(-RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, 0.0, RADIUS ); glVertex3d( 0.0, RADIUS, 0.0 );
+ glNormal3d(-0.577350269189, 0.577350269189,-0.577350269189); glVertex3d(-RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, RADIUS, 0.0 ); glVertex3d( 0.0, 0.0,-RADIUS );
+ glNormal3d(-0.577350269189,-0.577350269189, 0.577350269189); glVertex3d(-RADIUS, 0.0, 0.0 ); glVertex3d( 0.0,-RADIUS, 0.0 ); glVertex3d( 0.0, 0.0, RADIUS );
+ glNormal3d(-0.577350269189,-0.577350269189,-0.577350269189); glVertex3d(-RADIUS, 0.0, 0.0 ); glVertex3d( 0.0, 0.0,-RADIUS ); glVertex3d( 0.0,-RADIUS, 0.0 );
+ glEnd();
+#undef RADIUS
+}
+
+/* Magic Numbers: r0 = ( 1, 0, 0 )
+ * r1 = ( -1/3, 2 sqrt(2) / 3, 0 )
+ * r2 = ( -1/3, -sqrt(2) / 3, sqrt(6) / 3 )
+ * r3 = ( -1/3, -sqrt(2) / 3, -sqrt(6) / 3 )
+ * |r0| = |r1| = |r2| = |r3| = 1
+ * Distance between any two points is 2 sqrt(6) / 3
+ *
+ * Normals: The unit normals are simply the negative of the coordinates of the point not on the surface.
+ */
+
+#define NUM_TETR_FACES 4
+
+static GLdouble tet_r[4][3] = { { 1.0, 0.0, 0.0 },
+ { -0.333333333333, 0.942809041582, 0.0 },
+ { -0.333333333333, -0.471404520791, 0.816496580928 },
+ { -0.333333333333, -0.471404520791, -0.816496580928 } } ;
+
+static GLint tet_i[4][3] = /* Vertex indices */
+{
+ { 1, 3, 2 }, { 0, 2, 3 }, { 0, 3, 1 }, { 0, 1, 2 }
+} ;
+
+/*
+ *
+ */
+void glutWireTetrahedron( void )
+{
+ glBegin( GL_LINE_LOOP ) ;
+ glNormal3d ( -tet_r[0][0], -tet_r[0][1], -tet_r[0][2] ) ; glVertex3dv ( tet_r[1] ) ; glVertex3dv ( tet_r[3] ) ; glVertex3dv ( tet_r[2] ) ;
+ glNormal3d ( -tet_r[1][0], -tet_r[1][1], -tet_r[1][2] ) ; glVertex3dv ( tet_r[0] ) ; glVertex3dv ( tet_r[2] ) ; glVertex3dv ( tet_r[3] ) ;
+ glNormal3d ( -tet_r[2][0], -tet_r[2][1], -tet_r[2][2] ) ; glVertex3dv ( tet_r[0] ) ; glVertex3dv ( tet_r[3] ) ; glVertex3dv ( tet_r[1] ) ;
+ glNormal3d ( -tet_r[3][0], -tet_r[3][1], -tet_r[3][2] ) ; glVertex3dv ( tet_r[0] ) ; glVertex3dv ( tet_r[1] ) ; glVertex3dv ( tet_r[2] ) ;
+ glEnd() ;
+}
+
+/*
+ *
+ */
+void glutSolidTetrahedron( void )
+{
+ glBegin( GL_TRIANGLES ) ;
+ glNormal3d ( -tet_r[0][0], -tet_r[0][1], -tet_r[0][2] ) ; glVertex3dv ( tet_r[1] ) ; glVertex3dv ( tet_r[3] ) ; glVertex3dv ( tet_r[2] ) ;
+ glNormal3d ( -tet_r[1][0], -tet_r[1][1], -tet_r[1][2] ) ; glVertex3dv ( tet_r[0] ) ; glVertex3dv ( tet_r[2] ) ; glVertex3dv ( tet_r[3] ) ;
+ glNormal3d ( -tet_r[2][0], -tet_r[2][1], -tet_r[2][2] ) ; glVertex3dv ( tet_r[0] ) ; glVertex3dv ( tet_r[3] ) ; glVertex3dv ( tet_r[1] ) ;
+ glNormal3d ( -tet_r[3][0], -tet_r[3][1], -tet_r[3][2] ) ; glVertex3dv ( tet_r[0] ) ; glVertex3dv ( tet_r[1] ) ; glVertex3dv ( tet_r[2] ) ;
+ glEnd() ;
+}
+
+/*
+ *
+ */
+double icos_r[12][3] = { { 1.0, 0.0, 0.0 },
+ { 0.447213595500, 0.894427191000, 0.0 }, { 0.447213595500, 0.276393202252, 0.850650808354 }, { 0.447213595500, -0.723606797748, 0.525731112119 }, { 0.447213595500, -0.723606797748, -0.525731112119 }, { 0.447213595500, 0.276393202252, -0.850650808354 },
+ { -0.447213595500, -0.894427191000, 0.0 }, { -0.447213595500, -0.276393202252, 0.850650808354 }, { -0.447213595500, 0.723606797748, 0.525731112119 }, { -0.447213595500, 0.723606797748, -0.525731112119 }, { -0.447213595500, -0.276393202252, -0.850650808354 },
+ { -1.0, 0.0, 0.0 } } ;
+int icos_v [20][3] = { { 0, 1, 2 }, { 0, 2, 3 }, { 0, 3, 4 }, { 0, 4, 5 }, { 0, 5, 1 },
+ { 1, 8, 2 }, { 2, 7, 3 }, { 3, 6, 4 }, { 4, 10, 5 }, { 5, 9, 1 },
+ { 1, 9, 8 }, { 2, 8, 7 }, { 3, 7, 6 }, { 4, 6, 10 }, { 5, 10, 9 },
+ { 11, 9, 10 }, { 11, 8, 9 }, { 11, 7, 8 }, { 11, 6, 7 }, { 11, 10, 6 } } ;
+
+void glutWireIcosahedron( void )
+{
+ int i ;
+
+ for ( i = 0; i < 20; i++ )
+ {
+ double normal[3] ;
+ normal[0] = ( icos_r[icos_v[i][1]][1] - icos_r[icos_v[i][0]][1] ) * ( icos_r[icos_v[i][2]][2] - icos_r[icos_v[i][0]][2] ) - ( icos_r[icos_v[i][1]][2] - icos_r[icos_v[i][0]][2] ) * ( icos_r[icos_v[i][2]][1] - icos_r[icos_v[i][0]][1] ) ;
+ normal[1] = ( icos_r[icos_v[i][1]][2] - icos_r[icos_v[i][0]][2] ) * ( icos_r[icos_v[i][2]][0] - icos_r[icos_v[i][0]][0] ) - ( icos_r[icos_v[i][1]][0] - icos_r[icos_v[i][0]][0] ) * ( icos_r[icos_v[i][2]][2] - icos_r[icos_v[i][0]][2] ) ;
+ normal[2] = ( icos_r[icos_v[i][1]][0] - icos_r[icos_v[i][0]][0] ) * ( icos_r[icos_v[i][2]][1] - icos_r[icos_v[i][0]][1] ) - ( icos_r[icos_v[i][1]][1] - icos_r[icos_v[i][0]][1] ) * ( icos_r[icos_v[i][2]][0] - icos_r[icos_v[i][0]][0] ) ;
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3dv ( normal ) ;
+ glVertex3dv ( icos_r[icos_v[i][0]] ) ;
+ glVertex3dv ( icos_r[icos_v[i][1]] ) ;
+ glVertex3dv ( icos_r[icos_v[i][2]] ) ;
+ glEnd () ;
+ }
+}
+
+/*
+ *
+ */
+void glutSolidIcosahedron( void )
+{
+ int i ;
+
+ glBegin ( GL_TRIANGLES ) ;
+ for ( i = 0; i < 20; i++ )
+ {
+ double normal[3] ;
+ normal[0] = ( icos_r[icos_v[i][1]][1] - icos_r[icos_v[i][0]][1] ) * ( icos_r[icos_v[i][2]][2] - icos_r[icos_v[i][0]][2] ) - ( icos_r[icos_v[i][1]][2] - icos_r[icos_v[i][0]][2] ) * ( icos_r[icos_v[i][2]][1] - icos_r[icos_v[i][0]][1] ) ;
+ normal[1] = ( icos_r[icos_v[i][1]][2] - icos_r[icos_v[i][0]][2] ) * ( icos_r[icos_v[i][2]][0] - icos_r[icos_v[i][0]][0] ) - ( icos_r[icos_v[i][1]][0] - icos_r[icos_v[i][0]][0] ) * ( icos_r[icos_v[i][2]][2] - icos_r[icos_v[i][0]][2] ) ;
+ normal[2] = ( icos_r[icos_v[i][1]][0] - icos_r[icos_v[i][0]][0] ) * ( icos_r[icos_v[i][2]][1] - icos_r[icos_v[i][0]][1] ) - ( icos_r[icos_v[i][1]][1] - icos_r[icos_v[i][0]][1] ) * ( icos_r[icos_v[i][2]][0] - icos_r[icos_v[i][0]][0] ) ;
+ glNormal3dv ( normal ) ;
+ glVertex3dv ( icos_r[icos_v[i][0]] ) ;
+ glVertex3dv ( icos_r[icos_v[i][1]] ) ;
+ glVertex3dv ( icos_r[icos_v[i][2]] ) ;
+ }
+
+ glEnd () ;
+}
+
+/*
+ *
+ */
+double rdod_r[14][3] = { { 0.0, 0.0, 1.0 },
+ { 0.707106781187, 0.000000000000, 0.5 }, { 0.000000000000, 0.707106781187, 0.5 }, { -0.707106781187, 0.000000000000, 0.5 }, { 0.000000000000, -0.707106781187, 0.5 },
+ { 0.707106781187, 0.707106781187, 0.0 }, { -0.707106781187, 0.707106781187, 0.0 }, { -0.707106781187, -0.707106781187, 0.0 }, { 0.707106781187, -0.707106781187, 0.0 },
+ { 0.707106781187, 0.000000000000, -0.5 }, { 0.000000000000, 0.707106781187, -0.5 }, { -0.707106781187, 0.000000000000, -0.5 }, { 0.000000000000, -0.707106781187, -0.5 },
+ { 0.0, 0.0, -1.0 } } ;
+int rdod_v [12][4] = { { 0, 1, 5, 2 }, { 0, 2, 6, 3 }, { 0, 3, 7, 4 }, { 0, 4, 8, 1 },
+ { 5, 10, 6, 2 }, { 6, 11, 7, 3 }, { 7, 12, 8, 4 }, { 8, 9, 5, 1 },
+ { 5, 9, 13, 10 }, { 6, 10, 13, 11 }, { 7, 11, 13, 12 }, { 8, 12, 13, 9 } } ;
+double rdod_n[12][3] = {
+ { 0.353553390594, 0.353553390594, 0.5 }, { -0.353553390594, 0.353553390594, 0.5 }, { -0.353553390594, -0.353553390594, 0.5 }, { 0.353553390594, -0.353553390594, 0.5 },
+ { 0.000000000000, 1.000000000000, 0.0 }, { -1.000000000000, 0.000000000000, 0.0 }, { 0.000000000000, -1.000000000000, 0.0 }, { 1.000000000000, 0.000000000000, 0.0 },
+ { 0.353553390594, 0.353553390594, -0.5 }, { -0.353553390594, 0.353553390594, -0.5 }, { -0.353553390594, -0.353553390594, -0.5 }, { 0.353553390594, -0.353553390594, -0.5 }
+ } ;
+
+void glutWireRhombicDodecahedron( void )
+{
+ int i ;
+
+ for ( i = 0; i < 12; i++ )
+ {
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3dv ( rdod_n[i] ) ;
+ glVertex3dv ( rdod_r[rdod_v[i][0]] ) ;
+ glVertex3dv ( rdod_r[rdod_v[i][1]] ) ;
+ glVertex3dv ( rdod_r[rdod_v[i][2]] ) ;
+ glVertex3dv ( rdod_r[rdod_v[i][3]] ) ;
+ glEnd () ;
+ }
+}
+
+/*
+ *
+ */
+void glutSolidRhombicDodecahedron( void )
+{
+ int i ;
+
+ glBegin ( GL_QUADS ) ;
+ for ( i = 0; i < 12; i++ )
+ {
+ glNormal3dv ( rdod_n[i] ) ;
+ glVertex3dv ( rdod_r[rdod_v[i][0]] ) ;
+ glVertex3dv ( rdod_r[rdod_v[i][1]] ) ;
+ glVertex3dv ( rdod_r[rdod_v[i][2]] ) ;
+ glVertex3dv ( rdod_r[rdod_v[i][3]] ) ;
+ }
+
+ glEnd () ;
+}
+
+void glutWireSierpinskiSponge ( int num_levels, GLdouble offset[3], GLdouble scale )
+{
+ int i, j ;
+
+ if ( num_levels == 0 )
+ {
+
+ for ( i = 0 ; i < NUM_TETR_FACES ; i++ )
+ {
+ glBegin ( GL_LINE_LOOP ) ;
+ glNormal3d ( -tet_r[i][0], -tet_r[i][1], -tet_r[i][2] ) ;
+ for ( j = 0; j < 3; j++ )
+ {
+ double x = offset[0] + scale * tet_r[tet_i[i][j]][0] ;
+ double y = offset[1] + scale * tet_r[tet_i[i][j]][1] ;
+ double z = offset[2] + scale * tet_r[tet_i[i][j]][2] ;
+ glVertex3d ( x, y, z ) ;
+ }
+
+ glEnd () ;
+ }
+ }
+ else
+ {
+ GLdouble local_offset[3] ; /* Use a local variable to avoid buildup of roundoff errors */
+ num_levels -- ;
+ scale /= 2.0 ;
+ for ( i = 0 ; i < NUM_TETR_FACES ; i++ )
+ {
+ local_offset[0] = offset[0] + scale * tet_r[i][0] ;
+ local_offset[1] = offset[1] + scale * tet_r[i][1] ;
+ local_offset[2] = offset[2] + scale * tet_r[i][2] ;
+ glutWireSierpinskiSponge ( num_levels, local_offset, scale ) ;
+ }
+ }
+}
+
+void glutSolidSierpinskiSponge ( int num_levels, GLdouble offset[3], GLdouble scale )
+{
+ int i, j ;
+
+ if ( num_levels == 0 )
+ {
+ glBegin ( GL_TRIANGLES ) ;
+
+ for ( i = 0 ; i < NUM_TETR_FACES ; i++ )
+ {
+ glNormal3d ( -tet_r[i][0], -tet_r[i][1], -tet_r[i][2] ) ;
+ for ( j = 0; j < 3; j++ )
+ {
+ double x = offset[0] + scale * tet_r[tet_i[i][j]][0] ;
+ double y = offset[1] + scale * tet_r[tet_i[i][j]][1] ;
+ double z = offset[2] + scale * tet_r[tet_i[i][j]][2] ;
+ glVertex3d ( x, y, z ) ;
+ }
+ }
+
+ glEnd () ;
+ }
+ else
+ {
+ GLdouble local_offset[3] ; /* Use a local variable to avoid buildup of roundoff errors */
+ num_levels -- ;
+ scale /= 2.0 ;
+ for ( i = 0 ; i < NUM_TETR_FACES ; i++ )
+ {
+ local_offset[0] = offset[0] + scale * tet_r[i][0] ;
+ local_offset[1] = offset[1] + scale * tet_r[i][1] ;
+ local_offset[2] = offset[2] + scale * tet_r[i][2] ;
+ glutSolidSierpinskiSponge ( num_levels, local_offset, scale ) ;
+ }
+ }
+}
+
+/*** END OF FILE ***/
diff --git a/src/freeglut_stroke_mono_roman.cxx b/src/freeglut_stroke_mono_roman.cxx
new file mode 100644
index 0000000..61d1862
--- /dev/null
+++ b/src/freeglut_stroke_mono_roman.cxx
@@ -0,0 +1,2848 @@
+/*
+ * freeglut_stroke_mono_roman.c
+ *
+ * freeglut Monospace Roman stroke font definition
+ *
+ * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+ * Written by Pawel W. Olszta, <olszta@sourceforge.net>
+ * Creation date: Thu Dec 16 1999
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/* This file has been automatically generated by the genstroke utility. */
+
+#include <FL/glut.H>
+
+/* char: 0x20 */
+
+static const Fl_Glut_StrokeStrip ch32st[] =
+{
+ { 0, 0 }
+};
+
+static const Fl_Glut_StrokeChar ch32 = {104.762f,0,ch32st};
+
+/* char: 0x21 */
+
+static const Fl_Glut_StrokeVertex ch33st0[] =
+{
+ {52.381f,100.0f},
+ {52.381f,33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch33st1[] =
+{
+ {52.381f,9.5238f},
+ {47.6191f,4.7619f},
+ {52.381f,0.0f},
+ {57.1429f,4.7619f},
+ {52.381f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch33st[] =
+{
+ {2,ch33st0},
+ {5,ch33st1}
+};
+
+static const Fl_Glut_StrokeChar ch33 = {104.762f,2,ch33st};
+
+/* char: 0x22 */
+
+static const Fl_Glut_StrokeVertex ch34st0[] =
+{
+ {33.3334f,100.0f},
+ {33.3334f,66.6667f}
+};
+
+static const Fl_Glut_StrokeVertex ch34st1[] =
+{
+ {71.4286f,100.0f},
+ {71.4286f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch34st[] =
+{
+ {2,ch34st0},
+ {2,ch34st1}
+};
+
+static const Fl_Glut_StrokeChar ch34 = {104.762f,2,ch34st};
+
+/* char: 0x23 */
+
+static const Fl_Glut_StrokeVertex ch35st0[] =
+{
+ {54.7619f,119.048f},
+ {21.4286f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch35st1[] =
+{
+ {83.3334f,119.048f},
+ {50.0f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch35st2[] =
+{
+ {21.4286f,57.1429f},
+ {88.0952f,57.1429f}
+};
+
+static const Fl_Glut_StrokeVertex ch35st3[] =
+{
+ {16.6667f,28.5714f},
+ {83.3334f,28.5714f}
+};
+
+static const Fl_Glut_StrokeStrip ch35st[] =
+{
+ {2,ch35st0},
+ {2,ch35st1},
+ {2,ch35st2},
+ {2,ch35st3}
+};
+
+static const Fl_Glut_StrokeChar ch35 = {104.762f,4,ch35st};
+
+/* char: 0x24 */
+
+static const Fl_Glut_StrokeVertex ch36st0[] =
+{
+ {42.8571f,119.048f},
+ {42.8571f,-19.0476f}
+};
+
+static const Fl_Glut_StrokeVertex ch36st1[] =
+{
+ {61.9047f,119.048f},
+ {61.9047f,-19.0476f}
+};
+
+static const Fl_Glut_StrokeVertex ch36st2[] =
+{
+ {85.7143f,85.7143f},
+ {76.1905f,95.2381f},
+ {61.9047f,100.0f},
+ {42.8571f,100.0f},
+ {28.5714f,95.2381f},
+ {19.0476f,85.7143f},
+ {19.0476f,76.1905f},
+ {23.8095f,66.6667f},
+ {28.5714f,61.9048f},
+ {38.0952f,57.1429f},
+ {66.6666f,47.619f},
+ {76.1905f,42.8571f},
+ {80.9524f,38.0952f},
+ {85.7143f,28.5714f},
+ {85.7143f,14.2857f},
+ {76.1905f,4.7619f},
+ {61.9047f,0.0f},
+ {42.8571f,0.0f},
+ {28.5714f,4.7619f},
+ {19.0476f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch36st[] =
+{
+ {2,ch36st0},
+ {2,ch36st1},
+ {20,ch36st2}
+};
+
+static const Fl_Glut_StrokeChar ch36 = {104.762f,3,ch36st};
+
+/* char: 0x25 */
+
+static const Fl_Glut_StrokeVertex ch37st0[] =
+{
+ {95.2381f,100.0f},
+ {9.5238f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch37st1[] =
+{
+ {33.3333f,100.0f},
+ {42.8571f,90.4762f},
+ {42.8571f,80.9524f},
+ {38.0952f,71.4286f},
+ {28.5714f,66.6667f},
+ {19.0476f,66.6667f},
+ {9.5238f,76.1905f},
+ {9.5238f,85.7143f},
+ {14.2857f,95.2381f},
+ {23.8095f,100.0f},
+ {33.3333f,100.0f},
+ {42.8571f,95.2381f},
+ {57.1428f,90.4762f},
+ {71.4286f,90.4762f},
+ {85.7143f,95.2381f},
+ {95.2381f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch37st2[] =
+{
+ {76.1905f,33.3333f},
+ {66.6667f,28.5714f},
+ {61.9048f,19.0476f},
+ {61.9048f,9.5238f},
+ {71.4286f,0.0f},
+ {80.9524f,0.0f},
+ {90.4762f,4.7619f},
+ {95.2381f,14.2857f},
+ {95.2381f,23.8095f},
+ {85.7143f,33.3333f},
+ {76.1905f,33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch37st[] =
+{
+ {2,ch37st0},
+ {16,ch37st1},
+ {11,ch37st2}
+};
+
+static const Fl_Glut_StrokeChar ch37 = {104.762f,3,ch37st};
+
+/* char: 0x26 */
+
+static const Fl_Glut_StrokeVertex ch38st0[] =
+{
+ {100.0f,57.1429f},
+ {100.0f,61.9048f},
+ {95.2381f,66.6667f},
+ {90.4762f,66.6667f},
+ {85.7143f,61.9048f},
+ {80.9524f,52.381f},
+ {71.4286f,28.5714f},
+ {61.9048f,14.2857f},
+ {52.3809f,4.7619f},
+ {42.8571f,0.0f},
+ {23.8095f,0.0f},
+ {14.2857f,4.7619f},
+ {9.5238f,9.5238f},
+ {4.7619f,19.0476f},
+ {4.7619f,28.5714f},
+ {9.5238f,38.0952f},
+ {14.2857f,42.8571f},
+ {47.619f,61.9048f},
+ {52.3809f,66.6667f},
+ {57.1429f,76.1905f},
+ {57.1429f,85.7143f},
+ {52.3809f,95.2381f},
+ {42.8571f,100.0f},
+ {33.3333f,95.2381f},
+ {28.5714f,85.7143f},
+ {28.5714f,76.1905f},
+ {33.3333f,61.9048f},
+ {42.8571f,47.619f},
+ {66.6667f,14.2857f},
+ {76.1905f,4.7619f},
+ {85.7143f,0.0f},
+ {95.2381f,0.0f},
+ {100.0f,4.7619f},
+ {100.0f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch38st[] =
+{
+ {34,ch38st0}
+};
+
+static const Fl_Glut_StrokeChar ch38 = {104.762f,1,ch38st};
+
+/* char: 0x27 */
+
+static const Fl_Glut_StrokeVertex ch39st0[] =
+{
+ {52.381f,100.0f},
+ {52.381f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch39st[] =
+{
+ {2,ch39st0}
+};
+
+static const Fl_Glut_StrokeChar ch39 = {104.762f,1,ch39st};
+
+/* char: 0x28 */
+
+static const Fl_Glut_StrokeVertex ch40st0[] =
+{
+ {69.0476f,119.048f},
+ {59.5238f,109.524f},
+ {50.0f,95.2381f},
+ {40.4762f,76.1905f},
+ {35.7143f,52.381f},
+ {35.7143f,33.3333f},
+ {40.4762f,9.5238f},
+ {50.0f,-9.5238f},
+ {59.5238f,-23.8095f},
+ {69.0476f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch40st[] =
+{
+ {10,ch40st0}
+};
+
+static const Fl_Glut_StrokeChar ch40 = {104.762f,1,ch40st};
+
+/* char: 0x29 */
+
+static const Fl_Glut_StrokeVertex ch41st0[] =
+{
+ {35.7143f,119.048f},
+ {45.2381f,109.524f},
+ {54.7619f,95.2381f},
+ {64.2857f,76.1905f},
+ {69.0476f,52.381f},
+ {69.0476f,33.3333f},
+ {64.2857f,9.5238f},
+ {54.7619f,-9.5238f},
+ {45.2381f,-23.8095f},
+ {35.7143f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch41st[] =
+{
+ {10,ch41st0}
+};
+
+static const Fl_Glut_StrokeChar ch41 = {104.762f,1,ch41st};
+
+/* char: 0x2a */
+
+static const Fl_Glut_StrokeVertex ch42st0[] =
+{
+ {52.381f,71.4286f},
+ {52.381f,14.2857f}
+};
+
+static const Fl_Glut_StrokeVertex ch42st1[] =
+{
+ {28.5715f,57.1429f},
+ {76.1905f,28.5714f}
+};
+
+static const Fl_Glut_StrokeVertex ch42st2[] =
+{
+ {76.1905f,57.1429f},
+ {28.5715f,28.5714f}
+};
+
+static const Fl_Glut_StrokeStrip ch42st[] =
+{
+ {2,ch42st0},
+ {2,ch42st1},
+ {2,ch42st2}
+};
+
+static const Fl_Glut_StrokeChar ch42 = {104.762f,3,ch42st};
+
+/* char: 0x2b */
+
+static const Fl_Glut_StrokeVertex ch43st0[] =
+{
+ {52.3809f,85.7143f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch43st1[] =
+{
+ {9.5238f,42.8571f},
+ {95.2381f,42.8571f}
+};
+
+static const Fl_Glut_StrokeStrip ch43st[] =
+{
+ {2,ch43st0},
+ {2,ch43st1}
+};
+
+static const Fl_Glut_StrokeChar ch43 = {104.762f,2,ch43st};
+
+/* char: 0x2c */
+
+static const Fl_Glut_StrokeVertex ch44st0[] =
+{
+ {57.1429f,4.7619f},
+ {52.381f,0.0f},
+ {47.6191f,4.7619f},
+ {52.381f,9.5238f},
+ {57.1429f,4.7619f},
+ {57.1429f,-4.7619f},
+ {52.381f,-14.2857f},
+ {47.6191f,-19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch44st[] =
+{
+ {8,ch44st0}
+};
+
+static const Fl_Glut_StrokeChar ch44 = {104.762f,1,ch44st};
+
+/* char: 0x2d */
+
+static const Fl_Glut_StrokeVertex ch45st0[] =
+{
+ {9.5238f,42.8571f},
+ {95.2381f,42.8571f}
+};
+
+static const Fl_Glut_StrokeStrip ch45st[] =
+{
+ {2,ch45st0}
+};
+
+static const Fl_Glut_StrokeChar ch45 = {104.762f,1,ch45st};
+
+/* char: 0x2e */
+
+static const Fl_Glut_StrokeVertex ch46st0[] =
+{
+ {52.381f,9.5238f},
+ {47.6191f,4.7619f},
+ {52.381f,0.0f},
+ {57.1429f,4.7619f},
+ {52.381f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch46st[] =
+{
+ {5,ch46st0}
+};
+
+static const Fl_Glut_StrokeChar ch46 = {104.762f,1,ch46st};
+
+/* char: 0x2f */
+
+static const Fl_Glut_StrokeVertex ch47st0[] =
+{
+ {19.0476f,-14.2857f},
+ {85.7143f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch47st[] =
+{
+ {2,ch47st0}
+};
+
+static const Fl_Glut_StrokeChar ch47 = {104.762f,1,ch47st};
+
+/* char: 0x30 */
+
+static const Fl_Glut_StrokeVertex ch48st0[] =
+{
+ {47.619f,100.0f},
+ {33.3333f,95.2381f},
+ {23.8095f,80.9524f},
+ {19.0476f,57.1429f},
+ {19.0476f,42.8571f},
+ {23.8095f,19.0476f},
+ {33.3333f,4.7619f},
+ {47.619f,0.0f},
+ {57.1428f,0.0f},
+ {71.4286f,4.7619f},
+ {80.9524f,19.0476f},
+ {85.7143f,42.8571f},
+ {85.7143f,57.1429f},
+ {80.9524f,80.9524f},
+ {71.4286f,95.2381f},
+ {57.1428f,100.0f},
+ {47.619f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch48st[] =
+{
+ {17,ch48st0}
+};
+
+static const Fl_Glut_StrokeChar ch48 = {104.762f,1,ch48st};
+
+/* char: 0x31 */
+
+static const Fl_Glut_StrokeVertex ch49st0[] =
+{
+ {40.4762f,80.9524f},
+ {50.0f,85.7143f},
+ {64.2857f,100.0f},
+ {64.2857f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch49st[] =
+{
+ {4,ch49st0}
+};
+
+static const Fl_Glut_StrokeChar ch49 = {104.762f,1,ch49st};
+
+/* char: 0x32 */
+
+static const Fl_Glut_StrokeVertex ch50st0[] =
+{
+ {23.8095f,76.1905f},
+ {23.8095f,80.9524f},
+ {28.5714f,90.4762f},
+ {33.3333f,95.2381f},
+ {42.8571f,100.0f},
+ {61.9047f,100.0f},
+ {71.4286f,95.2381f},
+ {76.1905f,90.4762f},
+ {80.9524f,80.9524f},
+ {80.9524f,71.4286f},
+ {76.1905f,61.9048f},
+ {66.6666f,47.619f},
+ {19.0476f,0.0f},
+ {85.7143f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch50st[] =
+{
+ {14,ch50st0}
+};
+
+static const Fl_Glut_StrokeChar ch50 = {104.762f,1,ch50st};
+
+/* char: 0x33 */
+
+static const Fl_Glut_StrokeVertex ch51st0[] =
+{
+ {28.5714f,100.0f},
+ {80.9524f,100.0f},
+ {52.3809f,61.9048f},
+ {66.6666f,61.9048f},
+ {76.1905f,57.1429f},
+ {80.9524f,52.381f},
+ {85.7143f,38.0952f},
+ {85.7143f,28.5714f},
+ {80.9524f,14.2857f},
+ {71.4286f,4.7619f},
+ {57.1428f,0.0f},
+ {42.8571f,0.0f},
+ {28.5714f,4.7619f},
+ {23.8095f,9.5238f},
+ {19.0476f,19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch51st[] =
+{
+ {15,ch51st0}
+};
+
+static const Fl_Glut_StrokeChar ch51 = {104.762f,1,ch51st};
+
+/* char: 0x34 */
+
+static const Fl_Glut_StrokeVertex ch52st0[] =
+{
+ {64.2857f,100.0f},
+ {16.6667f,33.3333f},
+ {88.0952f,33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch52st1[] =
+{
+ {64.2857f,100.0f},
+ {64.2857f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch52st[] =
+{
+ {3,ch52st0},
+ {2,ch52st1}
+};
+
+static const Fl_Glut_StrokeChar ch52 = {104.762f,2,ch52st};
+
+/* char: 0x35 */
+
+static const Fl_Glut_StrokeVertex ch53st0[] =
+{
+ {76.1905f,100.0f},
+ {28.5714f,100.0f},
+ {23.8095f,57.1429f},
+ {28.5714f,61.9048f},
+ {42.8571f,66.6667f},
+ {57.1428f,66.6667f},
+ {71.4286f,61.9048f},
+ {80.9524f,52.381f},
+ {85.7143f,38.0952f},
+ {85.7143f,28.5714f},
+ {80.9524f,14.2857f},
+ {71.4286f,4.7619f},
+ {57.1428f,0.0f},
+ {42.8571f,0.0f},
+ {28.5714f,4.7619f},
+ {23.8095f,9.5238f},
+ {19.0476f,19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch53st[] =
+{
+ {17,ch53st0}
+};
+
+static const Fl_Glut_StrokeChar ch53 = {104.762f,1,ch53st};
+
+/* char: 0x36 */
+
+static const Fl_Glut_StrokeVertex ch54st0[] =
+{
+ {78.5714f,85.7143f},
+ {73.8096f,95.2381f},
+ {59.5238f,100.0f},
+ {50.0f,100.0f},
+ {35.7143f,95.2381f},
+ {26.1905f,80.9524f},
+ {21.4286f,57.1429f},
+ {21.4286f,33.3333f},
+ {26.1905f,14.2857f},
+ {35.7143f,4.7619f},
+ {50.0f,0.0f},
+ {54.7619f,0.0f},
+ {69.0476f,4.7619f},
+ {78.5714f,14.2857f},
+ {83.3334f,28.5714f},
+ {83.3334f,33.3333f},
+ {78.5714f,47.619f},
+ {69.0476f,57.1429f},
+ {54.7619f,61.9048f},
+ {50.0f,61.9048f},
+ {35.7143f,57.1429f},
+ {26.1905f,47.619f},
+ {21.4286f,33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch54st[] =
+{
+ {23,ch54st0}
+};
+
+static const Fl_Glut_StrokeChar ch54 = {104.762f,1,ch54st};
+
+/* char: 0x37 */
+
+static const Fl_Glut_StrokeVertex ch55st0[] =
+{
+ {85.7143f,100.0f},
+ {38.0952f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch55st1[] =
+{
+ {19.0476f,100.0f},
+ {85.7143f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch55st[] =
+{
+ {2,ch55st0},
+ {2,ch55st1}
+};
+
+static const Fl_Glut_StrokeChar ch55 = {104.762f,2,ch55st};
+
+/* char: 0x38 */
+
+static const Fl_Glut_StrokeVertex ch56st0[] =
+{
+ {42.8571f,100.0f},
+ {28.5714f,95.2381f},
+ {23.8095f,85.7143f},
+ {23.8095f,76.1905f},
+ {28.5714f,66.6667f},
+ {38.0952f,61.9048f},
+ {57.1428f,57.1429f},
+ {71.4286f,52.381f},
+ {80.9524f,42.8571f},
+ {85.7143f,33.3333f},
+ {85.7143f,19.0476f},
+ {80.9524f,9.5238f},
+ {76.1905f,4.7619f},
+ {61.9047f,0.0f},
+ {42.8571f,0.0f},
+ {28.5714f,4.7619f},
+ {23.8095f,9.5238f},
+ {19.0476f,19.0476f},
+ {19.0476f,33.3333f},
+ {23.8095f,42.8571f},
+ {33.3333f,52.381f},
+ {47.619f,57.1429f},
+ {66.6666f,61.9048f},
+ {76.1905f,66.6667f},
+ {80.9524f,76.1905f},
+ {80.9524f,85.7143f},
+ {76.1905f,95.2381f},
+ {61.9047f,100.0f},
+ {42.8571f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch56st[] =
+{
+ {29,ch56st0}
+};
+
+static const Fl_Glut_StrokeChar ch56 = {104.762f,1,ch56st};
+
+/* char: 0x39 */
+
+static const Fl_Glut_StrokeVertex ch57st0[] =
+{
+ {83.3334f,66.6667f},
+ {78.5714f,52.381f},
+ {69.0476f,42.8571f},
+ {54.7619f,38.0952f},
+ {50.0f,38.0952f},
+ {35.7143f,42.8571f},
+ {26.1905f,52.381f},
+ {21.4286f,66.6667f},
+ {21.4286f,71.4286f},
+ {26.1905f,85.7143f},
+ {35.7143f,95.2381f},
+ {50.0f,100.0f},
+ {54.7619f,100.0f},
+ {69.0476f,95.2381f},
+ {78.5714f,85.7143f},
+ {83.3334f,66.6667f},
+ {83.3334f,42.8571f},
+ {78.5714f,19.0476f},
+ {69.0476f,4.7619f},
+ {54.7619f,0.0f},
+ {45.2381f,0.0f},
+ {30.9524f,4.7619f},
+ {26.1905f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch57st[] =
+{
+ {23,ch57st0}
+};
+
+static const Fl_Glut_StrokeChar ch57 = {104.762f,1,ch57st};
+
+/* char: 0x3a */
+
+static const Fl_Glut_StrokeVertex ch58st0[] =
+{
+ {52.381f,66.6667f},
+ {47.6191f,61.9048f},
+ {52.381f,57.1429f},
+ {57.1429f,61.9048f},
+ {52.381f,66.6667f}
+};
+
+static const Fl_Glut_StrokeVertex ch58st1[] =
+{
+ {52.381f,9.5238f},
+ {47.6191f,4.7619f},
+ {52.381f,0.0f},
+ {57.1429f,4.7619f},
+ {52.381f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch58st[] =
+{
+ {5,ch58st0},
+ {5,ch58st1}
+};
+
+static const Fl_Glut_StrokeChar ch58 = {104.762f,2,ch58st};
+
+/* char: 0x3b */
+
+static const Fl_Glut_StrokeVertex ch59st0[] =
+{
+ {52.381f,66.6667f},
+ {47.6191f,61.9048f},
+ {52.381f,57.1429f},
+ {57.1429f,61.9048f},
+ {52.381f,66.6667f}
+};
+
+static const Fl_Glut_StrokeVertex ch59st1[] =
+{
+ {57.1429f,4.7619f},
+ {52.381f,0.0f},
+ {47.6191f,4.7619f},
+ {52.381f,9.5238f},
+ {57.1429f,4.7619f},
+ {57.1429f,-4.7619f},
+ {52.381f,-14.2857f},
+ {47.6191f,-19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch59st[] =
+{
+ {5,ch59st0},
+ {8,ch59st1}
+};
+
+static const Fl_Glut_StrokeChar ch59 = {104.762f,2,ch59st};
+
+/* char: 0x3c */
+
+static const Fl_Glut_StrokeVertex ch60st0[] =
+{
+ {90.4762f,85.7143f},
+ {14.2857f,42.8571f},
+ {90.4762f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch60st[] =
+{
+ {3,ch60st0}
+};
+
+static const Fl_Glut_StrokeChar ch60 = {104.762f,1,ch60st};
+
+/* char: 0x3d */
+
+static const Fl_Glut_StrokeVertex ch61st0[] =
+{
+ {9.5238f,57.1429f},
+ {95.2381f,57.1429f}
+};
+
+static const Fl_Glut_StrokeVertex ch61st1[] =
+{
+ {9.5238f,28.5714f},
+ {95.2381f,28.5714f}
+};
+
+static const Fl_Glut_StrokeStrip ch61st[] =
+{
+ {2,ch61st0},
+ {2,ch61st1}
+};
+
+static const Fl_Glut_StrokeChar ch61 = {104.762f,2,ch61st};
+
+/* char: 0x3e */
+
+static const Fl_Glut_StrokeVertex ch62st0[] =
+{
+ {14.2857f,85.7143f},
+ {90.4762f,42.8571f},
+ {14.2857f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch62st[] =
+{
+ {3,ch62st0}
+};
+
+static const Fl_Glut_StrokeChar ch62 = {104.762f,1,ch62st};
+
+/* char: 0x3f */
+
+static const Fl_Glut_StrokeVertex ch63st0[] =
+{
+ {23.8095f,76.1905f},
+ {23.8095f,80.9524f},
+ {28.5714f,90.4762f},
+ {33.3333f,95.2381f},
+ {42.8571f,100.0f},
+ {61.9047f,100.0f},
+ {71.4285f,95.2381f},
+ {76.1905f,90.4762f},
+ {80.9524f,80.9524f},
+ {80.9524f,71.4286f},
+ {76.1905f,61.9048f},
+ {71.4285f,57.1429f},
+ {52.3809f,47.619f},
+ {52.3809f,33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch63st1[] =
+{
+ {52.3809f,9.5238f},
+ {47.619f,4.7619f},
+ {52.3809f,0.0f},
+ {57.1428f,4.7619f},
+ {52.3809f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch63st[] =
+{
+ {14,ch63st0},
+ {5,ch63st1}
+};
+
+static const Fl_Glut_StrokeChar ch63 = {104.762f,2,ch63st};
+
+/* char: 0x40 */
+
+static const Fl_Glut_StrokeVertex ch64st0[] =
+{
+ {64.2857f,52.381f},
+ {54.7619f,57.1429f},
+ {45.2381f,57.1429f},
+ {40.4762f,47.619f},
+ {40.4762f,42.8571f},
+ {45.2381f,33.3333f},
+ {54.7619f,33.3333f},
+ {64.2857f,38.0952f}
+};
+
+static const Fl_Glut_StrokeVertex ch64st1[] =
+{
+ {64.2857f,57.1429f},
+ {64.2857f,38.0952f},
+ {69.0476f,33.3333f},
+ {78.5714f,33.3333f},
+ {83.3334f,42.8571f},
+ {83.3334f,47.619f},
+ {78.5714f,61.9048f},
+ {69.0476f,71.4286f},
+ {54.7619f,76.1905f},
+ {50.0f,76.1905f},
+ {35.7143f,71.4286f},
+ {26.1905f,61.9048f},
+ {21.4286f,47.619f},
+ {21.4286f,42.8571f},
+ {26.1905f,28.5714f},
+ {35.7143f,19.0476f},
+ {50.0f,14.2857f},
+ {54.7619f,14.2857f},
+ {69.0476f,19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch64st[] =
+{
+ {8,ch64st0},
+ {19,ch64st1}
+};
+
+static const Fl_Glut_StrokeChar ch64 = {104.762f,2,ch64st};
+
+/* char: 0x41 */
+
+static const Fl_Glut_StrokeVertex ch65st0[] =
+{
+ {52.3809f,100.0f},
+ {14.2857f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch65st1[] =
+{
+ {52.3809f,100.0f},
+ {90.4762f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch65st2[] =
+{
+ {28.5714f,33.3333f},
+ {76.1905f,33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch65st[] =
+{
+ {2,ch65st0},
+ {2,ch65st1},
+ {2,ch65st2}
+};
+
+static const Fl_Glut_StrokeChar ch65 = {104.762f,3,ch65st};
+
+/* char: 0x42 */
+
+static const Fl_Glut_StrokeVertex ch66st0[] =
+{
+ {19.0476f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch66st1[] =
+{
+ {19.0476f,100.0f},
+ {61.9047f,100.0f},
+ {76.1905f,95.2381f},
+ {80.9524f,90.4762f},
+ {85.7143f,80.9524f},
+ {85.7143f,71.4286f},
+ {80.9524f,61.9048f},
+ {76.1905f,57.1429f},
+ {61.9047f,52.381f}
+};
+
+static const Fl_Glut_StrokeVertex ch66st2[] =
+{
+ {19.0476f,52.381f},
+ {61.9047f,52.381f},
+ {76.1905f,47.619f},
+ {80.9524f,42.8571f},
+ {85.7143f,33.3333f},
+ {85.7143f,19.0476f},
+ {80.9524f,9.5238f},
+ {76.1905f,4.7619f},
+ {61.9047f,0.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch66st[] =
+{
+ {2,ch66st0},
+ {9,ch66st1},
+ {10,ch66st2}
+};
+
+static const Fl_Glut_StrokeChar ch66 = {104.762f,3,ch66st};
+
+/* char: 0x43 */
+
+static const Fl_Glut_StrokeVertex ch67st0[] =
+{
+ {88.0952f,76.1905f},
+ {83.3334f,85.7143f},
+ {73.8096f,95.2381f},
+ {64.2857f,100.0f},
+ {45.2381f,100.0f},
+ {35.7143f,95.2381f},
+ {26.1905f,85.7143f},
+ {21.4286f,76.1905f},
+ {16.6667f,61.9048f},
+ {16.6667f,38.0952f},
+ {21.4286f,23.8095f},
+ {26.1905f,14.2857f},
+ {35.7143f,4.7619f},
+ {45.2381f,0.0f},
+ {64.2857f,0.0f},
+ {73.8096f,4.7619f},
+ {83.3334f,14.2857f},
+ {88.0952f,23.8095f}
+};
+
+static const Fl_Glut_StrokeStrip ch67st[] =
+{
+ {18,ch67st0}
+};
+
+static const Fl_Glut_StrokeChar ch67 = {104.762f,1,ch67st};
+
+/* char: 0x44 */
+
+static const Fl_Glut_StrokeVertex ch68st0[] =
+{
+ {19.0476f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch68st1[] =
+{
+ {19.0476f,100.0f},
+ {52.3809f,100.0f},
+ {66.6666f,95.2381f},
+ {76.1905f,85.7143f},
+ {80.9524f,76.1905f},
+ {85.7143f,61.9048f},
+ {85.7143f,38.0952f},
+ {80.9524f,23.8095f},
+ {76.1905f,14.2857f},
+ {66.6666f,4.7619f},
+ {52.3809f,0.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch68st[] =
+{
+ {2,ch68st0},
+ {12,ch68st1}
+};
+
+static const Fl_Glut_StrokeChar ch68 = {104.762f,2,ch68st};
+
+/* char: 0x45 */
+
+static const Fl_Glut_StrokeVertex ch69st0[] =
+{
+ {21.4286f,100.0f},
+ {21.4286f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch69st1[] =
+{
+ {21.4286f,100.0f},
+ {83.3334f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch69st2[] =
+{
+ {21.4286f,52.381f},
+ {59.5238f,52.381f}
+};
+
+static const Fl_Glut_StrokeVertex ch69st3[] =
+{
+ {21.4286f,0.0f},
+ {83.3334f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch69st[] =
+{
+ {2,ch69st0},
+ {2,ch69st1},
+ {2,ch69st2},
+ {2,ch69st3}
+};
+
+static const Fl_Glut_StrokeChar ch69 = {104.762f,4,ch69st};
+
+/* char: 0x46 */
+
+static const Fl_Glut_StrokeVertex ch70st0[] =
+{
+ {21.4286f,100.0f},
+ {21.4286f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch70st1[] =
+{
+ {21.4286f,100.0f},
+ {83.3334f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch70st2[] =
+{
+ {21.4286f,52.381f},
+ {59.5238f,52.381f}
+};
+
+static const Fl_Glut_StrokeStrip ch70st[] =
+{
+ {2,ch70st0},
+ {2,ch70st1},
+ {2,ch70st2}
+};
+
+static const Fl_Glut_StrokeChar ch70 = {104.762f,3,ch70st};
+
+/* char: 0x47 */
+
+static const Fl_Glut_StrokeVertex ch71st0[] =
+{
+ {88.0952f,76.1905f},
+ {83.3334f,85.7143f},
+ {73.8096f,95.2381f},
+ {64.2857f,100.0f},
+ {45.2381f,100.0f},
+ {35.7143f,95.2381f},
+ {26.1905f,85.7143f},
+ {21.4286f,76.1905f},
+ {16.6667f,61.9048f},
+ {16.6667f,38.0952f},
+ {21.4286f,23.8095f},
+ {26.1905f,14.2857f},
+ {35.7143f,4.7619f},
+ {45.2381f,0.0f},
+ {64.2857f,0.0f},
+ {73.8096f,4.7619f},
+ {83.3334f,14.2857f},
+ {88.0952f,23.8095f},
+ {88.0952f,38.0952f}
+};
+
+static const Fl_Glut_StrokeVertex ch71st1[] =
+{
+ {64.2857f,38.0952f},
+ {88.0952f,38.0952f}
+};
+
+static const Fl_Glut_StrokeStrip ch71st[] =
+{
+ {19,ch71st0},
+ {2,ch71st1}
+};
+
+static const Fl_Glut_StrokeChar ch71 = {104.762f,2,ch71st};
+
+/* char: 0x48 */
+
+static const Fl_Glut_StrokeVertex ch72st0[] =
+{
+ {19.0476f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch72st1[] =
+{
+ {85.7143f,100.0f},
+ {85.7143f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch72st2[] =
+{
+ {19.0476f,52.381f},
+ {85.7143f,52.381f}
+};
+
+static const Fl_Glut_StrokeStrip ch72st[] =
+{
+ {2,ch72st0},
+ {2,ch72st1},
+ {2,ch72st2}
+};
+
+static const Fl_Glut_StrokeChar ch72 = {104.762f,3,ch72st};
+
+/* char: 0x49 */
+
+static const Fl_Glut_StrokeVertex ch73st0[] =
+{
+ {52.381f,100.0f},
+ {52.381f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch73st[] =
+{
+ {2,ch73st0}
+};
+
+static const Fl_Glut_StrokeChar ch73 = {104.762f,1,ch73st};
+
+/* char: 0x4a */
+
+static const Fl_Glut_StrokeVertex ch74st0[] =
+{
+ {76.1905f,100.0f},
+ {76.1905f,23.8095f},
+ {71.4286f,9.5238f},
+ {66.6667f,4.7619f},
+ {57.1429f,0.0f},
+ {47.6191f,0.0f},
+ {38.0953f,4.7619f},
+ {33.3334f,9.5238f},
+ {28.5715f,23.8095f},
+ {28.5715f,33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch74st[] =
+{
+ {10,ch74st0}
+};
+
+static const Fl_Glut_StrokeChar ch74 = {104.762f,1,ch74st};
+
+/* char: 0x4b */
+
+static const Fl_Glut_StrokeVertex ch75st0[] =
+{
+ {19.0476f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch75st1[] =
+{
+ {85.7143f,100.0f},
+ {19.0476f,33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch75st2[] =
+{
+ {42.8571f,57.1429f},
+ {85.7143f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch75st[] =
+{
+ {2,ch75st0},
+ {2,ch75st1},
+ {2,ch75st2}
+};
+
+static const Fl_Glut_StrokeChar ch75 = {104.762f,3,ch75st};
+
+/* char: 0x4c */
+
+static const Fl_Glut_StrokeVertex ch76st0[] =
+{
+ {23.8095f,100.0f},
+ {23.8095f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch76st1[] =
+{
+ {23.8095f,0.0f},
+ {80.9524f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch76st[] =
+{
+ {2,ch76st0},
+ {2,ch76st1}
+};
+
+static const Fl_Glut_StrokeChar ch76 = {104.762f,2,ch76st};
+
+/* char: 0x4d */
+
+static const Fl_Glut_StrokeVertex ch77st0[] =
+{
+ {14.2857f,100.0f},
+ {14.2857f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch77st1[] =
+{
+ {14.2857f,100.0f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch77st2[] =
+{
+ {90.4762f,100.0f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch77st3[] =
+{
+ {90.4762f,100.0f},
+ {90.4762f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch77st[] =
+{
+ {2,ch77st0},
+ {2,ch77st1},
+ {2,ch77st2},
+ {2,ch77st3}
+};
+
+static const Fl_Glut_StrokeChar ch77 = {104.762f,4,ch77st};
+
+/* char: 0x4e */
+
+static const Fl_Glut_StrokeVertex ch78st0[] =
+{
+ {19.0476f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch78st1[] =
+{
+ {19.0476f,100.0f},
+ {85.7143f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch78st2[] =
+{
+ {85.7143f,100.0f},
+ {85.7143f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch78st[] =
+{
+ {2,ch78st0},
+ {2,ch78st1},
+ {2,ch78st2}
+};
+
+static const Fl_Glut_StrokeChar ch78 = {104.762f,3,ch78st};
+
+/* char: 0x4f */
+
+static const Fl_Glut_StrokeVertex ch79st0[] =
+{
+ {42.8571f,100.0f},
+ {33.3333f,95.2381f},
+ {23.8095f,85.7143f},
+ {19.0476f,76.1905f},
+ {14.2857f,61.9048f},
+ {14.2857f,38.0952f},
+ {19.0476f,23.8095f},
+ {23.8095f,14.2857f},
+ {33.3333f,4.7619f},
+ {42.8571f,0.0f},
+ {61.9047f,0.0f},
+ {71.4286f,4.7619f},
+ {80.9524f,14.2857f},
+ {85.7143f,23.8095f},
+ {90.4762f,38.0952f},
+ {90.4762f,61.9048f},
+ {85.7143f,76.1905f},
+ {80.9524f,85.7143f},
+ {71.4286f,95.2381f},
+ {61.9047f,100.0f},
+ {42.8571f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch79st[] =
+{
+ {21,ch79st0}
+};
+
+static const Fl_Glut_StrokeChar ch79 = {104.762f,1,ch79st};
+
+/* char: 0x50 */
+
+static const Fl_Glut_StrokeVertex ch80st0[] =
+{
+ {19.0476f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch80st1[] =
+{
+ {19.0476f,100.0f},
+ {61.9047f,100.0f},
+ {76.1905f,95.2381f},
+ {80.9524f,90.4762f},
+ {85.7143f,80.9524f},
+ {85.7143f,66.6667f},
+ {80.9524f,57.1429f},
+ {76.1905f,52.381f},
+ {61.9047f,47.619f},
+ {19.0476f,47.619f}
+};
+
+static const Fl_Glut_StrokeStrip ch80st[] =
+{
+ {2,ch80st0},
+ {10,ch80st1}
+};
+
+static const Fl_Glut_StrokeChar ch80 = {104.762f,2,ch80st};
+
+/* char: 0x51 */
+
+static const Fl_Glut_StrokeVertex ch81st0[] =
+{
+ {42.8571f,100.0f},
+ {33.3333f,95.2381f},
+ {23.8095f,85.7143f},
+ {19.0476f,76.1905f},
+ {14.2857f,61.9048f},
+ {14.2857f,38.0952f},
+ {19.0476f,23.8095f},
+ {23.8095f,14.2857f},
+ {33.3333f,4.7619f},
+ {42.8571f,0.0f},
+ {61.9047f,0.0f},
+ {71.4286f,4.7619f},
+ {80.9524f,14.2857f},
+ {85.7143f,23.8095f},
+ {90.4762f,38.0952f},
+ {90.4762f,61.9048f},
+ {85.7143f,76.1905f},
+ {80.9524f,85.7143f},
+ {71.4286f,95.2381f},
+ {61.9047f,100.0f},
+ {42.8571f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch81st1[] =
+{
+ {57.1428f,19.0476f},
+ {85.7143f,-9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch81st[] =
+{
+ {21,ch81st0},
+ {2,ch81st1}
+};
+
+static const Fl_Glut_StrokeChar ch81 = {104.762f,2,ch81st};
+
+/* char: 0x52 */
+
+static const Fl_Glut_StrokeVertex ch82st0[] =
+{
+ {19.0476f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch82st1[] =
+{
+ {19.0476f,100.0f},
+ {61.9047f,100.0f},
+ {76.1905f,95.2381f},
+ {80.9524f,90.4762f},
+ {85.7143f,80.9524f},
+ {85.7143f,71.4286f},
+ {80.9524f,61.9048f},
+ {76.1905f,57.1429f},
+ {61.9047f,52.381f},
+ {19.0476f,52.381f}
+};
+
+static const Fl_Glut_StrokeVertex ch82st2[] =
+{
+ {52.3809f,52.381f},
+ {85.7143f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch82st[] =
+{
+ {2,ch82st0},
+ {10,ch82st1},
+ {2,ch82st2}
+};
+
+static const Fl_Glut_StrokeChar ch82 = {104.762f,3,ch82st};
+
+/* char: 0x53 */
+
+static const Fl_Glut_StrokeVertex ch83st0[] =
+{
+ {85.7143f,85.7143f},
+ {76.1905f,95.2381f},
+ {61.9047f,100.0f},
+ {42.8571f,100.0f},
+ {28.5714f,95.2381f},
+ {19.0476f,85.7143f},
+ {19.0476f,76.1905f},
+ {23.8095f,66.6667f},
+ {28.5714f,61.9048f},
+ {38.0952f,57.1429f},
+ {66.6666f,47.619f},
+ {76.1905f,42.8571f},
+ {80.9524f,38.0952f},
+ {85.7143f,28.5714f},
+ {85.7143f,14.2857f},
+ {76.1905f,4.7619f},
+ {61.9047f,0.0f},
+ {42.8571f,0.0f},
+ {28.5714f,4.7619f},
+ {19.0476f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch83st[] =
+{
+ {20,ch83st0}
+};
+
+static const Fl_Glut_StrokeChar ch83 = {104.762f,1,ch83st};
+
+/* char: 0x54 */
+
+static const Fl_Glut_StrokeVertex ch84st0[] =
+{
+ {52.3809f,100.0f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch84st1[] =
+{
+ {19.0476f,100.0f},
+ {85.7143f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch84st[] =
+{
+ {2,ch84st0},
+ {2,ch84st1}
+};
+
+static const Fl_Glut_StrokeChar ch84 = {104.762f,2,ch84st};
+
+/* char: 0x55 */
+
+static const Fl_Glut_StrokeVertex ch85st0[] =
+{
+ {19.0476f,100.0f},
+ {19.0476f,28.5714f},
+ {23.8095f,14.2857f},
+ {33.3333f,4.7619f},
+ {47.619f,0.0f},
+ {57.1428f,0.0f},
+ {71.4286f,4.7619f},
+ {80.9524f,14.2857f},
+ {85.7143f,28.5714f},
+ {85.7143f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch85st[] =
+{
+ {10,ch85st0}
+};
+
+static const Fl_Glut_StrokeChar ch85 = {104.762f,1,ch85st};
+
+/* char: 0x56 */
+
+static const Fl_Glut_StrokeVertex ch86st0[] =
+{
+ {14.2857f,100.0f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch86st1[] =
+{
+ {90.4762f,100.0f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch86st[] =
+{
+ {2,ch86st0},
+ {2,ch86st1}
+};
+
+static const Fl_Glut_StrokeChar ch86 = {104.762f,2,ch86st};
+
+/* char: 0x57 */
+
+static const Fl_Glut_StrokeVertex ch87st0[] =
+{
+ {4.7619f,100.0f},
+ {28.5714f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch87st1[] =
+{
+ {52.3809f,100.0f},
+ {28.5714f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch87st2[] =
+{
+ {52.3809f,100.0f},
+ {76.1905f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch87st3[] =
+{
+ {100.0f,100.0f},
+ {76.1905f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch87st[] =
+{
+ {2,ch87st0},
+ {2,ch87st1},
+ {2,ch87st2},
+ {2,ch87st3}
+};
+
+static const Fl_Glut_StrokeChar ch87 = {104.762f,4,ch87st};
+
+/* char: 0x58 */
+
+static const Fl_Glut_StrokeVertex ch88st0[] =
+{
+ {19.0476f,100.0f},
+ {85.7143f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch88st1[] =
+{
+ {85.7143f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch88st[] =
+{
+ {2,ch88st0},
+ {2,ch88st1}
+};
+
+static const Fl_Glut_StrokeChar ch88 = {104.762f,2,ch88st};
+
+/* char: 0x59 */
+
+static const Fl_Glut_StrokeVertex ch89st0[] =
+{
+ {14.2857f,100.0f},
+ {52.3809f,52.381f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch89st1[] =
+{
+ {90.4762f,100.0f},
+ {52.3809f,52.381f}
+};
+
+static const Fl_Glut_StrokeStrip ch89st[] =
+{
+ {3,ch89st0},
+ {2,ch89st1}
+};
+
+static const Fl_Glut_StrokeChar ch89 = {104.762f,2,ch89st};
+
+/* char: 0x5a */
+
+static const Fl_Glut_StrokeVertex ch90st0[] =
+{
+ {85.7143f,100.0f},
+ {19.0476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch90st1[] =
+{
+ {19.0476f,100.0f},
+ {85.7143f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch90st2[] =
+{
+ {19.0476f,0.0f},
+ {85.7143f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch90st[] =
+{
+ {2,ch90st0},
+ {2,ch90st1},
+ {2,ch90st2}
+};
+
+static const Fl_Glut_StrokeChar ch90 = {104.762f,3,ch90st};
+
+/* char: 0x5b */
+
+static const Fl_Glut_StrokeVertex ch91st0[] =
+{
+ {35.7143f,119.048f},
+ {35.7143f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch91st1[] =
+{
+ {40.4762f,119.048f},
+ {40.4762f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch91st2[] =
+{
+ {35.7143f,119.048f},
+ {69.0476f,119.048f}
+};
+
+static const Fl_Glut_StrokeVertex ch91st3[] =
+{
+ {35.7143f,-33.3333f},
+ {69.0476f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch91st[] =
+{
+ {2,ch91st0},
+ {2,ch91st1},
+ {2,ch91st2},
+ {2,ch91st3}
+};
+
+static const Fl_Glut_StrokeChar ch91 = {104.762f,4,ch91st};
+
+/* char: 0x5c */
+
+static const Fl_Glut_StrokeVertex ch92st0[] =
+{
+ {19.0476f,100.0f},
+ {85.7143f,-14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch92st[] =
+{
+ {2,ch92st0}
+};
+
+static const Fl_Glut_StrokeChar ch92 = {104.762f,1,ch92st};
+
+/* char: 0x5d */
+
+static const Fl_Glut_StrokeVertex ch93st0[] =
+{
+ {64.2857f,119.048f},
+ {64.2857f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch93st1[] =
+{
+ {69.0476f,119.048f},
+ {69.0476f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch93st2[] =
+{
+ {35.7143f,119.048f},
+ {69.0476f,119.048f}
+};
+
+static const Fl_Glut_StrokeVertex ch93st3[] =
+{
+ {35.7143f,-33.3333f},
+ {69.0476f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch93st[] =
+{
+ {2,ch93st0},
+ {2,ch93st1},
+ {2,ch93st2},
+ {2,ch93st3}
+};
+
+static const Fl_Glut_StrokeChar ch93 = {104.762f,4,ch93st};
+
+/* char: 0x5e */
+
+static const Fl_Glut_StrokeVertex ch94st0[] =
+{
+ {52.3809f,109.524f},
+ {14.2857f,42.8571f}
+};
+
+static const Fl_Glut_StrokeVertex ch94st1[] =
+{
+ {52.3809f,109.524f},
+ {90.4762f,42.8571f}
+};
+
+static const Fl_Glut_StrokeStrip ch94st[] =
+{
+ {2,ch94st0},
+ {2,ch94st1}
+};
+
+static const Fl_Glut_StrokeChar ch94 = {104.762f,2,ch94st};
+
+/* char: 0x5f */
+
+static const Fl_Glut_StrokeVertex ch95st0[] =
+{
+ {0,-33.3333f},
+ {104.762f,-33.3333f},
+ {104.762f,-28.5714f},
+ {0,-28.5714f},
+ {0,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch95st[] =
+{
+ {5,ch95st0}
+};
+
+static const Fl_Glut_StrokeChar ch95 = {104.762f,1,ch95st};
+
+/* char: 0x60 */
+
+static const Fl_Glut_StrokeVertex ch96st0[] =
+{
+ {42.8572f,100.0f},
+ {66.6667f,71.4286f}
+};
+
+static const Fl_Glut_StrokeVertex ch96st1[] =
+{
+ {42.8572f,100.0f},
+ {38.0953f,95.2381f},
+ {66.6667f,71.4286f}
+};
+
+static const Fl_Glut_StrokeStrip ch96st[] =
+{
+ {2,ch96st0},
+ {3,ch96st1}
+};
+
+static const Fl_Glut_StrokeChar ch96 = {104.762f,2,ch96st};
+
+/* char: 0x61 */
+
+static const Fl_Glut_StrokeVertex ch97st0[] =
+{
+ {80.9524f,66.6667f},
+ {80.9524f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch97st1[] =
+{
+ {80.9524f,52.381f},
+ {71.4285f,61.9048f},
+ {61.9047f,66.6667f},
+ {47.619f,66.6667f},
+ {38.0952f,61.9048f},
+ {28.5714f,52.381f},
+ {23.8095f,38.0952f},
+ {23.8095f,28.5714f},
+ {28.5714f,14.2857f},
+ {38.0952f,4.7619f},
+ {47.619f,0.0f},
+ {61.9047f,0.0f},
+ {71.4285f,4.7619f},
+ {80.9524f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch97st[] =
+{
+ {2,ch97st0},
+ {14,ch97st1}
+};
+
+static const Fl_Glut_StrokeChar ch97 = {104.762f,2,ch97st};
+
+/* char: 0x62 */
+
+static const Fl_Glut_StrokeVertex ch98st0[] =
+{
+ {23.8095f,100.0f},
+ {23.8095f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch98st1[] =
+{
+ {23.8095f,52.381f},
+ {33.3333f,61.9048f},
+ {42.8571f,66.6667f},
+ {57.1428f,66.6667f},
+ {66.6666f,61.9048f},
+ {76.1905f,52.381f},
+ {80.9524f,38.0952f},
+ {80.9524f,28.5714f},
+ {76.1905f,14.2857f},
+ {66.6666f,4.7619f},
+ {57.1428f,0.0f},
+ {42.8571f,0.0f},
+ {33.3333f,4.7619f},
+ {23.8095f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch98st[] =
+{
+ {2,ch98st0},
+ {14,ch98st1}
+};
+
+static const Fl_Glut_StrokeChar ch98 = {104.762f,2,ch98st};
+
+/* char: 0x63 */
+
+static const Fl_Glut_StrokeVertex ch99st0[] =
+{
+ {80.9524f,52.381f},
+ {71.4285f,61.9048f},
+ {61.9047f,66.6667f},
+ {47.619f,66.6667f},
+ {38.0952f,61.9048f},
+ {28.5714f,52.381f},
+ {23.8095f,38.0952f},
+ {23.8095f,28.5714f},
+ {28.5714f,14.2857f},
+ {38.0952f,4.7619f},
+ {47.619f,0.0f},
+ {61.9047f,0.0f},
+ {71.4285f,4.7619f},
+ {80.9524f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch99st[] =
+{
+ {14,ch99st0}
+};
+
+static const Fl_Glut_StrokeChar ch99 = {104.762f,1,ch99st};
+
+/* char: 0x64 */
+
+static const Fl_Glut_StrokeVertex ch100st0[] =
+{
+ {80.9524f,100.0f},
+ {80.9524f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch100st1[] =
+{
+ {80.9524f,52.381f},
+ {71.4285f,61.9048f},
+ {61.9047f,66.6667f},
+ {47.619f,66.6667f},
+ {38.0952f,61.9048f},
+ {28.5714f,52.381f},
+ {23.8095f,38.0952f},
+ {23.8095f,28.5714f},
+ {28.5714f,14.2857f},
+ {38.0952f,4.7619f},
+ {47.619f,0.0f},
+ {61.9047f,0.0f},
+ {71.4285f,4.7619f},
+ {80.9524f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch100st[] =
+{
+ {2,ch100st0},
+ {14,ch100st1}
+};
+
+static const Fl_Glut_StrokeChar ch100 = {104.762f,2,ch100st};
+
+/* char: 0x65 */
+
+static const Fl_Glut_StrokeVertex ch101st0[] =
+{
+ {23.8095f,38.0952f},
+ {80.9524f,38.0952f},
+ {80.9524f,47.619f},
+ {76.1905f,57.1429f},
+ {71.4285f,61.9048f},
+ {61.9047f,66.6667f},
+ {47.619f,66.6667f},
+ {38.0952f,61.9048f},
+ {28.5714f,52.381f},
+ {23.8095f,38.0952f},
+ {23.8095f,28.5714f},
+ {28.5714f,14.2857f},
+ {38.0952f,4.7619f},
+ {47.619f,0.0f},
+ {61.9047f,0.0f},
+ {71.4285f,4.7619f},
+ {80.9524f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch101st[] =
+{
+ {17,ch101st0}
+};
+
+static const Fl_Glut_StrokeChar ch101 = {104.762f,1,ch101st};
+
+/* char: 0x66 */
+
+static const Fl_Glut_StrokeVertex ch102st0[] =
+{
+ {71.4286f,100.0f},
+ {61.9048f,100.0f},
+ {52.381f,95.2381f},
+ {47.6191f,80.9524f},
+ {47.6191f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch102st1[] =
+{
+ {33.3334f,66.6667f},
+ {66.6667f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch102st[] =
+{
+ {5,ch102st0},
+ {2,ch102st1}
+};
+
+static const Fl_Glut_StrokeChar ch102 = {104.762f,2,ch102st};
+
+/* char: 0x67 */
+
+static const Fl_Glut_StrokeVertex ch103st0[] =
+{
+ {80.9524f,66.6667f},
+ {80.9524f,-9.5238f},
+ {76.1905f,-23.8095f},
+ {71.4285f,-28.5714f},
+ {61.9047f,-33.3333f},
+ {47.619f,-33.3333f},
+ {38.0952f,-28.5714f}
+};
+
+static const Fl_Glut_StrokeVertex ch103st1[] =
+{
+ {80.9524f,52.381f},
+ {71.4285f,61.9048f},
+ {61.9047f,66.6667f},
+ {47.619f,66.6667f},
+ {38.0952f,61.9048f},
+ {28.5714f,52.381f},
+ {23.8095f,38.0952f},
+ {23.8095f,28.5714f},
+ {28.5714f,14.2857f},
+ {38.0952f,4.7619f},
+ {47.619f,0.0f},
+ {61.9047f,0.0f},
+ {71.4285f,4.7619f},
+ {80.9524f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch103st[] =
+{
+ {7,ch103st0},
+ {14,ch103st1}
+};
+
+static const Fl_Glut_StrokeChar ch103 = {104.762f,2,ch103st};
+
+/* char: 0x68 */
+
+static const Fl_Glut_StrokeVertex ch104st0[] =
+{
+ {26.1905f,100.0f},
+ {26.1905f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch104st1[] =
+{
+ {26.1905f,47.619f},
+ {40.4762f,61.9048f},
+ {50.0f,66.6667f},
+ {64.2857f,66.6667f},
+ {73.8095f,61.9048f},
+ {78.5715f,47.619f},
+ {78.5715f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch104st[] =
+{
+ {2,ch104st0},
+ {7,ch104st1}
+};
+
+static const Fl_Glut_StrokeChar ch104 = {104.762f,2,ch104st};
+
+/* char: 0x69 */
+
+static const Fl_Glut_StrokeVertex ch105st0[] =
+{
+ {47.6191f,100.0f},
+ {52.381f,95.2381f},
+ {57.1429f,100.0f},
+ {52.381f,104.762f},
+ {47.6191f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch105st1[] =
+{
+ {52.381f,66.6667f},
+ {52.381f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch105st[] =
+{
+ {5,ch105st0},
+ {2,ch105st1}
+};
+
+static const Fl_Glut_StrokeChar ch105 = {104.762f,2,ch105st};
+
+/* char: 0x6a */
+
+static const Fl_Glut_StrokeVertex ch106st0[] =
+{
+ {57.1429f,100.0f},
+ {61.9048f,95.2381f},
+ {66.6667f,100.0f},
+ {61.9048f,104.762f},
+ {57.1429f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch106st1[] =
+{
+ {61.9048f,66.6667f},
+ {61.9048f,-14.2857f},
+ {57.1429f,-28.5714f},
+ {47.6191f,-33.3333f},
+ {38.0953f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch106st[] =
+{
+ {5,ch106st0},
+ {5,ch106st1}
+};
+
+static const Fl_Glut_StrokeChar ch106 = {104.762f,2,ch106st};
+
+/* char: 0x6b */
+
+static const Fl_Glut_StrokeVertex ch107st0[] =
+{
+ {26.1905f,100.0f},
+ {26.1905f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch107st1[] =
+{
+ {73.8095f,66.6667f},
+ {26.1905f,19.0476f}
+};
+
+static const Fl_Glut_StrokeVertex ch107st2[] =
+{
+ {45.2381f,38.0952f},
+ {78.5715f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch107st[] =
+{
+ {2,ch107st0},
+ {2,ch107st1},
+ {2,ch107st2}
+};
+
+static const Fl_Glut_StrokeChar ch107 = {104.762f,3,ch107st};
+
+/* char: 0x6c */
+
+static const Fl_Glut_StrokeVertex ch108st0[] =
+{
+ {52.381f,100.0f},
+ {52.381f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch108st[] =
+{
+ {2,ch108st0}
+};
+
+static const Fl_Glut_StrokeChar ch108 = {104.762f,1,ch108st};
+
+/* char: 0x6d */
+
+static const Fl_Glut_StrokeVertex ch109st0[] =
+{
+ {0,66.6667f},
+ {0,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch109st1[] =
+{
+ {0,47.619f},
+ {14.2857f,61.9048f},
+ {23.8095f,66.6667f},
+ {38.0952f,66.6667f},
+ {47.619f,61.9048f},
+ {52.381f,47.619f},
+ {52.381f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch109st2[] =
+{
+ {52.381f,47.619f},
+ {66.6667f,61.9048f},
+ {76.1905f,66.6667f},
+ {90.4762f,66.6667f},
+ {100.0f,61.9048f},
+ {104.762f,47.619f},
+ {104.762f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch109st[] =
+{
+ {2,ch109st0},
+ {7,ch109st1},
+ {7,ch109st2}
+};
+
+static const Fl_Glut_StrokeChar ch109 = {104.762f,3,ch109st};
+
+/* char: 0x6e */
+
+static const Fl_Glut_StrokeVertex ch110st0[] =
+{
+ {26.1905f,66.6667f},
+ {26.1905f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch110st1[] =
+{
+ {26.1905f,47.619f},
+ {40.4762f,61.9048f},
+ {50.0f,66.6667f},
+ {64.2857f,66.6667f},
+ {73.8095f,61.9048f},
+ {78.5715f,47.619f},
+ {78.5715f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch110st[] =
+{
+ {2,ch110st0},
+ {7,ch110st1}
+};
+
+static const Fl_Glut_StrokeChar ch110 = {104.762f,2,ch110st};
+
+/* char: 0x6f */
+
+static const Fl_Glut_StrokeVertex ch111st0[] =
+{
+ {45.2381f,66.6667f},
+ {35.7143f,61.9048f},
+ {26.1905f,52.381f},
+ {21.4286f,38.0952f},
+ {21.4286f,28.5714f},
+ {26.1905f,14.2857f},
+ {35.7143f,4.7619f},
+ {45.2381f,0.0f},
+ {59.5238f,0.0f},
+ {69.0476f,4.7619f},
+ {78.5714f,14.2857f},
+ {83.3334f,28.5714f},
+ {83.3334f,38.0952f},
+ {78.5714f,52.381f},
+ {69.0476f,61.9048f},
+ {59.5238f,66.6667f},
+ {45.2381f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch111st[] =
+{
+ {17,ch111st0}
+};
+
+static const Fl_Glut_StrokeChar ch111 = {104.762f,1,ch111st};
+
+/* char: 0x70 */
+
+static const Fl_Glut_StrokeVertex ch112st0[] =
+{
+ {23.8095f,66.6667f},
+ {23.8095f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch112st1[] =
+{
+ {23.8095f,52.381f},
+ {33.3333f,61.9048f},
+ {42.8571f,66.6667f},
+ {57.1428f,66.6667f},
+ {66.6666f,61.9048f},
+ {76.1905f,52.381f},
+ {80.9524f,38.0952f},
+ {80.9524f,28.5714f},
+ {76.1905f,14.2857f},
+ {66.6666f,4.7619f},
+ {57.1428f,0.0f},
+ {42.8571f,0.0f},
+ {33.3333f,4.7619f},
+ {23.8095f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch112st[] =
+{
+ {2,ch112st0},
+ {14,ch112st1}
+};
+
+static const Fl_Glut_StrokeChar ch112 = {104.762f,2,ch112st};
+
+/* char: 0x71 */
+
+static const Fl_Glut_StrokeVertex ch113st0[] =
+{
+ {80.9524f,66.6667f},
+ {80.9524f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch113st1[] =
+{
+ {80.9524f,52.381f},
+ {71.4285f,61.9048f},
+ {61.9047f,66.6667f},
+ {47.619f,66.6667f},
+ {38.0952f,61.9048f},
+ {28.5714f,52.381f},
+ {23.8095f,38.0952f},
+ {23.8095f,28.5714f},
+ {28.5714f,14.2857f},
+ {38.0952f,4.7619f},
+ {47.619f,0.0f},
+ {61.9047f,0.0f},
+ {71.4285f,4.7619f},
+ {80.9524f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch113st[] =
+{
+ {2,ch113st0},
+ {14,ch113st1}
+};
+
+static const Fl_Glut_StrokeChar ch113 = {104.762f,2,ch113st};
+
+/* char: 0x72 */
+
+static const Fl_Glut_StrokeVertex ch114st0[] =
+{
+ {33.3334f,66.6667f},
+ {33.3334f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch114st1[] =
+{
+ {33.3334f,38.0952f},
+ {38.0953f,52.381f},
+ {47.6191f,61.9048f},
+ {57.1429f,66.6667f},
+ {71.4286f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch114st[] =
+{
+ {2,ch114st0},
+ {5,ch114st1}
+};
+
+static const Fl_Glut_StrokeChar ch114 = {104.762f,2,ch114st};
+
+/* char: 0x73 */
+
+static const Fl_Glut_StrokeVertex ch115st0[] =
+{
+ {78.5715f,52.381f},
+ {73.8095f,61.9048f},
+ {59.5238f,66.6667f},
+ {45.2381f,66.6667f},
+ {30.9524f,61.9048f},
+ {26.1905f,52.381f},
+ {30.9524f,42.8571f},
+ {40.4762f,38.0952f},
+ {64.2857f,33.3333f},
+ {73.8095f,28.5714f},
+ {78.5715f,19.0476f},
+ {78.5715f,14.2857f},
+ {73.8095f,4.7619f},
+ {59.5238f,0.0f},
+ {45.2381f,0.0f},
+ {30.9524f,4.7619f},
+ {26.1905f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch115st[] =
+{
+ {17,ch115st0}
+};
+
+static const Fl_Glut_StrokeChar ch115 = {104.762f,1,ch115st};
+
+/* char: 0x74 */
+
+static const Fl_Glut_StrokeVertex ch116st0[] =
+{
+ {47.6191f,100.0f},
+ {47.6191f,19.0476f},
+ {52.381f,4.7619f},
+ {61.9048f,0.0f},
+ {71.4286f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch116st1[] =
+{
+ {33.3334f,66.6667f},
+ {66.6667f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch116st[] =
+{
+ {5,ch116st0},
+ {2,ch116st1}
+};
+
+static const Fl_Glut_StrokeChar ch116 = {104.762f,2,ch116st};
+
+/* char: 0x75 */
+
+static const Fl_Glut_StrokeVertex ch117st0[] =
+{
+ {26.1905f,66.6667f},
+ {26.1905f,19.0476f},
+ {30.9524f,4.7619f},
+ {40.4762f,0.0f},
+ {54.7619f,0.0f},
+ {64.2857f,4.7619f},
+ {78.5715f,19.0476f}
+};
+
+static const Fl_Glut_StrokeVertex ch117st1[] =
+{
+ {78.5715f,66.6667f},
+ {78.5715f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch117st[] =
+{
+ {7,ch117st0},
+ {2,ch117st1}
+};
+
+static const Fl_Glut_StrokeChar ch117 = {104.762f,2,ch117st};
+
+/* char: 0x76 */
+
+static const Fl_Glut_StrokeVertex ch118st0[] =
+{
+ {23.8095f,66.6667f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch118st1[] =
+{
+ {80.9524f,66.6667f},
+ {52.3809f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch118st[] =
+{
+ {2,ch118st0},
+ {2,ch118st1}
+};
+
+static const Fl_Glut_StrokeChar ch118 = {104.762f,2,ch118st};
+
+/* char: 0x77 */
+
+static const Fl_Glut_StrokeVertex ch119st0[] =
+{
+ {14.2857f,66.6667f},
+ {33.3333f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch119st1[] =
+{
+ {52.3809f,66.6667f},
+ {33.3333f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch119st2[] =
+{
+ {52.3809f,66.6667f},
+ {71.4286f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch119st3[] =
+{
+ {90.4762f,66.6667f},
+ {71.4286f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch119st[] =
+{
+ {2,ch119st0},
+ {2,ch119st1},
+ {2,ch119st2},
+ {2,ch119st3}
+};
+
+static const Fl_Glut_StrokeChar ch119 = {104.762f,4,ch119st};
+
+/* char: 0x78 */
+
+static const Fl_Glut_StrokeVertex ch120st0[] =
+{
+ {26.1905f,66.6667f},
+ {78.5715f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch120st1[] =
+{
+ {78.5715f,66.6667f},
+ {26.1905f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch120st[] =
+{
+ {2,ch120st0},
+ {2,ch120st1}
+};
+
+static const Fl_Glut_StrokeChar ch120 = {104.762f,2,ch120st};
+
+/* char: 0x79 */
+
+static const Fl_Glut_StrokeVertex ch121st0[] =
+{
+ {26.1905f,66.6667f},
+ {54.7619f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch121st1[] =
+{
+ {83.3334f,66.6667f},
+ {54.7619f,0.0f},
+ {45.2381f,-19.0476f},
+ {35.7143f,-28.5714f},
+ {26.1905f,-33.3333f},
+ {21.4286f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch121st[] =
+{
+ {2,ch121st0},
+ {6,ch121st1}
+};
+
+static const Fl_Glut_StrokeChar ch121 = {104.762f,2,ch121st};
+
+/* char: 0x7a */
+
+static const Fl_Glut_StrokeVertex ch122st0[] =
+{
+ {78.5715f,66.6667f},
+ {26.1905f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch122st1[] =
+{
+ {26.1905f,66.6667f},
+ {78.5715f,66.6667f}
+};
+
+static const Fl_Glut_StrokeVertex ch122st2[] =
+{
+ {26.1905f,0.0f},
+ {78.5715f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch122st[] =
+{
+ {2,ch122st0},
+ {2,ch122st1},
+ {2,ch122st2}
+};
+
+static const Fl_Glut_StrokeChar ch122 = {104.762f,3,ch122st};
+
+/* char: 0x7b */
+
+static const Fl_Glut_StrokeVertex ch123st0[] =
+{
+ {64.2857f,119.048f},
+ {54.7619f,114.286f},
+ {50.0f,109.524f},
+ {45.2381f,100.0f},
+ {45.2381f,90.4762f},
+ {50.0f,80.9524f},
+ {54.7619f,76.1905f},
+ {59.5238f,66.6667f},
+ {59.5238f,57.1429f},
+ {50.0f,47.619f}
+};
+
+static const Fl_Glut_StrokeVertex ch123st1[] =
+{
+ {54.7619f,114.286f},
+ {50.0f,104.762f},
+ {50.0f,95.2381f},
+ {54.7619f,85.7143f},
+ {59.5238f,80.9524f},
+ {64.2857f,71.4286f},
+ {64.2857f,61.9048f},
+ {59.5238f,52.381f},
+ {40.4762f,42.8571f},
+ {59.5238f,33.3333f},
+ {64.2857f,23.8095f},
+ {64.2857f,14.2857f},
+ {59.5238f,4.7619f},
+ {54.7619f,0.0f},
+ {50.0f,-9.5238f},
+ {50.0f,-19.0476f},
+ {54.7619f,-28.5714f}
+};
+
+static const Fl_Glut_StrokeVertex ch123st2[] =
+{
+ {50.0f,38.0952f},
+ {59.5238f,28.5714f},
+ {59.5238f,19.0476f},
+ {54.7619f,9.5238f},
+ {50.0f,4.7619f},
+ {45.2381f,-4.7619f},
+ {45.2381f,-14.2857f},
+ {50.0f,-23.8095f},
+ {54.7619f,-28.5714f},
+ {64.2857f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch123st[] =
+{
+ {10,ch123st0},
+ {17,ch123st1},
+ {10,ch123st2}
+};
+
+static const Fl_Glut_StrokeChar ch123 = {104.762f,3,ch123st};
+
+/* char: 0x7c */
+
+static const Fl_Glut_StrokeVertex ch124st0[] =
+{
+ {52.381f,119.048f},
+ {52.381f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch124st[] =
+{
+ {2,ch124st0}
+};
+
+static const Fl_Glut_StrokeChar ch124 = {104.762f,1,ch124st};
+
+/* char: 0x7d */
+
+static const Fl_Glut_StrokeVertex ch125st0[] =
+{
+ {40.4762f,119.048f},
+ {50.0f,114.286f},
+ {54.7619f,109.524f},
+ {59.5238f,100.0f},
+ {59.5238f,90.4762f},
+ {54.7619f,80.9524f},
+ {50.0f,76.1905f},
+ {45.2381f,66.6667f},
+ {45.2381f,57.1429f},
+ {54.7619f,47.619f}
+};
+
+static const Fl_Glut_StrokeVertex ch125st1[] =
+{
+ {50.0f,114.286f},
+ {54.7619f,104.762f},
+ {54.7619f,95.2381f},
+ {50.0f,85.7143f},
+ {45.2381f,80.9524f},
+ {40.4762f,71.4286f},
+ {40.4762f,61.9048f},
+ {45.2381f,52.381f},
+ {64.2857f,42.8571f},
+ {45.2381f,33.3333f},
+ {40.4762f,23.8095f},
+ {40.4762f,14.2857f},
+ {45.2381f,4.7619f},
+ {50.0f,0.0f},
+ {54.7619f,-9.5238f},
+ {54.7619f,-19.0476f},
+ {50.0f,-28.5714f}
+};
+
+static const Fl_Glut_StrokeVertex ch125st2[] =
+{
+ {54.7619f,38.0952f},
+ {45.2381f,28.5714f},
+ {45.2381f,19.0476f},
+ {50.0f,9.5238f},
+ {54.7619f,4.7619f},
+ {59.5238f,-4.7619f},
+ {59.5238f,-14.2857f},
+ {54.7619f,-23.8095f},
+ {50.0f,-28.5714f},
+ {40.4762f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch125st[] =
+{
+ {10,ch125st0},
+ {17,ch125st1},
+ {10,ch125st2}
+};
+
+static const Fl_Glut_StrokeChar ch125 = {104.762f,3,ch125st};
+
+/* char: 0x7e */
+
+static const Fl_Glut_StrokeVertex ch126st0[] =
+{
+ {9.5238f,28.5714f},
+ {9.5238f,38.0952f},
+ {14.2857f,52.381f},
+ {23.8095f,57.1429f},
+ {33.3333f,57.1429f},
+ {42.8571f,52.381f},
+ {61.9048f,38.0952f},
+ {71.4286f,33.3333f},
+ {80.9524f,33.3333f},
+ {90.4762f,38.0952f},
+ {95.2381f,47.619f}
+};
+
+static const Fl_Glut_StrokeVertex ch126st1[] =
+{
+ {9.5238f,38.0952f},
+ {14.2857f,47.619f},
+ {23.8095f,52.381f},
+ {33.3333f,52.381f},
+ {42.8571f,47.619f},
+ {61.9048f,33.3333f},
+ {71.4286f,28.5714f},
+ {80.9524f,28.5714f},
+ {90.4762f,33.3333f},
+ {95.2381f,47.619f},
+ {95.2381f,57.1429f}
+};
+
+static const Fl_Glut_StrokeStrip ch126st[] =
+{
+ {11,ch126st0},
+ {11,ch126st1}
+};
+
+static const Fl_Glut_StrokeChar ch126 = {104.762f,2,ch126st};
+
+/* char: 0x7f */
+
+static const Fl_Glut_StrokeVertex ch127st0[] =
+{
+ {71.4286f,100.0f},
+ {33.3333f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch127st1[] =
+{
+ {47.619f,66.6667f},
+ {33.3333f,61.9048f},
+ {23.8095f,52.381f},
+ {19.0476f,38.0952f},
+ {19.0476f,23.8095f},
+ {23.8095f,14.2857f},
+ {33.3333f,4.7619f},
+ {47.619f,0.0f},
+ {57.1428f,0.0f},
+ {71.4286f,4.7619f},
+ {80.9524f,14.2857f},
+ {85.7143f,28.5714f},
+ {85.7143f,42.8571f},
+ {80.9524f,52.381f},
+ {71.4286f,61.9048f},
+ {57.1428f,66.6667f},
+ {47.619f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch127st[] =
+{
+ {2,ch127st0},
+ {17,ch127st1}
+};
+
+static const Fl_Glut_StrokeChar ch127 = {104.762f,2,ch127st};
+
+static const Fl_Glut_StrokeChar *chars[] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ &ch32, &ch33, &ch34, &ch35, &ch36, &ch37, &ch38, &ch39,
+ &ch40, &ch41, &ch42, &ch43, &ch44, &ch45, &ch46, &ch47,
+ &ch48, &ch49, &ch50, &ch51, &ch52, &ch53, &ch54, &ch55,
+ &ch56, &ch57, &ch58, &ch59, &ch60, &ch61, &ch62, &ch63,
+ &ch64, &ch65, &ch66, &ch67, &ch68, &ch69, &ch70, &ch71,
+ &ch72, &ch73, &ch74, &ch75, &ch76, &ch77, &ch78, &ch79,
+ &ch80, &ch81, &ch82, &ch83, &ch84, &ch85, &ch86, &ch87,
+ &ch88, &ch89, &ch90, &ch91, &ch92, &ch93, &ch94, &ch95,
+ &ch96, &ch97, &ch98, &ch99, &ch100, &ch101, &ch102, &ch103,
+ &ch104, &ch105, &ch106, &ch107, &ch108, &ch109, &ch110, &ch111,
+ &ch112, &ch113, &ch114, &ch115, &ch116, &ch117, &ch118, &ch119,
+ &ch120, &ch121, &ch122, &ch123, &ch124, &ch125, &ch126, &ch127
+};
+
+Fl_Glut_StrokeFont glutStrokeMonoRoman = {"MonoRoman",128,152.381f,chars};
diff --git a/src/freeglut_stroke_roman.cxx b/src/freeglut_stroke_roman.cxx
new file mode 100644
index 0000000..b6cf398
--- /dev/null
+++ b/src/freeglut_stroke_roman.cxx
@@ -0,0 +1,2848 @@
+/*
+ * freeglut_stroke_roman.c
+ *
+ * freeglut Roman stroke font definition
+ *
+ * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+ * Written by Pawel W. Olszta, <olszta@sourceforge.net>
+ * Creation date: Thu Dec 16 1999
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/* This file has been automatically generated by the genstroke utility. */
+
+#include <FL/glut.H>
+
+/* char: 0x20 */
+
+static const Fl_Glut_StrokeStrip ch32st[] =
+{
+ { 0, 0 }
+};
+
+static const Fl_Glut_StrokeChar ch32 = {104.762f,0,ch32st};
+
+/* char: 0x21 */
+
+static const Fl_Glut_StrokeVertex ch33st0[] =
+{
+ {13.3819f,100.0f},
+ {13.3819f,33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch33st1[] =
+{
+ {13.3819f,9.5238f},
+ {8.62f,4.7619f},
+ {13.3819f,0.0f},
+ {18.1438f,4.7619f},
+ {13.3819f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch33st[] =
+{
+ {2,ch33st0},
+ {5,ch33st1}
+};
+
+static const Fl_Glut_StrokeChar ch33 = {26.6238f,2,ch33st};
+
+/* char: 0x22 */
+
+static const Fl_Glut_StrokeVertex ch34st0[] =
+{
+ {4.02f,100.0f},
+ {4.02f,66.6667f}
+};
+
+static const Fl_Glut_StrokeVertex ch34st1[] =
+{
+ {42.1152f,100.0f},
+ {42.1152f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch34st[] =
+{
+ {2,ch34st0},
+ {2,ch34st1}
+};
+
+static const Fl_Glut_StrokeChar ch34 = {51.4352f,2,ch34st};
+
+/* char: 0x23 */
+
+static const Fl_Glut_StrokeVertex ch35st0[] =
+{
+ {41.2952f,119.048f},
+ {7.9619f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch35st1[] =
+{
+ {69.8667f,119.048f},
+ {36.5333f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch35st2[] =
+{
+ {7.9619f,57.1429f},
+ {74.6286f,57.1429f}
+};
+
+static const Fl_Glut_StrokeVertex ch35st3[] =
+{
+ {3.2f,28.5714f},
+ {69.8667f,28.5714f}
+};
+
+static const Fl_Glut_StrokeStrip ch35st[] =
+{
+ {2,ch35st0},
+ {2,ch35st1},
+ {2,ch35st2},
+ {2,ch35st3}
+};
+
+static const Fl_Glut_StrokeChar ch35 = {79.4886f,4,ch35st};
+
+/* char: 0x24 */
+
+static const Fl_Glut_StrokeVertex ch36st0[] =
+{
+ {28.6295f,119.048f},
+ {28.6295f,-19.0476f}
+};
+
+static const Fl_Glut_StrokeVertex ch36st1[] =
+{
+ {47.6771f,119.048f},
+ {47.6771f,-19.0476f}
+};
+
+static const Fl_Glut_StrokeVertex ch36st2[] =
+{
+ {71.4867f,85.7143f},
+ {61.9629f,95.2381f},
+ {47.6771f,100.0f},
+ {28.6295f,100.0f},
+ {14.3438f,95.2381f},
+ {4.82f,85.7143f},
+ {4.82f,76.1905f},
+ {9.5819f,66.6667f},
+ {14.3438f,61.9048f},
+ {23.8676f,57.1429f},
+ {52.439f,47.619f},
+ {61.9629f,42.8571f},
+ {66.7248f,38.0952f},
+ {71.4867f,28.5714f},
+ {71.4867f,14.2857f},
+ {61.9629f,4.7619f},
+ {47.6771f,0.0f},
+ {28.6295f,0.0f},
+ {14.3438f,4.7619f},
+ {4.82f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch36st[] =
+{
+ {2,ch36st0},
+ {2,ch36st1},
+ {20,ch36st2}
+};
+
+static const Fl_Glut_StrokeChar ch36 = {76.2067f,3,ch36st};
+
+/* char: 0x25 */
+
+static const Fl_Glut_StrokeVertex ch37st0[] =
+{
+ {92.0743f,100.0f},
+ {6.36f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch37st1[] =
+{
+ {30.1695f,100.0f},
+ {39.6933f,90.4762f},
+ {39.6933f,80.9524f},
+ {34.9314f,71.4286f},
+ {25.4076f,66.6667f},
+ {15.8838f,66.6667f},
+ {6.36f,76.1905f},
+ {6.36f,85.7143f},
+ {11.1219f,95.2381f},
+ {20.6457f,100.0f},
+ {30.1695f,100.0f},
+ {39.6933f,95.2381f},
+ {53.979f,90.4762f},
+ {68.2648f,90.4762f},
+ {82.5505f,95.2381f},
+ {92.0743f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch37st2[] =
+{
+ {73.0267f,33.3333f},
+ {63.5029f,28.5714f},
+ {58.741f,19.0476f},
+ {58.741f,9.5238f},
+ {68.2648f,0.0f},
+ {77.7886f,0.0f},
+ {87.3124f,4.7619f},
+ {92.0743f,14.2857f},
+ {92.0743f,23.8095f},
+ {82.5505f,33.3333f},
+ {73.0267f,33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch37st[] =
+{
+ {2,ch37st0},
+ {16,ch37st1},
+ {11,ch37st2}
+};
+
+static const Fl_Glut_StrokeChar ch37 = {96.5743f,3,ch37st};
+
+/* char: 0x26 */
+
+static const Fl_Glut_StrokeVertex ch38st0[] =
+{
+ {101.218f,57.1429f},
+ {101.218f,61.9048f},
+ {96.4562f,66.6667f},
+ {91.6943f,66.6667f},
+ {86.9324f,61.9048f},
+ {82.1705f,52.381f},
+ {72.6467f,28.5714f},
+ {63.1229f,14.2857f},
+ {53.599f,4.7619f},
+ {44.0752f,0.0f},
+ {25.0276f,0.0f},
+ {15.5038f,4.7619f},
+ {10.7419f,9.5238f},
+ {5.98f,19.0476f},
+ {5.98f,28.5714f},
+ {10.7419f,38.0952f},
+ {15.5038f,42.8571f},
+ {48.8371f,61.9048f},
+ {53.599f,66.6667f},
+ {58.361f,76.1905f},
+ {58.361f,85.7143f},
+ {53.599f,95.2381f},
+ {44.0752f,100.0f},
+ {34.5514f,95.2381f},
+ {29.7895f,85.7143f},
+ {29.7895f,76.1905f},
+ {34.5514f,61.9048f},
+ {44.0752f,47.619f},
+ {67.8848f,14.2857f},
+ {77.4086f,4.7619f},
+ {86.9324f,0.0f},
+ {96.4562f,0.0f},
+ {101.218f,4.7619f},
+ {101.218f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch38st[] =
+{
+ {34,ch38st0}
+};
+
+static const Fl_Glut_StrokeChar ch38 = {101.758f,1,ch38st};
+
+/* char: 0x27 */
+
+static const Fl_Glut_StrokeVertex ch39st0[] =
+{
+ {4.44f,100.0f},
+ {4.44f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch39st[] =
+{
+ {2,ch39st0}
+};
+
+static const Fl_Glut_StrokeChar ch39 = {13.62f,1,ch39st};
+
+/* char: 0x28 */
+
+static const Fl_Glut_StrokeVertex ch40st0[] =
+{
+ {40.9133f,119.048f},
+ {31.3895f,109.524f},
+ {21.8657f,95.2381f},
+ {12.3419f,76.1905f},
+ {7.58f,52.381f},
+ {7.58f,33.3333f},
+ {12.3419f,9.5238f},
+ {21.8657f,-9.5238f},
+ {31.3895f,-23.8095f},
+ {40.9133f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch40st[] =
+{
+ {10,ch40st0}
+};
+
+static const Fl_Glut_StrokeChar ch40 = {47.1733f,1,ch40st};
+
+/* char: 0x29 */
+
+static const Fl_Glut_StrokeVertex ch41st0[] =
+{
+ {5.28f,119.048f},
+ {14.8038f,109.524f},
+ {24.3276f,95.2381f},
+ {33.8514f,76.1905f},
+ {38.6133f,52.381f},
+ {38.6133f,33.3333f},
+ {33.8514f,9.5238f},
+ {24.3276f,-9.5238f},
+ {14.8038f,-23.8095f},
+ {5.28f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch41st[] =
+{
+ {10,ch41st0}
+};
+
+static const Fl_Glut_StrokeChar ch41 = {47.5333f,1,ch41st};
+
+/* char: 0x2a */
+
+static const Fl_Glut_StrokeVertex ch42st0[] =
+{
+ {30.7695f,71.4286f},
+ {30.7695f,14.2857f}
+};
+
+static const Fl_Glut_StrokeVertex ch42st1[] =
+{
+ {6.96f,57.1429f},
+ {54.579f,28.5714f}
+};
+
+static const Fl_Glut_StrokeVertex ch42st2[] =
+{
+ {54.579f,57.1429f},
+ {6.96f,28.5714f}
+};
+
+static const Fl_Glut_StrokeStrip ch42st[] =
+{
+ {2,ch42st0},
+ {2,ch42st1},
+ {2,ch42st2}
+};
+
+static const Fl_Glut_StrokeChar ch42 = {59.439f,3,ch42st};
+
+/* char: 0x2b */
+
+static const Fl_Glut_StrokeVertex ch43st0[] =
+{
+ {48.8371f,85.7143f},
+ {48.8371f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch43st1[] =
+{
+ {5.98f,42.8571f},
+ {91.6943f,42.8571f}
+};
+
+static const Fl_Glut_StrokeStrip ch43st[] =
+{
+ {2,ch43st0},
+ {2,ch43st1}
+};
+
+static const Fl_Glut_StrokeChar ch43 = {97.2543f,2,ch43st};
+
+/* char: 0x2c */
+
+static const Fl_Glut_StrokeVertex ch44st0[] =
+{
+ {18.2838f,4.7619f},
+ {13.5219f,0.0f},
+ {8.76f,4.7619f},
+ {13.5219f,9.5238f},
+ {18.2838f,4.7619f},
+ {18.2838f,-4.7619f},
+ {13.5219f,-14.2857f},
+ {8.76f,-19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch44st[] =
+{
+ {8,ch44st0}
+};
+
+static const Fl_Glut_StrokeChar ch44 = {26.0638f,1,ch44st};
+
+/* char: 0x2d */
+
+static const Fl_Glut_StrokeVertex ch45st0[] =
+{
+ {7.38f,42.8571f},
+ {93.0943f,42.8571f}
+};
+
+static const Fl_Glut_StrokeStrip ch45st[] =
+{
+ {2,ch45st0}
+};
+
+static const Fl_Glut_StrokeChar ch45 = {100.754f,1,ch45st};
+
+/* char: 0x2e */
+
+static const Fl_Glut_StrokeVertex ch46st0[] =
+{
+ {13.1019f,9.5238f},
+ {8.34f,4.7619f},
+ {13.1019f,0.0f},
+ {17.8638f,4.7619f},
+ {13.1019f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch46st[] =
+{
+ {5,ch46st0}
+};
+
+static const Fl_Glut_StrokeChar ch46 = {26.4838f,1,ch46st};
+
+/* char: 0x2f */
+
+static const Fl_Glut_StrokeVertex ch47st0[] =
+{
+ {7.24f,-14.2857f},
+ {73.9067f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch47st[] =
+{
+ {2,ch47st0}
+};
+
+static const Fl_Glut_StrokeChar ch47 = {82.1067f,1,ch47st};
+
+/* char: 0x30 */
+
+static const Fl_Glut_StrokeVertex ch48st0[] =
+{
+ {33.5514f,100.0f},
+ {19.2657f,95.2381f},
+ {9.7419f,80.9524f},
+ {4.98f,57.1429f},
+ {4.98f,42.8571f},
+ {9.7419f,19.0476f},
+ {19.2657f,4.7619f},
+ {33.5514f,0.0f},
+ {43.0752f,0.0f},
+ {57.361f,4.7619f},
+ {66.8848f,19.0476f},
+ {71.6467f,42.8571f},
+ {71.6467f,57.1429f},
+ {66.8848f,80.9524f},
+ {57.361f,95.2381f},
+ {43.0752f,100.0f},
+ {33.5514f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch48st[] =
+{
+ {17,ch48st0}
+};
+
+static const Fl_Glut_StrokeChar ch48 = {77.0667f,1,ch48st};
+
+/* char: 0x31 */
+
+static const Fl_Glut_StrokeVertex ch49st0[] =
+{
+ {11.82f,80.9524f},
+ {21.3438f,85.7143f},
+ {35.6295f,100.0f},
+ {35.6295f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch49st[] =
+{
+ {4,ch49st0}
+};
+
+static const Fl_Glut_StrokeChar ch49 = {66.5295f,1,ch49st};
+
+/* char: 0x32 */
+
+static const Fl_Glut_StrokeVertex ch50st0[] =
+{
+ {10.1819f,76.1905f},
+ {10.1819f,80.9524f},
+ {14.9438f,90.4762f},
+ {19.7057f,95.2381f},
+ {29.2295f,100.0f},
+ {48.2771f,100.0f},
+ {57.801f,95.2381f},
+ {62.5629f,90.4762f},
+ {67.3248f,80.9524f},
+ {67.3248f,71.4286f},
+ {62.5629f,61.9048f},
+ {53.039f,47.619f},
+ {5.42f,0.0f},
+ {72.0867f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch50st[] =
+{
+ {14,ch50st0}
+};
+
+static const Fl_Glut_StrokeChar ch50 = {77.6467f,1,ch50st};
+
+/* char: 0x33 */
+
+static const Fl_Glut_StrokeVertex ch51st0[] =
+{
+ {14.5238f,100.0f},
+ {66.9048f,100.0f},
+ {38.3333f,61.9048f},
+ {52.619f,61.9048f},
+ {62.1429f,57.1429f},
+ {66.9048f,52.381f},
+ {71.6667f,38.0952f},
+ {71.6667f,28.5714f},
+ {66.9048f,14.2857f},
+ {57.381f,4.7619f},
+ {43.0952f,0.0f},
+ {28.8095f,0.0f},
+ {14.5238f,4.7619f},
+ {9.7619f,9.5238f},
+ {5.0f,19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch51st[] =
+{
+ {15,ch51st0}
+};
+
+static const Fl_Glut_StrokeChar ch51 = {77.0467f,1,ch51st};
+
+/* char: 0x34 */
+
+static const Fl_Glut_StrokeVertex ch52st0[] =
+{
+ {51.499f,100.0f},
+ {3.88f,33.3333f},
+ {75.3086f,33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch52st1[] =
+{
+ {51.499f,100.0f},
+ {51.499f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch52st[] =
+{
+ {3,ch52st0},
+ {2,ch52st1}
+};
+
+static const Fl_Glut_StrokeChar ch52 = {80.1686f,2,ch52st};
+
+/* char: 0x35 */
+
+static const Fl_Glut_StrokeVertex ch53st0[] =
+{
+ {62.0029f,100.0f},
+ {14.3838f,100.0f},
+ {9.6219f,57.1429f},
+ {14.3838f,61.9048f},
+ {28.6695f,66.6667f},
+ {42.9552f,66.6667f},
+ {57.241f,61.9048f},
+ {66.7648f,52.381f},
+ {71.5267f,38.0952f},
+ {71.5267f,28.5714f},
+ {66.7648f,14.2857f},
+ {57.241f,4.7619f},
+ {42.9552f,0.0f},
+ {28.6695f,0.0f},
+ {14.3838f,4.7619f},
+ {9.6219f,9.5238f},
+ {4.86f,19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch53st[] =
+{
+ {17,ch53st0}
+};
+
+static const Fl_Glut_StrokeChar ch53 = {77.6867f,1,ch53st};
+
+/* char: 0x36 */
+
+static const Fl_Glut_StrokeVertex ch54st0[] =
+{
+ {62.7229f,85.7143f},
+ {57.961f,95.2381f},
+ {43.6752f,100.0f},
+ {34.1514f,100.0f},
+ {19.8657f,95.2381f},
+ {10.3419f,80.9524f},
+ {5.58f,57.1429f},
+ {5.58f,33.3333f},
+ {10.3419f,14.2857f},
+ {19.8657f,4.7619f},
+ {34.1514f,0.0f},
+ {38.9133f,0.0f},
+ {53.199f,4.7619f},
+ {62.7229f,14.2857f},
+ {67.4848f,28.5714f},
+ {67.4848f,33.3333f},
+ {62.7229f,47.619f},
+ {53.199f,57.1429f},
+ {38.9133f,61.9048f},
+ {34.1514f,61.9048f},
+ {19.8657f,57.1429f},
+ {10.3419f,47.619f},
+ {5.58f,33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch54st[] =
+{
+ {23,ch54st0}
+};
+
+static const Fl_Glut_StrokeChar ch54 = {73.8048f,1,ch54st};
+
+/* char: 0x37 */
+
+static const Fl_Glut_StrokeVertex ch55st0[] =
+{
+ {72.2267f,100.0f},
+ {24.6076f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch55st1[] =
+{
+ {5.56f,100.0f},
+ {72.2267f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch55st[] =
+{
+ {2,ch55st0},
+ {2,ch55st1}
+};
+
+static const Fl_Glut_StrokeChar ch55 = {77.2267f,2,ch55st};
+
+/* char: 0x38 */
+
+static const Fl_Glut_StrokeVertex ch56st0[] =
+{
+ {29.4095f,100.0f},
+ {15.1238f,95.2381f},
+ {10.3619f,85.7143f},
+ {10.3619f,76.1905f},
+ {15.1238f,66.6667f},
+ {24.6476f,61.9048f},
+ {43.6952f,57.1429f},
+ {57.981f,52.381f},
+ {67.5048f,42.8571f},
+ {72.2667f,33.3333f},
+ {72.2667f,19.0476f},
+ {67.5048f,9.5238f},
+ {62.7429f,4.7619f},
+ {48.4571f,0.0f},
+ {29.4095f,0.0f},
+ {15.1238f,4.7619f},
+ {10.3619f,9.5238f},
+ {5.6f,19.0476f},
+ {5.6f,33.3333f},
+ {10.3619f,42.8571f},
+ {19.8857f,52.381f},
+ {34.1714f,57.1429f},
+ {53.219f,61.9048f},
+ {62.7429f,66.6667f},
+ {67.5048f,76.1905f},
+ {67.5048f,85.7143f},
+ {62.7429f,95.2381f},
+ {48.4571f,100.0f},
+ {29.4095f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch56st[] =
+{
+ {29,ch56st0}
+};
+
+static const Fl_Glut_StrokeChar ch56 = {77.6667f,1,ch56st};
+
+/* char: 0x39 */
+
+static const Fl_Glut_StrokeVertex ch57st0[] =
+{
+ {68.5048f,66.6667f},
+ {63.7429f,52.381f},
+ {54.219f,42.8571f},
+ {39.9333f,38.0952f},
+ {35.1714f,38.0952f},
+ {20.8857f,42.8571f},
+ {11.3619f,52.381f},
+ {6.6f,66.6667f},
+ {6.6f,71.4286f},
+ {11.3619f,85.7143f},
+ {20.8857f,95.2381f},
+ {35.1714f,100.0f},
+ {39.9333f,100.0f},
+ {54.219f,95.2381f},
+ {63.7429f,85.7143f},
+ {68.5048f,66.6667f},
+ {68.5048f,42.8571f},
+ {63.7429f,19.0476f},
+ {54.219f,4.7619f},
+ {39.9333f,0.0f},
+ {30.4095f,0.0f},
+ {16.1238f,4.7619f},
+ {11.3619f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch57st[] =
+{
+ {23,ch57st0}
+};
+
+static const Fl_Glut_StrokeChar ch57 = {74.0648f,1,ch57st};
+
+/* char: 0x3a */
+
+static const Fl_Glut_StrokeVertex ch58st0[] =
+{
+ {14.0819f,66.6667f},
+ {9.32f,61.9048f},
+ {14.0819f,57.1429f},
+ {18.8438f,61.9048f},
+ {14.0819f,66.6667f}
+};
+
+static const Fl_Glut_StrokeVertex ch58st1[] =
+{
+ {14.0819f,9.5238f},
+ {9.32f,4.7619f},
+ {14.0819f,0.0f},
+ {18.8438f,4.7619f},
+ {14.0819f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch58st[] =
+{
+ {5,ch58st0},
+ {5,ch58st1}
+};
+
+static const Fl_Glut_StrokeChar ch58 = {26.2238f,2,ch58st};
+
+/* char: 0x3b */
+
+static const Fl_Glut_StrokeVertex ch59st0[] =
+{
+ {12.9619f,66.6667f},
+ {8.2f,61.9048f},
+ {12.9619f,57.1429f},
+ {17.7238f,61.9048f},
+ {12.9619f,66.6667f}
+};
+
+static const Fl_Glut_StrokeVertex ch59st1[] =
+{
+ {17.7238f,4.7619f},
+ {12.9619f,0.0f},
+ {8.2f,4.7619f},
+ {12.9619f,9.5238f},
+ {17.7238f,4.7619f},
+ {17.7238f,-4.7619f},
+ {12.9619f,-14.2857f},
+ {8.2f,-19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch59st[] =
+{
+ {5,ch59st0},
+ {8,ch59st1}
+};
+
+static const Fl_Glut_StrokeChar ch59 = {26.3038f,2,ch59st};
+
+/* char: 0x3c */
+
+static const Fl_Glut_StrokeVertex ch60st0[] =
+{
+ {79.2505f,85.7143f},
+ {3.06f,42.8571f},
+ {79.2505f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch60st[] =
+{
+ {3,ch60st0}
+};
+
+static const Fl_Glut_StrokeChar ch60 = {81.6105f,1,ch60st};
+
+/* char: 0x3d */
+
+static const Fl_Glut_StrokeVertex ch61st0[] =
+{
+ {5.7f,57.1429f},
+ {91.4143f,57.1429f}
+};
+
+static const Fl_Glut_StrokeVertex ch61st1[] =
+{
+ {5.7f,28.5714f},
+ {91.4143f,28.5714f}
+};
+
+static const Fl_Glut_StrokeStrip ch61st[] =
+{
+ {2,ch61st0},
+ {2,ch61st1}
+};
+
+static const Fl_Glut_StrokeChar ch61 = {97.2543f,2,ch61st};
+
+/* char: 0x3e */
+
+static const Fl_Glut_StrokeVertex ch62st0[] =
+{
+ {2.78f,85.7143f},
+ {78.9705f,42.8571f},
+ {2.78f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch62st[] =
+{
+ {3,ch62st0}
+};
+
+static const Fl_Glut_StrokeChar ch62 = {81.6105f,1,ch62st};
+
+/* char: 0x3f */
+
+static const Fl_Glut_StrokeVertex ch63st0[] =
+{
+ {8.42f,76.1905f},
+ {8.42f,80.9524f},
+ {13.1819f,90.4762f},
+ {17.9438f,95.2381f},
+ {27.4676f,100.0f},
+ {46.5152f,100.0f},
+ {56.039f,95.2381f},
+ {60.801f,90.4762f},
+ {65.5629f,80.9524f},
+ {65.5629f,71.4286f},
+ {60.801f,61.9048f},
+ {56.039f,57.1429f},
+ {36.9914f,47.619f},
+ {36.9914f,33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch63st1[] =
+{
+ {36.9914f,9.5238f},
+ {32.2295f,4.7619f},
+ {36.9914f,0.0f},
+ {41.7533f,4.7619f},
+ {36.9914f,9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch63st[] =
+{
+ {14,ch63st0},
+ {5,ch63st1}
+};
+
+static const Fl_Glut_StrokeChar ch63 = {73.9029f,2,ch63st};
+
+/* char: 0x40 */
+
+static const Fl_Glut_StrokeVertex ch64st0[] =
+{
+ {49.2171f,52.381f},
+ {39.6933f,57.1429f},
+ {30.1695f,57.1429f},
+ {25.4076f,47.619f},
+ {25.4076f,42.8571f},
+ {30.1695f,33.3333f},
+ {39.6933f,33.3333f},
+ {49.2171f,38.0952f}
+};
+
+static const Fl_Glut_StrokeVertex ch64st1[] =
+{
+ {49.2171f,57.1429f},
+ {49.2171f,38.0952f},
+ {53.979f,33.3333f},
+ {63.5029f,33.3333f},
+ {68.2648f,42.8571f},
+ {68.2648f,47.619f},
+ {63.5029f,61.9048f},
+ {53.979f,71.4286f},
+ {39.6933f,76.1905f},
+ {34.9314f,76.1905f},
+ {20.6457f,71.4286f},
+ {11.1219f,61.9048f},
+ {6.36f,47.619f},
+ {6.36f,42.8571f},
+ {11.1219f,28.5714f},
+ {20.6457f,19.0476f},
+ {34.9314f,14.2857f},
+ {39.6933f,14.2857f},
+ {53.979f,19.0476f}
+};
+
+static const Fl_Glut_StrokeStrip ch64st[] =
+{
+ {8,ch64st0},
+ {19,ch64st1}
+};
+
+static const Fl_Glut_StrokeChar ch64 = {74.3648f,2,ch64st};
+
+/* char: 0x41 */
+
+static const Fl_Glut_StrokeVertex ch65st0[] =
+{
+ {40.5952f,100.0f},
+ {2.5f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch65st1[] =
+{
+ {40.5952f,100.0f},
+ {78.6905f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch65st2[] =
+{
+ {16.7857f,33.3333f},
+ {64.4048f,33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch65st[] =
+{
+ {2,ch65st0},
+ {2,ch65st1},
+ {2,ch65st2}
+};
+
+static const Fl_Glut_StrokeChar ch65 = {80.4905f,3,ch65st};
+
+/* char: 0x42 */
+
+static const Fl_Glut_StrokeVertex ch66st0[] =
+{
+ {11.42f,100.0f},
+ {11.42f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch66st1[] =
+{
+ {11.42f,100.0f},
+ {54.2771f,100.0f},
+ {68.5629f,95.2381f},
+ {73.3248f,90.4762f},
+ {78.0867f,80.9524f},
+ {78.0867f,71.4286f},
+ {73.3248f,61.9048f},
+ {68.5629f,57.1429f},
+ {54.2771f,52.381f}
+};
+
+static const Fl_Glut_StrokeVertex ch66st2[] =
+{
+ {11.42f,52.381f},
+ {54.2771f,52.381f},
+ {68.5629f,47.619f},
+ {73.3248f,42.8571f},
+ {78.0867f,33.3333f},
+ {78.0867f,19.0476f},
+ {73.3248f,9.5238f},
+ {68.5629f,4.7619f},
+ {54.2771f,0.0f},
+ {11.42f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch66st[] =
+{
+ {2,ch66st0},
+ {9,ch66st1},
+ {10,ch66st2}
+};
+
+static const Fl_Glut_StrokeChar ch66 = {83.6267f,3,ch66st};
+
+/* char: 0x43 */
+
+static const Fl_Glut_StrokeVertex ch67st0[] =
+{
+ {78.0886f,76.1905f},
+ {73.3267f,85.7143f},
+ {63.8029f,95.2381f},
+ {54.279f,100.0f},
+ {35.2314f,100.0f},
+ {25.7076f,95.2381f},
+ {16.1838f,85.7143f},
+ {11.4219f,76.1905f},
+ {6.66f,61.9048f},
+ {6.66f,38.0952f},
+ {11.4219f,23.8095f},
+ {16.1838f,14.2857f},
+ {25.7076f,4.7619f},
+ {35.2314f,0.0f},
+ {54.279f,0.0f},
+ {63.8029f,4.7619f},
+ {73.3267f,14.2857f},
+ {78.0886f,23.8095f}
+};
+
+static const Fl_Glut_StrokeStrip ch67st[] =
+{
+ {18,ch67st0}
+};
+
+static const Fl_Glut_StrokeChar ch67 = {84.4886f,1,ch67st};
+
+/* char: 0x44 */
+
+static const Fl_Glut_StrokeVertex ch68st0[] =
+{
+ {11.96f,100.0f},
+ {11.96f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch68st1[] =
+{
+ {11.96f,100.0f},
+ {45.2933f,100.0f},
+ {59.579f,95.2381f},
+ {69.1029f,85.7143f},
+ {73.8648f,76.1905f},
+ {78.6267f,61.9048f},
+ {78.6267f,38.0952f},
+ {73.8648f,23.8095f},
+ {69.1029f,14.2857f},
+ {59.579f,4.7619f},
+ {45.2933f,0.0f},
+ {11.96f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch68st[] =
+{
+ {2,ch68st0},
+ {12,ch68st1}
+};
+
+static const Fl_Glut_StrokeChar ch68 = {85.2867f,2,ch68st};
+
+/* char: 0x45 */
+
+static const Fl_Glut_StrokeVertex ch69st0[] =
+{
+ {11.42f,100.0f},
+ {11.42f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch69st1[] =
+{
+ {11.42f,100.0f},
+ {73.3248f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch69st2[] =
+{
+ {11.42f,52.381f},
+ {49.5152f,52.381f}
+};
+
+static const Fl_Glut_StrokeVertex ch69st3[] =
+{
+ {11.42f,0.0f},
+ {73.3248f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch69st[] =
+{
+ {2,ch69st0},
+ {2,ch69st1},
+ {2,ch69st2},
+ {2,ch69st3}
+};
+
+static const Fl_Glut_StrokeChar ch69 = {78.1848f,4,ch69st};
+
+/* char: 0x46 */
+
+static const Fl_Glut_StrokeVertex ch70st0[] =
+{
+ {11.42f,100.0f},
+ {11.42f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch70st1[] =
+{
+ {11.42f,100.0f},
+ {73.3248f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch70st2[] =
+{
+ {11.42f,52.381f},
+ {49.5152f,52.381f}
+};
+
+static const Fl_Glut_StrokeStrip ch70st[] =
+{
+ {2,ch70st0},
+ {2,ch70st1},
+ {2,ch70st2}
+};
+
+static const Fl_Glut_StrokeChar ch70 = {78.7448f,3,ch70st};
+
+/* char: 0x47 */
+
+static const Fl_Glut_StrokeVertex ch71st0[] =
+{
+ {78.4886f,76.1905f},
+ {73.7267f,85.7143f},
+ {64.2029f,95.2381f},
+ {54.679f,100.0f},
+ {35.6314f,100.0f},
+ {26.1076f,95.2381f},
+ {16.5838f,85.7143f},
+ {11.8219f,76.1905f},
+ {7.06f,61.9048f},
+ {7.06f,38.0952f},
+ {11.8219f,23.8095f},
+ {16.5838f,14.2857f},
+ {26.1076f,4.7619f},
+ {35.6314f,0.0f},
+ {54.679f,0.0f},
+ {64.2029f,4.7619f},
+ {73.7267f,14.2857f},
+ {78.4886f,23.8095f},
+ {78.4886f,38.0952f}
+};
+
+static const Fl_Glut_StrokeVertex ch71st1[] =
+{
+ {54.679f,38.0952f},
+ {78.4886f,38.0952f}
+};
+
+static const Fl_Glut_StrokeStrip ch71st[] =
+{
+ {19,ch71st0},
+ {2,ch71st1}
+};
+
+static const Fl_Glut_StrokeChar ch71 = {89.7686f,2,ch71st};
+
+/* char: 0x48 */
+
+static const Fl_Glut_StrokeVertex ch72st0[] =
+{
+ {11.42f,100.0f},
+ {11.42f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch72st1[] =
+{
+ {78.0867f,100.0f},
+ {78.0867f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch72st2[] =
+{
+ {11.42f,52.381f},
+ {78.0867f,52.381f}
+};
+
+static const Fl_Glut_StrokeStrip ch72st[] =
+{
+ {2,ch72st0},
+ {2,ch72st1},
+ {2,ch72st2}
+};
+
+static const Fl_Glut_StrokeChar ch72 = {89.0867f,3,ch72st};
+
+/* char: 0x49 */
+
+static const Fl_Glut_StrokeVertex ch73st0[] =
+{
+ {10.86f,100.0f},
+ {10.86f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch73st[] =
+{
+ {2,ch73st0}
+};
+
+static const Fl_Glut_StrokeChar ch73 = {21.3f,1,ch73st};
+
+/* char: 0x4a */
+
+static const Fl_Glut_StrokeVertex ch74st0[] =
+{
+ {50.119f,100.0f},
+ {50.119f,23.8095f},
+ {45.3571f,9.5238f},
+ {40.5952f,4.7619f},
+ {31.0714f,0.0f},
+ {21.5476f,0.0f},
+ {12.0238f,4.7619f},
+ {7.2619f,9.5238f},
+ {2.5f,23.8095f},
+ {2.5f,33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch74st[] =
+{
+ {10,ch74st0}
+};
+
+static const Fl_Glut_StrokeChar ch74 = {59.999f,1,ch74st};
+
+/* char: 0x4b */
+
+static const Fl_Glut_StrokeVertex ch75st0[] =
+{
+ {11.28f,100.0f},
+ {11.28f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch75st1[] =
+{
+ {77.9467f,100.0f},
+ {11.28f,33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch75st2[] =
+{
+ {35.0895f,57.1429f},
+ {77.9467f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch75st[] =
+{
+ {2,ch75st0},
+ {2,ch75st1},
+ {2,ch75st2}
+};
+
+static const Fl_Glut_StrokeChar ch75 = {79.3267f,3,ch75st};
+
+/* char: 0x4c */
+
+static const Fl_Glut_StrokeVertex ch76st0[] =
+{
+ {11.68f,100.0f},
+ {11.68f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch76st1[] =
+{
+ {11.68f,0.0f},
+ {68.8229f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch76st[] =
+{
+ {2,ch76st0},
+ {2,ch76st1}
+};
+
+static const Fl_Glut_StrokeChar ch76 = {71.3229f,2,ch76st};
+
+/* char: 0x4d */
+
+static const Fl_Glut_StrokeVertex ch77st0[] =
+{
+ {10.86f,100.0f},
+ {10.86f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch77st1[] =
+{
+ {10.86f,100.0f},
+ {48.9552f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch77st2[] =
+{
+ {87.0505f,100.0f},
+ {48.9552f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch77st3[] =
+{
+ {87.0505f,100.0f},
+ {87.0505f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch77st[] =
+{
+ {2,ch77st0},
+ {2,ch77st1},
+ {2,ch77st2},
+ {2,ch77st3}
+};
+
+static const Fl_Glut_StrokeChar ch77 = {97.2105f,4,ch77st};
+
+/* char: 0x4e */
+
+static const Fl_Glut_StrokeVertex ch78st0[] =
+{
+ {11.14f,100.0f},
+ {11.14f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch78st1[] =
+{
+ {11.14f,100.0f},
+ {77.8067f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch78st2[] =
+{
+ {77.8067f,100.0f},
+ {77.8067f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch78st[] =
+{
+ {2,ch78st0},
+ {2,ch78st1},
+ {2,ch78st2}
+};
+
+static const Fl_Glut_StrokeChar ch78 = {88.8067f,3,ch78st};
+
+/* char: 0x4f */
+
+static const Fl_Glut_StrokeVertex ch79st0[] =
+{
+ {34.8114f,100.0f},
+ {25.2876f,95.2381f},
+ {15.7638f,85.7143f},
+ {11.0019f,76.1905f},
+ {6.24f,61.9048f},
+ {6.24f,38.0952f},
+ {11.0019f,23.8095f},
+ {15.7638f,14.2857f},
+ {25.2876f,4.7619f},
+ {34.8114f,0.0f},
+ {53.859f,0.0f},
+ {63.3829f,4.7619f},
+ {72.9067f,14.2857f},
+ {77.6686f,23.8095f},
+ {82.4305f,38.0952f},
+ {82.4305f,61.9048f},
+ {77.6686f,76.1905f},
+ {72.9067f,85.7143f},
+ {63.3829f,95.2381f},
+ {53.859f,100.0f},
+ {34.8114f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch79st[] =
+{
+ {21,ch79st0}
+};
+
+static const Fl_Glut_StrokeChar ch79 = {88.8305f,1,ch79st};
+
+/* char: 0x50 */
+
+static const Fl_Glut_StrokeVertex ch80st0[] =
+{
+ {12.1f,100.0f},
+ {12.1f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch80st1[] =
+{
+ {12.1f,100.0f},
+ {54.9571f,100.0f},
+ {69.2429f,95.2381f},
+ {74.0048f,90.4762f},
+ {78.7667f,80.9524f},
+ {78.7667f,66.6667f},
+ {74.0048f,57.1429f},
+ {69.2429f,52.381f},
+ {54.9571f,47.619f},
+ {12.1f,47.619f}
+};
+
+static const Fl_Glut_StrokeStrip ch80st[] =
+{
+ {2,ch80st0},
+ {10,ch80st1}
+};
+
+static const Fl_Glut_StrokeChar ch80 = {85.6667f,2,ch80st};
+
+/* char: 0x51 */
+
+static const Fl_Glut_StrokeVertex ch81st0[] =
+{
+ {33.8714f,100.0f},
+ {24.3476f,95.2381f},
+ {14.8238f,85.7143f},
+ {10.0619f,76.1905f},
+ {5.3f,61.9048f},
+ {5.3f,38.0952f},
+ {10.0619f,23.8095f},
+ {14.8238f,14.2857f},
+ {24.3476f,4.7619f},
+ {33.8714f,0.0f},
+ {52.919f,0.0f},
+ {62.4429f,4.7619f},
+ {71.9667f,14.2857f},
+ {76.7286f,23.8095f},
+ {81.4905f,38.0952f},
+ {81.4905f,61.9048f},
+ {76.7286f,76.1905f},
+ {71.9667f,85.7143f},
+ {62.4429f,95.2381f},
+ {52.919f,100.0f},
+ {33.8714f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch81st1[] =
+{
+ {48.1571f,19.0476f},
+ {76.7286f,-9.5238f}
+};
+
+static const Fl_Glut_StrokeStrip ch81st[] =
+{
+ {21,ch81st0},
+ {2,ch81st1}
+};
+
+static const Fl_Glut_StrokeChar ch81 = {88.0905f,2,ch81st};
+
+/* char: 0x52 */
+
+static const Fl_Glut_StrokeVertex ch82st0[] =
+{
+ {11.68f,100.0f},
+ {11.68f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch82st1[] =
+{
+ {11.68f,100.0f},
+ {54.5371f,100.0f},
+ {68.8229f,95.2381f},
+ {73.5848f,90.4762f},
+ {78.3467f,80.9524f},
+ {78.3467f,71.4286f},
+ {73.5848f,61.9048f},
+ {68.8229f,57.1429f},
+ {54.5371f,52.381f},
+ {11.68f,52.381f}
+};
+
+static const Fl_Glut_StrokeVertex ch82st2[] =
+{
+ {45.0133f,52.381f},
+ {78.3467f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch82st[] =
+{
+ {2,ch82st0},
+ {10,ch82st1},
+ {2,ch82st2}
+};
+
+static const Fl_Glut_StrokeChar ch82 = {82.3667f,3,ch82st};
+
+/* char: 0x53 */
+
+static const Fl_Glut_StrokeVertex ch83st0[] =
+{
+ {74.6667f,85.7143f},
+ {65.1429f,95.2381f},
+ {50.8571f,100.0f},
+ {31.8095f,100.0f},
+ {17.5238f,95.2381f},
+ {8.0f,85.7143f},
+ {8.0f,76.1905f},
+ {12.7619f,66.6667f},
+ {17.5238f,61.9048f},
+ {27.0476f,57.1429f},
+ {55.619f,47.619f},
+ {65.1429f,42.8571f},
+ {69.9048f,38.0952f},
+ {74.6667f,28.5714f},
+ {74.6667f,14.2857f},
+ {65.1429f,4.7619f},
+ {50.8571f,0.0f},
+ {31.8095f,0.0f},
+ {17.5238f,4.7619f},
+ {8.0f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch83st[] =
+{
+ {20,ch83st0}
+};
+
+static const Fl_Glut_StrokeChar ch83 = {80.8267f,1,ch83st};
+
+/* char: 0x54 */
+
+static const Fl_Glut_StrokeVertex ch84st0[] =
+{
+ {35.6933f,100.0f},
+ {35.6933f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch84st1[] =
+{
+ {2.36f,100.0f},
+ {69.0267f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch84st[] =
+{
+ {2,ch84st0},
+ {2,ch84st1}
+};
+
+static const Fl_Glut_StrokeChar ch84 = {71.9467f,2,ch84st};
+
+/* char: 0x55 */
+
+static const Fl_Glut_StrokeVertex ch85st0[] =
+{
+ {11.54f,100.0f},
+ {11.54f,28.5714f},
+ {16.3019f,14.2857f},
+ {25.8257f,4.7619f},
+ {40.1114f,0.0f},
+ {49.6352f,0.0f},
+ {63.921f,4.7619f},
+ {73.4448f,14.2857f},
+ {78.2067f,28.5714f},
+ {78.2067f,100.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch85st[] =
+{
+ {10,ch85st0}
+};
+
+static const Fl_Glut_StrokeChar ch85 = {89.4867f,1,ch85st};
+
+/* char: 0x56 */
+
+static const Fl_Glut_StrokeVertex ch86st0[] =
+{
+ {2.36f,100.0f},
+ {40.4552f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch86st1[] =
+{
+ {78.5505f,100.0f},
+ {40.4552f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch86st[] =
+{
+ {2,ch86st0},
+ {2,ch86st1}
+};
+
+static const Fl_Glut_StrokeChar ch86 = {81.6105f,2,ch86st};
+
+/* char: 0x57 */
+
+static const Fl_Glut_StrokeVertex ch87st0[] =
+{
+ {2.22f,100.0f},
+ {26.0295f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch87st1[] =
+{
+ {49.839f,100.0f},
+ {26.0295f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch87st2[] =
+{
+ {49.839f,100.0f},
+ {73.6486f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch87st3[] =
+{
+ {97.4581f,100.0f},
+ {73.6486f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch87st[] =
+{
+ {2,ch87st0},
+ {2,ch87st1},
+ {2,ch87st2},
+ {2,ch87st3}
+};
+
+static const Fl_Glut_StrokeChar ch87 = {100.518f,4,ch87st};
+
+/* char: 0x58 */
+
+static const Fl_Glut_StrokeVertex ch88st0[] =
+{
+ {2.5f,100.0f},
+ {69.1667f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch88st1[] =
+{
+ {69.1667f,100.0f},
+ {2.5f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch88st[] =
+{
+ {2,ch88st0},
+ {2,ch88st1}
+};
+
+static const Fl_Glut_StrokeChar ch88 = {72.3667f,2,ch88st};
+
+/* char: 0x59 */
+
+static const Fl_Glut_StrokeVertex ch89st0[] =
+{
+ {1.52f,100.0f},
+ {39.6152f,52.381f},
+ {39.6152f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch89st1[] =
+{
+ {77.7105f,100.0f},
+ {39.6152f,52.381f}
+};
+
+static const Fl_Glut_StrokeStrip ch89st[] =
+{
+ {3,ch89st0},
+ {2,ch89st1}
+};
+
+static const Fl_Glut_StrokeChar ch89 = {79.6505f,2,ch89st};
+
+/* char: 0x5a */
+
+static const Fl_Glut_StrokeVertex ch90st0[] =
+{
+ {69.1667f,100.0f},
+ {2.5f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch90st1[] =
+{
+ {2.5f,100.0f},
+ {69.1667f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch90st2[] =
+{
+ {2.5f,0.0f},
+ {69.1667f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch90st[] =
+{
+ {2,ch90st0},
+ {2,ch90st1},
+ {2,ch90st2}
+};
+
+static const Fl_Glut_StrokeChar ch90 = {73.7467f,3,ch90st};
+
+/* char: 0x5b */
+
+static const Fl_Glut_StrokeVertex ch91st0[] =
+{
+ {7.78f,119.048f},
+ {7.78f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch91st1[] =
+{
+ {12.5419f,119.048f},
+ {12.5419f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch91st2[] =
+{
+ {7.78f,119.048f},
+ {41.1133f,119.048f}
+};
+
+static const Fl_Glut_StrokeVertex ch91st3[] =
+{
+ {7.78f,-33.3333f},
+ {41.1133f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch91st[] =
+{
+ {2,ch91st0},
+ {2,ch91st1},
+ {2,ch91st2},
+ {2,ch91st3}
+};
+
+static const Fl_Glut_StrokeChar ch91 = {46.1133f,4,ch91st};
+
+/* char: 0x5c */
+
+static const Fl_Glut_StrokeVertex ch92st0[] =
+{
+ {5.84f,100.0f},
+ {72.5067f,-14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch92st[] =
+{
+ {2,ch92st0}
+};
+
+static const Fl_Glut_StrokeChar ch92 = {78.2067f,1,ch92st};
+
+/* char: 0x5d */
+
+static const Fl_Glut_StrokeVertex ch93st0[] =
+{
+ {33.0114f,119.048f},
+ {33.0114f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch93st1[] =
+{
+ {37.7733f,119.048f},
+ {37.7733f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch93st2[] =
+{
+ {4.44f,119.048f},
+ {37.7733f,119.048f}
+};
+
+static const Fl_Glut_StrokeVertex ch93st3[] =
+{
+ {4.44f,-33.3333f},
+ {37.7733f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch93st[] =
+{
+ {2,ch93st0},
+ {2,ch93st1},
+ {2,ch93st2},
+ {2,ch93st3}
+};
+
+static const Fl_Glut_StrokeChar ch93 = {46.3933f,4,ch93st};
+
+/* char: 0x5e */
+
+static const Fl_Glut_StrokeVertex ch94st0[] =
+{
+ {44.0752f,109.524f},
+ {5.98f,42.8571f}
+};
+
+static const Fl_Glut_StrokeVertex ch94st1[] =
+{
+ {44.0752f,109.524f},
+ {82.1705f,42.8571f}
+};
+
+static const Fl_Glut_StrokeStrip ch94st[] =
+{
+ {2,ch94st0},
+ {2,ch94st1}
+};
+
+static const Fl_Glut_StrokeChar ch94 = {90.2305f,2,ch94st};
+
+/* char: 0x5f */
+
+static const Fl_Glut_StrokeVertex ch95st0[] =
+{
+ {-1.1f,-33.3333f},
+ {103.662f,-33.3333f},
+ {103.662f,-28.5714f},
+ {-1.1f,-28.5714f},
+ {-1.1f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch95st[] =
+{
+ {5,ch95st0}
+};
+
+static const Fl_Glut_StrokeChar ch95 = {104.062f,1,ch95st};
+
+/* char: 0x60 */
+
+static const Fl_Glut_StrokeVertex ch96st0[] =
+{
+ {33.0219f,100.0f},
+ {56.8314f,71.4286f}
+};
+
+static const Fl_Glut_StrokeVertex ch96st1[] =
+{
+ {33.0219f,100.0f},
+ {28.26f,95.2381f},
+ {56.8314f,71.4286f}
+};
+
+static const Fl_Glut_StrokeStrip ch96st[] =
+{
+ {2,ch96st0},
+ {3,ch96st1}
+};
+
+static const Fl_Glut_StrokeChar ch96 = {83.5714f,2,ch96st};
+
+/* char: 0x61 */
+
+static const Fl_Glut_StrokeVertex ch97st0[] =
+{
+ {63.8229f,66.6667f},
+ {63.8229f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch97st1[] =
+{
+ {63.8229f,52.381f},
+ {54.299f,61.9048f},
+ {44.7752f,66.6667f},
+ {30.4895f,66.6667f},
+ {20.9657f,61.9048f},
+ {11.4419f,52.381f},
+ {6.68f,38.0952f},
+ {6.68f,28.5714f},
+ {11.4419f,14.2857f},
+ {20.9657f,4.7619f},
+ {30.4895f,0.0f},
+ {44.7752f,0.0f},
+ {54.299f,4.7619f},
+ {63.8229f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch97st[] =
+{
+ {2,ch97st0},
+ {14,ch97st1}
+};
+
+static const Fl_Glut_StrokeChar ch97 = {66.6029f,2,ch97st};
+
+/* char: 0x62 */
+
+static const Fl_Glut_StrokeVertex ch98st0[] =
+{
+ {8.76f,100.0f},
+ {8.76f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch98st1[] =
+{
+ {8.76f,52.381f},
+ {18.2838f,61.9048f},
+ {27.8076f,66.6667f},
+ {42.0933f,66.6667f},
+ {51.6171f,61.9048f},
+ {61.141f,52.381f},
+ {65.9029f,38.0952f},
+ {65.9029f,28.5714f},
+ {61.141f,14.2857f},
+ {51.6171f,4.7619f},
+ {42.0933f,0.0f},
+ {27.8076f,0.0f},
+ {18.2838f,4.7619f},
+ {8.76f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch98st[] =
+{
+ {2,ch98st0},
+ {14,ch98st1}
+};
+
+static const Fl_Glut_StrokeChar ch98 = {70.4629f,2,ch98st};
+
+/* char: 0x63 */
+
+static const Fl_Glut_StrokeVertex ch99st0[] =
+{
+ {62.6629f,52.381f},
+ {53.139f,61.9048f},
+ {43.6152f,66.6667f},
+ {29.3295f,66.6667f},
+ {19.8057f,61.9048f},
+ {10.2819f,52.381f},
+ {5.52f,38.0952f},
+ {5.52f,28.5714f},
+ {10.2819f,14.2857f},
+ {19.8057f,4.7619f},
+ {29.3295f,0.0f},
+ {43.6152f,0.0f},
+ {53.139f,4.7619f},
+ {62.6629f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch99st[] =
+{
+ {14,ch99st0}
+};
+
+static const Fl_Glut_StrokeChar ch99 = {68.9229f,1,ch99st};
+
+/* char: 0x64 */
+
+static const Fl_Glut_StrokeVertex ch100st0[] =
+{
+ {61.7829f,100.0f},
+ {61.7829f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch100st1[] =
+{
+ {61.7829f,52.381f},
+ {52.259f,61.9048f},
+ {42.7352f,66.6667f},
+ {28.4495f,66.6667f},
+ {18.9257f,61.9048f},
+ {9.4019f,52.381f},
+ {4.64f,38.0952f},
+ {4.64f,28.5714f},
+ {9.4019f,14.2857f},
+ {18.9257f,4.7619f},
+ {28.4495f,0.0f},
+ {42.7352f,0.0f},
+ {52.259f,4.7619f},
+ {61.7829f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch100st[] =
+{
+ {2,ch100st0},
+ {14,ch100st1}
+};
+
+static const Fl_Glut_StrokeChar ch100 = {70.2629f,2,ch100st};
+
+/* char: 0x65 */
+
+static const Fl_Glut_StrokeVertex ch101st0[] =
+{
+ {5.72f,38.0952f},
+ {62.8629f,38.0952f},
+ {62.8629f,47.619f},
+ {58.101f,57.1429f},
+ {53.339f,61.9048f},
+ {43.8152f,66.6667f},
+ {29.5295f,66.6667f},
+ {20.0057f,61.9048f},
+ {10.4819f,52.381f},
+ {5.72f,38.0952f},
+ {5.72f,28.5714f},
+ {10.4819f,14.2857f},
+ {20.0057f,4.7619f},
+ {29.5295f,0.0f},
+ {43.8152f,0.0f},
+ {53.339f,4.7619f},
+ {62.8629f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch101st[] =
+{
+ {17,ch101st0}
+};
+
+static const Fl_Glut_StrokeChar ch101 = {68.5229f,1,ch101st};
+
+/* char: 0x66 */
+
+static const Fl_Glut_StrokeVertex ch102st0[] =
+{
+ {38.7752f,100.0f},
+ {29.2514f,100.0f},
+ {19.7276f,95.2381f},
+ {14.9657f,80.9524f},
+ {14.9657f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch102st1[] =
+{
+ {0.68f,66.6667f},
+ {34.0133f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch102st[] =
+{
+ {5,ch102st0},
+ {2,ch102st1}
+};
+
+static const Fl_Glut_StrokeChar ch102 = {38.6552f,2,ch102st};
+
+/* char: 0x67 */
+
+static const Fl_Glut_StrokeVertex ch103st0[] =
+{
+ {62.5029f,66.6667f},
+ {62.5029f,-9.5238f},
+ {57.741f,-23.8095f},
+ {52.979f,-28.5714f},
+ {43.4552f,-33.3333f},
+ {29.1695f,-33.3333f},
+ {19.6457f,-28.5714f}
+};
+
+static const Fl_Glut_StrokeVertex ch103st1[] =
+{
+ {62.5029f,52.381f},
+ {52.979f,61.9048f},
+ {43.4552f,66.6667f},
+ {29.1695f,66.6667f},
+ {19.6457f,61.9048f},
+ {10.1219f,52.381f},
+ {5.36f,38.0952f},
+ {5.36f,28.5714f},
+ {10.1219f,14.2857f},
+ {19.6457f,4.7619f},
+ {29.1695f,0.0f},
+ {43.4552f,0.0f},
+ {52.979f,4.7619f},
+ {62.5029f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch103st[] =
+{
+ {7,ch103st0},
+ {14,ch103st1}
+};
+
+static const Fl_Glut_StrokeChar ch103 = {70.9829f,2,ch103st};
+
+/* char: 0x68 */
+
+static const Fl_Glut_StrokeVertex ch104st0[] =
+{
+ {9.6f,100.0f},
+ {9.6f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch104st1[] =
+{
+ {9.6f,47.619f},
+ {23.8857f,61.9048f},
+ {33.4095f,66.6667f},
+ {47.6952f,66.6667f},
+ {57.219f,61.9048f},
+ {61.981f,47.619f},
+ {61.981f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch104st[] =
+{
+ {2,ch104st0},
+ {7,ch104st1}
+};
+
+static const Fl_Glut_StrokeChar ch104 = {71.021f,2,ch104st};
+
+/* char: 0x69 */
+
+static const Fl_Glut_StrokeVertex ch105st0[] =
+{
+ {10.02f,100.0f},
+ {14.7819f,95.2381f},
+ {19.5438f,100.0f},
+ {14.7819f,104.762f},
+ {10.02f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch105st1[] =
+{
+ {14.7819f,66.6667f},
+ {14.7819f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch105st[] =
+{
+ {5,ch105st0},
+ {2,ch105st1}
+};
+
+static const Fl_Glut_StrokeChar ch105 = {28.8638f,2,ch105st};
+
+/* char: 0x6a */
+
+static const Fl_Glut_StrokeVertex ch106st0[] =
+{
+ {17.3876f,100.0f},
+ {22.1495f,95.2381f},
+ {26.9114f,100.0f},
+ {22.1495f,104.762f},
+ {17.3876f,100.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch106st1[] =
+{
+ {22.1495f,66.6667f},
+ {22.1495f,-14.2857f},
+ {17.3876f,-28.5714f},
+ {7.8638f,-33.3333f},
+ {-1.66f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch106st[] =
+{
+ {5,ch106st0},
+ {5,ch106st1}
+};
+
+static const Fl_Glut_StrokeChar ch106 = {36.2314f,2,ch106st};
+
+/* char: 0x6b */
+
+static const Fl_Glut_StrokeVertex ch107st0[] =
+{
+ {9.6f,100.0f},
+ {9.6f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch107st1[] =
+{
+ {57.219f,66.6667f},
+ {9.6f,19.0476f}
+};
+
+static const Fl_Glut_StrokeVertex ch107st2[] =
+{
+ {28.6476f,38.0952f},
+ {61.981f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch107st[] =
+{
+ {2,ch107st0},
+ {2,ch107st1},
+ {2,ch107st2}
+};
+
+static const Fl_Glut_StrokeChar ch107 = {62.521f,3,ch107st};
+
+/* char: 0x6c */
+
+static const Fl_Glut_StrokeVertex ch108st0[] =
+{
+ {10.02f,100.0f},
+ {10.02f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch108st[] =
+{
+ {2,ch108st0}
+};
+
+static const Fl_Glut_StrokeChar ch108 = {19.34f,1,ch108st};
+
+/* char: 0x6d */
+
+static const Fl_Glut_StrokeVertex ch109st0[] =
+{
+ {9.6f,66.6667f},
+ {9.6f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch109st1[] =
+{
+ {9.6f,47.619f},
+ {23.8857f,61.9048f},
+ {33.4095f,66.6667f},
+ {47.6952f,66.6667f},
+ {57.219f,61.9048f},
+ {61.981f,47.619f},
+ {61.981f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch109st2[] =
+{
+ {61.981f,47.619f},
+ {76.2667f,61.9048f},
+ {85.7905f,66.6667f},
+ {100.076f,66.6667f},
+ {109.6f,61.9048f},
+ {114.362f,47.619f},
+ {114.362f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch109st[] =
+{
+ {2,ch109st0},
+ {7,ch109st1},
+ {7,ch109st2}
+};
+
+static const Fl_Glut_StrokeChar ch109 = {123.962f,3,ch109st};
+
+/* char: 0x6e */
+
+static const Fl_Glut_StrokeVertex ch110st0[] =
+{
+ {9.18f,66.6667f},
+ {9.18f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch110st1[] =
+{
+ {9.18f,47.619f},
+ {23.4657f,61.9048f},
+ {32.9895f,66.6667f},
+ {47.2752f,66.6667f},
+ {56.799f,61.9048f},
+ {61.561f,47.619f},
+ {61.561f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch110st[] =
+{
+ {2,ch110st0},
+ {7,ch110st1}
+};
+
+static const Fl_Glut_StrokeChar ch110 = {70.881f,2,ch110st};
+
+/* char: 0x6f */
+
+static const Fl_Glut_StrokeVertex ch111st0[] =
+{
+ {28.7895f,66.6667f},
+ {19.2657f,61.9048f},
+ {9.7419f,52.381f},
+ {4.98f,38.0952f},
+ {4.98f,28.5714f},
+ {9.7419f,14.2857f},
+ {19.2657f,4.7619f},
+ {28.7895f,0.0f},
+ {43.0752f,0.0f},
+ {52.599f,4.7619f},
+ {62.1229f,14.2857f},
+ {66.8848f,28.5714f},
+ {66.8848f,38.0952f},
+ {62.1229f,52.381f},
+ {52.599f,61.9048f},
+ {43.0752f,66.6667f},
+ {28.7895f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch111st[] =
+{
+ {17,ch111st0}
+};
+
+static const Fl_Glut_StrokeChar ch111 = {71.7448f,1,ch111st};
+
+/* char: 0x70 */
+
+static const Fl_Glut_StrokeVertex ch112st0[] =
+{
+ {9.46f,66.6667f},
+ {9.46f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch112st1[] =
+{
+ {9.46f,52.381f},
+ {18.9838f,61.9048f},
+ {28.5076f,66.6667f},
+ {42.7933f,66.6667f},
+ {52.3171f,61.9048f},
+ {61.841f,52.381f},
+ {66.6029f,38.0952f},
+ {66.6029f,28.5714f},
+ {61.841f,14.2857f},
+ {52.3171f,4.7619f},
+ {42.7933f,0.0f},
+ {28.5076f,0.0f},
+ {18.9838f,4.7619f},
+ {9.46f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch112st[] =
+{
+ {2,ch112st0},
+ {14,ch112st1}
+};
+
+static const Fl_Glut_StrokeChar ch112 = {70.8029f,2,ch112st};
+
+/* char: 0x71 */
+
+static const Fl_Glut_StrokeVertex ch113st0[] =
+{
+ {61.9829f,66.6667f},
+ {61.9829f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch113st1[] =
+{
+ {61.9829f,52.381f},
+ {52.459f,61.9048f},
+ {42.9352f,66.6667f},
+ {28.6495f,66.6667f},
+ {19.1257f,61.9048f},
+ {9.6019f,52.381f},
+ {4.84f,38.0952f},
+ {4.84f,28.5714f},
+ {9.6019f,14.2857f},
+ {19.1257f,4.7619f},
+ {28.6495f,0.0f},
+ {42.9352f,0.0f},
+ {52.459f,4.7619f},
+ {61.9829f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch113st[] =
+{
+ {2,ch113st0},
+ {14,ch113st1}
+};
+
+static const Fl_Glut_StrokeChar ch113 = {70.7429f,2,ch113st};
+
+/* char: 0x72 */
+
+static const Fl_Glut_StrokeVertex ch114st0[] =
+{
+ {9.46f,66.6667f},
+ {9.46f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch114st1[] =
+{
+ {9.46f,38.0952f},
+ {14.2219f,52.381f},
+ {23.7457f,61.9048f},
+ {33.2695f,66.6667f},
+ {47.5552f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch114st[] =
+{
+ {2,ch114st0},
+ {5,ch114st1}
+};
+
+static const Fl_Glut_StrokeChar ch114 = {49.4952f,2,ch114st};
+
+/* char: 0x73 */
+
+static const Fl_Glut_StrokeVertex ch115st0[] =
+{
+ {57.081f,52.381f},
+ {52.319f,61.9048f},
+ {38.0333f,66.6667f},
+ {23.7476f,66.6667f},
+ {9.4619f,61.9048f},
+ {4.7f,52.381f},
+ {9.4619f,42.8571f},
+ {18.9857f,38.0952f},
+ {42.7952f,33.3333f},
+ {52.319f,28.5714f},
+ {57.081f,19.0476f},
+ {57.081f,14.2857f},
+ {52.319f,4.7619f},
+ {38.0333f,0.0f},
+ {23.7476f,0.0f},
+ {9.4619f,4.7619f},
+ {4.7f,14.2857f}
+};
+
+static const Fl_Glut_StrokeStrip ch115st[] =
+{
+ {17,ch115st0}
+};
+
+static const Fl_Glut_StrokeChar ch115 = {62.321f,1,ch115st};
+
+/* char: 0x74 */
+
+static const Fl_Glut_StrokeVertex ch116st0[] =
+{
+ {14.8257f,100.0f},
+ {14.8257f,19.0476f},
+ {19.5876f,4.7619f},
+ {29.1114f,0.0f},
+ {38.6352f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch116st1[] =
+{
+ {0.54f,66.6667f},
+ {33.8733f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch116st[] =
+{
+ {5,ch116st0},
+ {2,ch116st1}
+};
+
+static const Fl_Glut_StrokeChar ch116 = {39.3152f,2,ch116st};
+
+/* char: 0x75 */
+
+static const Fl_Glut_StrokeVertex ch117st0[] =
+{
+ {9.46f,66.6667f},
+ {9.46f,19.0476f},
+ {14.2219f,4.7619f},
+ {23.7457f,0.0f},
+ {38.0314f,0.0f},
+ {47.5552f,4.7619f},
+ {61.841f,19.0476f}
+};
+
+static const Fl_Glut_StrokeVertex ch117st1[] =
+{
+ {61.841f,66.6667f},
+ {61.841f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch117st[] =
+{
+ {7,ch117st0},
+ {2,ch117st1}
+};
+
+static const Fl_Glut_StrokeChar ch117 = {71.161f,2,ch117st};
+
+/* char: 0x76 */
+
+static const Fl_Glut_StrokeVertex ch118st0[] =
+{
+ {1.8f,66.6667f},
+ {30.3714f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch118st1[] =
+{
+ {58.9429f,66.6667f},
+ {30.3714f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch118st[] =
+{
+ {2,ch118st0},
+ {2,ch118st1}
+};
+
+static const Fl_Glut_StrokeChar ch118 = {60.6029f,2,ch118st};
+
+/* char: 0x77 */
+
+static const Fl_Glut_StrokeVertex ch119st0[] =
+{
+ {2.5f,66.6667f},
+ {21.5476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch119st1[] =
+{
+ {40.5952f,66.6667f},
+ {21.5476f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch119st2[] =
+{
+ {40.5952f,66.6667f},
+ {59.6429f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch119st3[] =
+{
+ {78.6905f,66.6667f},
+ {59.6429f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch119st[] =
+{
+ {2,ch119st0},
+ {2,ch119st1},
+ {2,ch119st2},
+ {2,ch119st3}
+};
+
+static const Fl_Glut_StrokeChar ch119 = {80.4905f,4,ch119st};
+
+/* char: 0x78 */
+
+static const Fl_Glut_StrokeVertex ch120st0[] =
+{
+ {1.66f,66.6667f},
+ {54.041f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch120st1[] =
+{
+ {54.041f,66.6667f},
+ {1.66f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch120st[] =
+{
+ {2,ch120st0},
+ {2,ch120st1}
+};
+
+static const Fl_Glut_StrokeChar ch120 = {56.401f,2,ch120st};
+
+/* char: 0x79 */
+
+static const Fl_Glut_StrokeVertex ch121st0[] =
+{
+ {6.5619f,66.6667f},
+ {35.1333f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch121st1[] =
+{
+ {63.7048f,66.6667f},
+ {35.1333f,0.0f},
+ {25.6095f,-19.0476f},
+ {16.0857f,-28.5714f},
+ {6.5619f,-33.3333f},
+ {1.8f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch121st[] =
+{
+ {2,ch121st0},
+ {6,ch121st1}
+};
+
+static const Fl_Glut_StrokeChar ch121 = {66.0648f,2,ch121st};
+
+/* char: 0x7a */
+
+static const Fl_Glut_StrokeVertex ch122st0[] =
+{
+ {56.821f,66.6667f},
+ {4.44f,0.0f}
+};
+
+static const Fl_Glut_StrokeVertex ch122st1[] =
+{
+ {4.44f,66.6667f},
+ {56.821f,66.6667f}
+};
+
+static const Fl_Glut_StrokeVertex ch122st2[] =
+{
+ {4.44f,0.0f},
+ {56.821f,0.0f}
+};
+
+static const Fl_Glut_StrokeStrip ch122st[] =
+{
+ {2,ch122st0},
+ {2,ch122st1},
+ {2,ch122st2}
+};
+
+static const Fl_Glut_StrokeChar ch122 = {61.821f,3,ch122st};
+
+/* char: 0x7b */
+
+static const Fl_Glut_StrokeVertex ch123st0[] =
+{
+ {31.1895f,119.048f},
+ {21.6657f,114.286f},
+ {16.9038f,109.524f},
+ {12.1419f,100.0f},
+ {12.1419f,90.4762f},
+ {16.9038f,80.9524f},
+ {21.6657f,76.1905f},
+ {26.4276f,66.6667f},
+ {26.4276f,57.1429f},
+ {16.9038f,47.619f}
+};
+
+static const Fl_Glut_StrokeVertex ch123st1[] =
+{
+ {21.6657f,114.286f},
+ {16.9038f,104.762f},
+ {16.9038f,95.2381f},
+ {21.6657f,85.7143f},
+ {26.4276f,80.9524f},
+ {31.1895f,71.4286f},
+ {31.1895f,61.9048f},
+ {26.4276f,52.381f},
+ {7.38f,42.8571f},
+ {26.4276f,33.3333f},
+ {31.1895f,23.8095f},
+ {31.1895f,14.2857f},
+ {26.4276f,4.7619f},
+ {21.6657f,0.0f},
+ {16.9038f,-9.5238f},
+ {16.9038f,-19.0476f},
+ {21.6657f,-28.5714f}
+};
+
+static const Fl_Glut_StrokeVertex ch123st2[] =
+{
+ {16.9038f,38.0952f},
+ {26.4276f,28.5714f},
+ {26.4276f,19.0476f},
+ {21.6657f,9.5238f},
+ {16.9038f,4.7619f},
+ {12.1419f,-4.7619f},
+ {12.1419f,-14.2857f},
+ {16.9038f,-23.8095f},
+ {21.6657f,-28.5714f},
+ {31.1895f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch123st[] =
+{
+ {10,ch123st0},
+ {17,ch123st1},
+ {10,ch123st2}
+};
+
+static const Fl_Glut_StrokeChar ch123 = {41.6295f,3,ch123st};
+
+/* char: 0x7c */
+
+static const Fl_Glut_StrokeVertex ch124st0[] =
+{
+ {11.54f,119.048f},
+ {11.54f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch124st[] =
+{
+ {2,ch124st0}
+};
+
+static const Fl_Glut_StrokeChar ch124 = {23.78f,1,ch124st};
+
+/* char: 0x7d */
+
+static const Fl_Glut_StrokeVertex ch125st0[] =
+{
+ {9.18f,119.048f},
+ {18.7038f,114.286f},
+ {23.4657f,109.524f},
+ {28.2276f,100.0f},
+ {28.2276f,90.4762f},
+ {23.4657f,80.9524f},
+ {18.7038f,76.1905f},
+ {13.9419f,66.6667f},
+ {13.9419f,57.1429f},
+ {23.4657f,47.619f}
+};
+
+static const Fl_Glut_StrokeVertex ch125st1[] =
+{
+ {18.7038f,114.286f},
+ {23.4657f,104.762f},
+ {23.4657f,95.2381f},
+ {18.7038f,85.7143f},
+ {13.9419f,80.9524f},
+ {9.18f,71.4286f},
+ {9.18f,61.9048f},
+ {13.9419f,52.381f},
+ {32.9895f,42.8571f},
+ {13.9419f,33.3333f},
+ {9.18f,23.8095f},
+ {9.18f,14.2857f},
+ {13.9419f,4.7619f},
+ {18.7038f,0.0f},
+ {23.4657f,-9.5238f},
+ {23.4657f,-19.0476f},
+ {18.7038f,-28.5714f}
+};
+
+static const Fl_Glut_StrokeVertex ch125st2[] =
+{
+ {23.4657f,38.0952f},
+ {13.9419f,28.5714f},
+ {13.9419f,19.0476f},
+ {18.7038f,9.5238f},
+ {23.4657f,4.7619f},
+ {28.2276f,-4.7619f},
+ {28.2276f,-14.2857f},
+ {23.4657f,-23.8095f},
+ {18.7038f,-28.5714f},
+ {9.18f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeStrip ch125st[] =
+{
+ {10,ch125st0},
+ {17,ch125st1},
+ {10,ch125st2}
+};
+
+static const Fl_Glut_StrokeChar ch125 = {41.4695f,3,ch125st};
+
+/* char: 0x7e */
+
+static const Fl_Glut_StrokeVertex ch126st0[] =
+{
+ {2.92f,28.5714f},
+ {2.92f,38.0952f},
+ {7.6819f,52.381f},
+ {17.2057f,57.1429f},
+ {26.7295f,57.1429f},
+ {36.2533f,52.381f},
+ {55.301f,38.0952f},
+ {64.8248f,33.3333f},
+ {74.3486f,33.3333f},
+ {83.8724f,38.0952f},
+ {88.6343f,47.619f}
+};
+
+static const Fl_Glut_StrokeVertex ch126st1[] =
+{
+ {2.92f,38.0952f},
+ {7.6819f,47.619f},
+ {17.2057f,52.381f},
+ {26.7295f,52.381f},
+ {36.2533f,47.619f},
+ {55.301f,33.3333f},
+ {64.8248f,28.5714f},
+ {74.3486f,28.5714f},
+ {83.8724f,33.3333f},
+ {88.6343f,47.619f},
+ {88.6343f,57.1429f}
+};
+
+static const Fl_Glut_StrokeStrip ch126st[] =
+{
+ {11,ch126st0},
+ {11,ch126st1}
+};
+
+static const Fl_Glut_StrokeChar ch126 = {91.2743f,2,ch126st};
+
+/* char: 0x7f */
+
+static const Fl_Glut_StrokeVertex ch127st0[] =
+{
+ {52.381f,100.0f},
+ {14.2857f,-33.3333f}
+};
+
+static const Fl_Glut_StrokeVertex ch127st1[] =
+{
+ {28.5714f,66.6667f},
+ {14.2857f,61.9048f},
+ {4.7619f,52.381f},
+ {0.0f,38.0952f},
+ {0.0f,23.8095f},
+ {4.7619f,14.2857f},
+ {14.2857f,4.7619f},
+ {28.5714f,0.0f},
+ {38.0952f,0.0f},
+ {52.381f,4.7619f},
+ {61.9048f,14.2857f},
+ {66.6667f,28.5714f},
+ {66.6667f,42.8571f},
+ {61.9048f,52.381f},
+ {52.381f,61.9048f},
+ {38.0952f,66.6667f},
+ {28.5714f,66.6667f}
+};
+
+static const Fl_Glut_StrokeStrip ch127st[] =
+{
+ {2,ch127st0},
+ {17,ch127st1}
+};
+
+static const Fl_Glut_StrokeChar ch127 = {66.6667f,2,ch127st};
+
+static const Fl_Glut_StrokeChar *chars[] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ &ch32, &ch33, &ch34, &ch35, &ch36, &ch37, &ch38, &ch39,
+ &ch40, &ch41, &ch42, &ch43, &ch44, &ch45, &ch46, &ch47,
+ &ch48, &ch49, &ch50, &ch51, &ch52, &ch53, &ch54, &ch55,
+ &ch56, &ch57, &ch58, &ch59, &ch60, &ch61, &ch62, &ch63,
+ &ch64, &ch65, &ch66, &ch67, &ch68, &ch69, &ch70, &ch71,
+ &ch72, &ch73, &ch74, &ch75, &ch76, &ch77, &ch78, &ch79,
+ &ch80, &ch81, &ch82, &ch83, &ch84, &ch85, &ch86, &ch87,
+ &ch88, &ch89, &ch90, &ch91, &ch92, &ch93, &ch94, &ch95,
+ &ch96, &ch97, &ch98, &ch99, &ch100, &ch101, &ch102, &ch103,
+ &ch104, &ch105, &ch106, &ch107, &ch108, &ch109, &ch110, &ch111,
+ &ch112, &ch113, &ch114, &ch115, &ch116, &ch117, &ch118, &ch119,
+ &ch120, &ch121, &ch122, &ch123, &ch124, &ch125, &ch126, &ch127
+};
+
+Fl_Glut_StrokeFont glutStrokeRoman = {"Roman",128,152.381f,chars};
diff --git a/src/freeglut_teapot.cxx b/src/freeglut_teapot.cxx
new file mode 100644
index 0000000..76b4d6c
--- /dev/null
+++ b/src/freeglut_teapot.cxx
@@ -0,0 +1,164 @@
+/*
+ * freeglut_teapot.c
+ *
+ * Teapot(tm) rendering code.
+ *
+ * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+ * Written by Pawel W. Olszta, <olszta@sourceforge.net>
+ * Creation date: Fri Dec 24 1999
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Original teapot code copyright follows:
+ */
+
+/*
+ * (c) Copyright 1993, Silicon Graphics, Inc.
+ *
+ * ALL RIGHTS RESERVED
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that
+ * both the copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Silicon
+ * Graphics, Inc. not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU
+ * "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR
+ * OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO
+ * EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE
+ * ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER,
+ * INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE,
+ * SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR
+ * NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY
+ * OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ *
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer
+ * Software clause at DFARS 252.227-7013 and/or in similar or
+ * successor clauses in the FAR or the DOD or NASA FAR
+ * Supplement. Unpublished-- rights reserved under the copyright
+ * laws of the United States. Contractor/manufacturer is Silicon
+ * Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA
+ * 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+
+#include <FL/glut.H>
+#include "freeglut_teapot_data.h"
+
+/* -- PRIVATE FUNCTIONS ---------------------------------------------------- */
+
+
+static void fghTeapot( GLint grid, GLdouble scale, GLenum type )
+{
+ double p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3];
+ long i, j, k, l;
+
+ glPushAttrib( GL_ENABLE_BIT | GL_EVAL_BIT );
+ glEnable( GL_AUTO_NORMAL );
+ glEnable( GL_NORMALIZE );
+ glEnable( GL_MAP2_VERTEX_3 );
+ glEnable( GL_MAP2_TEXTURE_COORD_2 );
+
+ glPushMatrix();
+ glRotated( 270.0, 1.0, 0.0, 0.0 );
+ glScaled( 0.5 * scale, 0.5 * scale, 0.5 * scale );
+ glTranslated( 0.0, 0.0, -1.5 );
+
+ for (i = 0; i < 10; i++) {
+ for (j = 0; j < 4; j++) {
+ for (k = 0; k < 4; k++) {
+ for (l = 0; l < 3; l++) {
+ p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
+ q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l];
+ if (l == 1)
+ q[j][k][l] *= -1.0;
+ if (i < 6) {
+ r[j][k][l] =
+ cpdata[patchdata[i][j * 4 + (3 - k)]][l];
+ if (l == 0)
+ r[j][k][l] *= -1.0;
+ s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
+ if (l == 0)
+ s[j][k][l] *= -1.0;
+ if (l == 1)
+ s[j][k][l] *= -1.0;
+ }
+ }
+ }
+ }
+
+ glMap2d(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 2, 0.0, 1.0, 4, 2,
+ &tex[0][0][0]);
+ glMap2d(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4,
+ &p[0][0][0]);
+ glMapGrid2d(grid, 0.0, 1.0, grid, 0.0, 1.0);
+ glEvalMesh2(type, 0, grid, 0, grid);
+ glMap2d(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4,
+ &q[0][0][0]);
+ glEvalMesh2(type, 0, grid, 0, grid);
+ if (i < 6) {
+ glMap2d(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4,
+ &r[0][0][0]);
+ glEvalMesh2(type, 0, grid, 0, grid);
+ glMap2d(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4,
+ &s[0][0][0]);
+ glEvalMesh2(type, 0, grid, 0, grid);
+ }
+ }
+
+ glPopMatrix();
+ glPopAttrib();
+}
+
+
+/* -- INTERFACE FUNCTIONS -------------------------------------------------- */
+
+/*
+ * Renders a beautiful wired teapot...
+ */
+void glutWireTeapot( GLdouble size )
+{
+ /* We will use the general teapot rendering code */
+ fghTeapot( 10, size, GL_LINE );
+}
+
+/*
+ * Renders a beautiful filled teapot...
+ */
+void glutSolidTeapot( GLdouble size )
+{
+ /* We will use the general teapot rendering code */
+ fghTeapot( 7, size, GL_FILL );
+}
+
+/*** END OF FILE ***/
diff --git a/src/freeglut_teapot_data.h b/src/freeglut_teapot_data.h
new file mode 100644
index 0000000..14e72ee
--- /dev/null
+++ b/src/freeglut_teapot_data.h
@@ -0,0 +1,145 @@
+/*
+ * freeglut_teapot_data.h
+ *
+ * The freeglut library teapot data include file.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef FREEGLUT_TEAPOT_DATA_H
+#define FREEGLUT_TEAPOT_DATA_H
+
+/*
+ * Original teapot code copyright follows:
+ */
+
+/*
+ * (c) Copyright 1993, Silicon Graphics, Inc.
+ *
+ * ALL RIGHTS RESERVED
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that
+ * both the copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Silicon
+ * Graphics, Inc. not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU
+ * "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR
+ * OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO
+ * EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE
+ * ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER,
+ * INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE,
+ * SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR
+ * NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY
+ * OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ *
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer
+ * Software clause at DFARS 252.227-7013 and/or in similar or
+ * successor clauses in the FAR or the DOD or NASA FAR
+ * Supplement. Unpublished-- rights reserved under the copyright
+ * laws of the United States. Contractor/manufacturer is Silicon
+ * Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA
+ * 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+
+/*
+ * Rim, body, lid, and bottom data must be reflected in x and y;
+ * handle and spout data across the y axis only.
+ */
+static int patchdata[][16] =
+{
+ { 102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, /* rim */
+ { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, /* body */
+ { 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 },
+ { 96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101, 101, 0, 1, 2, 3 }, /* lid */
+ { 0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117 },
+ { 118, 118, 118, 118, 124, 122, 119, 121, 123, 126, 125, 120, 40, 39, 38, 37 }, /* bottom */
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56 }, /* handle */
+ { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 65, 66, 67 },
+ { 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83 }, /* spout */
+ { 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95 }
+};
+
+static double cpdata[][3] =
+{
+ {0.2, 0, 2.7}, {0.2, -0.112, 2.7}, {0.112, -0.2, 2.7}, {0,
+ -0.2, 2.7}, {1.3375, 0, 2.53125}, {1.3375, -0.749, 2.53125},
+ {0.749, -1.3375, 2.53125}, {0, -1.3375, 2.53125}, {1.4375,
+ 0, 2.53125}, {1.4375, -0.805, 2.53125}, {0.805, -1.4375,
+ 2.53125}, {0, -1.4375, 2.53125}, {1.5, 0, 2.4}, {1.5, -0.84,
+ 2.4}, {0.84, -1.5, 2.4}, {0, -1.5, 2.4}, {1.75, 0, 1.875},
+ {1.75, -0.98, 1.875}, {0.98, -1.75, 1.875}, {0, -1.75,
+ 1.875}, {2, 0, 1.35}, {2, -1.12, 1.35}, {1.12, -2, 1.35},
+ {0, -2, 1.35}, {2, 0, 0.9}, {2, -1.12, 0.9}, {1.12, -2,
+ 0.9}, {0, -2, 0.9}, {-2, 0, 0.9}, {2, 0, 0.45}, {2, -1.12,
+ 0.45}, {1.12, -2, 0.45}, {0, -2, 0.45}, {1.5, 0, 0.225},
+ {1.5, -0.84, 0.225}, {0.84, -1.5, 0.225}, {0, -1.5, 0.225},
+ {1.5, 0, 0.15}, {1.5, -0.84, 0.15}, {0.84, -1.5, 0.15}, {0,
+ -1.5, 0.15}, {-1.6, 0, 2.025}, {-1.6, -0.3, 2.025}, {-1.5,
+ -0.3, 2.25}, {-1.5, 0, 2.25}, {-2.3, 0, 2.025}, {-2.3, -0.3,
+ 2.025}, {-2.5, -0.3, 2.25}, {-2.5, 0, 2.25}, {-2.7, 0,
+ 2.025}, {-2.7, -0.3, 2.025}, {-3, -0.3, 2.25}, {-3, 0,
+ 2.25}, {-2.7, 0, 1.8}, {-2.7, -0.3, 1.8}, {-3, -0.3, 1.8},
+ {-3, 0, 1.8}, {-2.7, 0, 1.575}, {-2.7, -0.3, 1.575}, {-3,
+ -0.3, 1.35}, {-3, 0, 1.35}, {-2.5, 0, 1.125}, {-2.5, -0.3,
+ 1.125}, {-2.65, -0.3, 0.9375}, {-2.65, 0, 0.9375}, {-2,
+ -0.3, 0.9}, {-1.9, -0.3, 0.6}, {-1.9, 0, 0.6}, {1.7, 0,
+ 1.425}, {1.7, -0.66, 1.425}, {1.7, -0.66, 0.6}, {1.7, 0,
+ 0.6}, {2.6, 0, 1.425}, {2.6, -0.66, 1.425}, {3.1, -0.66,
+ 0.825}, {3.1, 0, 0.825}, {2.3, 0, 2.1}, {2.3, -0.25, 2.1},
+ {2.4, -0.25, 2.025}, {2.4, 0, 2.025}, {2.7, 0, 2.4}, {2.7,
+ -0.25, 2.4}, {3.3, -0.25, 2.4}, {3.3, 0, 2.4}, {2.8, 0,
+ 2.475}, {2.8, -0.25, 2.475}, {3.525, -0.25, 2.49375},
+ {3.525, 0, 2.49375}, {2.9, 0, 2.475}, {2.9, -0.15, 2.475},
+ {3.45, -0.15, 2.5125}, {3.45, 0, 2.5125}, {2.8, 0, 2.4},
+ {2.8, -0.15, 2.4}, {3.2, -0.15, 2.4}, {3.2, 0, 2.4}, {0, 0,
+ 3.15}, {0.8, 0, 3.15}, {0.8, -0.45, 3.15}, {0.45, -0.8,
+ 3.15}, {0, -0.8, 3.15}, {0, 0, 2.85}, {1.4, 0, 2.4}, {1.4,
+ -0.784, 2.4}, {0.784, -1.4, 2.4}, {0, -1.4, 2.4}, {0.4, 0,
+ 2.55}, {0.4, -0.224, 2.55}, {0.224, -0.4, 2.55}, {0, -0.4,
+ 2.55}, {1.3, 0, 2.55}, {1.3, -0.728, 2.55}, {0.728, -1.3,
+ 2.55}, {0, -1.3, 2.55}, {1.3, 0, 2.4}, {1.3, -0.728, 2.4},
+ {0.728, -1.3, 2.4}, {0, -1.3, 2.4}, {0, 0, 0}, {1.425,
+ -0.798, 0}, {1.5, 0, 0.075}, {1.425, 0, 0}, {0.798, -1.425,
+ 0}, {0, -1.5, 0.075}, {0, -1.425, 0}, {1.5, -0.84, 0.075},
+ {0.84, -1.5, 0.075}
+};
+
+static double tex[2][2][2] =
+{
+ { {0.0, 0.0}, {1.0, 0.0} },
+ { {0.0, 1.0}, {1.0, 1.0} }
+};
+
+
+#endif /* FREEGLUT_TEAPOT_DATA_H */
+
diff --git a/src/gl_draw.cxx b/src/gl_draw.cxx
index d19c725..7d359ed 100644
--- a/src/gl_draw.cxx
+++ b/src/gl_draw.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: gl_draw.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: gl_draw.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// OpenGL drawing support routines for the Fast Light Tool Kit (FLTK).
//
@@ -127,17 +127,8 @@ void gl_remove_displaylist_fonts()
#endif
}
-#ifdef __APPLE__
-const char *fl_iso2macRoman(const char*, int);
-#endif
-
void gl_draw(const char* str, int n) {
-#ifdef __APPLE__
- const char *txt = fl_iso2macRoman(str, n);
- glCallLists(n, GL_UNSIGNED_BYTE, txt);
-#else
glCallLists(n, GL_UNSIGNED_BYTE, str);
-#endif
}
void gl_draw(const char* str, int n, int x, int y) {
@@ -228,5 +219,5 @@ void gl_draw_image(const uchar* b, int x, int y, int w, int h, int d, int ld) {
#endif
//
-// End of "$Id: gl_draw.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: gl_draw.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/gl_start.cxx b/src/gl_start.cxx
index 418b835..24aae1c 100644
--- a/src/gl_start.cxx
+++ b/src/gl_start.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: gl_start.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: gl_start.cxx 5190 2006-06-09 16:16:34Z mike $"
//
// OpenGL context routines for the Fast Light Tool Kit (FLTK).
//
@@ -130,5 +130,5 @@ int Fl::gl_visual(int mode, int *alist) {
#endif
//
-// End of "$Id: gl_start.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: gl_start.cxx 5190 2006-06-09 16:16:34Z mike $".
//
diff --git a/src/glut_compatability.cxx b/src/glut_compatability.cxx
index 76be515..e0a6ba6 100755
--- a/src/glut_compatability.cxx
+++ b/src/glut_compatability.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: glut_compatability.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: glut_compatability.cxx 5684 2007-02-09 16:21:55Z mike $"
//
// GLUT emulation routines for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -35,12 +35,18 @@
// Although I have copied the GLUT API, none of my code is based on
// any Glut implementation details and is therefore covered by the LGPL.
-#include <config.h>
+#include "flstring.h"
#if HAVE_GL
-#include <FL/glut.H>
-
-#define MAXWINDOWS 32
+# include <FL/glut.H>
+# ifdef HAVE_GLXGETPROCADDRESSARB
+# define GLX_GLXEXT_LEGACY
+# include <GL/glx.h>
+# endif // HAVE_GLXGETPROCADDRESSARB
+# ifdef HAVE_DLFCN_H
+# include <dlfcn.h>
+# endif // HAVE_DLFCN_H
+# define MAXWINDOWS 32
static Fl_Glut_Window *windows[MAXWINDOWS+1];
Fl_Glut_Window *glut_window;
@@ -221,6 +227,10 @@ void glutInitWindowSize(int w, int h) {
}
int glutCreateWindow(char *title) {
+ return glutCreateWindow((const char*)title);
+}
+
+int glutCreateWindow(const char *title) {
Fl_Glut_Window *W;
if (initpos) {
W = new Fl_Glut_Window(initx,inity,initw,inith,title);
@@ -235,6 +245,8 @@ int glutCreateWindow(char *title) {
} else {
W->show();
}
+ W->valid(0);
+ W->context_valid(0);
W->make_current();
return W->number;
}
@@ -257,6 +269,10 @@ void glutDestroyWindow(int win) {
delete windows[win];
}
+void glutPostWindowRedisplay(int win) {
+ windows[win]->redraw();
+}
+
void glutSetWindow(int win) {
windows[win]->make_current();
}
@@ -396,6 +412,7 @@ int glutGet(GLenum type) {
glutGet(GLUT_WINDOW_ALPHA_SIZE);
else
return glutGet(GLUT_WINDOW_COLORMAP_SIZE);
+ case GLUT_VERSION: return 20400;
default: {GLint p; glGetIntegerv(type, &p); return p;}
}
}
@@ -412,8 +429,77 @@ int glutLayerGet(GLenum type) {
}
}
-#endif
+int glutDeviceGet(GLenum type) {
+ switch (type) {
+ case GLUT_HAS_KEYBOARD : return 1;
+ case GLUT_HAS_MOUSE : return 1;
+ case GLUT_NUM_MOUSE_BUTTONS : return 3;
+ default : return 0;
+ }
+}
+
+// Get extension function address...
+GLUTproc glutGetProcAddress(const char *procName) {
+# ifdef WIN32
+ return (GLUTproc)wglGetProcAddress((LPCSTR)procName);
+
+# elif defined(HAVE_DLSYM) && defined(HAVE_DLFCN_H)
+ char symbol[1024];
+
+ snprintf(symbol, sizeof(symbol), "_%s", procName);
+
+# ifdef RTLD_DEFAULT
+ return (GLUTproc)dlsym(RTLD_DEFAULT, symbol);
+
+# else // No RTLD_DEFAULT support, so open the current a.out symbols...
+ static void *rtld_default = 0;
+
+ if (!rtld_default) rtld_default = dlopen(0, RTLD_LAZY);
+
+ if (rtld_default) return (GLUTproc)dlsym(rtld_default, symbol);
+ else return 0;
+
+# endif // RTLD_DEFAULT
+
+# elif defined(HAVE_GLXGETPROCADDRESSARB)
+ return (GLUTproc)glXGetProcAddressARB((const GLubyte *)procName);
+
+# else
+ return (GLUTproc)0;
+# endif // WIN32
+}
+
+// Parse the GL_EXTENSIONS string to see if the named extension is
+// supported.
+//
+// This code was copied from FreeGLUT 2.4.0 which carries the
+// following notice:
+//
+// Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+int glutExtensionSupported( const char* extension )
+{
+ if (!extension || strchr(extension, ' ')) return 0;
+
+ const char *extensions, *start;
+ const int len = strlen( extension );
+
+ start = extensions = (const char *) glGetString(GL_EXTENSIONS);
+
+ if (!extensions) return 0;
+
+ for (;;) {
+ const char *p = strstr(extensions, extension);
+ if (!p) return 0; /* not found */
+ /* check that the match isn't a super string */
+ if ((p == start || p[-1] == ' ') &&
+ (p[len] == ' ' || p[len] == 0)) return 1;
+ /* skip the false match and continue */
+ extensions = p + len;
+ }
+}
+
+#endif // HAVE_GL
//
-// End of "$Id: glut_compatability.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: glut_compatability.cxx 5684 2007-02-09 16:21:55Z mike $".
//
diff --git a/src/glut_font.cxx b/src/glut_font.cxx
index 279c244..333092a 100644
--- a/src/glut_font.cxx
+++ b/src/glut_font.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: glut_font.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: glut_font.cxx 5650 2007-02-01 18:10:07Z mike $"
//
-// GLUT bitmap font routines for the Fast Light Tool Kit (FLTK).
+// GLUT font routines for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -24,37 +24,176 @@
//
// http://www.fltk.org/str.php
//
+// The stroked text code was copied from FreeGLUT 2.4.0 which carries
+// the following notice:
+//
+// Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+//
// (sort of) emulation of Glut's bitmap drawing functions, using FL's
// font stuff. Not all the fonts match!
#include <config.h>
#if HAVE_GL
+# include <FL/glut.H>
-#include <FL/glut.H>
-#include <FL/gl.h>
-
-Glut_Bitmap_Font glutBitmap9By15 = {FL_SCREEN, 15};
-Glut_Bitmap_Font glutBitmap8By13 = {FL_SCREEN, 13};
-Glut_Bitmap_Font glutBitmapTimesRoman10 = {FL_TIMES, 10};
-Glut_Bitmap_Font glutBitmapTimesRoman24 = {FL_TIMES, 24};
-Glut_Bitmap_Font glutBitmapHelvetica10 = {FL_HELVETICA, 10};
-Glut_Bitmap_Font glutBitmapHelvetica12 = {FL_HELVETICA, 12};
-Glut_Bitmap_Font glutBitmapHelvetica18 = {FL_HELVETICA, 18};
+Fl_Glut_Bitmap_Font glutBitmap9By15 = {FL_SCREEN, 15};
+Fl_Glut_Bitmap_Font glutBitmap8By13 = {FL_SCREEN, 13};
+Fl_Glut_Bitmap_Font glutBitmapTimesRoman10 = {FL_TIMES, 10};
+Fl_Glut_Bitmap_Font glutBitmapTimesRoman24 = {FL_TIMES, 24};
+Fl_Glut_Bitmap_Font glutBitmapHelvetica10 = {FL_HELVETICA, 10};
+Fl_Glut_Bitmap_Font glutBitmapHelvetica12 = {FL_HELVETICA, 12};
+Fl_Glut_Bitmap_Font glutBitmapHelvetica18 = {FL_HELVETICA, 18};
void glutBitmapCharacter(void* font, int character) {
- gl_font(((Glut_Bitmap_Font *)font)->font,((Glut_Bitmap_Font *)font)->size);
+ gl_font(((Fl_Glut_Bitmap_Font *)font)->font,((Fl_Glut_Bitmap_Font *)font)->size);
char a[1]; a[0] = character;
gl_draw(a,1);
}
+int glutBitmapHeight(void* font) {
+ gl_font(((Fl_Glut_Bitmap_Font *)font)->font,((Fl_Glut_Bitmap_Font *)font)->size);
+ return gl_height();
+}
+
+int glutBitmapLength(void *font, const unsigned char *string) {
+ gl_font(((Fl_Glut_Bitmap_Font *)font)->font,((Fl_Glut_Bitmap_Font *)font)->size);
+ const char *s = (const char*)string;
+ return int(gl_width(s)+.5);
+}
+
+void glutBitmapString(void *font, const unsigned char *string) {
+ gl_font(((Fl_Glut_Bitmap_Font *)font)->font,((Fl_Glut_Bitmap_Font *)font)->size);
+ const char *s = (const char*)string;
+ gl_draw(s);
+}
+
int glutBitmapWidth(void* font, int character) {
- gl_font(((Glut_Bitmap_Font *)font)->font,((Glut_Bitmap_Font *)font)->size);
+ gl_font(((Fl_Glut_Bitmap_Font *)font)->font,((Fl_Glut_Bitmap_Font *)font)->size);
return int(gl_width(character)+.5);
}
-#endif
+
+/*
+ * Draw a stroke character
+ */
+void glutStrokeCharacter(void* fontID, int character) {
+ const Fl_Glut_StrokeChar *schar;
+ const Fl_Glut_StrokeStrip *strip;
+ int i, j;
+ Fl_Glut_StrokeFont* font = (Fl_Glut_StrokeFont *)fontID;
+
+ if (character < 0 || character >= font->Quantity) return;
+
+ schar = font->Characters[character];
+ if (!schar) return;
+
+ strip = schar->Strips;
+
+ for (i = 0; i < schar->Number; i++, strip++)
+ {
+ glBegin(GL_LINE_STRIP);
+ for (j = 0; j < strip->Number; j++)
+ glVertex2f(strip->Vertices[j].X, strip->Vertices[j].Y);
+ glEnd();
+ }
+
+ glTranslatef(schar->Right, 0.0, 0.0);
+}
+
+void glutStrokeString(void* fontID, const unsigned char *string) {
+ unsigned char c;
+ int i, j;
+ float length = 0.0;
+ Fl_Glut_StrokeFont* font = (Fl_Glut_StrokeFont *)fontID;
+
+ if (!string || ! *string) return;
+
+ /*
+ * Step through the string, drawing each character.
+ * A newline will simply translate the next character's insertion
+ * point back to the start of the line and down one line.
+ */
+
+ while ((c = *string++) != 0) {
+ if (c < font->Quantity) {
+ if (c == '\n') {
+ glTranslatef(-length, -(float)(font->Height), 0.0);
+ length = 0.0;
+ } else {
+ /* Not an EOL, draw the bitmap character */
+ const Fl_Glut_StrokeChar *schar = font->Characters[c];
+ if (schar) {
+ const Fl_Glut_StrokeStrip *strip = schar->Strips;
+
+ for (i = 0; i < schar->Number; i++, strip++) {
+ glBegin(GL_LINE_STRIP);
+ for (j = 0; j < strip->Number; j++)
+ glVertex2f(strip->Vertices[j].X, strip->Vertices[j].Y);
+ glEnd();
+ }
+
+ length += schar->Right;
+ glTranslatef(schar->Right, 0.0, 0.0);
+ }
+ }
+ }
+ }
+}
+
+/*
+ * Return the width in pixels of a stroke character
+ */
+int glutStrokeWidth( void* fontID, int character )
+{
+ const Fl_Glut_StrokeChar *schar;
+ Fl_Glut_StrokeFont* font = (Fl_Glut_StrokeFont *)fontID;
+ if (character < 0 || character >= font->Quantity) return 0;
+ schar = font->Characters[ character ];
+
+ return schar ? (int)(schar->Right + 0.5) : 0;
+}
+
+/*
+ * Return the width of a string drawn using a stroke font
+ */
+int glutStrokeLength(void* fontID, const unsigned char* string) {
+ unsigned char c;
+ float length = 0.0;
+ float this_line_length = 0.0;
+ Fl_Glut_StrokeFont* font = (Fl_Glut_StrokeFont *)fontID;
+
+ if (!string || ! *string) return 0;
+
+ while ((c = *string++) != 0) {
+ if (c < font->Quantity) {
+ if (c == '\n') {
+ /* EOL; reset the length of this line */
+ if (length < this_line_length) length = this_line_length;
+ this_line_length = 0.0;
+ } else {
+ /* Not an EOL, increment the length of this line */
+ const Fl_Glut_StrokeChar *schar = font->Characters[c];
+ if (schar) this_line_length += schar->Right;
+ }
+ }
+ }
+
+ if (length < this_line_length) length = this_line_length;
+
+ return (int)(length + 0.5);
+}
+
+/*
+ * Returns the height of a stroke font
+ */
+GLfloat glutStrokeHeight(void* fontID) {
+ Fl_Glut_StrokeFont* font = (Fl_Glut_StrokeFont *)fontID;
+ return font->Height;
+}
+
+#endif // HAVE_GL
//
-// End of "$Id: glut_font.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: glut_font.cxx 5650 2007-02-01 18:10:07Z mike $".
//
diff --git a/src/makedepend b/src/makedepend
index 86b6148..2fc5c01 100644
--- a/src/makedepend
+++ b/src/makedepend
@@ -1,544 +1,601 @@
-# DO NOT DELETE
-
-Fl.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-Fl.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/x.H ../FL/Fl_Window.H
-Fl.o: ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H flstring.h ../FL/Fl_Export.H
-Fl.o: ../config.h ../FL/fl_draw.H
-Fl_Adjuster.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Adjuster.o: ../FL/Fl_Adjuster.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
-Fl_Adjuster.o: ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/fl_draw.H fastarrow.h
-Fl_Adjuster.o: mediumarrow.h slowarrow.h
-Fl_Bitmap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-Fl_Bitmap.o: ../FL/Fl_Window.H ../FL/fl_draw.H ../FL/Fl_Widget.H
-Fl_Bitmap.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-Fl_Bitmap.o: ../FL/Fl_Bitmap.H flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Browser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Browser.o: ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Group.H
-Fl_Browser.o: ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-Fl_Browser.o: ../FL/Fl_Valuator.H ../FL/fl_draw.H flstring.h
-Fl_Browser.o: ../FL/Fl_Export.H ../config.h
-Fl_Browser_.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Browser_.o: ../FL/Fl_Widget.H ../FL/Fl_Browser_.H ../FL/Fl_Group.H
-Fl_Browser_.o: ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-Fl_Browser_.o: ../FL/Fl_Valuator.H ../FL/fl_draw.H
-Fl_Browser_load.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Browser_load.o: ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Group.H
-Fl_Browser_load.o: ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-Fl_Browser_load.o: ../FL/Fl_Valuator.H
-Fl_Box.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Widget.H
-Fl_Box.o: ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Button.o: ../FL/Fl_Button.H ../FL/Fl_Widget.H ../FL/Fl_Group.H
-Fl_Button.o: ../FL/Fl_Window.H ../FL/Fl_Group.H
-Fl_Chart.o: ../FL/math.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Chart.o: ../FL/Fl_Chart.H ../FL/Fl_Widget.H ../FL/fl_draw.H flstring.h
-Fl_Chart.o: ../FL/Fl_Export.H ../config.h
-Fl_Check_Browser.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/fl_draw.H
-Fl_Check_Browser.o: ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Check_Browser.o: ../FL/Fl_Check_Browser.H ../FL/Fl.H ../FL/Fl_Browser_.H
-Fl_Check_Browser.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-Fl_Check_Browser.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_Check_Button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Check_Button.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
-Fl_Check_Button.o: ../FL/Fl_Button.H ../FL/Fl_Widget.H
-Fl_Choice.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Choice.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Widget.H
-Fl_Choice.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
-Fl_Clock.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Clock.o: ../FL/Fl_Clock.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Color_Chooser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Color_Chooser.o: ../FL/Fl_Color_Chooser.H ../FL/Fl_Group.H ../FL/Fl_Box.H
-Fl_Color_Chooser.o: ../FL/Fl_Widget.H ../FL/Fl_Return_Button.H
-Fl_Color_Chooser.o: ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
-Fl_Color_Chooser.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H
-Fl_Color_Chooser.o: ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H
-Fl_Color_Chooser.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H
-Fl_Color_Chooser.o: ../FL/math.h ../FL/Fl_Window.H ../FL/Fl_Group.H
-Fl_Counter.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Counter.o: ../FL/Fl_Counter.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
-Fl_Counter.o: ../FL/fl_draw.H
-Fl_Dial.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Dial.H
-Fl_Dial.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/math.h
-Fl_Double_Window.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H
-Fl_Double_Window.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H
-Fl_Double_Window.o: ../FL/Fl_Window.H ../FL/x.H ../FL/fl_draw.H
-Fl_File_Browser.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H
-Fl_File_Browser.o: ../FL/Fl_Browser_.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-Fl_File_Browser.o: ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_File_Browser.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_File_Browser.o: ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H
-Fl_File_Browser.o: ../FL/fl_draw.H ../FL/filename.H flstring.h
-Fl_File_Browser.o: ../FL/Fl_Export.H ../config.h
-Fl_File_Chooser.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Enumerations.H
-Fl_File_Chooser.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H
-Fl_File_Chooser.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H
-Fl_File_Chooser.o: ../FL/Fl_Menu_.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H
-Fl_File_Chooser.o: ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H
-Fl_File_Chooser.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_Group.H
-Fl_File_Chooser.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H
-Fl_File_Chooser.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-Fl_File_Chooser.o: ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H
-Fl_File_Chooser.o: ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-Fl_File_Chooser.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-Fl_File_Chooser.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fl_File_Chooser.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/fl_draw.H
-Fl_File_Chooser.o: ../FL/Fl_Bitmap.H
-Fl_File_Chooser2.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Enumerations.H
-Fl_File_Chooser2.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H
-Fl_File_Chooser2.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H
-Fl_File_Chooser2.o: ../FL/Fl_Menu_.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H
-Fl_File_Chooser2.o: ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H
-Fl_File_Chooser2.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_Group.H
-Fl_File_Chooser2.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H
-Fl_File_Chooser2.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H
-Fl_File_Chooser2.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_File_Chooser2.o: ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H
-Fl_File_Chooser2.o: ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-Fl_File_Chooser2.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-Fl_File_Chooser2.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fl_File_Chooser2.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/filename.H
-Fl_File_Chooser2.o: ../FL/x.H ../FL/Fl_Shared_Image.H flstring.h
-Fl_File_Chooser2.o: ../FL/Fl_Export.H ../config.h
-Fl_File_Icon.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl_File_Icon.H
-Fl_File_Icon.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_File_Icon.o: ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/filename.H
-Fl_File_Input.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_File_Input.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fl_File_Input.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-Fl_File_Input.o: ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Group.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Group.o: ../FL/Fl_Group.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-Fl_Group.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Help_View.o: ../FL/Fl_Help_View.H ../FL/Fl.H ../FL/Enumerations.H
-Fl_Help_View.o: ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-Fl_Help_View.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_Help_View.o: ../FL/fl_draw.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-Fl_Help_View.o: ../FL/Fl_Pixmap.H flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_draw.H
-Fl_Image.o: ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Widget.H
-Fl_Image.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-Fl_Image.o: ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Input.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Input.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H ../FL/fl_ask.H
-Fl_Input.o: flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Input_.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Input_.o: ../FL/Fl_Input_.H ../FL/Fl_Widget.H ../FL/Fl_Window.H
-Fl_Input_.o: ../FL/Fl_Group.H ../FL/fl_draw.H ../FL/fl_ask.H flstring.h
-Fl_Input_.o: ../FL/Fl_Export.H ../config.h
-Fl_Light_Button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Light_Button.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-Fl_Light_Button.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Menu.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Menu.o: ../FL/Fl_Menu_Window.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H
-Fl_Menu.o: ../FL/Fl_Menu_.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H
-Fl_Menu.o: ../FL/Fl_Image.H ../FL/fl_draw.H
-Fl_Menu_.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Menu_.o: ../FL/Fl_Menu_.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H
-Fl_Menu_.o: ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Menu_Bar.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Menu_Bar.o: ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H ../FL/Fl_Widget.H
-Fl_Menu_Bar.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
-Fl_Menu_Button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Menu_Button.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Widget.H
-Fl_Menu_Button.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
-Fl_Menu_Window.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H
-Fl_Menu_Window.o: ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H
-Fl_Menu_Window.o: ../FL/fl_draw.H ../FL/Fl_Menu_Window.H
-Fl_Menu_Window.o: ../FL/Fl_Single_Window.H
-Fl_Menu_add.o: ../FL/Fl_Menu_.H ../FL/Fl_Widget.H ../FL/Enumerations.H
-Fl_Menu_add.o: ../FL/Fl_Export.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H
-Fl_Menu_add.o: flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Menu_global.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Menu_global.o: ../FL/Fl_Menu_.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H
-Fl_Menu_global.o: ../FL/Fl_Image.H
-Fl_Multi_Label.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Multi_Label.o: ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H
-Fl_Multi_Label.o: ../FL/Fl_Image.H ../FL/Fl_Multi_Label.H
-Fl_Overlay_Window.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H
-Fl_Overlay_Window.o: ../FL/Fl_Export.H ../FL/Fl_Overlay_Window.H
-Fl_Overlay_Window.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-Fl_Overlay_Window.o: ../FL/fl_draw.H ../FL/x.H
-Fl_Pack.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Pack.H
-Fl_Pack.o: ../FL/Fl_Group.H ../FL/fl_draw.H
-Fl_Pixmap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Pixmap.o: ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Widget.H
-Fl_Pixmap.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-Fl_Pixmap.o: ../FL/Fl_Pixmap.H flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Positioner.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Positioner.o: ../FL/Fl_Positioner.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Preferences.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Preferences.o: ../FL/Fl_Preferences.H ../FL/filename.H flstring.h
-Fl_Preferences.o: ../FL/Fl_Export.H ../config.h
-Fl_Progress.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Progress.o: ../FL/Fl_Progress.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Repeat_Button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Repeat_Button.o: ../FL/Fl_Repeat_Button.H ../FL/Fl.H ../FL/Fl_Button.H
-Fl_Repeat_Button.o: ../FL/Fl_Widget.H
-Fl_Return_Button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Return_Button.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
-Fl_Return_Button.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Roller.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Roller.o: ../FL/Fl_Roller.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
-Fl_Roller.o: ../FL/fl_draw.H
-Fl_Round_Button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Round_Button.o: ../FL/Fl_Round_Button.H ../FL/Fl_Light_Button.H
-Fl_Round_Button.o: ../FL/Fl_Button.H ../FL/Fl_Widget.H
-Fl_Scroll.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Scroll.o: ../FL/Fl_Tiled_Image.H ../FL/Fl_Image.H ../FL/Fl_Scroll.H
-Fl_Scroll.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-Fl_Scroll.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
-Fl_Scrollbar.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Scrollbar.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_Scrollbar.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Shared_Image.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-Fl_Shared_Image.o: ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Shared_Image.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-Fl_Shared_Image.o: ../FL/Fl_XBM_Image.H ../FL/Fl_Bitmap.H
-Fl_Shared_Image.o: ../FL/Fl_XPM_Image.H ../FL/Fl_Pixmap.H
-Fl_Single_Window.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H
-Fl_Slider.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Slider.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
-Fl_Slider.o: ../FL/fl_draw.H
-Fl_Tabs.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Tabs.H
-Fl_Tabs.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Text_Buffer.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-Fl_Text_Buffer.o: ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Text_Buffer.o: ../FL/Fl_Text_Buffer.H
-Fl_Text_Display.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-Fl_Text_Display.o: ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Text_Display.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H
-Fl_Text_Display.o: ../FL/fl_draw.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-Fl_Text_Display.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_Text_Display.o: ../FL/Fl_Text_Buffer.H ../FL/Fl_Window.H
-Fl_Text_Editor.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-Fl_Text_Editor.o: ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Text_Editor.o: ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H
-Fl_Text_Editor.o: ../FL/fl_draw.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-Fl_Text_Editor.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-Fl_Text_Editor.o: ../FL/Fl_Text_Buffer.H ../FL/fl_ask.H
-Fl_Tile.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Tile.H
-Fl_Tile.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Window.H
-Fl_Tiled_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Tiled_Image.o: ../FL/Fl_Tiled_Image.H ../FL/Fl_Image.H ../FL/fl_draw.H
-Fl_Tooltip.o: ../FL/Fl_Tooltip.H ../FL/Fl.H ../FL/Enumerations.H
-Fl_Tooltip.o: ../FL/Fl_Export.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Tooltip.o: ../FL/Fl_Menu_Window.H ../FL/Fl_Single_Window.H
-Fl_Tooltip.o: ../FL/Fl_Window.H
-Fl_Valuator.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Valuator.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/math.h flstring.h
-Fl_Valuator.o: ../FL/Fl_Export.H ../config.h
-Fl_Value_Input.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Value_Input.o: ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H
-Fl_Value_Input.o: ../FL/Fl_Widget.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fl_Value_Input.o: ../FL/Fl_Group.H ../FL/math.h
-Fl_Value_Output.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Value_Output.o: ../FL/Fl_Value_Output.H ../FL/Fl_Valuator.H
-Fl_Value_Output.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Value_Slider.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Value_Slider.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
-Fl_Value_Slider.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Widget.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Widget.o: ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Tooltip.H
-Fl_Widget.o: ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Window.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Window.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H flstring.h
-Fl_Window.o: ../FL/Fl_Export.H ../config.h
-Fl_Window_fullscreen.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Window_fullscreen.o: ../FL/x.H ../FL/Fl_Window.H
-Fl_Window_hotspot.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Window_hotspot.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-Fl_Window_hotspot.o: ../FL/x.H ../FL/Fl_Window.H
-Fl_Window_iconize.o: ../FL/x.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Window_iconize.o: ../FL/Fl_Window.H
-Fl_Wizard.o: ../FL/Fl_Wizard.H ../FL/Fl_Group.H ../FL/Fl_Window.H
-Fl_Wizard.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Enumerations.H
-Fl_Wizard.o: ../FL/Fl_Export.H ../FL/fl_draw.H
-Fl_XBM_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_XBM_Image.o: ../FL/Fl_XBM_Image.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H
-Fl_XBM_Image.o: flstring.h ../FL/Fl_Export.H ../config.h
-Fl_XPM_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_XPM_Image.o: ../FL/Fl_XPM_Image.H ../FL/Fl_Pixmap.H ../FL/Fl_Image.H
-Fl_XPM_Image.o: flstring.h ../FL/Fl_Export.H ../config.h
-Fl_abort.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H flstring.h
-Fl_abort.o: ../FL/Fl_Export.H ../config.h
-Fl_add_idle.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_arg.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-Fl_arg.o: ../FL/Fl_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-Fl_arg.o: ../FL/Fl_Widget.H ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H
-Fl_arg.o: ../FL/filename.H ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H
-Fl_arg.o: ../config.h
-Fl_compose.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_display.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H flstring.h
-Fl_display.o: ../FL/Fl_Export.H ../config.h
-Fl_get_key.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-Fl_get_key.o: ../FL/Fl_Window.H
-Fl_get_system_colors.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_get_system_colors.o: ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H
-Fl_get_system_colors.o: ../FL/math.h flstring.h ../FL/Fl_Export.H ../config.h
-Fl_get_system_colors.o: ../FL/Fl_Pixmap.H ../FL/Fl_Image.H
-Fl_get_system_colors.o: ../FL/Fl_Tiled_Image.H tile.xpm
-Fl_grab.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_grab.o: ../FL/x.H ../FL/Fl_Window.H
-Fl_lock.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../config.h
-Fl_own_colormap.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H
-Fl_own_colormap.o: ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H
-Fl_visual.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_visual.o: ../FL/x.H ../FL/Fl_Window.H
-Fl_x.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-Fl_x.o: ../FL/Fl_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-Fl_x.o: ../FL/Fl_Widget.H flstring.h ../FL/Fl_Export.H ../config.h
-filename_absolute.o: ../FL/filename.H flstring.h ../FL/Fl_Export.H
-filename_absolute.o: ../config.h
-filename_expand.o: ../FL/filename.H flstring.h ../FL/Fl_Export.H ../config.h
-filename_ext.o: ../FL/filename.H
-filename_isdir.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/filename.H
-filename_list.o: ../FL/filename.H flstring.h ../FL/Fl_Export.H ../config.h
-filename_match.o: ../FL/filename.H
-filename_setext.o: ../FL/filename.H flstring.h ../FL/Fl_Export.H ../config.h
-fl_arc.o: ../FL/fl_draw.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/math.h
-fl_arci.o: ../FL/fl_draw.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-fl_arci.o: ../FL/Fl_Window.H
-fl_ask.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-fl_ask.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_ask.H
-fl_ask.o: ../FL/Fl_Box.H ../FL/Fl_Widget.H ../FL/Fl_Button.H
-fl_ask.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/Fl_Window.H
-fl_ask.o: ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-fl_ask.o: ../FL/Fl_Secret_Input.H ../FL/Fl_Input.H ../FL/x.H
-fl_ask.o: ../FL/Fl_Window.H ../FL/fl_draw.H
-fl_boxtype.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_boxtype.o: ../FL/Fl_Widget.H ../FL/fl_draw.H ../config.h
-fl_color.o: Fl_XColor.H ../config.h ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_color.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/x.H ../FL/Fl_Window.H
-fl_color.o: ../FL/fl_draw.H fl_cmap.h
-fl_cursor.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_cursor.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/x.H
-fl_cursor.o: ../FL/Fl_Window.H ../FL/fl_draw.H
-fl_curve.o: ../FL/fl_draw.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_diamond_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_diamond_box.o: ../FL/fl_draw.H
-fl_dnd.o: fl_dnd_x.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_dnd.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/x.H
-fl_dnd.o: ../FL/Fl_Window.H
-fl_draw.o: ../FL/fl_draw.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_draw.o: ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
-fl_draw_image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_draw_image.o: ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H Fl_XColor.H
-fl_draw_image.o: ../config.h ../FL/Enumerations.H flstring.h
-fl_draw_image.o: ../FL/Fl_Export.H
-fl_draw_pixmap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_draw_pixmap.o: ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H flstring.h
-fl_draw_pixmap.o: ../FL/Fl_Export.H ../config.h
-fl_engraved_label.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_engraved_label.o: ../FL/Fl_Widget.H ../FL/fl_draw.H
-fl_file_dir.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/filename.H
-fl_file_dir.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Enumerations.H
-fl_file_dir.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-fl_file_dir.o: ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
-fl_file_dir.o: ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H
-fl_file_dir.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H
-fl_file_dir.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_Group.H
-fl_file_dir.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-fl_file_dir.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-fl_file_dir.o: ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H
-fl_file_dir.o: ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
-fl_file_dir.o: ../FL/Fl_Button.H ../FL/Fl_File_Input.H ../FL/Fl_Input.H
-fl_file_dir.o: ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H ../FL/fl_ask.H
-fl_font.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-fl_font.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/x.H
-fl_font.o: ../FL/Fl_Window.H Fl_Font.H fl_font_x.cxx
-fl_labeltype.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_labeltype.o: ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/fl_draw.H
-fl_labeltype.o: ../FL/Fl_Image.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H
-fl_line_style.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_line_style.o: ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H flstring.h
-fl_line_style.o: ../FL/Fl_Export.H ../config.h
-fl_oval_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_oval_box.o: ../FL/fl_draw.H
-fl_overlay.o: ../FL/x.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_overlay.o: ../FL/Fl_Window.H ../FL/fl_draw.H
-fl_overlay_visual.o: ../config.h
-fl_plastic.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_plastic.o: ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
-fl_read_image.o: ../FL/x.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_read_image.o: ../FL/Fl_Window.H ../FL/fl_draw.H flstring.h
-fl_read_image.o: ../FL/Fl_Export.H ../config.h
-fl_rect.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_rect.o: ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H
-fl_round_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_round_box.o: ../FL/fl_draw.H
-fl_rounded_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_rounded_box.o: ../FL/fl_draw.H
-fl_set_font.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-fl_set_font.o: ../FL/Fl_Window.H flstring.h ../FL/Fl_Export.H ../config.h
-fl_set_font.o: Fl_Font.H
-fl_set_fonts.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-fl_set_fonts.o: ../FL/Fl_Window.H Fl_Font.H ../config.h flstring.h
-fl_set_fonts.o: ../FL/Fl_Export.H fl_set_fonts_x.cxx
-fl_scroll_area.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H
-fl_scroll_area.o: ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H
-fl_shadow_box.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_shadow_box.o: ../FL/fl_draw.H
-fl_shortcut.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_shortcut.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Widget.H
-fl_shortcut.o: ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
-fl_shortcut.o: ../FL/x.H ../FL/Fl_Window.H
-fl_show_colormap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_show_colormap.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H
-fl_show_colormap.o: ../FL/fl_draw.H ../FL/fl_show_colormap.H ../config.h
-fl_symbols.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fl_symbols.o: ../FL/fl_draw.H ../FL/math.h flstring.h ../FL/Fl_Export.H
-fl_symbols.o: ../config.h
-fl_vertex.o: ../config.h ../FL/fl_draw.H ../FL/Enumerations.H
-fl_vertex.o: ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl.H
-fl_vertex.o: ../FL/math.h
-screen_xywh.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-screen_xywh.o: ../FL/Fl_Window.H ../config.h
-forms_compatability.o: ../FL/forms.H ../FL/Fl.H ../FL/Enumerations.H
-forms_compatability.o: ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-forms_compatability.o: ../FL/Fl_Window.H ../FL/fl_draw.H
-forms_compatability.o: ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H
-forms_compatability.o: ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H
-forms_compatability.o: ../FL/Fl_Pixmap.H ../FL/Fl_Box.H ../FL/Fl_Browser.H
-forms_compatability.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H
-forms_compatability.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-forms_compatability.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
-forms_compatability.o: ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H
-forms_compatability.o: ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
-forms_compatability.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H
-forms_compatability.o: ../FL/Fl_Counter.H ../FL/Fl_Dial.H ../FL/Fl_Free.H
-forms_compatability.o: ../FL/fl_ask.H ../FL/fl_show_colormap.H
-forms_compatability.o: ../FL/filename.H ../FL/Fl_File_Chooser.H ../FL/Fl.H
-forms_compatability.o: ../FL/Fl_Double_Window.H ../FL/Fl_Group.H
-forms_compatability.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-forms_compatability.o: ../FL/Fl_Button.H ../FL/Fl_Preferences.H
-forms_compatability.o: ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H
-forms_compatability.o: ../FL/Fl_File_Icon.H ../FL/Fl_Box.H
-forms_compatability.o: ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H
-forms_compatability.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H
-forms_compatability.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H
-forms_compatability.o: ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H
-forms_compatability.o: ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H
-forms_compatability.o: ../FL/Fl_Timer.H ../FL/Fl_Repeat_Button.H
-forms_bitmap.o: ../FL/forms.H ../FL/Fl.H ../FL/Enumerations.H
-forms_bitmap.o: ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-forms_bitmap.o: ../FL/Fl_Window.H ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H
-forms_bitmap.o: ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H
-forms_bitmap.o: ../FL/Fl_Pixmap.H ../FL/Fl_Box.H ../FL/Fl_Browser.H
-forms_bitmap.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-forms_bitmap.o: ../FL/Fl_Valuator.H ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
-forms_bitmap.o: ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H
-forms_bitmap.o: ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
-forms_bitmap.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H
-forms_bitmap.o: ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H
-forms_bitmap.o: ../FL/fl_show_colormap.H ../FL/filename.H
-forms_bitmap.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Fl_Double_Window.H
-forms_bitmap.o: ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-forms_bitmap.o: ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-forms_bitmap.o: ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H ../FL/Fl_Box.H
-forms_bitmap.o: ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H
-forms_bitmap.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H
-forms_bitmap.o: ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H
-forms_bitmap.o: ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H
-forms_bitmap.o: ../FL/Fl_Timer.H
-forms_free.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-forms_free.o: ../FL/Fl_Free.H ../FL/Fl_Widget.H
-forms_fselect.o: ../FL/forms.H ../FL/Fl.H ../FL/Enumerations.H
-forms_fselect.o: ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-forms_fselect.o: ../FL/Fl_Window.H ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H
-forms_fselect.o: ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H
-forms_fselect.o: ../FL/Fl_Pixmap.H ../FL/Fl_Box.H ../FL/Fl_Browser.H
-forms_fselect.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-forms_fselect.o: ../FL/Fl_Valuator.H ../FL/Fl_Button.H
-forms_fselect.o: ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H
-forms_fselect.o: ../FL/Fl_Check_Button.H ../FL/Fl_Chart.H ../FL/Fl_Choice.H
-forms_fselect.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H
-forms_fselect.o: ../FL/Fl_Counter.H ../FL/Fl_Dial.H ../FL/Fl_Free.H
-forms_fselect.o: ../FL/fl_ask.H ../FL/fl_show_colormap.H ../FL/filename.H
-forms_fselect.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Fl_Double_Window.H
-forms_fselect.o: ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-forms_fselect.o: ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-forms_fselect.o: ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H ../FL/Fl_Box.H
-forms_fselect.o: ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H
-forms_fselect.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H
-forms_fselect.o: ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H
-forms_fselect.o: ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H
-forms_fselect.o: ../FL/Fl_Timer.H flstring.h ../FL/Fl_Export.H ../config.h
-forms_pixmap.o: ../FL/forms.H ../FL/Fl.H ../FL/Enumerations.H
-forms_pixmap.o: ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-forms_pixmap.o: ../FL/Fl_Window.H ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H
-forms_pixmap.o: ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H
-forms_pixmap.o: ../FL/Fl_Pixmap.H ../FL/Fl_Box.H ../FL/Fl_Browser.H
-forms_pixmap.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-forms_pixmap.o: ../FL/Fl_Valuator.H ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
-forms_pixmap.o: ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H
-forms_pixmap.o: ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
-forms_pixmap.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H
-forms_pixmap.o: ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H
-forms_pixmap.o: ../FL/fl_show_colormap.H ../FL/filename.H
-forms_pixmap.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Fl_Double_Window.H
-forms_pixmap.o: ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-forms_pixmap.o: ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-forms_pixmap.o: ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H ../FL/Fl_Box.H
-forms_pixmap.o: ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H
-forms_pixmap.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H
-forms_pixmap.o: ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H
-forms_pixmap.o: ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H
-forms_pixmap.o: ../FL/Fl_Timer.H
-forms_timer.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-forms_timer.o: ../FL/Fl_Timer.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-Fl_Gl_Choice.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_Gl_Choice.o: ../FL/x.H ../FL/Fl_Window.H Fl_Gl_Choice.H ../FL/gl_draw.H
-Fl_Gl_Choice.o: ../FL/gl.h flstring.h ../FL/Fl_Export.H
-Fl_Gl_Overlay.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H
-Fl_Gl_Overlay.o: ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H Fl_Gl_Choice.H
-Fl_Gl_Overlay.o: ../FL/Fl_Gl_Window.H
-Fl_Gl_Window.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-Fl_Gl_Window.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-Fl_Gl_Window.o: ../FL/Fl_Window.H Fl_Gl_Choice.H ../FL/Fl_Gl_Window.H
-gl_draw.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H
-gl_draw.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/gl.h ../FL/x.H
-gl_draw.o: ../FL/Fl_Window.H ../FL/fl_draw.H Fl_Gl_Choice.H Fl_Font.H
-gl_start.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-gl_start.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/x.H
-gl_start.o: ../FL/Fl_Window.H ../FL/fl_draw.H Fl_Gl_Choice.H
-glut_compatability.o: ../config.h ../FL/glut.H ../FL/gl.h
-glut_compatability.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H
-glut_compatability.o: ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
-glut_compatability.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-glut_font.o: ../config.h ../FL/glut.H ../FL/gl.h ../FL/Enumerations.H
-glut_font.o: ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H
-glut_font.o: ../FL/Fl_Window.H ../FL/gl.h
-fl_images_core.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-fl_images_core.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_BMP_Image.H
-fl_images_core.o: ../FL/Fl_GIF_Image.H ../FL/Fl_Pixmap.H
-fl_images_core.o: ../FL/Fl_JPEG_Image.H ../FL/Fl_PNG_Image.H
-fl_images_core.o: ../FL/Fl_PNM_Image.H flstring.h ../FL/Fl_Export.H
-fl_images_core.o: ../config.h
-Fl_BMP_Image.o: ../FL/Fl_BMP_Image.H ../FL/Fl_Image.H ../FL/Enumerations.H
-Fl_BMP_Image.o: ../FL/Fl_Export.H ../config.h
-Fl_File_Icon2.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/math.h
-Fl_File_Icon2.o: ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/Enumerations.H
-Fl_File_Icon2.o: ../FL/Fl_Export.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-Fl_File_Icon2.o: ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/filename.H
-Fl_GIF_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_GIF_Image.o: ../FL/Fl_GIF_Image.H ../FL/Fl_Pixmap.H ../FL/Fl_Image.H
-Fl_GIF_Image.o: flstring.h ../FL/Fl_Export.H ../config.h
-Fl_Help_Dialog.o: ../FL/Fl_Help_Dialog.H ../FL/Fl.H ../FL/Enumerations.H
-Fl_Help_Dialog.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H
-Fl_Help_Dialog.o: ../FL/Fl_Window.H ../FL/Fl_Help_View.H ../FL/Fl.H
-Fl_Help_Dialog.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-Fl_Help_Dialog.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
-Fl_Help_Dialog.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/Fl_Group.H
-Fl_Help_Dialog.o: ../FL/Fl_Button.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fl_Help_Dialog.o: flstring.h ../FL/Fl_Export.H ../config.h ../FL/fl_ask.H
-Fl_JPEG_Image.o: ../FL/Fl_JPEG_Image.H ../FL/Fl_Image.H ../FL/Enumerations.H
-Fl_JPEG_Image.o: ../FL/Fl_Export.H ../config.h
-Fl_PNG_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_PNG_Image.o: ../FL/Fl_PNG_Image.H ../FL/Fl_Image.H ../config.h
-Fl_PNM_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-Fl_PNM_Image.o: ../FL/Fl_PNM_Image.H ../FL/Fl_Image.H flstring.h
-Fl_PNM_Image.o: ../FL/Fl_Export.H ../config.h
-flstring.o: flstring.h ../FL/Fl_Export.H ../config.h
-scandir.o: flstring.h ../FL/Fl_Export.H ../config.h
-numericsort.o: ../config.h ../FL/filename.H
-vsnprintf.o: flstring.h ../FL/Fl_Export.H ../config.h
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Fl.o: Fl.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/x.H \
+ ../FL/Fl_Window.H ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H flstring.h \
+ ../FL/Fl_Export.H ../config.h ../FL/fl_draw.H
+Fl_Adjuster.o: Fl_Adjuster.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Adjuster.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/fl_draw.H \
+ fastarrow.h mediumarrow.h slowarrow.h
+Fl_Bitmap.o: Fl_Bitmap.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Bitmap.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Browser.o: Fl_Browser.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Browser_.o: Fl_Browser_.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Widget.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Group.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/fl_draw.H
+Fl_Browser_load.o: Fl_Browser_load.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
+Fl_Box.o: Fl_Box.cxx ../FL/Fl_Widget.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Box.H
+Fl_Button.o: Fl_Button.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Button.H ../FL/Fl_Widget.H ../FL/Fl_Group.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H
+Fl_Chart.o: Fl_Chart.cxx ../FL/math.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Chart.H ../FL/Fl_Widget.H ../FL/fl_draw.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Check_Browser.o: Fl_Check_Browser.cxx flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/fl_draw.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Check_Browser.H ../FL/Fl.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
+Fl_Check_Button.o: Fl_Check_Button.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Widget.H
+Fl_Choice.o: Fl_Choice.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Clock.o: Fl_Clock.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Clock.H ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Color_Chooser.o: Fl_Color_Chooser.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Color_Chooser.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Value_Input.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H \
+ ../FL/math.h ../FL/Fl_Window.H ../FL/Fl_Group.H
+Fl_Counter.o: Fl_Counter.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Counter.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Dial.o: Fl_Dial.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/fl_draw.H \
+ ../FL/math.h
+Fl_Double_Window.o: Fl_Double_Window.cxx ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/x.H \
+ ../FL/fl_draw.H
+Fl_File_Browser.o: Fl_File_Browser.cxx ../FL/Fl_File_Browser.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H ../FL/fl_draw.H \
+ ../FL/filename.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_File_Chooser.o: Fl_File_Chooser.cxx ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H \
+ ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H \
+ ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/fl_draw.H ../FL/Fl_Bitmap.H
+Fl_File_Chooser2.o: Fl_File_Chooser2.cxx ../FL/Fl_File_Chooser.H \
+ ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H \
+ ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H ../FL/Fl_Box.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/filename.H ../FL/x.H \
+ ../FL/Fl_Shared_Image.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_File_Icon.o: Fl_File_Icon.cxx flstring.h ../FL/Fl_Export.H ../config.h \
+ ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/filename.H
+Fl_File_Input.o: Fl_File_Input.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_File_Input.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Group.o: Fl_Group.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/fl_draw.H
+Fl_Help_View.o: Fl_Help_View.cxx ../FL/Fl_Help_View.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/fl_draw.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Image.H ../FL/Fl_Window.H ../FL/Fl_Pixmap.H ../FL/x.H \
+ ../FL/Fl_Window.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Image.o: Fl_Image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Image.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Input.o: Fl_Input.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H ../FL/fl_ask.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Input_.o: Fl_Input_.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/fl_draw.H ../FL/fl_ask.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Light_Button.o: Fl_Light_Button.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H \
+ ../config.h
+Fl_Menu.o: Fl_Menu.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Menu_Window.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Menu_.o: Fl_Menu_.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Menu_.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H \
+ ../config.h
+Fl_Menu_Bar.o: Fl_Menu_Bar.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
+Fl_Sys_Menu_Bar.o: Fl_Sys_Menu_Bar.cxx
+Fl_Menu_Button.o: Fl_Menu_Button.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
+Fl_Menu_Window.o: Fl_Menu_Window.cxx ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H \
+ ../FL/Fl_Menu_Window.H ../FL/Fl_Single_Window.H
+Fl_Menu_add.o: Fl_Menu_add.cxx ../FL/Fl_Menu_.H ../FL/Fl_Widget.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Menu_global.o: Fl_Menu_global.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Menu_.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H
+Fl_Multi_Label.o: Fl_Multi_Label.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Image.H ../FL/Fl_Multi_Label.H
+Fl_Overlay_Window.o: Fl_Overlay_Window.cxx ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Overlay_Window.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/x.H
+Fl_Pack.o: Fl_Pack.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Pixmap.o: Fl_Pixmap.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Pixmap.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Positioner.o: Fl_Positioner.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Positioner.H ../FL/Fl_Widget.H \
+ ../FL/fl_draw.H
+Fl_Preferences.o: Fl_Preferences.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Preferences.H ../FL/filename.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Progress.o: Fl_Progress.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Progress.H ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Repeat_Button.o: Fl_Repeat_Button.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H ../FL/Fl_Button.H \
+ ../FL/Fl_Widget.H
+Fl_Return_Button.o: Fl_Return_Button.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Return_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Roller.o: Fl_Roller.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Roller.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Round_Button.o: Fl_Round_Button.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Round_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Widget.H
+Fl_Scroll.o: Fl_Scroll.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Tiled_Image.H ../FL/Fl_Image.H \
+ ../FL/Fl_Scroll.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/fl_draw.H
+Fl_Scrollbar.o: Fl_Scrollbar.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/fl_draw.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+Fl_Shared_Image.o: Fl_Shared_Image.cxx flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/Fl_XBM_Image.H \
+ ../FL/Fl_Bitmap.H ../FL/Fl_XPM_Image.H ../FL/Fl_Pixmap.H
+Fl_Single_Window.o: Fl_Single_Window.cxx ../FL/Fl_Single_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H
+Fl_Slider.o: Fl_Slider.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H \
+ ../config.h
+Fl_Tabs.o: Fl_Tabs.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H \
+ ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H
+Fl_Text_Buffer.o: Fl_Text_Buffer.cxx flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Text_Buffer.H
+Fl_Text_Display.o: Fl_Text_Display.cxx flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Text_Buffer.H \
+ ../FL/Fl_Window.H
+Fl_Text_Editor.o: Fl_Text_Editor.cxx flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Text_Buffer.H ../FL/fl_ask.H
+Fl_Tile.o: Fl_Tile.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Tile.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Window.H
+Fl_Tiled_Image.o: Fl_Tiled_Image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Tiled_Image.H ../FL/Fl_Image.H \
+ ../FL/fl_draw.H
+Fl_Tooltip.o: Fl_Tooltip.cxx ../FL/Fl_Tooltip.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Widget.H \
+ ../FL/fl_draw.H ../FL/Fl_Menu_Window.H ../FL/Fl_Single_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H
+Fl_Valuator.o: Fl_Valuator.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/math.h \
+ flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Value_Input.o: Fl_Value_Input.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Group.H \
+ ../FL/math.h
+Fl_Value_Output.o: Fl_Value_Output.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Value_Output.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Value_Slider.o: Fl_Value_Slider.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Widget.o: Fl_Widget.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Tooltip.H \
+ ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Window.o: Fl_Window.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Window_fullscreen.o: Fl_Window_fullscreen.cxx ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H
+Fl_Window_hotspot.o: Fl_Window_hotspot.cxx ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/x.H ../FL/Fl_Window.H
+Fl_Window_iconize.o: Fl_Window_iconize.cxx ../FL/x.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
+Fl_Wizard.o: Fl_Wizard.cxx ../FL/Fl_Wizard.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/fl_draw.H
+Fl_XBM_Image.o: Fl_XBM_Image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_XBM_Image.H ../FL/Fl_Bitmap.H \
+ ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_XPM_Image.o: Fl_XPM_Image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_XPM_Image.H ../FL/Fl_Pixmap.H \
+ ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_abort.o: Fl_abort.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_add_idle.o: Fl_add_idle.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H
+Fl_arg.o: Fl_arg.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Window.H ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H ../FL/filename.H \
+ ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_compose.o: Fl_compose.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H
+Fl_display.o: Fl_display.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_get_key.o: Fl_get_key.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H
+Fl_get_system_colors.o: Fl_get_system_colors.cxx ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/x.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/math.h \
+ flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl_Pixmap.H \
+ ../FL/Fl_Image.H ../FL/Fl_Tiled_Image.H tile.xpm
+Fl_grab.o: Fl_grab.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H
+Fl_lock.o: Fl_lock.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../config.h
+Fl_own_colormap.o: Fl_own_colormap.cxx ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H
+Fl_visual.o: Fl_visual.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H
+Fl_x.o: Fl_x.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Window.H ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+filename_absolute.o: filename_absolute.cxx ../FL/filename.H \
+ ../FL/Fl_Export.H flstring.h ../FL/Fl_Export.H ../config.h
+filename_expand.o: filename_expand.cxx ../FL/filename.H ../FL/Fl_Export.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+filename_ext.o: filename_ext.cxx ../FL/filename.H ../FL/Fl_Export.H
+filename_isdir.o: filename_isdir.cxx flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/filename.H ../FL/Fl_Export.H
+filename_list.o: filename_list.cxx ../FL/filename.H ../FL/Fl_Export.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+filename_match.o: filename_match.cxx ../FL/filename.H ../FL/Fl_Export.H
+filename_setext.o: filename_setext.cxx ../FL/filename.H ../FL/Fl_Export.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+fl_arc.o: fl_arc.cxx ../FL/fl_draw.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/math.h
+fl_arci.o: fl_arci.cxx ../FL/fl_draw.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H
+fl_ask.o: fl_ask.cxx flstring.h ../FL/Fl_Export.H ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_ask.H ../FL/Fl_Box.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Secret_Input.H ../FL/Fl_Input.H ../FL/x.H \
+ ../FL/Fl_Window.H ../FL/fl_draw.H
+fl_boxtype.o: fl_boxtype.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Widget.H ../FL/fl_draw.H ../config.h
+fl_color.o: fl_color.cxx Fl_XColor.H ../config.h ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl.H ../FL/Enumerations.H ../FL/x.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H \
+ fl_cmap.h
+fl_cursor.o: fl_cursor.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/x.H ../FL/Fl_Window.H ../FL/fl_draw.H
+fl_curve.o: fl_curve.cxx ../FL/fl_draw.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H
+fl_diamond_box.o: fl_diamond_box.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H
+fl_dnd.o: fl_dnd.cxx fl_dnd_x.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/x.H ../FL/Fl_Window.H flstring.h ../FL/Fl_Export.H ../config.h
+fl_draw.o: fl_draw.cxx ../FL/fl_draw.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H \
+ ../config.h
+fl_draw_image.o: fl_draw_image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H Fl_XColor.H ../config.h \
+ ../FL/Enumerations.H flstring.h ../FL/Fl_Export.H
+fl_draw_pixmap.o: fl_draw_pixmap.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H flstring.h ../FL/Fl_Export.H \
+ ../config.h
+fl_encoding_latin1.o: fl_encoding_latin1.cxx ../FL/fl_draw.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Enumerations.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+fl_encoding_mac_roman.o: fl_encoding_mac_roman.cxx ../FL/fl_draw.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Enumerations.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+fl_engraved_label.o: fl_engraved_label.cxx ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Widget.H \
+ ../FL/fl_draw.H
+fl_file_dir.o: fl_file_dir.cxx flstring.h ../FL/Fl_Export.H ../config.h \
+ ../FL/filename.H ../FL/Fl_Export.H ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H \
+ ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_File_Input.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H ../FL/fl_ask.H
+fl_font.o: fl_font.cxx flstring.h ../FL/Fl_Export.H ../config.h \
+ ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/fl_draw.H \
+ ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ Fl_Font.H fl_font_xft.cxx
+fl_gtk.o: fl_gtk.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/fl_draw.H
+fl_labeltype.o: fl_labeltype.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/fl_draw.H \
+ ../FL/Fl_Image.H ../FL/Fl_Input_.H
+fl_line_style.o: fl_line_style.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H flstring.h ../FL/Fl_Export.H \
+ ../config.h
+fl_open_uri.o: fl_open_uri.cxx ../FL/filename.H ../FL/Fl_Export.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+fl_oval_box.o: fl_oval_box.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H
+fl_overlay.o: fl_overlay.cxx ../FL/x.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/fl_draw.H
+fl_overlay_visual.o: fl_overlay_visual.cxx ../config.h
+fl_plastic.o: fl_plastic.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H \
+ ../config.h
+fl_read_image.o: fl_read_image.cxx ../FL/x.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H ../config.h
+fl_rect.o: fl_rect.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/x.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H
+fl_round_box.o: fl_round_box.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H
+fl_rounded_box.o: fl_rounded_box.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H
+fl_set_font.o: fl_set_font.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/fl_draw.H flstring.h ../FL/Fl_Export.H \
+ ../config.h Fl_Font.H
+fl_set_fonts.o: fl_set_fonts.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H Fl_Font.H ../config.h flstring.h ../FL/Fl_Export.H \
+ fl_set_fonts_xft.cxx
+fl_scroll_area.o: fl_scroll_area.cxx ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H
+fl_shadow_box.o: fl_shadow_box.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H
+fl_shortcut.o: fl_shortcut.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/fl_draw.H \
+ flstring.h ../FL/Fl_Export.H ../config.h ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H
+fl_show_colormap.o: fl_show_colormap.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H \
+ ../FL/fl_show_colormap.H ../config.h
+fl_symbols.o: fl_symbols.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/fl_draw.H ../FL/math.h flstring.h \
+ ../FL/Fl_Export.H ../config.h
+fl_vertex.o: fl_vertex.cxx ../config.h ../FL/fl_draw.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl.H ../FL/math.h
+screen_xywh.o: screen_xywh.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../config.h
+forms_compatability.o: forms_compatability.cxx ../FL/forms.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/fl_draw.H \
+ ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H ../FL/Fl_Box.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H ../FL/fl_show_colormap.H \
+ ../FL/filename.H ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H \
+ ../FL/Fl_Repeat_Button.H
+forms_bitmap.o: forms_bitmap.cxx ../FL/forms.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/fl_draw.H \
+ ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H ../FL/Fl_Box.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H ../FL/fl_show_colormap.H \
+ ../FL/filename.H ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H
+forms_free.o: forms_free.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Free.H ../FL/Fl_Widget.H
+forms_fselect.o: forms_fselect.cxx ../FL/forms.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/fl_draw.H \
+ ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H ../FL/Fl_Box.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H ../FL/fl_show_colormap.H \
+ ../FL/filename.H ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+forms_pixmap.o: forms_pixmap.cxx ../FL/forms.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/fl_draw.H \
+ ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H ../FL/Fl_Box.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H ../FL/fl_show_colormap.H \
+ ../FL/filename.H ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H
+forms_timer.o: forms_timer.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Timer.H ../FL/Fl_Widget.H ../FL/fl_draw.H
+Fl_Gl_Choice.o: Fl_Gl_Choice.cxx ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H Fl_Gl_Choice.H ../FL/gl_draw.H \
+ ../FL/gl.h flstring.h ../FL/Fl_Export.H
+Fl_Gl_Overlay.o: Fl_Gl_Overlay.cxx ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H Fl_Gl_Choice.H ../FL/Fl_Gl_Window.H
+Fl_Gl_Window.o: Fl_Gl_Window.cxx flstring.h ../FL/Fl_Export.H ../config.h \
+ ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H Fl_Gl_Choice.H \
+ ../FL/Fl_Gl_Window.H
+freeglut_geometry.o: freeglut_geometry.cxx ../FL/glut.H ../FL/gl.h \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/math.h
+freeglut_stroke_mono_roman.o: freeglut_stroke_mono_roman.cxx ../FL/glut.H \
+ ../FL/gl.h ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H \
+ ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H
+freeglut_stroke_roman.o: freeglut_stroke_roman.cxx ../FL/glut.H \
+ ../FL/gl.h ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H \
+ ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H
+freeglut_teapot.o: freeglut_teapot.cxx ../FL/glut.H ../FL/gl.h \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ freeglut_teapot_data.h
+gl_draw.o: gl_draw.cxx flstring.h ../FL/Fl_Export.H ../config.h \
+ ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/gl.h ../FL/x.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_draw.H \
+ Fl_Gl_Choice.H Fl_Font.H
+gl_start.o: gl_start.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/x.H ../FL/Fl_Window.H ../FL/fl_draw.H Fl_Gl_Choice.H
+glut_compatability.o: glut_compatability.cxx flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/glut.H ../FL/gl.h ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H
+glut_font.o: glut_font.cxx ../config.h ../FL/glut.H ../FL/gl.h \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
+fl_images_core.o: fl_images_core.cxx ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Image.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_BMP_Image.H ../FL/Fl_GIF_Image.H ../FL/Fl_Pixmap.H \
+ ../FL/Fl_JPEG_Image.H ../FL/Fl_PNG_Image.H ../FL/Fl_PNM_Image.H \
+ flstring.h ../FL/Fl_Export.H ../config.h
+Fl_BMP_Image.o: Fl_BMP_Image.cxx ../FL/Fl_BMP_Image.H ../FL/Fl_Image.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../config.h
+Fl_File_Icon2.o: Fl_File_Icon2.cxx flstring.h ../FL/Fl_Export.H \
+ ../config.h ../FL/math.h ../FL/Fl_File_Icon.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Image.H ../FL/Fl_Widget.H ../FL/fl_draw.H ../FL/filename.H
+Fl_GIF_Image.o: Fl_GIF_Image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_GIF_Image.H ../FL/Fl_Pixmap.H \
+ ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h
+Fl_Help_Dialog.o: Fl_Help_Dialog.cxx ../FL/Fl_Help_Dialog.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H \
+ ../FL/Fl_Button.H ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Box.H \
+ ../FL/Fl_Help_View.H ../FL/Fl.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/fl_draw.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Image.H flstring.h ../FL/Fl_Export.H ../config.h \
+ ../FL/fl_ask.H
+Fl_JPEG_Image.o: Fl_JPEG_Image.cxx ../FL/Fl_JPEG_Image.H ../FL/Fl_Image.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../config.h
+Fl_PNG_Image.o: Fl_PNG_Image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_PNG_Image.H ../FL/Fl_Image.H ../config.h
+Fl_PNM_Image.o: Fl_PNM_Image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_PNM_Image.H ../FL/Fl_Image.H flstring.h \
+ ../FL/Fl_Export.H ../config.h
+fl_call_main.o: fl_call_main.c
+flstring.o: flstring.c flstring.h ../FL/Fl_Export.H ../config.h
+scandir.o: scandir.c flstring.h ../FL/Fl_Export.H ../config.h
+numericsort.o: numericsort.c ../config.h ../FL/filename.H \
+ ../FL/Fl_Export.H
+vsnprintf.o: vsnprintf.c flstring.h ../FL/Fl_Export.H ../config.h
diff --git a/src/makefile.wat b/src/makefile.wat
index 6266889..4f347dc 100644
--- a/src/makefile.wat
+++ b/src/makefile.wat
@@ -1,5 +1,5 @@
#
-# "$Id: makefile.wat 4359 2005-05-19 16:07:13Z mike $"
+# "$Id: makefile.wat 5699 2007-02-20 17:02:41Z matt $"
#
# Library makefile for the Fast Light Tool Kit (FLTK).
#
@@ -126,11 +126,15 @@ CPPFILES = &
fl_draw.obj &
fl_draw_image.obj &
fl_draw_pixmap.obj &
+ fl_encoding_latin1.obj &
+ fl_encoding_mac_roman.obj &
fl_engraved_label.obj &
fl_file_dir.obj &
fl_font.obj &
+ fl_gtk.obj &
fl_labeltype.obj &
fl_line_style.obj &
+ fl_open_uri.obj &
fl_oval_box.obj &
fl_overlay.obj &
fl_overlay_visual.obj &
@@ -146,7 +150,8 @@ CPPFILES = &
fl_shortcut.obj &
fl_show_colormap.obj &
fl_symbols.obj &
- fl_vertex.obj
+ fl_vertex.obj &
+ screen_xywh.obj
FLCPPFILES = &
forms_compatability.obj &
@@ -160,6 +165,10 @@ GLCPPFILES = &
Fl_Gl_Choice.obj &
Fl_Gl_Overlay.obj &
Fl_Gl_Window.obj &
+ freeglut_geometry.obj &
+ freeglut_stroke_mono_roman.obj &
+ freeglut_stroke_roman.obj &
+ freeglut_teapot.obj &
gl_draw.obj &
gl_start.obj &
glut_compatability.obj &
diff --git a/src/screen_xywh.cxx b/src/screen_xywh.cxx
index f8ca769..0003754 100644
--- a/src/screen_xywh.cxx
+++ b/src/screen_xywh.cxx
@@ -1,5 +1,5 @@
//
-// "$Id$"
+// "$Id: screen_xywh.cxx 5574 2007-01-01 18:29:20Z matt $"
//
// Screen/monitor bounding box API for the Fast Light Tool Kit (FLTK).
//
@@ -40,26 +40,35 @@ static int num_screens = 0;
# include <multimon.h>
# endif // !HMONITOR_DECLARED && _WIN32_WINNT < 0x0500
+// We go the much more difficult route of individually picking some multi-screen
+// functions from the USER32.DLL . If these functions are not available, we
+// will gracefully fall back to single monitor support.
+//
+// If we were to insist on the existence of "EnumDisplayMonitors" and
+// "GetMonitorInfoA", it would be impossible to use FLTK on Windows 2000
+// before SP2 or earlier.
+
// BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM)
-typedef BOOL (*fl_edm_func)(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
+typedef BOOL (WINAPI* fl_edm_func)(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
// BOOL GetMonitorInfo(HMONITOR, LPMONITORINFO)
-typedef BOOL (*fl_gmi_func)(HMONITOR, LPMONITORINFO);
+typedef BOOL (WINAPI* fl_gmi_func)(HMONITOR, LPMONITORINFO);
static fl_gmi_func fl_gmi = NULL; // used to get a proc pointer for GetMonitorInfoA
static RECT screens[16];
-static BOOL CALLBACK screen_cb(HMONITOR mon, HDC, LPRECT, LPARAM) {
+static BOOL CALLBACK screen_cb(HMONITOR mon, HDC, LPRECT r, LPARAM) {
if (num_screens >= 16) return TRUE;
MONITORINFO mi;
mi.cbSize = sizeof(mi);
// GetMonitorInfo(mon, &mi);
- fl_gmi(mon, &mi);
-
- screens[num_screens] = mi.rcWork;
- num_screens ++;
+// (but we use our self-aquired function pointer instead)
+ if (fl_gmi(mon, &mi)) {
+ screens[num_screens] = mi.rcWork;
+ num_screens ++;
+ }
return TRUE;
}
@@ -84,6 +93,7 @@ static void screen_init() {
// We have GetMonitorInfoA, enumerate all the screens...
num_screens = 0;
// EnumDisplayMonitors(0,0,screen_cb,0);
+// (but we use our self-aquired function pointer instead)
fl_edm(0, 0, screen_cb, 0);
return;
}
@@ -237,5 +247,5 @@ void Fl::screen_xywh(int &x, int &y, int &w, int &h, int n) {
//
-// End of "$Id$".
+// End of "$Id: screen_xywh.cxx 5574 2007-01-01 18:29:20Z matt $".
//
diff --git a/test/CubeMain.cxx b/test/CubeMain.cxx
index 9d6c583..a660c9a 100644
--- a/test/CubeMain.cxx
+++ b/test/CubeMain.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: CubeMain.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: CubeMain.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// CubeView class definitions for the Fast Light Tool Kit (FLTK).
//
@@ -45,5 +45,5 @@ main(int argc, char **argv) {
//
-// End of "$Id: CubeMain.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: CubeMain.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/CubeView.cxx b/test/CubeView.cxx
index c16dbb6..7032b0d 100644
--- a/test/CubeView.cxx
+++ b/test/CubeView.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: CubeView.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: CubeView.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// CubeView class implementation for the Fast Light Tool Kit (FLTK).
//
@@ -40,8 +40,8 @@ CubeView::CubeView(int x,int y,int w,int h,const char *l)
vAng = 0.0;
hAng=0.0;
size=10.0;
- xshift=0.0;
- yshift=0.0;
+ xshift=0.0;
+ yshift=0.0;
/* The cube definition. These are the vertices of a unit cube
* centered on the origin.*/
@@ -169,5 +169,5 @@ void CubeView::draw() {
#endif /* HAVE_GL */
//
-// End of "$Id: CubeView.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: CubeView.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/CubeView.h b/test/CubeView.h
index 3efb34f..b88bedd 100644
--- a/test/CubeView.h
+++ b/test/CubeView.h
@@ -1,5 +1,5 @@
//
-// "$Id: CubeView.h 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: CubeView.h 5519 2006-10-11 03:12:15Z mike $"
//
// CubeView class definitions for the Fast Light Tool Kit (FLTK).
//
@@ -120,5 +120,5 @@ private:
#endif
//
-// End of "$Id: CubeView.h 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: CubeView.h 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/CubeViewUI.fl b/test/CubeViewUI.fl
index b742e21..da8e196 100644
--- a/test/CubeViewUI.fl
+++ b/test/CubeViewUI.fl
@@ -1,5 +1,5 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0100
+version 1.0108
header_name {.h}
code_name {.cxx}
class CubeViewUI {open
@@ -7,7 +7,7 @@ class CubeViewUI {open
Function {CubeViewUI()} {open
} {
Fl_Window mainWindow {
- label CubeView open selected
+ label CubeView open
private xywh {428 124 415 405} type Double box UP_BOX labelsize 12 resizable visible
} {
Fl_Group {} {open
@@ -47,14 +47,14 @@ cube->redraw();}
}
}
Fl_Group MainView {open
- xywh {46 27 333 333}
+ xywh {46 27 333 333} resizable
} {
Fl_Box cframe {
xywh {46 27 333 333} box DOWN_FRAME color 4 selection_color 69
}
Fl_Box cube {
- label {This is the cube_view}
- xywh {48 29 329 329} align 16
+ label {This is the cube_view} selected
+ xywh {48 29 329 329} align 16 resizable
code0 {\#include "CubeView.h"}
class CubeView
}
diff --git a/test/Makefile b/test/Makefile
index 5bf7965..1d182c8 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 4756 2006-01-15 18:36:16Z mike $"
+# "$Id: Makefile 5792 2007-05-01 20:22:59Z matt $"
#
# Test/example program makefile for the Fast Light Tool Kit (FLTK).
#
-# Copyright 1998-2006 by Bill Spitzak and others.
+# Copyright 1998-2007 by Bill Spitzak and others.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -33,6 +33,7 @@ CPPFILES =\
arc.cxx \
ask.cxx \
bitmap.cxx \
+ blocks.cxx \
boxtype.cxx \
browser.cxx \
button.cxx \
@@ -99,6 +100,7 @@ ALL = \
arc$(EXEEXT) \
ask$(EXEEXT) \
bitmap$(EXEEXT) \
+ blocks$(EXEEXT) \
boxtype$(EXEEXT) \
browser$(EXEEXT) \
button$(EXEEXT) \
@@ -171,42 +173,59 @@ depend: $(CPPFILES)
include makedepend
clean:
- -$(RM) $(ALL) $(GLALL) core
- -$(RM) *.o core.* *~ *.bck *.bak
-
-install:
+ $(RM) $(ALL) $(GLALL) core
+ $(RM) *.o core.* *~ *.bck *.bak
+ $(RM) CubeViewUI.cxx
+ $(RM) fast_slow.cxx
+ $(RM) inactive.cxx
+ $(RM) keyboard_ui.cxx
+ $(RM) mandelbrot_ui.cxx
+ $(RM) preferences.cxx
+ $(RM) radio.cxx
+ $(RM) resize.cxx
+ $(RM) tabs.cxx
+ $(RM) valuators.cxx
+ $(RM) blocks.app/Contents/MacOS/blocks
+ $(RM) checkers.app/Contents/MacOS/checkers
+ $(RM) sudoku.app/Contents/MacOS/sudoku
+
+install: all
echo "Installing example programs to $(DESTDIR)$(docdir)/examples..."
- -$(MKDIR) $(DESTDIR)$(docdir)/examples
- $(CP) *.h *.cxx *.fl demo.menu *.xbm *.xpm $(DESTDIR)$(docdir)/examples
- $(CHMOD) 644 $(DESTDIR)$(docdir)/examples/*.*
+ -$(INSTALL_DIR) $(DESTDIR)$(docdir)/examples
+ for file in *.h *.cxx *.fl demo.menu; do \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/examples; \
+ done
+ -$(INSTALL_DIR) $(DESTDIR)$(docdir)/examples/pixmaps
+ for file in pixmaps/*.xbm pixmaps/*.xpm; do \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/examples/pixmaps; \
+ done
install-linux:
echo Installing games to $(DESTDIR)$(bindir)...
- -$(MKDIR) $(DESTDIR)$(bindir)
- -$(MKDIR) $(DESTDIR)/usr/share/applnk/Games
- -$(MKDIR) $(DESTDIR)/usr/share/icons/hicolor/32x32/apps
- -$(MKDIR) $(DESTDIR)/usr/share/icons/hicolor/128x128/apps
- for game in checkers sudoku; do \
- $(CP) $$game $(DESTDIR)$(bindir); \
- $(CHMOD) 755 $(DESTDIR)$(bindir)/$$game; \
- $(CP) $$game.desktop $(DESTDIR)/usr/share/applnk/Games; \
- $(CP) $$game-32.png $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/$$game.png; \
- $(CP) $$game-128.png $(DESTDIR)/usr/share/icons/hicolor/128x128/apps/$$game.png; \
+ -$(INSTALL_DIR) $(DESTDIR)$(bindir)
+ -$(INSTALL_DIR) $(DESTDIR)/usr/share/applnk/Games
+ -$(INSTALL_DIR) $(DESTDIR)/usr/share/icons/hicolor/32x32/apps
+ -$(INSTALL_DIR) $(DESTDIR)/usr/share/icons/hicolor/128x128/apps
+ for game in blocks checkers sudoku; do \
+ $(INSTALL_BIN) $$game $(DESTDIR)$(bindir); \
+ $(INSTALL_DATA) desktop/$$game.desktop $(DESTDIR)/usr/share/applnk/Games; \
+ $(INSTALL_DATA) desktop/$$game-32.png $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/$$game.png; \
+ $(INSTALL_DATA) desktop/$$game-128.png $(DESTDIR)/usr/share/icons/hicolor/128x128/apps/$$game.png; \
done
install-osx:
echo Installing games in $(DESTDIR)/Applications...
- for game in checkers sudoku; do \
+ for game in blocks checkers sudoku; do \
if test ! -d $(DESTDIR)/Applications/$$game.app; then \
- $(MKDIR) $(DESTDIR)/Applications/$$game.app; \
- $(MKDIR) $(DESTDIR)/Applications/$$game.app/Contents; \
- $(MKDIR) $(DESTDIR)/Applications/$$game.app/Contents/MacOS; \
- $(MKDIR) $(DESTDIR)/Applications/$$game.app/Contents/Resources; \
+ $(INSTALL_DIR) $(DESTDIR)/Applications/$$game.app; \
+ $(INSTALL_DIR) $(DESTDIR)/Applications/$$game.app/Contents; \
+ $(INSTALL_DIR) $(DESTDIR)/Applications/$$game.app/Contents/MacOS; \
+ $(INSTALL_DIR) $(DESTDIR)/Applications/$$game.app/Contents/Resources; \
fi; \
- $(CP) $$game.app/Contents/Info.plist $(DESTDIR)/Applications/$$game.app/Contents; \
- $(CP) $$game.app/Contents/PkgInfo $(DESTDIR)/Applications/$$game.app/Contents; \
- $(CP) $$game.app/Contents/MacOS/$$game $(DESTDIR)/Applications/$$game.app/Contents/MacOS; \
- $(CP) $$game.app/Contents/Resources/$$game.icns $(DESTDIR)/Applications/$$game.app/Contents/Resources; \
+ $(INSTALL_DATA) $$game.app/Contents/Info.plist $(DESTDIR)/Applications/$$game.app/Contents; \
+ $(INSTALL_DATA) $$game.app/Contents/PkgInfo $(DESTDIR)/Applications/$$game.app/Contents; \
+ $(INSTALL_BIN) $$game.app/Contents/MacOS/$$game $(DESTDIR)/Applications/$$game.app/Contents/MacOS; \
+ $(INSTALL_DATA) $$game.app/Contents/Resources/$$game.icns $(DESTDIR)/Applications/$$game.app/Contents/Resources; \
done
uninstall:
@@ -215,7 +234,7 @@ uninstall:
uninstall-linux:
echo Removing games from $(DESTDIR)$(bindir)...
- for game in checkers sudoku; do \
+ for game in blocks checkers sudoku; do \
$(RM) $(DESTDIR)$(bindir)/$$game; \
$(RM) $(DESTDIR)/usr/share/applnk/Games/$$game.desktop; \
$(RM) $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/$$game.png; \
@@ -224,12 +243,13 @@ uninstall-linux:
uninstall-osx:
echo Removing games from $(DESTDIR)/Applications...
- $(RM) -r $(DESTDIR)/Applications/checkers.app
- $(RM) -r $(DESTDIR)/Applications/sudoku.app
+ $(RMDIR) $(DESTDIR)/Applications/blocks.app
+ $(RMDIR) $(DESTDIR)/Applications/checkers.app
+ $(RMDIR) $(DESTDIR)/Applications/sudoku.app
# FLUID file rules
.fl.cxx .fl.h: ../fluid/fluid$(EXEEXT)
- echo Generating $<...
+ echo Generating $@ and header from $<...
../fluid/fluid$(EXEEXT) -c $<
# All demos depend on the FLTK library...
@@ -254,17 +274,23 @@ button$(EXEEXT): button.o
buttons$(EXEEXT): buttons.o
+blocks$(EXEEXT): blocks.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) blocks.o -o $@ $(AUDIOLIBS) $(LINKFLTK) $(LDLIBS)
+ $(INSTALL_BIN) blocks$(EXEEXT) blocks.app/Contents/MacOS
+ $(POSTBUILD) $@ ../FL/mac.r
+
checkers$(EXEEXT): checkers.o
echo Linking $@...
- $(CXX) $(CXXFLAGS) checkers.o -o $@ $(LINKFLTK) $(LDLIBS)
- $(CP) checkers$(EXEEXT) checkers.app/Contents/MacOS
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) checkers.o -o $@ $(LINKFLTK) $(LDLIBS)
+ $(INSTALL_BIN) checkers$(EXEEXT) checkers.app/Contents/MacOS
$(POSTBUILD) $@ ../FL/mac.r
clock$(EXEEXT): clock.o
colbrowser$(EXEEXT): colbrowser.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ colbrowser.o $(LINKFLTKFORMS) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ colbrowser.o $(LINKFLTKFORMS) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
color_chooser$(EXEEXT): color_chooser.o
@@ -275,36 +301,36 @@ curve$(EXEEXT): curve.o
demo$(EXEEXT): demo.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ demo.o $(LINKFLTKFORMS) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ demo.o $(LINKFLTKFORMS) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
doublebuffer$(EXEEXT): doublebuffer.o
editor$(EXEEXT): editor.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) editor.o -o $@ $(LINKFLTKIMG) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) editor.o -o $@ $(LINKFLTKIMG) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
fast_slow$(EXEEXT): fast_slow.o
-fast_slow.cxx: fast_slow.fl
+fast_slow.cxx: fast_slow.fl ../fluid/fluid$(EXEEXT)
file_chooser$(EXEEXT): file_chooser.o ../lib/$(IMGLIBNAME)
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) file_chooser.o -o $@ $(LINKFLTKIMG) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) file_chooser.o -o $@ $(LINKFLTKIMG) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
fonts$(EXEEXT): fonts.o
forms$(EXEEXT): forms.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ forms.o $(LINKFLTKFORMS) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ forms.o $(LINKFLTKFORMS) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
hello$(EXEEXT): hello.o
help$(EXEEXT): help.o ../lib/$(IMGLIBNAME)
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) help.o -o $@ $(LINKFLTKIMG) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) help.o -o $@ $(LINKFLTKIMG) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
iconize$(EXEEXT): iconize.o
@@ -312,7 +338,7 @@ iconize$(EXEEXT): iconize.o
image$(EXEEXT): image.o
inactive$(EXEEXT): inactive.o
-inactive.cxx: inactive.fl
+inactive.cxx: inactive.fl ../fluid/fluid$(EXEEXT)
input$(EXEEXT): input.o
@@ -320,14 +346,14 @@ input_choice$(EXEEXT): input_choice.o
keyboard$(EXEEXT): keyboard_ui.o keyboard.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ keyboard.o keyboard_ui.o $(LINKFLTK) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ keyboard.o keyboard_ui.o $(LINKFLTK) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
keyboard_ui.o: keyboard_ui.h
-keyboard_ui.cxx: keyboard_ui.fl
+keyboard_ui.cxx: keyboard_ui.fl ../fluid/fluid$(EXEEXT)
label$(EXEEXT): label.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ label.o $(LINKFLTKFORMS) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ label.o $(LINKFLTKFORMS) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
line_style$(EXEEXT): line_style.o
@@ -336,10 +362,10 @@ list_visuals$(EXEEXT): list_visuals.o
mandelbrot$(EXEEXT): mandelbrot_ui.o mandelbrot.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ mandelbrot.o mandelbrot_ui.o $(LINKFLTK) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ mandelbrot.o mandelbrot_ui.o $(LINKFLTK) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
mandelbrot_ui.o: mandelbrot_ui.h
-mandelbrot_ui.cxx: mandelbrot_ui.fl
+mandelbrot_ui.cxx: mandelbrot_ui.fl ../fluid/fluid$(EXEEXT)
menubar$(EXEEXT): menubar.o
@@ -351,7 +377,7 @@ navigation$(EXEEXT): navigation.o
output$(EXEEXT): output.o ../lib/$(FLLIBNAME)
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ output.o $(LINKFLTKFORMS) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ output.o $(LINKFLTKFORMS) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
overlay$(EXEEXT): overlay.o
@@ -362,17 +388,17 @@ pixmap$(EXEEXT): pixmap.o
pixmap_browser$(EXEEXT): pixmap_browser.o ../lib/$(IMGLIBNAME)
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) pixmap_browser.o -o $@ $(LINKFLTKIMG) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) pixmap_browser.o -o $@ $(LINKFLTKIMG) $(LDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
preferences$(EXEEXT): preferences.o
-preferences.cxx: preferences.fl
+preferences.cxx: preferences.fl ../fluid/fluid$(EXEEXT)
radio$(EXEEXT): radio.o
-radio.cxx: radio.fl
+radio.cxx: radio.fl ../fluid/fluid$(EXEEXT)
resize$(EXEEXT): resize.o
-resize.cxx: resize.fl
+resize.cxx: resize.fl ../fluid/fluid$(EXEEXT)
resizebox$(EXEEXT): resizebox.o
@@ -382,19 +408,19 @@ subwindow$(EXEEXT): subwindow.o
sudoku: sudoku.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) sudoku.o -o $@ $(AUDIOLIBS) $(LINKFLTKIMG) $(LDLIBS)
- $(CP) sudoku$(EXEEXT) sudoku.app/Contents/MacOS
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) sudoku.o -o $@ $(AUDIOLIBS) $(LINKFLTKIMG) $(LDLIBS)
+ $(INSTALL_BIN) sudoku$(EXEEXT) sudoku.app/Contents/MacOS
$(POSTBUILD) $@ ../FL/mac.r
sudoku.exe: sudoku.o sudoku.rc
echo Linking $@...
windres sudoku.rc sudokures.o
- $(CXX) -I.. $(CXXFLAGS) sudoku.o sudokures.o -o $@ $(AUDIOLIBS) $(LINKFLTKIMG) $(LDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) sudoku.o sudokures.o -o $@ $(AUDIOLIBS) $(LINKFLTKIMG) $(LDLIBS)
symbols$(EXEEXT): symbols.o
tabs$(EXEEXT): tabs.o
-tabs.cxx: tabs.fl
+tabs.cxx: tabs.fl ../fluid/fluid$(EXEEXT)
threads$(EXEEXT): threads.o
# This ensures that we have this dependency even if threads are not
@@ -406,7 +432,7 @@ tile$(EXEEXT): tile.o
tiled_image$(EXEEXT): tiled_image.o
valuators$(EXEEXT): valuators.o
-valuators.cxx: valuators.fl
+valuators.cxx: valuators.fl ../fluid/fluid$(EXEEXT)
# All OpenGL demos depend on the FLTK and FLTK_GL libraries...
$(GLALL): ../lib/$(LIBNAME) ../lib/$(GLLIBNAME)
@@ -414,40 +440,46 @@ $(GLALL): ../lib/$(LIBNAME) ../lib/$(GLLIBNAME)
# OpenGL demos...
CubeView$(EXEEXT): CubeMain.o CubeView.o CubeViewUI.o
echo Linking $@...
- $(CXX) $(CXXFLAGS) -o $@ CubeMain.o CubeView.o CubeViewUI.o \
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ \
+ CubeMain.o CubeView.o CubeViewUI.o \
$(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
-CubeMain.o: CubeViewUI.h CubeView.h
+CubeMain.o: CubeViewUI.h CubeView.h CubeViewUI.cxx
CubeView.o: CubeView.h
-CubeViewUI.o: CubeViewUI.h
-CubeViewUI.cxx: CubeViewUI.fl
+CubeViewUI.o: CubeViewUI.cxx CubeViewUI.h
+CubeViewUI.cxx: CubeViewUI.fl ../fluid/fluid$(EXEEXT)
cube$(EXEEXT): cube.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ cube.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ cube.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
+
fractals$(EXEEXT): fractals.o fracviewer.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ fractals.o fracviewer.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ fractals.o fracviewer.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
+
fullscreen$(EXEEXT): fullscreen.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ fullscreen.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ fullscreen.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
+
glpuzzle$(EXEEXT): glpuzzle.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ glpuzzle.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ glpuzzle.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
+
gl_overlay$(EXEEXT): gl_overlay.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ gl_overlay.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ gl_overlay.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
+
shape$(EXEEXT): shape.o
echo Linking $@...
- $(CXX) -I.. $(CXXFLAGS) -o $@ shape.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ shape.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
$(POSTBUILD) $@ ../FL/mac.r
#
-# End of "$Id: Makefile 4756 2006-01-15 18:36:16Z mike $".
+# End of "$Id: Makefile 5792 2007-05-01 20:22:59Z matt $".
#
diff --git a/test/adjuster.cxx b/test/adjuster.cxx
index af7170c..9a6e61e 100644
--- a/test/adjuster.cxx
+++ b/test/adjuster.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: adjuster.cxx 4570 2005-09-15 10:16:08Z matt $"
+// "$Id: adjuster.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Adjuster test program for the Fast Light Tool Kit (FLTK).
//
@@ -62,5 +62,5 @@ int main(int argc, char ** argv) {
}
//
-// End of "$Id: adjuster.cxx 4570 2005-09-15 10:16:08Z matt $".
+// End of "$Id: adjuster.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/arc.cxx b/test/arc.cxx
index e659746..ab796b0 100755
--- a/test/arc.cxx
+++ b/test/arc.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: arc.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: arc.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Arc drawing test program for the Fast Light Tool Kit (FLTK).
//
@@ -94,6 +94,6 @@ int main(int argc, char** argv) {
//
-// End of "$Id: arc.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: arc.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/ask.cxx b/test/ask.cxx
index c7898e1..4ae33cc 100644
--- a/test/ask.cxx
+++ b/test/ask.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: ask.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: ask.cxx 5671 2007-02-08 07:58:47Z matt $"
//
// Standard dialog test program for the Fast Light Tool Kit (FLTK).
//
@@ -47,7 +47,7 @@ void rename_me(Fl_Widget*o) {
const char *input = fl_input("Input:", o->label());
if (input) {
- o->label(input);
+ o->copy_label(input);
o->redraw();
}
}
@@ -65,7 +65,7 @@ int main(int argc, char **argv) {
Fl_Window window(200, 55);
Fl_Return_Button b(20, 10, 160, 35, buffer); b.callback(rename_me);
- window.add(b);
+ window.end();
window.resizable(&b);
window.show(argc, argv);
@@ -76,5 +76,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: ask.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: ask.cxx 5671 2007-02-08 07:58:47Z matt $".
//
diff --git a/test/bitmap.cxx b/test/bitmap.cxx
index bf347e1..d743d52 100644
--- a/test/bitmap.cxx
+++ b/test/bitmap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: bitmap.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: bitmap.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Bitmap label test program for the Fast Light Tool Kit (FLTK).
//
@@ -143,5 +143,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: bitmap.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: bitmap.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/blocks.app/Contents/Info.plist b/test/blocks.app/Contents/Info.plist
new file mode 100644
index 0000000..dcc528a
--- /dev/null
+++ b/test/blocks.app/Contents/Info.plist
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plist version="0.9">
+ <dict>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+
+ <key>CFBundleExecutable</key>
+ <string>blocks</string>
+
+ <key>CFBundleIdentifier</key>
+ <string>com.easysw.blocks</string>
+
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright 2006 by Michael Sweet</string>
+
+ <key>CFAppleHelpAnchor</key>
+ <string>help</string>
+
+ <key>CFBundleName</key>
+ <string>blocks</string>
+
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+
+ <key>CFBundleSignature</key>
+ <string>BLKS</string>
+
+ <key>CFBundleIconFile</key>
+ <string>blocks.icns</string>
+
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+
+ <key>CFBundleGetInfoString</key>
+ <string>1.0, Copyright 2006 by Michael Sweet</string>
+
+ </dict>
+</plist>
diff --git a/test/blocks.app/Contents/PkgInfo b/test/blocks.app/Contents/PkgInfo
new file mode 100644
index 0000000..103810a
--- /dev/null
+++ b/test/blocks.app/Contents/PkgInfo
@@ -0,0 +1 @@
+BLKSBlks
diff --git a/test/blocks.app/Contents/Resources/blocks.icns b/test/blocks.app/Contents/Resources/blocks.icns
new file mode 100644
index 0000000..7e7ba24
--- /dev/null
+++ b/test/blocks.app/Contents/Resources/blocks.icns
Binary files differ
diff --git a/test/blocks.cxx b/test/blocks.cxx
new file mode 100644
index 0000000..9ea7664
--- /dev/null
+++ b/test/blocks.cxx
@@ -0,0 +1,1007 @@
+//
+// "$Id: blocks.cxx 5374 2006-08-28 14:45:20Z mike $"
+//
+// "Block Attack!" scrolling blocks game using the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2006 by Michael Sweet.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#include <FL/Fl.H>
+#include <FL/Fl_Double_Window.H>
+#include <FL/Fl_Button.H>
+#include <FL/Fl_Preferences.H>
+#include <FL/Fl_XPM_Image.H>
+#include <FL/Fl_XBM_Image.H>
+#include <FL/Fl_Tiled_Image.H>
+#include <FL/fl_draw.H>
+#include <FL/x.H>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <math.h>
+
+// Audio headers...
+#include <config.h>
+
+#ifndef WIN32
+# include <unistd.h>
+# include <sys/time.h>
+#endif // !WIN32
+
+#ifdef HAVE_ALSA_ASOUNDLIB_H
+# define ALSA_PCM_NEW_HW_PARAMS_API
+# include <alsa/asoundlib.h>
+#endif // HAVE_ALSA_ASOUNDLIB_H
+#ifdef __APPLE__
+# include <CoreAudio/AudioHardware.h>
+#endif // __APPLE__
+#ifdef WIN32
+# include <mmsystem.h>
+#endif // WIN32
+
+
+#define BLOCK_COLS 20
+#define BLOCK_ROWS 10
+#define BLOCK_SIZE 32
+#define BLOCK_BLAST 100
+
+#include "pixmaps/blast.xpm"
+Fl_Pixmap blast_pixmap(blast_xpm);
+
+#include "pixmaps/red.xpm"
+Fl_Pixmap red_pixmap(red_xpm);
+#include "pixmaps/red_bomb.xpm"
+Fl_Pixmap red_bomb_pixmap(red_bomb_xpm);
+
+#include "pixmaps/green.xpm"
+Fl_Pixmap green_pixmap(green_xpm);
+#include "pixmaps/green_bomb.xpm"
+Fl_Pixmap green_bomb_pixmap(green_bomb_xpm);
+
+#include "pixmaps/blue.xpm"
+Fl_Pixmap blue_pixmap(blue_xpm);
+#include "pixmaps/blue_bomb.xpm"
+Fl_Pixmap blue_bomb_pixmap(blue_bomb_xpm);
+
+#include "pixmaps/yellow.xpm"
+Fl_Pixmap yellow_pixmap(yellow_xpm);
+#include "pixmaps/yellow_bomb.xpm"
+Fl_Pixmap yellow_bomb_pixmap(yellow_bomb_xpm);
+
+#include "pixmaps/cyan.xpm"
+Fl_Pixmap cyan_pixmap(cyan_xpm);
+#include "pixmaps/cyan_bomb.xpm"
+Fl_Pixmap cyan_bomb_pixmap(cyan_bomb_xpm);
+
+#include "pixmaps/magenta.xpm"
+Fl_Pixmap magenta_pixmap(magenta_xpm);
+#include "pixmaps/magenta_bomb.xpm"
+Fl_Pixmap magenta_bomb_pixmap(magenta_bomb_xpm);
+
+#include "pixmaps/gray.xpm"
+Fl_Pixmap gray_pixmap(gray_xpm);
+#include "pixmaps/gray_bomb.xpm"
+Fl_Pixmap gray_bomb_pixmap(gray_bomb_xpm);
+
+Fl_Pixmap *normal_pixmaps[] = {
+ &red_pixmap,
+ &green_pixmap,
+ &blue_pixmap,
+ &yellow_pixmap,
+ &cyan_pixmap,
+ &magenta_pixmap,
+ &gray_pixmap
+};
+Fl_Pixmap *bomb_pixmaps[] = {
+ &red_bomb_pixmap,
+ &green_bomb_pixmap,
+ &blue_bomb_pixmap,
+ &yellow_bomb_pixmap,
+ &cyan_bomb_pixmap,
+ &magenta_bomb_pixmap,
+ &gray_bomb_pixmap
+};
+
+const unsigned char screen_bits[] = {
+ 0xff, 0x55, 0xff, 0xaa, 0xff, 0x55, 0xff, 0xaa
+};
+Fl_Bitmap screen_bitmap(screen_bits, 8, 8);
+Fl_Tiled_Image screen_tile(&screen_bitmap);
+
+
+// Sound class...
+//
+// There are MANY ways to implement sound in a FLTK application.
+// The approach we are using here is to conditionally compile OS-
+// specific code into the application - CoreAudio for MacOS X, the
+// standard Win32 API stuff for Windows, ALSA or X11 for Linux, and
+// X11 for all others. We have to support ALSA on Linux because the
+// current Xorg releases no longer support XBell() or the PC speaker.
+//
+// There are several good cross-platform audio libraries we could also
+// use, such as OpenAL, PortAudio, and SDL, however they were not chosen
+// for this application because of our limited use of sound.
+//
+// Many thanks to Ian MacArthur who provided sample code that led to
+// the CoreAudio implementation you see here!
+class BlockSound {
+ // Private, OS-specific data...
+#ifdef __APPLE__
+ AudioDeviceID device;
+ AudioStreamBasicDescription format;
+ short *data;
+ int remaining;
+
+ static OSStatus audio_cb(AudioDeviceID device,
+ const AudioTimeStamp *current_time,
+ const AudioBufferList *data_in,
+ const AudioTimeStamp *time_in,
+ AudioBufferList *data_out,
+ const AudioTimeStamp *time_out,
+ void *client_data);
+#elif defined(WIN32)
+ HWAVEOUT device;
+ HGLOBAL header_handle;
+ LPWAVEHDR header_ptr;
+ HGLOBAL data_handle;
+ LPSTR data_ptr;
+
+#else
+# ifdef HAVE_ALSA_ASOUNDLIB_H
+ snd_pcm_t *handle;
+# endif // HAVE_ALSA_ASOUNDLIB_H
+#endif // __APPLE__
+
+ public:
+
+ // Common data...
+ static short *sample_data;
+ static int sample_size;
+
+ BlockSound();
+ ~BlockSound();
+
+ void play_explosion(float duration);
+};
+
+// Sound class globals...
+short *BlockSound::sample_data = NULL;
+int BlockSound::sample_size = 0;
+
+
+// Initialize the BlockSound class
+BlockSound::BlockSound() {
+ sample_size = 0;
+
+#ifdef __APPLE__
+ remaining = 0;
+
+ UInt32 size = sizeof(device);
+
+ if (AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice,
+ &size, (void *)&device) != noErr) return;
+
+ size = sizeof(format);
+ if (AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyStreamFormat,
+ &size, &format) != noErr) return;
+
+ // Set up a format we like...
+ format.mSampleRate = 44100.0; // 44.1kHz
+ format.mChannelsPerFrame = 2; // stereo
+
+ if (AudioDeviceSetProperty(device, NULL, 0, false,
+ kAudioDevicePropertyStreamFormat,
+ sizeof(format), &format) != noErr) return;
+
+ // Check we got linear pcm - what to do if we did not ???
+ if (format.mFormatID != kAudioFormatLinearPCM) return;
+
+ // Attach the callback
+ if (AudioDeviceAddIOProc(device, audio_cb, (void *)this) != noErr) return;
+
+ // Start the device...
+ AudioDeviceStart(device, audio_cb);
+
+ sample_size = (int)format.mSampleRate;
+
+#elif defined(WIN32)
+ WAVEFORMATEX format;
+
+ memset(&format, 0, sizeof(format));
+ format.cbSize = sizeof(format);
+ format.wFormatTag = WAVE_FORMAT_PCM;
+ format.nChannels = 2;
+ format.nSamplesPerSec = 44100;
+ format.nAvgBytesPerSec = 44100 * 4;
+ format.nBlockAlign = 4;
+ format.wBitsPerSample = 16;
+
+ data_handle = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, format.nSamplesPerSec * 4);
+ if (!data_handle) return;
+
+ data_ptr = (LPSTR)GlobalLock(data_handle);
+
+ header_handle = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, sizeof(WAVEHDR));
+ if (!header_handle) return;
+
+ header_ptr = (WAVEHDR *)GlobalLock(header_handle);
+
+ header_ptr->lpData = data_ptr;
+ header_ptr->dwFlags = 0;
+ header_ptr->dwLoops = 0;
+
+ if (waveOutOpen(&device, WAVE_MAPPER, &format, 0, 0, WAVE_ALLOWSYNC)
+ != MMSYSERR_NOERROR) return;
+
+ sample_size = format.nSamplesPerSec;
+
+#else
+# ifdef HAVE_ALSA_ASOUNDLIB_H
+ handle = NULL;
+
+ if (snd_pcm_open(&handle, "default", SND_PCM_STREAM_PLAYBACK, 0) >= 0) {
+ // Initialize PCM sound stuff...
+ snd_pcm_hw_params_t *params;
+
+ snd_pcm_hw_params_alloca(&params);
+ snd_pcm_hw_params_any(handle, params);
+ snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
+ snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16);
+ snd_pcm_hw_params_set_channels(handle, params, 2);
+ unsigned rate = 44100;
+ int dir;
+ snd_pcm_hw_params_set_rate_near(handle, params, &rate, &dir);
+ snd_pcm_uframes_t period = (int)rate;
+ snd_pcm_hw_params_set_period_size_near(handle, params, &period, &dir);
+
+ sample_size = rate;
+
+ if (snd_pcm_hw_params(handle, params) < 0) {
+ sample_size = 0;
+ snd_pcm_close(handle);
+ handle = NULL;
+ }
+ }
+# endif // HAVE_ALSA_ASOUNDLIB_H
+#endif // __APPLE__
+
+ if (sample_size) {
+ // Make an explosion sound by passing white noise through a low pass
+ // filter with a decreasing frequency...
+ sample_data = new short[2 * sample_size];
+
+ short *sample_ptr = sample_data;
+ int max_sample = 2 * sample_size - 2;
+
+ *sample_ptr++ = 0;
+ *sample_ptr++ = 0;
+
+ for (int j = max_sample; j > 0; j --, sample_ptr ++) {
+ float freq = (float)j / (float)max_sample;
+ float volume = 32767.0 * (0.5 * sqrt(freq) + 0.5);
+ float sample = 0.0001 * ((rand() % 20001) - 10000);
+
+ *sample_ptr = (int)(volume * freq * sample +
+ (1.0 - freq) * sample_ptr[-2]);
+ }
+ }
+}
+
+
+// Cleanup the BlockSound class
+BlockSound::~BlockSound() {
+#ifdef __APPLE__
+ if (sample_size) {
+ AudioDeviceStop(device, audio_cb);
+ AudioDeviceRemoveIOProc(device, audio_cb);
+ }
+
+#elif defined(WIN32)
+ if (sample_size) {
+ waveOutClose(device);
+
+ GlobalUnlock(header_handle);
+ GlobalFree(header_handle);
+
+ GlobalUnlock(data_handle);
+ GlobalFree(data_handle);
+ }
+
+#else
+# ifdef HAVE_ALSA_ASOUNDLIB_H
+ if (handle) {
+ snd_pcm_drain(handle);
+ snd_pcm_close(handle);
+ }
+# endif // HAVE_ALSA_ASOUNDLIB_H
+#endif // __APPLE__
+
+ if (sample_size) {
+ delete[] sample_data;
+ }
+}
+
+
+#ifdef __APPLE__
+// Callback function for writing audio data...
+OSStatus
+BlockSound::audio_cb(AudioDeviceID device,
+ const AudioTimeStamp *current_time,
+ const AudioBufferList *data_in,
+ const AudioTimeStamp *time_in,
+ AudioBufferList *data_out,
+ const AudioTimeStamp *time_out,
+ void *client_data) {
+ BlockSound *ss = (BlockSound *)client_data;
+ int count;
+ float *buffer;
+
+ if (!ss->remaining) return noErr;
+
+ for (count = data_out->mBuffers[0].mDataByteSize / sizeof(float),
+ buffer = (float*) data_out->mBuffers[0].mData;
+ ss->remaining > 0 && count > 0;
+ count --, ss->data ++, ss->remaining --) {
+ *buffer++ = *(ss->data) / 32767.0;
+ }
+
+ while (count > 0) {
+ *buffer++ = 0.0;
+ count --;
+ }
+
+ return noErr;
+}
+#endif // __APPLE__
+
+
+// Play a note for the given amount of time...
+void
+BlockSound::play_explosion(float duration) {
+ Fl::check();
+
+ if (duration <= 0.0)
+ return;
+
+ if (duration > 1.0)
+ duration = 1.0;
+
+ int samples = (int)(duration * sample_size);
+ short *sample_ptr = sample_data + 2 * (sample_size - samples);
+
+#ifdef __APPLE__
+ // Point to the next note...
+ data = sample_ptr;
+ remaining = samples * 2;
+
+#elif defined(WIN32)
+ if (sample_size) {
+ memcpy(data_ptr, sample_ptr, samples * 4);
+
+ header_ptr->dwBufferLength = samples * 4;
+ waveOutPrepareHeader(device, header_ptr, sizeof(WAVEHDR));
+
+ waveOutWrite(device, header_ptr, sizeof(WAVEHDR));
+ } else Beep(440, (int)(1000.0 * duration));
+
+#elif defined(HAVE_ALSA_ASOUNDLIB_H)
+ if (handle) {
+ // Use ALSA to play the sound...
+ if (snd_pcm_writei(handle, sample_ptr, samples) < 0) {
+ snd_pcm_prepare(handle);
+ snd_pcm_writei(handle, sample_ptr, samples);
+ }
+ return;
+ }
+#endif // __APPLE__
+}
+
+
+class BlockWindow : public Fl_Double_Window
+{
+ public:
+
+ struct Block
+ {
+ int color;
+ bool bomb;
+ int y;
+ };
+
+ struct Column
+ {
+ int num_blocks;
+ Block blocks[BLOCK_ROWS];
+ int x;
+ };
+
+ private:
+
+ Fl_Button *help_button_,
+ *play_button_;
+
+ int num_columns_;
+ Column columns_[BLOCK_COLS];
+ int count_;
+ bool help_;
+ int high_score_;
+ float interval_;
+ int level_;
+ int num_colors_;
+ int opened_columns_;
+ bool paused_;
+ static Fl_Preferences prefs_;
+ int score_;
+ BlockSound *sound_;
+ char title_[255];
+ int title_y_;
+
+ void _BlockWindow();
+ int bomb(int color);
+ int click(int col, int row);
+ static void help_cb(Fl_Widget *wi, BlockWindow *bw);
+ void init();
+ static void play_cb(Fl_Widget *wi, BlockWindow *bw);
+ static void timeout_cb(BlockWindow *bw);
+
+ public:
+
+ BlockWindow(int X, int Y, int W, int H, const char *L = 0);
+ BlockWindow(int W, int H, const char *L = 0);
+ ~BlockWindow();
+
+ void draw();
+ int handle(int event);
+ void new_game();
+ int score() { return (score_); }
+};
+
+
+Fl_Preferences BlockWindow::prefs_(Fl_Preferences::USER, "fltk.org", "blocks");
+
+
+int
+main(int argc, char *argv[]) {
+ Fl::scheme("plastic");
+ Fl::visible_focus(0);
+
+ BlockWindow *bw = new BlockWindow(BLOCK_COLS * BLOCK_SIZE,
+ BLOCK_ROWS * BLOCK_SIZE + 20,
+ "Block Attack!");
+
+ bw->show(argc, argv);
+
+ return (Fl::run());
+}
+
+
+// Create a block window at the specified position
+BlockWindow::BlockWindow(int X, int Y, int W, int H, const char *L)
+ : Fl_Double_Window(X, Y, W, H, L) {
+ _BlockWindow();
+}
+
+
+// Create a block window
+BlockWindow::BlockWindow(int W, int H, const char *L)
+ : Fl_Double_Window(W, H, L) {
+ _BlockWindow();
+}
+
+
+// Delete a block window
+BlockWindow::~BlockWindow() {
+ Fl::remove_timeout((Fl_Timeout_Handler)timeout_cb, (void *)this);
+}
+
+
+// Initialize a block window...
+void
+BlockWindow::_BlockWindow() {
+ init();
+
+ help_button_ = new Fl_Button(0, 0, 20, 20, "?");
+ help_button_->callback((Fl_Callback *)help_cb, this);
+ help_button_->shortcut('?');
+
+ play_button_ = new Fl_Button(80, (h() - 80) / 2, 80, 80, "@>");
+ play_button_->callback((Fl_Callback *)play_cb, this);
+ play_button_->labelsize(44);
+ play_button_->shortcut(' ');
+
+ sound_ = new BlockSound();
+
+ prefs_.get("high_score", high_score_, 0);
+
+ Fl::add_timeout(0.1, (Fl_Timeout_Handler)timeout_cb, (void *)this);
+}
+
+
+// Bomb all blocks of a given color and return the number of affected blocks
+int
+BlockWindow::bomb(int color) {
+ int i, j;
+ int count;
+ Block *b;
+ Column *c;
+
+
+ if (color >= BLOCK_BLAST) return (0);
+
+ for (i = num_columns_, c = columns_, count = 1; i > 0; i --, c ++)
+ for (j = c->num_blocks, b = c->blocks; j > 0; j --, b ++)
+ if (b->color == color) {
+ b->color = -color;
+ count ++;
+ }
+
+ return (count);
+}
+
+
+// Tag all blocks connected to the clicked block and return the number
+// of affected blocks
+int
+BlockWindow::click(int col, int row) {
+ Block *b;
+ Column *c;
+ int count, color;
+
+
+ c = columns_ + col;
+ b = c->blocks + row;
+ color = b->color;
+
+ if (color < 0 || color >= BLOCK_BLAST) return (0);
+
+ // Find the bottom block...
+ while (row > 0 && b[-1].color == color) {
+ row --;
+ b --;
+ }
+
+ count = 0;
+
+ while (row < c->num_blocks && b->color == color) {
+ b->color = -color;
+
+ if (col > 0 && row < c[-1].num_blocks &&
+ c[-1].blocks[row].color == color) {
+ count += click(col - 1, row);
+ }
+
+ if (col < (num_columns_ - 1) && row < c[1].num_blocks &&
+ c[1].blocks[row].color == color) {
+ count += click(col + 1, row);
+ }
+
+ count ++;
+ row ++;
+ b ++;
+ }
+
+ return (count);
+}
+
+
+// Draw the block window...
+void
+BlockWindow::draw() {
+ int i, j, xx, yy;
+ Block *b;
+ Column *c;
+
+
+ // Draw the blocks...
+ fl_color(FL_BLACK);
+ fl_rectf(0, 0, w(), h());
+
+ // Draw the blocks...
+ for (i = num_columns_, c = columns_; i > 0; i --, c ++)
+ for (j = c->num_blocks, b = c->blocks; j > 0; j --, b ++) {
+ xx = w() - c->x;
+ yy = h() - BLOCK_SIZE - b->y;
+
+ if (b->color >= BLOCK_BLAST) {
+ b->color ++;
+ blast_pixmap.draw(xx, yy);
+ } else if (b->color < 0) {
+ if (b->bomb) bomb_pixmaps[-b->color - 1]->draw(xx, yy);
+ else normal_pixmaps[-b->color - 1]->draw(xx, yy);
+ } else {
+ if (b->bomb) bomb_pixmaps[b->color - 1]->draw(xx, yy);
+ else normal_pixmaps[b->color - 1]->draw(xx, yy);
+ }
+ }
+
+ if (interval_ < 0.0 || paused_) {
+ fl_color(FL_BLACK);
+ screen_tile.draw(0, 0, w(), h(), 0, 0);
+ }
+
+ // Redraw the widgets...
+ play_button_->redraw();
+ help_button_->redraw();
+ draw_children();
+
+ // Draw any paused/game over/new game message...
+ if ((paused_ || interval_ < 0.0) && play_button_->w() == 80) {
+ const char *s;
+
+ if (help_) {
+ s = "Click on adjacent blocks of the same color. Clear all blocks "
+ "before they reach the left side.";
+
+ fl_font(FL_HELVETICA_BOLD, 24);
+ fl_color(FL_BLACK);
+ fl_draw(s, 171, 3, w() - 250, h() - 6,
+ (Fl_Align)(FL_ALIGN_WRAP | FL_ALIGN_LEFT));
+
+ fl_color(FL_YELLOW);
+ fl_draw(s, 168, 0, w() - 250, h(),
+ (Fl_Align)(FL_ALIGN_WRAP | FL_ALIGN_LEFT));
+ } else {
+ if (interval_ < 0.0) {
+#ifdef DEBUG
+ // Show sample waveform...
+ short *sample_ptr;
+
+ for (i = 0; i < 2; i ++)
+ {
+ fl_color(FL_RED + i);
+ fl_begin_line();
+ for (j = 0, sample_ptr = sound_->sample_data + i;
+ j < sound_->sample_size;
+ j ++, sample_ptr += 2)
+ fl_vertex(j * w() / sound_->sample_size,
+ *sample_ptr * h() / 4 / 65534 + h() / 2);
+ fl_end_line();
+ }
+#endif // DEBUG
+
+ if (num_columns_ && (time(NULL) & 7) < 4) s = "Game Over";
+ else s = "Block Attack!\nby Michael R Sweet";
+ } else s = "Paused";
+
+ fl_font(FL_HELVETICA_BOLD, 32);
+ fl_color(FL_BLACK);
+ fl_draw(s, 6, 6, w() - 6, h() - 6, FL_ALIGN_CENTER);
+
+ fl_color(FL_YELLOW);
+ fl_draw(s, 0, 0, w(), h(), FL_ALIGN_CENTER);
+ }
+ }
+
+ // Draw the scores and level...
+ char s[255];
+
+ sprintf(s, " Score: %d", score_);
+ fl_color(FL_WHITE);
+ fl_font(FL_HELVETICA, 14);
+ fl_draw(s, 40, 0, w() - 40, 20, FL_ALIGN_LEFT);
+
+ sprintf(s, "High Score: %d ", high_score_);
+ fl_draw(s, 0, 0, w(), 20, FL_ALIGN_RIGHT);
+
+ if (level_ > 1 || title_y_ <= 0)
+ {
+ sprintf(s, "Level: %d ", level_);
+ fl_draw(s, 0, 0, w(), 20, FL_ALIGN_CENTER);
+ }
+
+ if (title_y_ > 0 && interval_ > 0.0)
+ {
+ int sz = 14 + title_y_ * 86 / h();
+
+ fl_font(FL_HELVETICA_BOLD, sz);
+ fl_color(FL_YELLOW);
+ fl_draw(title_, 0, title_y_, w(), sz, FL_ALIGN_CENTER);
+ }
+}
+
+
+// Handle mouse clicks, etc.
+int
+BlockWindow::handle(int event) {
+ int i, j, mx, my, count;
+ Block *b;
+ Column *c;
+
+
+ if (Fl_Double_Window::handle(event)) return (1);
+ else if (interval_ < 0.0 || paused_) return (0);
+
+ switch (event) {
+ case FL_PUSH :
+ mx = w() - Fl::event_x() + BLOCK_SIZE;
+ my = h() - Fl::event_y();
+ count = 0;
+
+ for (i = 0, c = columns_; !count && i < num_columns_; i ++, c ++)
+ for (j = 0, b = c->blocks; !count && j < c->num_blocks; j ++, b ++)
+ if (mx >= c->x && mx < (c->x + BLOCK_SIZE) &&
+ my >= b->y && my < (b->y + BLOCK_SIZE)) {
+ if (b->bomb) count = bomb(b->color);
+ else count = click(i, j);
+
+ break;
+ }
+
+ if (count < 2) {
+ for (i = 0, c = columns_; i < num_columns_; i ++, c ++)
+ for (j = 0, b = c->blocks; j < c->num_blocks; j ++, b ++)
+ if (b->color < 0) b->color = -b->color;
+ } else {
+ count --;
+
+ if (b->bomb) {
+ sound_->play_explosion(0.19 + 0.005 * count);
+
+ interval_ *= 0.995;
+ score_ += count;
+ } else {
+ sound_->play_explosion(0.09 + 0.005 * count);
+
+ interval_ *= 0.999;
+ score_ += count * count;
+ }
+
+ if (score_ > high_score_) {
+ high_score_ = score_;
+ prefs_.set("high_score", high_score_);
+ }
+
+ for (i = 0, c = columns_; i < num_columns_; i ++, c ++)
+ for (j = 0, b = c->blocks; j < c->num_blocks; j ++, b ++)
+ if (b->color < 0) b->color = BLOCK_BLAST;
+ }
+ return (1);
+ }
+
+ return (0);
+}
+
+
+// Toggle the on-line help...
+void
+BlockWindow::help_cb(Fl_Widget *wi, BlockWindow *bw) {
+ bw->paused_ = bw->help_ = !bw->help_;
+ bw->play_button_->label("@>");
+ bw->redraw();
+}
+
+
+// Initialize the block window...
+void
+BlockWindow::init() {
+ count_ = 0;
+ help_ = false;
+ interval_ = -1.0;
+ level_ = 1;
+ num_colors_ = 3;
+ num_columns_ = 0;
+ paused_ = false;
+ score_ = 0;
+ title_[0] = '\0';
+ title_y_ = 0;
+}
+
+
+// Start a new game...
+void
+BlockWindow::new_game() {
+ // Seed the random number generator...
+ srand(time(NULL));
+
+ init();
+
+ interval_ = 0.1;
+ opened_columns_ = 0;
+
+ strcpy(title_, "Level: 1");
+ title_y_ = h();
+
+ redraw();
+}
+
+
+// Play/pause...
+void
+BlockWindow::play_cb(Fl_Widget *wi, BlockWindow *bw) {
+ if (bw->interval_ < 0) bw->new_game();
+ else bw->paused_ = !bw->paused_;
+
+ if (bw->paused_) wi->label("@>");
+ else {
+ wi->label("@-2||");
+ bw->help_ = false;
+ }
+}
+
+
+// Animate the game...
+void
+BlockWindow::timeout_cb(BlockWindow *bw) {
+ int i, j;
+ Block *b;
+ Column *c;
+ int lastx, lasty;
+
+
+#ifdef DEBUG
+ struct timeval curtime;
+ static struct timeval lasttime;
+
+
+ gettimeofday(&curtime, NULL);
+ printf("%.3f (%+f - %f)\n",
+ curtime.tv_sec + 0.000001 * curtime.tv_usec,
+ curtime.tv_sec - lasttime.tv_sec +
+ 0.000001 * (curtime.tv_usec - lasttime.tv_usec), bw->interval_);
+ lasttime = curtime;
+#endif // DEBUG
+
+ // Update blocks that have been destroyed...
+ for (i = 0, c = bw->columns_; i < bw->num_columns_; i ++, c ++)
+ for (j = 0, b = c->blocks; j < c->num_blocks; j ++, b ++)
+ if (b->color > (BLOCK_BLAST + 1)) {
+ bw->redraw();
+
+ c->num_blocks --;
+
+ if (j < c->num_blocks) {
+ memmove(b, b + 1, (c->num_blocks - j) * sizeof(Block));
+ }
+
+ j --;
+ b --;
+
+ if (!c->num_blocks) {
+ bw->num_columns_ --;
+
+ if (i < bw->num_columns_) {
+ memmove(c, c + 1, (bw->num_columns_ - i) * sizeof(Column));
+ }
+
+ i --;
+ c --;
+ j = c->num_blocks;
+ }
+ }
+
+ // Let the rest of the blocks fall and/or move...
+ for (i = bw->num_columns_, c = bw->columns_, lastx = c->x;
+ i > 0;
+ i --, c ++) {
+ if (c->x > lastx) {
+ c->x -= 8;
+ bw->redraw();
+ }
+
+ lastx = c->x + BLOCK_SIZE;
+
+ if (!bw->paused_ && bw->interval_ > 0.0) {
+ bw->redraw();
+ c->x ++;
+ }
+
+ for (j = c->num_blocks, b = c->blocks, lasty = 0; j > 0; j --, b ++) {
+ if (b->y > lasty) {
+ bw->redraw();
+ b->y -= 8;
+ }
+
+ lasty = b->y + BLOCK_SIZE;
+ }
+ }
+
+ // Slide the title text as needed...
+ if (bw->title_y_ > 0) {
+ bw->redraw();
+ bw->title_y_ -= 5;
+ }
+
+ // Play the game...
+ if (!bw->paused_ && bw->interval_ > 0.0) {
+ bw->count_ --;
+
+ if (bw->count_ <= 0) {
+ bw->redraw();
+ bw->count_ = BLOCK_SIZE;
+
+ if (bw->num_columns_ == BLOCK_COLS) {
+ bw->interval_ = -1.0;
+ bw->sound_->play_explosion(0.8);
+ bw->play_button_->label("@>");
+ } else {
+ bw->opened_columns_ ++;
+
+ if (bw->opened_columns_ > (2 * BLOCK_COLS)) {
+ bw->interval_ *= 0.95;
+ bw->opened_columns_ = 0;
+
+ if (bw->num_colors_ < 7) bw->num_colors_ ++;
+
+ bw->level_ ++;
+ sprintf(bw->title_, "Level: %d", bw->level_);
+ bw->title_y_ = bw->h();
+ }
+
+ c = bw->columns_;
+
+ if (bw->num_columns_) {
+ memmove(c + 1, c, bw->num_columns_ * sizeof(Column));
+ }
+
+ bw->num_columns_ ++;
+ c->x = 0;
+ c->num_blocks = BLOCK_ROWS;
+
+ for (j = 0, b = c->blocks; j < BLOCK_ROWS; j ++, b ++) {
+ b->bomb = bw->num_colors_ > 3 && (rand() & 127) < bw->num_colors_;
+ b->color = 1 + (rand() % bw->num_colors_);
+ b->y = j * (BLOCK_SIZE + 8) + 24;
+ }
+ }
+ }
+ }
+ else
+ {
+ bw->count_ --;
+
+ if (bw->count_ <= 0) {
+ bw->count_ = 40;
+ bw->redraw();
+ }
+ }
+
+ // Update the play/pause button as needed...
+ if ((bw->paused_ || bw->interval_< 0.0) &&
+ bw->play_button_->w() < 80) {
+ int s = bw->play_button_->w() + 10;
+
+ bw->play_button_->resize(s, (s - 20) * (bw->h() - s) / 120, s, s);
+ bw->play_button_->labelsize(s / 2 + 4);
+ bw->redraw();
+ } else if ((!bw->paused_ && bw->interval_ > 0.0) &&
+ bw->play_button_->w() > 20) {
+ int s = bw->play_button_->w() - 5;
+
+ bw->play_button_->resize(s, (s - 20) * (bw->h() - s) / 120, s, s);
+ bw->play_button_->labelsize(s / 2 + 4);
+ bw->redraw();
+ }
+
+ if (bw->interval_ > 0.0) {
+ Fl::repeat_timeout(bw->interval_, (Fl_Timeout_Handler)timeout_cb,
+ (void *)bw);
+ } else {
+ Fl::repeat_timeout(0.1, (Fl_Timeout_Handler)timeout_cb,
+ (void *)bw);
+ }
+}
+
+
+//
+// End of "$Id: blocks.cxx 5374 2006-08-28 14:45:20Z mike $".
+//
diff --git a/test/boxtype.cxx b/test/boxtype.cxx
index a27c714..038427e 100644
--- a/test/boxtype.cxx
+++ b/test/boxtype.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: boxtype.cxx 4626 2005-11-02 13:57:56Z matt $"
+// "$Id: boxtype.cxx 5671 2007-02-08 07:58:47Z matt $"
//
// Boxtype test program for the Fast Light Tool Kit (FLTK).
//
@@ -28,13 +28,13 @@
#include <stdlib.h>
#include <stdio.h>
#include <FL/Fl.H>
-#include <FL/Fl_Single_Window.H>
+#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Box.H>
int N = 0;
#define W 200
#define H 50
-#define ROWS 10
+#define ROWS 14
Fl_Window *window;
@@ -50,7 +50,7 @@ void bt(const char *name, Fl_Boxtype type, int square=0) {
}
int main(int argc, char ** argv) {
- window = new Fl_Single_Window(4*W,ROWS*H);
+ window = new Fl_Double_Window(4*W,ROWS*H);
window->box(FL_FLAT_BOX);
#if 0 // this code uses the command line arguments to set arbitrary color schemes
Fl::args(argc, argv);
@@ -60,6 +60,7 @@ int main(int argc, char ** argv) {
Fl::get_system_colors();
Fl::background(113,113,198);
#else // this code uses the nice bright blue background to show box vs. frame types
+ Fl::args(argc, argv);
Fl::get_system_colors();
window->color(12);// light blue
#endif
@@ -94,12 +95,28 @@ int main(int argc, char ** argv) {
bt("FL_ROUND_DOWN_BOX",FL_ROUND_DOWN_BOX);
bt("FL_DIAMOND_UP_BOX",FL_DIAMOND_UP_BOX);
bt("FL_DIAMOND_DOWN_BOX",FL_DIAMOND_DOWN_BOX);
+
bt("FL_PLASTIC_UP_BOX",FL_PLASTIC_UP_BOX);
bt("FL_PLASTIC_DOWN_BOX",FL_PLASTIC_DOWN_BOX);
bt("FL_PLASTIC_UP_FRAME",FL_PLASTIC_UP_FRAME);
bt("FL_PLASTIC_DOWN_FRAME",FL_PLASTIC_DOWN_FRAME);
bt("FL_PLASTIC_THIN_UP_BOX",FL_PLASTIC_THIN_UP_BOX);
bt("FL_PLASTIC_THIN_DOWN_BOX",FL_PLASTIC_THIN_DOWN_BOX);
+ N += 2;
+ bt("FL_PLASTIC_ROUND_UP_BOX",FL_PLASTIC_ROUND_UP_BOX);
+ bt("FL_PLASTIC_ROUND_DOWN_BOX",FL_PLASTIC_ROUND_DOWN_BOX);
+ N += 2;
+
+ bt("FL_GTK_UP_BOX",FL_GTK_UP_BOX);
+ bt("FL_GTK_DOWN_BOX",FL_GTK_DOWN_BOX);
+ bt("FL_GTK_UP_FRAME",FL_GTK_UP_FRAME);
+ bt("FL_GTK_DOWN_FRAME",FL_GTK_DOWN_FRAME);
+ bt("FL_GTK_THIN_UP_BOX",FL_GTK_THIN_UP_BOX);
+ bt("FL_GTK_THIN_DOWN_BOX",FL_GTK_THIN_DOWN_BOX);
+ bt("FL_GTK_THIN_UP_FRAME",FL_GTK_THIN_UP_FRAME);
+ bt("FL_GTK_THIN_DOWN_FRAME",FL_GTK_THIN_DOWN_FRAME);
+ bt("FL_GTK_ROUND_UP_BOX",FL_GTK_ROUND_UP_BOX);
+ bt("FL_GTK_ROUND_DOWN_BOX",FL_GTK_ROUND_DOWN_BOX);
window->resizable(window);
window->end();
window->show();
@@ -107,5 +124,5 @@ int main(int argc, char ** argv) {
}
//
-// End of "$Id: boxtype.cxx 4626 2005-11-02 13:57:56Z matt $".
+// End of "$Id: boxtype.cxx 5671 2007-02-08 07:58:47Z matt $".
//
diff --git a/test/browser.cxx b/test/browser.cxx
index 4af3898..d057c8a 100644
--- a/test/browser.cxx
+++ b/test/browser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: browser.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: browser.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Browser test program for the Fast Light Tool Kit (FLTK).
//
@@ -177,6 +177,6 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: browser.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: browser.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/button.cxx b/test/button.cxx
index 80a63a7..dc4d898 100644
--- a/test/button.cxx
+++ b/test/button.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: button.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: button.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Button/callback test program for the Fast Light Tool Kit (FLTK).
//
@@ -64,5 +64,5 @@ int main(int argc, char ** argv) {
}
//
-// End of "$Id: button.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: button.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/buttons.cxx b/test/buttons.cxx
index a622e45..d68d347 100644
--- a/test/buttons.cxx
+++ b/test/buttons.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: buttons.cxx 4640 2005-11-06 09:55:36Z matt $"
+// "$Id: buttons.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Another button test program for the Fast Light Tool Kit (FLTK).
//
@@ -51,5 +51,5 @@ int main(int argc, char ** argv) {
}
//
-// End of "$Id: buttons.cxx 4640 2005-11-06 09:55:36Z matt $".
+// End of "$Id: buttons.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/checkers.cxx b/test/checkers.cxx
index b092387..f1a3f38 100644
--- a/test/checkers.cxx
+++ b/test/checkers.cxx
@@ -1,10 +1,10 @@
//
-// "$Id: checkers.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: checkers.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Checkers game for the Fast Light Tool Kit (FLTK).
//
// Hours of fun: the FLTK checkers game!
-// Based on a very old algorithim, but it still works!
+// Based on a very old algorithm, but it still works!
//
// Copyright 1998-2005 by Bill Spitzak and others.
//
@@ -871,22 +871,22 @@ int VT100main() {
// rather tedious and perhaps fltk should provide a direct support
// to do this:
-#include "black_1.xbm"
-#include "black_2.xbm"
-#include "black_3.xbm"
-#include "black_4.xbm"
-#include "white_1.xbm"
-#include "white_2.xbm"
-#include "white_3.xbm"
-#include "white_4.xbm"
-#include "blackking_1.xbm"
-#include "blackking_2.xbm"
-#include "blackking_3.xbm"
-#include "blackking_4.xbm"
-#include "whiteking_1.xbm"
-#include "whiteking_2.xbm"
-#include "whiteking_3.xbm"
-#include "whiteking_4.xbm"
+#include "pixmaps/black_1.xbm"
+#include "pixmaps/black_2.xbm"
+#include "pixmaps/black_3.xbm"
+#include "pixmaps/black_4.xbm"
+#include "pixmaps/white_1.xbm"
+#include "pixmaps/white_2.xbm"
+#include "pixmaps/white_3.xbm"
+#include "pixmaps/white_4.xbm"
+#include "pixmaps/blackking_1.xbm"
+#include "pixmaps/blackking_2.xbm"
+#include "pixmaps/blackking_3.xbm"
+#include "pixmaps/blackking_4.xbm"
+#include "pixmaps/whiteking_1.xbm"
+#include "pixmaps/whiteking_2.xbm"
+#include "pixmaps/whiteking_3.xbm"
+#include "pixmaps/whiteking_4.xbm"
Fl_Bitmap *bm[4][4];
@@ -1357,5 +1357,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: checkers.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: checkers.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/clock.cxx b/test/clock.cxx
index 5e6adbb..34db91d 100644
--- a/test/clock.cxx
+++ b/test/clock.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: clock.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: clock.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Clock test program for the Fast Light Tool Kit (FLTK).
//
@@ -49,5 +49,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: clock.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: clock.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/colbrowser.cxx b/test/colbrowser.cxx
index d2f1fa8..a3856b5 100644
--- a/test/colbrowser.cxx
+++ b/test/colbrowser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: colbrowser.cxx 4356 2005-05-17 20:03:29Z matt $"
+// "$Id: colbrowser.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Forms test program for the Fast Light Tool Kit (FLTK).
//
@@ -326,5 +326,5 @@ create_form_cl(void)
}
//
-// End of "$Id: colbrowser.cxx 4356 2005-05-17 20:03:29Z matt $".
+// End of "$Id: colbrowser.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/color_chooser.cxx b/test/color_chooser.cxx
index ceee2aa..521f936 100644
--- a/test/color_chooser.cxx
+++ b/test/color_chooser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: color_chooser.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: color_chooser.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Color chooser test program for the Fast Light Tool Kit (FLTK).
//
@@ -148,5 +148,5 @@ int main(int argc, char ** argv) {
}
//
-// End of "$Id: color_chooser.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: color_chooser.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/connect.cxx b/test/connect.cxx
index d335077..8130cad 100644
--- a/test/connect.cxx
+++ b/test/connect.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: connect.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: connect.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// PPP example program for the Fast Light Tool Kit (FLTK).
//
@@ -73,5 +73,5 @@ int main(int argc, char ** argv) {
}
//
-// End of "$Id: connect.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: connect.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/cube.cxx b/test/cube.cxx
index 57f161b..7bce35b 100644
--- a/test/cube.cxx
+++ b/test/cube.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: cube.cxx 4634 2005-11-04 08:23:20Z matt $"
+// "$Id: cube.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Another forms test program for the Fast Light Tool Kit (FLTK).
//
@@ -195,5 +195,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: cube.cxx 4634 2005-11-04 08:23:20Z matt $".
+// End of "$Id: cube.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/cursor.cxx b/test/cursor.cxx
index 5ce08a7..b817835 100644
--- a/test/cursor.cxx
+++ b/test/cursor.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: cursor.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: cursor.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Cursor test program for the Fast Light Tool Kit (FLTK).
//
@@ -39,7 +39,7 @@ Fl_Cursor cursor = FL_CURSOR_DEFAULT;
Fl_Hor_Value_Slider *cursor_slider;
void choice_cb(Fl_Widget *, void *v) {
- cursor = (Fl_Cursor)(int)v;
+ cursor = (Fl_Cursor)(long)v;
cursor_slider->value(cursor);
fl_cursor(cursor,fg,bg);
}
@@ -161,5 +161,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: cursor.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: cursor.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/curve.cxx b/test/curve.cxx
index 1f74580..62b6e3f 100644
--- a/test/curve.cxx
+++ b/test/curve.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: curve.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: curve.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Curve test program for the Fast Light Tool Kit (FLTK).
//
@@ -111,5 +111,5 @@ int main(int argc, char** argv) {
}
//
-// End of "$Id: curve.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: curve.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/demo.cxx b/test/demo.cxx
index 6821ac6..e225323 100644
--- a/test/demo.cxx
+++ b/test/demo.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: demo.cxx 4723 2005-12-30 10:13:17Z matt $"
+// "$Id: demo.cxx 5712 2007-02-23 19:27:43Z matt $"
//
// Main demo program for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2007 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -30,10 +30,12 @@
#include <stdlib.h>
#if defined(WIN32) && !defined(__CYGWIN__)
# include <direct.h>
+# ifndef __WATCOMC__
// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
// on Windows, which is supposed to be POSIX compliant...
-# define chdir _chdir
-# define putenv _putenv
+# define chdir _chdir
+# define putenv _putenv
+# endif // !__WATCOMC__
#else
# include <unistd.h>
#endif
@@ -41,6 +43,7 @@
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
+#include <FL/Fl_Choice.H>
#include <FL/filename.H>
#include <FL/x.H>
@@ -49,33 +52,46 @@
void doexit(Fl_Widget *, void *);
void doback(Fl_Widget *, void *);
void dobut(Fl_Widget *, long);
+void doscheme(Fl_Choice *c, void *) {
+ Fl::scheme(c->text(c->value()));
+}
Fl_Window *form;
Fl_Button *but[9];
void create_the_forms() {
Fl_Widget *obj;
- form = new Fl_Window(370, 450);
- obj = new Fl_Box(FL_FRAME_BOX,20,390,330,40,"FLTK Demonstration");
+ form = new Fl_Window(350, 440);
+ obj = new Fl_Box(FL_FRAME_BOX,10,385,330,40,"FLTK Demonstration");
obj->color(FL_GRAY-4);
obj->labelsize(24);
obj->labelfont(FL_BOLD);
obj->labeltype(FL_ENGRAVED_LABEL);
- obj = new Fl_Box(FL_FRAME_BOX,20,50,330,330,0);
+ obj = new Fl_Box(FL_FRAME_BOX,10,45,330,330,0);
obj->color(FL_GRAY-8);
- obj = new Fl_Button(130,10,110,30,"Exit");
+ obj = new Fl_Button(280,10,60,25,"Exit");
obj->callback(doexit);
- obj = new Fl_Button(20,50,330,380); obj->type(FL_HIDDEN_BUTTON);
+ Fl_Choice *choice = new Fl_Choice(75, 10, 100, 25, "Scheme:");
+ choice->labelfont(FL_HELVETICA_BOLD);
+ choice->add("none");
+ choice->add("gtk+");
+ choice->add("plastic");
+ choice->callback((Fl_Callback *)doscheme);
+ Fl::scheme(NULL);
+ if (!Fl::scheme()) choice->value(0);
+ else if (!strcmp(Fl::scheme(), "gtk+")) choice->value(1);
+ else choice->value(2);
+ obj = new Fl_Button(10,45,330,380); obj->type(FL_HIDDEN_BUTTON);
obj->callback(doback);
- obj = but[0] = new Fl_Button(40,270,90,90);
- obj = but[1] = new Fl_Button(140,270,90,90);
- obj = but[2] = new Fl_Button(240,270,90,90);
- obj = but[5] = new Fl_Button(240,170,90,90);
- obj = but[4] = new Fl_Button(140,170,90,90);
- obj = but[3] = new Fl_Button(40,170,90,90);
- obj = but[6] = new Fl_Button(40,70,90,90);
- obj = but[7] = new Fl_Button(140,70,90,90);
- obj = but[8] = new Fl_Button(240,70,90,90);
+ obj = but[0] = new Fl_Button(30,265,90,90);
+ obj = but[1] = new Fl_Button(130,265,90,90);
+ obj = but[2] = new Fl_Button(230,265,90,90);
+ obj = but[5] = new Fl_Button(230,165,90,90);
+ obj = but[4] = new Fl_Button(130,165,90,90);
+ obj = but[3] = new Fl_Button(30,165,90,90);
+ obj = but[6] = new Fl_Button(30,65,90,90);
+ obj = but[7] = new Fl_Button(130,65,90,90);
+ obj = but[8] = new Fl_Button(230,65,90,90);
for (int i=0; i<9; i++) {
but[i]->align(FL_ALIGN_WRAP);
but[i]->callback(dobut, i);
@@ -290,6 +306,14 @@ int load_the_menu(const char* fname)
}
for (;;) {
if (fgets(line,256,fin) == NULL) break;
+ // remove all carriage returns that Cygwin may have inserted
+ char *s = line, *d = line;
+ for (;;++d) {
+ while (*s=='\r') s++;
+ *d = *s++;
+ if (!*d) break;
+ }
+ // interprete the line
j = 0; i = 0;
while (line[i] == ' ' || line[i] == '\t') i++;
if (line[i] == '\n') continue;
@@ -321,7 +345,6 @@ int load_the_menu(const char* fname)
int main(int argc, char **argv) {
putenv((char *)"FLTK_DOCDIR=../documentation");
- create_the_forms();
char buf[256];
strcpy(buf, argv[0]);
#if ( defined _MSC_VER || defined __MWERKS__ ) && defined _DEBUG
@@ -336,6 +359,8 @@ int main(int argc, char **argv) {
Fl::fatal("Usage: %s <switches> <menufile>\n%s",argv[0],Fl::help);
if (i < argc) fname = argv[i];
+ create_the_forms();
+
if (!load_the_menu(fname)) Fl::fatal("Can't open %s",fname);
if (buf!=fname)
strcpy(buf,fname);
@@ -348,6 +373,6 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: demo.cxx 4723 2005-12-30 10:13:17Z matt $".
+// End of "$Id: demo.cxx 5712 2007-02-23 19:27:43Z matt $".
//
diff --git a/test/demo.menu b/test/demo.menu
index 4842d84..be4e8db 100644
--- a/test/demo.menu
+++ b/test/demo.menu
@@ -58,6 +58,7 @@
@e:Mandelbrot:mandelbrot
@e:Fractals:fractals
@e:Puzzle:glpuzzle
+ @e:Block\nAttack!:blocks
@e:Checkers:checkers
@e:Sudoku:sudoku
diff --git a/test/desktop/blocks-128.png b/test/desktop/blocks-128.png
new file mode 100644
index 0000000..41e6d00
--- /dev/null
+++ b/test/desktop/blocks-128.png
Binary files differ
diff --git a/test/desktop/blocks-32.png b/test/desktop/blocks-32.png
new file mode 100644
index 0000000..073bc0f
--- /dev/null
+++ b/test/desktop/blocks-32.png
Binary files differ
diff --git a/test/desktop/blocks.desktop b/test/desktop/blocks.desktop
new file mode 100644
index 0000000..f606d4d
--- /dev/null
+++ b/test/desktop/blocks.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Block Attack!
+Comment=Block Attack! Game
+TryExec=blocks
+Exec=blocks
+Icon=blocks
+Terminal=false
+Type=Application
+Encoding=UTF-8
+Categories=Application;Game
diff --git a/test/checkers-128.png b/test/desktop/checkers-128.png
index ed02527..ed02527 100644
--- a/test/checkers-128.png
+++ b/test/desktop/checkers-128.png
Binary files differ
diff --git a/test/checkers-32.png b/test/desktop/checkers-32.png
index 4adcd66..4adcd66 100644
--- a/test/checkers-32.png
+++ b/test/desktop/checkers-32.png
Binary files differ
diff --git a/test/checkers.desktop b/test/desktop/checkers.desktop
index 5e6e55b..5e6e55b 100644
--- a/test/checkers.desktop
+++ b/test/desktop/checkers.desktop
diff --git a/test/sudoku-128.png b/test/desktop/sudoku-128.png
index 070a410..070a410 100644
--- a/test/sudoku-128.png
+++ b/test/desktop/sudoku-128.png
Binary files differ
diff --git a/test/sudoku-32.png b/test/desktop/sudoku-32.png
index 154c273..154c273 100644
--- a/test/sudoku-32.png
+++ b/test/desktop/sudoku-32.png
Binary files differ
diff --git a/test/sudoku.desktop b/test/desktop/sudoku.desktop
index 36e4fc5..36e4fc5 100644
--- a/test/sudoku.desktop
+++ b/test/desktop/sudoku.desktop
diff --git a/test/doublebuffer.cxx b/test/doublebuffer.cxx
index 3b532b1..1154ab0 100644
--- a/test/doublebuffer.cxx
+++ b/test/doublebuffer.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: doublebuffer.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: doublebuffer.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Double-buffering test program for the Fast Light Tool Kit (FLTK).
//
@@ -124,5 +124,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: doublebuffer.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: doublebuffer.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/editor.cxx b/test/editor.cxx
index e3f642a..0966a72 100644
--- a/test/editor.cxx
+++ b/test/editor.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: editor.cxx 4723 2005-12-30 10:13:17Z matt $"
+// "$Id: editor.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// A simple text editor program for the Fast Light Tool Kit (FLTK).
//
@@ -616,7 +616,7 @@ void close_cb(Fl_Widget*, void* v) {
w->hide();
textbuf->remove_modify_callback(changed_cb, w);
- delete w;
+ Fl::delete_widget(w);
num_windows--;
if (!num_windows) exit(0);
}
@@ -791,5 +791,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: editor.cxx 4723 2005-12-30 10:13:17Z matt $".
+// End of "$Id: editor.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/file_chooser.cxx b/test/file_chooser.cxx
index d421872..024b04d 100644
--- a/test/file_chooser.cxx
+++ b/test/file_chooser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: file_chooser.cxx 4410 2005-07-11 20:31:59Z matt $"
+// "$Id: file_chooser.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// File chooser test program.
//
@@ -340,5 +340,5 @@ show_callback(void)
//
-// End of "$Id: file_chooser.cxx 4410 2005-07-11 20:31:59Z matt $".
+// End of "$Id: file_chooser.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/fl_jpeg_image.cxx b/test/fl_jpeg_image.cxx
index caba916..c701dfc 100644
--- a/test/fl_jpeg_image.cxx
+++ b/test/fl_jpeg_image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_jpeg_image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: fl_jpeg_image.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// fl_draw_image test program for the Fast Light Tool Kit (FLTK).
//
@@ -199,5 +199,5 @@ void readtheimage(const char *name) {
#endif
//
-// End of "$Id: fl_jpeg_image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: fl_jpeg_image.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/fonts.cxx b/test/fonts.cxx
index e58a44f..a7f34f7 100644
--- a/test/fonts.cxx
+++ b/test/fonts.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fonts.cxx 4626 2005-11-02 13:57:56Z matt $"
+// "$Id: fonts.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Font demo program for the Fast Light Tool Kit (FLTK).
//
@@ -179,5 +179,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: fonts.cxx 4626 2005-11-02 13:57:56Z matt $".
+// End of "$Id: fonts.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/forms.cxx b/test/forms.cxx
index eceb13b..2536e8a 100644
--- a/test/forms.cxx
+++ b/test/forms.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: forms.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: forms.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Another forms demo for the Fast Light Tool Kit (FLTK).
//
@@ -69,7 +69,7 @@ static VN_struct btypes[]=
{-1}
};
-#include "srs.xbm"
+#include "pixmaps/srs.xbm"
/*************** Callback **********************/
@@ -233,5 +233,5 @@ main (int argc, char *argv[])
}
//
-// End of "$Id: forms.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: forms.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/fractals.cxx b/test/fractals.cxx
index a66c05f..6f71979 100644
--- a/test/fractals.cxx
+++ b/test/fractals.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fractals.cxx 4342 2005-05-12 19:16:27Z mike $"
+// "$Id: fractals.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Fractal drawing demo for the Fast Light Tool Kit (FLTK).
//
@@ -64,11 +64,7 @@ int main(int, char**) {
*/
#include <FL/glut.H>
-#ifdef __APPLE__
-# include <OpenGL/glu.h>
-#else
-# include <GL/glu.h> // added for FLTK
-#endif
+#include <FL/glu.h>
#include <stdio.h>
#include <stdlib.h>
@@ -95,7 +91,7 @@ typedef enum { NOTALLOWED, MOUNTAIN, TREE, ISLAND, BIGMTN, STEM, LEAF,
#define MAXLEVEL 8
int Rebuild = 1, /* Rebuild display list in next display? */
- Fract = TREE, /* What fractal are we building */
+ fractal = TREE, /* What fractal are we building */
Level = 4; /* levels of recursion for fractals */
int DrawAxes = 0;
@@ -642,11 +638,11 @@ void display(void)
glLoadIdentity();
if (Rebuild) {
- Create(Fract);
+ Create(fractal);
Rebuild = 0;
}
- glCallList(Fract);
+ glCallList(fractal);
if (DrawAxes)
glCallList(AXES);
@@ -713,7 +709,7 @@ void setlevel(int value)
void choosefract(int value)
{
- Fract = value;
+ fractal = value;
Rebuild = 1;
glutPostRedisplay();
}
@@ -842,5 +838,5 @@ int main(int argc, char** argv)
#endif
//
-// End of "$Id: fractals.cxx 4342 2005-05-12 19:16:27Z mike $".
+// End of "$Id: fractals.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/fracviewer.cxx b/test/fracviewer.cxx
index 3a45206..bc45cc0 100644
--- a/test/fracviewer.cxx
+++ b/test/fracviewer.cxx
@@ -16,11 +16,7 @@
#if HAVE_GL && HAVE_GL_GLU_H
# include <FL/glut.H>
-# ifdef __APPLE__
-# include <OpenGL/glu.h>
-# else
-# include <GL/glu.h> // added for FLTK
-# endif
+# include <FL/glu.h>
# include <stdio.h>
# include <stdlib.h>
diff --git a/test/fullscreen.cxx b/test/fullscreen.cxx
index 15ecbbe..a2c0077 100644
--- a/test/fullscreen.cxx
+++ b/test/fullscreen.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fullscreen.cxx 4666 2005-11-28 15:35:18Z matt $"
+// "$Id: fullscreen.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Fullscreen test program for the Fast Light Tool Kit (FLTK).
//
@@ -247,5 +247,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: fullscreen.cxx 4666 2005-11-28 15:35:18Z matt $".
+// End of "$Id: fullscreen.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/gl_overlay.cxx b/test/gl_overlay.cxx
index f4cf35f..808d2ba 100644
--- a/test/gl_overlay.cxx
+++ b/test/gl_overlay.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: gl_overlay.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: gl_overlay.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// OpenGL overlay test program for the Fast Light Tool Kit (FLTK).
//
@@ -153,5 +153,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: gl_overlay.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: gl_overlay.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/glpuzzle.cxx b/test/glpuzzle.cxx
index 0c2f7ea..f4d1ca4 100644
--- a/test/glpuzzle.cxx
+++ b/test/glpuzzle.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: glpuzzle.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: glpuzzle.cxx 5620 2007-01-18 20:26:53Z matt $"
//
// OpenGL puzzle demo for the Fast Light Tool Kit (FLTK).
//
@@ -47,11 +47,7 @@ int main(int, char**) {
#include <time.h>
#include <math.h>
#include <FL/glut.H> // changed for fltk
-#ifdef __APPLE__
-# include <OpenGL/glu.h>
-#else
-# include <GL/glu.h> // added for fltk
-#endif
+#include <FL/glu.h> // added for fltk
#include "trackball.c" // changed from trackball.h for fltk
#define WIDTH 4
@@ -1314,7 +1310,7 @@ animate(void)
glutSetWindowTitle("glpuzzle");
}
}
- if (!solving && !spinning && !visible) {
+ if ((!solving && !spinning) || !visible) {
glutIdleFunc(NULL);
}
}
@@ -1486,5 +1482,5 @@ main(int argc, char **argv)
#endif // added for fltk's distribution
//
-// End of "$Id: glpuzzle.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: glpuzzle.cxx 5620 2007-01-18 20:26:53Z matt $".
//
diff --git a/test/hello.cxx b/test/hello.cxx
index 4fa8a68..f8b49fb 100644
--- a/test/hello.cxx
+++ b/test/hello.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: hello.cxx 4650 2005-11-18 10:08:13Z matt $"
+// "$Id: hello.cxx 5614 2007-01-18 15:25:09Z matt $"
//
// Hello, World! program for the Fast Light Tool Kit (FLTK).
//
@@ -28,8 +28,11 @@
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
+#include <FL/filename.H>
int main(int argc, char **argv) {
+ char b[1024];
+ fl_filename_relative(b, 1024, "/Users/matt/proj/source");
Fl_Window *window = new Fl_Window(300,180);
Fl_Box *box = new Fl_Box(FL_UP_BOX,20,40,260,100,"Hello, World!");
box->labelfont(FL_BOLD+FL_ITALIC);
@@ -41,5 +44,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: hello.cxx 4650 2005-11-18 10:08:13Z matt $".
+// End of "$Id: hello.cxx 5614 2007-01-18 15:25:09Z matt $".
//
diff --git a/test/help.cxx b/test/help.cxx
index 679abe9..ea09eff 100644
--- a/test/help.cxx
+++ b/test/help.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: help.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: help.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Fl_Help_Dialog test program.
//
@@ -65,5 +65,5 @@ main(int argc, // I - Number of command-line arguments
//
-// End of "$Id: help.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: help.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/iconize.cxx b/test/iconize.cxx
index a1c7eee..2709994 100644
--- a/test/iconize.cxx
+++ b/test/iconize.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: iconize.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: iconize.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Iconize test program for the Fast Light Tool Kit (FLTK).
//
@@ -79,5 +79,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: iconize.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: iconize.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/image.cxx b/test/image.cxx
index 0ce4db7..0592c40 100644
--- a/test/image.cxx
+++ b/test/image.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: image.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Fl_Image test program for the Fast Light Tool Kit (FLTK).
//
@@ -157,5 +157,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: image.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/input.cxx b/test/input.cxx
index 9366af4..46a8fc2 100644
--- a/test/input.cxx
+++ b/test/input.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: input.cxx 4626 2005-11-02 13:57:56Z matt $"
+// "$Id: input.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Input field test program for the Fast Light Tool Kit (FLTK).
//
@@ -61,7 +61,7 @@ void button_cb(Fl_Widget *,void *) {
void color_cb(Fl_Widget* button, void* v) {
Fl_Color c;
- switch ((int)v) {
+ switch ((long)v) {
case 0: c = FL_BACKGROUND2_COLOR; break;
case 1: c = FL_SELECTION_COLOR; break;
default: c = FL_FOREGROUND_COLOR; break;
@@ -138,5 +138,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: input.cxx 4626 2005-11-02 13:57:56Z matt $".
+// End of "$Id: input.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/input_choice.cxx b/test/input_choice.cxx
index 39fc404..c73574f 100644
--- a/test/input_choice.cxx
+++ b/test/input_choice.cxx
@@ -1,9 +1,9 @@
//
-// "$Id$"
+// "$Id: input_choice.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Test program for Fl_Input_Choice
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -40,7 +40,6 @@ void input_choice_cb(Fl_Widget*,void*data) {
}
int main(int argc, char **argv) {
- Fl::scheme("plastic"); // optional
Fl_Window win(300, 200);
Fl_Input_Choice in(40,40,100,28,"Test");
@@ -61,5 +60,5 @@ int main(int argc, char **argv) {
//
-// End of "$Id$".
+// End of "$Id: input_choice.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/keyboard.cxx b/test/keyboard.cxx
index acc5071..7ba2103 100644
--- a/test/keyboard.cxx
+++ b/test/keyboard.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: keyboard.cxx 4301 2005-04-28 17:48:04Z mike $"
+// "$Id: keyboard.cxx 5702 2007-02-21 15:49:38Z matt $"
//
// Keyboard/event test program for the Fast Light Tool Kit (FLTK).
//
@@ -42,6 +42,9 @@
#include "keyboard_ui.h"
+#include <string.h>
+
+
// these are used to identify which buttons are which:
void key_cb(Fl_Button*, void*) {}
void shift_cb(Fl_Button*, void*) {}
@@ -100,17 +103,24 @@ int main(int argc, char** argv) {
Fl_Window *window = make_window();
window->show(argc,argv);
while (Fl::wait()) {
+ const char *str;
// update all the buttons with the current key and shift state:
for (int i = 0; i < window->children(); i++) {
Fl_Widget* b = window->child(i);
if (b->callback() == (Fl_Callback*)key_cb) {
- int i = int(b->user_data());
+ int i = (long)b->user_data();
if (!i) i = b->label()[0];
- ((Fl_Button*)b)->value(Fl::event_key(i));
+ Fl_Button *btn = ((Fl_Button*)b);
+ int state = Fl::event_key(i);
+ if (btn->value()!=state)
+ btn->value(state);
} else if (b->callback() == (Fl_Callback*)shift_cb) {
- int i = int(b->user_data());
- ((Fl_Button*)b)->value(Fl::event_state(i));
+ int i = (long)b->user_data();
+ Fl_Button *btn = ((Fl_Button*)b);
+ int state = Fl::event_state(i);
+ if (btn->value()!=state)
+ btn->value(state);
}
}
@@ -133,13 +143,16 @@ int main(int argc, char** argv) {
for (int i = 0; i < int(sizeof(table)/sizeof(*table)); i++)
if (table[i].n == k) {keyname = table[i].text; break;}
}
- key_output->value(keyname);
+ if (strcmp(key_output->value(), keyname))
+ key_output->value(keyname);
- text_output->value(Fl::event_text());
+ str = Fl::event_text();
+ if (strcmp(text_output->value(), str))
+ text_output->value(str);
}
return 0;
}
//
-// End of "$Id: keyboard.cxx 4301 2005-04-28 17:48:04Z mike $".
+// End of "$Id: keyboard.cxx 5702 2007-02-21 15:49:38Z matt $".
//
diff --git a/test/keyboard.h b/test/keyboard.h
index 3aa48a8..6775f79 100644
--- a/test/keyboard.h
+++ b/test/keyboard.h
@@ -1,5 +1,5 @@
//
-// "$Id: keyboard.h 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: keyboard.h 5519 2006-10-11 03:12:15Z mike $"
//
// Keyboard/event test header for the Fast Light Tool Kit (FLTK).
//
@@ -42,5 +42,5 @@ public:
//
-// End of "$Id: keyboard.h 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: keyboard.h 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/label.cxx b/test/label.cxx
index a6b1ddf..e827c85 100644
--- a/test/label.cxx
+++ b/test/label.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: label.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: label.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Label test program for the Fast Light Tool Kit (FLTK).
//
@@ -158,5 +158,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: label.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: label.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/line_style.cxx b/test/line_style.cxx
index 91a49d0..077cd89 100644
--- a/test/line_style.cxx
+++ b/test/line_style.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: line_style.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: line_style.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Line style demo for the Fast Light Tool Kit (FLTK).
//
@@ -54,10 +54,10 @@ void test_box::draw() {
buf[3] = char(sliders[7]->value());
buf[4] = 0;
fl_line_style(
- (int)(choice[0]->mvalue()->user_data()) +
- (int)(choice[1]->mvalue()->user_data()) +
- (int)(choice[2]->mvalue()->user_data()),
- (int)(sliders[3]->value()),
+ (long)(choice[0]->mvalue()->user_data()) +
+ (long)(choice[1]->mvalue()->user_data()) +
+ (long)(choice[2]->mvalue()->user_data()),
+ (long)(sliders[3]->value()),
buf);
fl_rect(10,10,w()-20,h()-20);
fl_begin_line();
@@ -150,5 +150,5 @@ int main(int argc, char **argv) {
//
-// End of "$Id: line_style.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: line_style.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/list_visuals.cxx b/test/list_visuals.cxx
index 2e33a1b..154cdfe 100644
--- a/test/list_visuals.cxx
+++ b/test/list_visuals.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: list_visuals.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: list_visuals.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Visual list utility for the Fast Light Tool Kit (FLTK).
//
@@ -237,5 +237,5 @@ int main(int argc, char **argv) {
#endif
//
-// End of "$Id: list_visuals.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: list_visuals.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/makedepend b/test/makedepend
index 8d77450..167b25d 100644
--- a/test/makedepend
+++ b/test/makedepend
@@ -1,361 +1,388 @@
-# DO NOT DELETE
-
-unittests.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-unittests.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-unittests.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Box.H
-unittests.o: ../FL/fl_draw.H
-adjuster.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-adjuster.o: ../FL/Fl_Window.H ../FL/Fl_Adjuster.H ../FL/Fl_Valuator.H
-adjuster.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H
-arc.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-arc.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-arc.o: ../FL/Fl_Widget.H ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H
-arc.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
-ask.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-ask.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H ../FL/Fl_Button.H
-ask.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/fl_ask.H
-bitmap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-bitmap.o: ../FL/Fl_Button.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H
-bitmap.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
-boxtype.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-boxtype.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-boxtype.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H
-browser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-browser.o: ../FL/Fl_Select_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-browser.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-browser.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Double_Window.H
-browser.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Int_Input.H
-browser.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_ask.H
-button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-button.o: ../FL/Fl_Button.H
-buttons.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-buttons.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H
-buttons.o: ../FL/Fl_Button.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H
-buttons.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
-buttons.o: ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Tooltip.H
-buttons.o: ../FL/Fl_Widget.H
-checkers.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-checkers.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-checkers.o: ../FL/Fl_Widget.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H
-checkers.o: ../FL/fl_draw.H ../FL/Fl_Menu_Item.H ../FL/fl_ask.H black_1.xbm
-checkers.o: black_2.xbm black_3.xbm black_4.xbm white_1.xbm white_2.xbm
-checkers.o: white_3.xbm white_4.xbm blackking_1.xbm blackking_2.xbm
-checkers.o: blackking_3.xbm blackking_4.xbm whiteking_1.xbm whiteking_2.xbm
-checkers.o: whiteking_3.xbm whiteking_4.xbm ../FL/Fl_Box.H ../FL/Fl_Slider.H
-checkers.o: ../FL/Fl_Valuator.H ../FL/Fl_Value_Output.H
-clock.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-clock.o: ../FL/Fl_Clock.H ../FL/Fl_Widget.H ../FL/Fl_Round_Clock.H
-clock.o: ../FL/Fl_Clock.H
-colbrowser.o: ../FL/forms.H ../FL/Fl.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-colbrowser.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-colbrowser.o: ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H
-colbrowser.o: ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H
-colbrowser.o: ../FL/Fl_Box.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-colbrowser.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-colbrowser.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
-colbrowser.o: ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H
-colbrowser.o: ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
-colbrowser.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H
-colbrowser.o: ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H
-colbrowser.o: ../FL/fl_show_colormap.H ../FL/filename.H
-colbrowser.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Fl_Double_Window.H
-colbrowser.o: ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-colbrowser.o: ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-colbrowser.o: ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H ../FL/Fl_Box.H
-colbrowser.o: ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H ../FL/Fl_Input.H
-colbrowser.o: ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H ../FL/fl_ask.H
-colbrowser.o: ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H ../FL/Fl_Positioner.H
-colbrowser.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H
-color_chooser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-color_chooser.o: ../FL/Fl_Window.H ../FL/Fl_Box.H ../FL/Fl_Button.H
-color_chooser.o: ../FL/fl_show_colormap.H ../FL/Fl_Color_Chooser.H
-color_chooser.o: ../FL/Fl_Group.H ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
-color_chooser.o: ../FL/Fl_Choice.H ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H
-color_chooser.o: ../FL/Fl_Widget.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-color_chooser.o: ../FL/Fl_Image.H ../FL/x.H ../FL/Fl_Window.H
-color_chooser.o: ../FL/Fl_Group.H ../FL/fl_draw.H list_visuals.cxx
-color_chooser.o: ../config.h
-cube.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-cube.o: ../FL/Fl_Window.H ../FL/Fl_Box.H ../FL/Fl_Button.H
-cube.o: ../FL/Fl_Radio_Light_Button.H ../FL/Fl_Light_Button.H
-cube.o: ../FL/Fl_Button.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-cube.o: ../FL/Fl_Widget.H ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
-cube.o: ../FL/Fl_Group.H ../FL/gl.h
-CubeMain.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-CubeMain.o: CubeViewUI.h ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-CubeMain.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H
-CubeMain.o: ../FL/Fl_Roller.H ../FL/Fl_Valuator.H ../FL/Fl_Slider.H
-CubeMain.o: ../FL/Fl_Box.H CubeView.h ../FL/Fl_Gl_Window.H ../FL/gl.h
-CubeMain.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
-CubeView.o: CubeView.h ../config.h ../FL/Fl.H ../FL/Enumerations.H
-CubeView.o: ../FL/Fl_Export.H ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
-CubeView.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/gl.h
-cursor.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-cursor.o: ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H
-cursor.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
-cursor.o: ../FL/Fl_Choice.H ../FL/fl_draw.H ../FL/Fl_Box.H
-curve.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-curve.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-curve.o: ../FL/Fl_Widget.H ../FL/Fl_Hor_Value_Slider.H
-curve.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-curve.o: ../FL/fl_draw.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
-demo.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-demo.o: ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/filename.H ../FL/x.H
-demo.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-doublebuffer.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-doublebuffer.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-doublebuffer.o: ../FL/Fl_Widget.H ../FL/Fl_Double_Window.H ../FL/Fl_Box.H
-doublebuffer.o: ../FL/fl_draw.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H
-doublebuffer.o: ../FL/Fl_Valuator.H ../FL/math.h
-editor.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H
-editor.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-editor.o: ../FL/Fl_Widget.H ../FL/fl_ask.H ../FL/Fl_File_Chooser.H
-editor.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-editor.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Button.H
-editor.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H
-editor.o: ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H
-editor.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H
-editor.o: ../FL/Fl.H ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-editor.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_File_Input.H
-editor.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H
-editor.o: ../FL/Fl_Menu_Bar.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
-editor.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Text_Buffer.H
-fast_slow.o: fast_slow.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fast_slow.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-fast_slow.o: ../FL/Fl_Widget.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-fast_slow.o: ../FL/Fl_Box.H
-file_chooser.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Enumerations.H
-file_chooser.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-file_chooser.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H
-file_chooser.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-file_chooser.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Button.H
-file_chooser.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-file_chooser.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H
-file_chooser.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-file_chooser.o: ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H
-file_chooser.o: ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-file_chooser.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-file_chooser.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-file_chooser.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/Fl_File_Icon.H
-file_chooser.o: ../FL/Fl_Shared_Image.H ../FL/Fl_PNM_Image.H
-file_chooser.o: ../FL/Fl_Light_Button.H
-fonts.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-fonts.o: ../FL/Fl_Hold_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-fonts.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-fonts.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H ../FL/Fl_Box.H
-fonts.o: ../FL/fl_ask.H
-forms.o: ../FL/forms.H ../FL/Fl.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-forms.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-forms.o: ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H
-forms.o: ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H
-forms.o: ../FL/Fl_Box.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-forms.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-forms.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H
-forms.o: ../FL/Fl_Check_Button.H ../FL/Fl_Chart.H ../FL/Fl_Choice.H
-forms.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H
-forms.o: ../FL/Fl_Counter.H ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H
-forms.o: ../FL/fl_show_colormap.H ../FL/filename.H ../FL/Fl_File_Chooser.H
-forms.o: ../FL/Fl.H ../FL/Fl_Double_Window.H ../FL/Fl_Group.H
-forms.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H
-forms.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H
-forms.o: ../FL/Fl_File_Icon.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-forms.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-forms.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/Fl_Input.H
-forms.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H
-forms.o: ../FL/Fl_Timer.H srs.xbm
-fractals.o: ../config.h ../FL/glut.H ../FL/gl.h ../FL/Enumerations.H
-fractals.o: ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H
-fractals.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H fracviewer.h
-fractals.o: ../FL/Fl_Button.H ../FL/Fl_Group.H ../FL/Fl_Window.H
-fullscreen.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fullscreen.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-fullscreen.o: ../FL/Fl_Widget.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H
-fullscreen.o: ../FL/Fl_Valuator.H ../FL/Fl_Toggle_Light_Button.H
-fullscreen.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/math.h
-fullscreen.o: ../FL/gl.h ../FL/Fl_Gl_Window.H
-gl_overlay.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-gl_overlay.o: ../FL/Fl_Window.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H
-gl_overlay.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/Fl_Toggle_Button.H
-gl_overlay.o: ../FL/Fl_Button.H ../FL/math.h ../FL/gl.h ../FL/Fl_Gl_Window.H
-gl_overlay.o: ../FL/Fl_Window.H ../FL/Fl_Group.H
-glpuzzle.o: ../config.h ../FL/glut.H ../FL/gl.h ../FL/Enumerations.H
-glpuzzle.o: ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H
-glpuzzle.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H trackball.c
-glpuzzle.o: trackball.h
-hello.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-hello.o: ../FL/Fl_Box.H
-help.o: ../FL/Fl_Help_Dialog.H ../FL/Fl.H ../FL/Enumerations.H
-help.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-help.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Help_View.H ../FL/Fl.H
-help.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-help.o: ../FL/fl_draw.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-help.o: ../FL/Fl_Group.H ../FL/Fl_Button.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-iconize.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-iconize.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Box.H
-image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-image.o: ../FL/Fl_Button.H ../FL/Fl_Image.H ../FL/Fl_Toggle_Button.H
-image.o: ../FL/Fl_Button.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-image.o: ../FL/Fl_Widget.H list_visuals.cxx ../config.h
-inactive.o: inactive.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-inactive.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-inactive.o: ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Button.H
-inactive.o: ../FL/Fl_Light_Button.H ../FL/Fl_Check_Button.H
-inactive.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Round_Button.H
-inactive.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Input.H
-inactive.o: ../FL/Fl_Input_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-inactive.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Value_Output.H
-inactive.o: ../FL/Fl_Box.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-inactive.o: ../FL/Fl_Roller.H ../FL/Fl_Dial.H ../FL/Fl_Clock.H
-input.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-input.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H
-input.o: ../FL/Fl_Float_Input.H ../FL/Fl_Input.H ../FL/Fl_Int_Input.H
-input.o: ../FL/Fl_Secret_Input.H ../FL/Fl_Multiline_Input.H ../FL/Fl_Button.H
-input.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Color_Chooser.H
-input.o: ../FL/Fl_Group.H ../FL/Fl_Box.H ../FL/Fl_Return_Button.H
-input.o: ../FL/Fl_Choice.H ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H
-input_choice.o: ../FL/Fl_Button.H ../FL/Fl_Window.H ../FL/Fl_Input_Choice.H
-input_choice.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-input_choice.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H
-input_choice.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-input_choice.o: ../FL/Fl_Image.H ../FL/fl_draw.H
-keyboard.o: keyboard_ui.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-keyboard.o: keyboard.h ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Output.H
-keyboard.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H
-keyboard.o: ../FL/Fl_Box.H ../FL/Fl_Dial.H
-label.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-label.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-label.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Hor_Value_Slider.H
-label.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-label.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Input.H
-label.o: ../FL/Fl_Input_.H ../FL/Fl_Choice.H ../FL/fl_draw.H
-line_style.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-line_style.o: ../FL/Fl_Window.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
-line_style.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-line_style.o: ../FL/Fl_Choice.H
-list_visuals.o: ../config.h
-mandelbrot.o: mandelbrot_ui.h ../FL/Fl.H ../FL/Enumerations.H
-mandelbrot.o: ../FL/Fl_Export.H mandelbrot.h ../FL/Fl_Box.H ../FL/Fl_Slider.H
-mandelbrot.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/Fl_Window.H
-mandelbrot.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Double_Window.H
-mandelbrot.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/fl_draw.H
-menubar.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Box.H
-menubar.o: ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H
-menubar.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-menubar.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Menu_Button.H
-menubar.o: ../FL/Fl_Choice.H ../src/flstring.h ../FL/Fl_Export.H ../config.h
-menubar.o: ../FL/fl_draw.H
-message.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-message.o: ../FL/Fl_Window.H ../FL/fl_ask.H
-minimum.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-minimum.o: ../FL/Fl_Window.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-minimum.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Return_Button.H
-minimum.o: ../FL/Fl_Button.H
-navigation.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-navigation.o: ../FL/Fl_Window.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-navigation.o: ../FL/Fl_Widget.H
-output.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-output.o: ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
-output.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Box.H
-output.o: ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H
-output.o: ../FL/Fl_Slider.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
-output.o: ../FL/Fl_Input.H ../FL/fl_draw.H ../FL/Fl_Output.H
-output.o: ../FL/Fl_Multiline_Output.H ../FL/Fl_Output.H
-overlay.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-overlay.o: ../FL/Fl_Window.H ../FL/Fl_Overlay_Window.H
-overlay.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-overlay.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/fl_draw.H
-pack.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Button.H
-pack.o: ../FL/Fl_Light_Button.H ../FL/Fl_Window.H ../FL/Fl_Scroll.H
-pack.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-pack.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Value_Slider.H
-pack.o: ../FL/Fl_Pack.H ../FL/Fl_Group.H
-pixmap_browser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-pixmap_browser.o: ../FL/Fl_Box.H ../FL/Fl_Window.H ../FL/Fl_Button.H
-pixmap_browser.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-pixmap_browser.o: ../FL/Fl_File_Chooser.H ../FL/Fl_Double_Window.H
-pixmap_browser.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-pixmap_browser.o: ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-pixmap_browser.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-pixmap_browser.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-pixmap_browser.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H
-pixmap_browser.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-pixmap_browser.o: ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H
-pixmap_browser.o: ../FL/filename.H ../FL/Fl_Check_Button.H
-pixmap_browser.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-pixmap_browser.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-pixmap_browser.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/fl_message.H
-pixmap_browser.o: ../FL/fl_ask.H
-pixmap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-pixmap.o: ../FL/Fl_Button.H ../FL/Fl_Pixmap.H ../FL/Fl_Image.H porsche.xpm
-pixmap.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Multi_Label.H
-preferences.o: preferences.h ../FL/Fl.H ../FL/Enumerations.H
-preferences.o: ../FL/Fl_Export.H ../FL/Fl_Preferences.H
-preferences.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-preferences.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Group.H
-preferences.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Choice.H
-preferences.o: ../FL/Fl_Round_Button.H ../FL/Fl_Light_Button.H
-preferences.o: ../FL/Fl_Button.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-preferences.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-preferences.o: ../FL/filename.H ../FL/fl_ask.H
-radio.o: radio.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-radio.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-radio.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H
-radio.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Check_Button.H
-radio.o: ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Group.H
-resizebox.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-resizebox.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-resizebox.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Radio_Button.H
-resizebox.o: ../FL/Fl_Button.H ../FL/fl_draw.H ../FL/fl_message.H
-resizebox.o: ../FL/fl_ask.H
-resize.o: resize.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-resize.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-resize.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Box.H
-scroll.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-scroll.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-scroll.o: ../FL/Fl_Widget.H ../FL/Fl_Scroll.H ../FL/Fl_Scrollbar.H
-scroll.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Light_Button.H
-scroll.o: ../FL/Fl_Choice.H ../FL/Fl_Box.H ../FL/fl_draw.H ../FL/math.h
-shape.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-shape.o: ../FL/Fl_Window.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H
-shape.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/math.h ../FL/gl.h
-shape.o: ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-subwindow.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-subwindow.o: ../FL/Fl_Window.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
-subwindow.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-subwindow.o: ../FL/Fl_Widget.H ../FL/Fl_Image.H ../FL/Fl_Box.H
-subwindow.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H
-sudoku.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-sudoku.o: ../FL/Enumerations.H ../FL/Fl_Window.H ../FL/Fl_Button.H
-sudoku.o: ../FL/Fl_Group.H ../FL/fl_ask.H ../FL/fl_draw.H
-sudoku.o: ../FL/Fl_Help_Dialog.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-sudoku.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Help_View.H ../FL/Fl.H
-sudoku.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-sudoku.o: ../FL/fl_draw.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-sudoku.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Preferences.H
-sudoku.o: ../FL/Fl_Sys_Menu_Bar.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H
-sudoku.o: ../FL/Fl_Menu_Item.H ../FL/x.H sudoku.xbm
-symbols.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-symbols.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-symbols.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Value_Slider.H
-symbols.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
-tabs.o: tabs.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-tabs.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-tabs.o: ../FL/Fl_Widget.H ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Input.H
-tabs.o: ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/fl_ask.H ../FL/Fl_Clock.H
-tabs.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
-threads.o: ../config.h ../FL/fl_ask.H ../FL/Enumerations.H ../FL/Fl_Export.H
-tile.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-tile.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-tile.o: ../FL/Fl_Widget.H ../FL/Fl_Tile.H ../FL/Fl_Box.H
-tiled_image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-tiled_image.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Pixmap.H
-tiled_image.o: ../FL/Fl_Image.H ../FL/Fl_Tiled_Image.H tile.xpm ../FL/x.H
-tiled_image.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-tiled_image.o: list_visuals.cxx ../config.h
-valuators.o: valuators.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-valuators.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-valuators.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Slider.H
-valuators.o: ../FL/Fl_Valuator.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
-valuators.o: ../FL/Fl_Adjuster.H ../FL/Fl_Counter.H ../FL/Fl_Dial.H
-valuators.o: ../FL/Fl_Roller.H ../FL/Fl_Value_Input.H ../FL/Fl_Input.H
-valuators.o: ../FL/Fl_Input_.H ../FL/Fl_Value_Output.H ../FL/Fl_Scrollbar.H
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+unittests.o: unittests.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Box.H \
+ ../FL/fl_draw.H
+adjuster.o: adjuster.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Adjuster.H ../FL/Fl_Valuator.H ../FL/Fl_Box.H
+arc.o: arc.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
+ask.o: ask.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H ../FL/fl_ask.H
+bitmap.o: bitmap.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/Fl_Toggle_Button.H \
+ ../FL/Fl_Button.H
+blocks.o: blocks.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_XPM_Image.H ../FL/Fl_Pixmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_XBM_Image.H ../FL/Fl_Bitmap.H ../FL/Fl_Tiled_Image.H \
+ ../FL/fl_draw.H ../FL/x.H ../config.h pixmaps/blast.xpm pixmaps/red.xpm \
+ pixmaps/red_bomb.xpm pixmaps/green.xpm pixmaps/green_bomb.xpm \
+ pixmaps/blue.xpm pixmaps/blue_bomb.xpm pixmaps/yellow.xpm \
+ pixmaps/yellow_bomb.xpm pixmaps/cyan.xpm pixmaps/cyan_bomb.xpm \
+ pixmaps/magenta.xpm pixmaps/magenta_bomb.xpm pixmaps/gray.xpm \
+ pixmaps/gray_bomb.xpm
+boxtype.o: boxtype.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H
+browser.o: browser.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Select_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Int_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_ask.H
+button.o: button.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H
+buttons.o: buttons.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/Fl_Repeat_Button.H \
+ ../FL/Fl.H ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Tooltip.H \
+ ../FL/Fl_Widget.H
+checkers.o: checkers.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H \
+ ../FL/fl_draw.H ../FL/Fl_Menu_Item.H ../FL/fl_ask.H pixmaps/black_1.xbm \
+ pixmaps/black_2.xbm pixmaps/black_3.xbm pixmaps/black_4.xbm \
+ pixmaps/white_1.xbm pixmaps/white_2.xbm pixmaps/white_3.xbm \
+ pixmaps/white_4.xbm pixmaps/blackking_1.xbm pixmaps/blackking_2.xbm \
+ pixmaps/blackking_3.xbm pixmaps/blackking_4.xbm pixmaps/whiteking_1.xbm \
+ pixmaps/whiteking_2.xbm pixmaps/whiteking_3.xbm pixmaps/whiteking_4.xbm \
+ ../FL/Fl_Box.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Value_Output.H
+clock.o: clock.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Clock.H \
+ ../FL/Fl_Round_Clock.H ../FL/Fl_Clock.H
+colbrowser.o: colbrowser.cxx ../FL/forms.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/fl_draw.H \
+ ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H ../FL/Fl_Box.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H ../FL/fl_show_colormap.H \
+ ../FL/filename.H ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H
+color_chooser.o: color_chooser.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/fl_show_colormap.H \
+ ../FL/Fl_Color_Chooser.H ../FL/Fl_Group.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Value_Input.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Image.H \
+ ../FL/x.H ../FL/Fl_Window.H ../FL/fl_draw.H list_visuals.cxx \
+ ../config.h
+cube.o: cube.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/Fl_Radio_Light_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H ../FL/gl.h
+CubeMain.o: CubeMain.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H CubeViewUI.h ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H \
+ ../FL/Fl_Roller.H ../FL/Fl_Valuator.H ../FL/Fl_Slider.H ../FL/Fl_Box.H \
+ CubeView.h ../config.h ../FL/Fl_Gl_Window.H ../FL/gl.h \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
+CubeView.o: CubeView.cxx CubeView.h ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/gl.h
+cursor.o: cursor.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H ../FL/Fl_Box.H
+curve.o: curve.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
+demo.o: demo.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H \
+ ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/filename.H ../FL/x.H \
+ ../FL/Fl_Window.H
+doublebuffer.o: doublebuffer.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Box.H ../FL/fl_draw.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/math.h
+editor.o: editor.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/fl_ask.H \
+ ../FL/Fl_File_Chooser.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H \
+ ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H ../FL/Fl_Box.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Text_Buffer.H \
+ ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Text_Buffer.H
+fast_slow.o: fast_slow.cxx fast_slow.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Box.H
+file_chooser.o: file_chooser.cxx ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H \
+ ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H \
+ ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_File_Icon.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_PNM_Image.H ../FL/Fl_Light_Button.H
+fonts.o: fonts.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Hold_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/fl_draw.H ../FL/Fl_Box.H ../FL/fl_ask.H
+forms.o: forms.cxx ../FL/forms.H ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Window.H \
+ ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H \
+ ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H \
+ ../FL/Fl_Box.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Chart.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H \
+ ../FL/Fl_Counter.H ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H \
+ ../FL/fl_show_colormap.H ../FL/filename.H ../FL/Fl_File_Chooser.H \
+ ../FL/Fl.H ../FL/Fl_Double_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H \
+ pixmaps/srs.xbm
+fractals.o: fractals.cxx ../config.h ../FL/glut.H ../FL/gl.h \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/glu.h \
+ fracviewer.h ../FL/Fl_Button.H ../FL/Fl_Group.H ../FL/Fl_Window.H
+fullscreen.o: fullscreen.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Hor_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Toggle_Light_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/math.h ../FL/gl.h \
+ ../FL/Fl_Gl_Window.H
+gl_overlay.o: gl_overlay.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/math.h ../FL/gl.h \
+ ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
+glpuzzle.o: glpuzzle.cxx ../config.h ../FL/glut.H ../FL/gl.h \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/glu.h \
+ trackball.c trackball.h
+hello.o: hello.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H \
+ ../FL/filename.H
+help.o: help.cxx ../FL/Fl_Help_Dialog.H ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Button.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Box.H ../FL/Fl_Help_View.H \
+ ../FL/Fl.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/fl_draw.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
+iconize.o: iconize.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Box.H
+image.o: image.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Image.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/x.H \
+ ../FL/Fl_Window.H list_visuals.cxx ../config.h
+inactive.o: inactive.cxx inactive.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Value_Output.H ../FL/Fl_Box.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Roller.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Clock.H
+input.o: input.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Float_Input.H ../FL/Fl_Input.H \
+ ../FL/Fl_Int_Input.H ../FL/Fl_Secret_Input.H ../FL/Fl_Multiline_Input.H \
+ ../FL/Fl_Button.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Color_Chooser.H ../FL/Fl_Group.H ../FL/Fl_Box.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Value_Input.H \
+ ../FL/Fl_Valuator.H
+input_choice.o: input_choice.cxx ../FL/Fl_Button.H ../FL/Fl_Widget.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Input_Choice.H ../FL/Fl.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
+keyboard.o: keyboard.cxx keyboard_ui.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H keyboard.h ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Output.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Box.H ../FL/Fl_Dial.H ../FL/Fl_Valuator.H
+label.o: label.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Hor_Value_Slider.H \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
+line_style.o: line_style.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/fl_draw.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H
+list_visuals.o: list_visuals.cxx ../config.h
+mandelbrot.o: mandelbrot.cxx mandelbrot_ui.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H mandelbrot.h ../FL/Fl_Box.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/fl_draw.H
+menubar.o: menubar.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Box.H ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Choice.H ../src/flstring.h \
+ ../FL/Fl_Export.H ../config.h ../FL/fl_draw.H
+message.o: message.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_ask.H
+minimum.o: minimum.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Box.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H
+navigation.o: navigation.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H
+output.o: output.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Box.H ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Input.H ../FL/fl_draw.H ../FL/Fl_Output.H \
+ ../FL/Fl_Multiline_Output.H ../FL/Fl_Output.H
+overlay.o: overlay.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Overlay_Window.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Button.H ../FL/fl_draw.H
+pack.o: pack.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Button.H ../FL/Fl_Widget.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Scroll.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
+pixmap_browser.o: pixmap_browser.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Box.H ../FL/Fl_Widget.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Button.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Image.H ../FL/Fl_File_Chooser.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Menu_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H \
+ ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/fl_message.H \
+ ../FL/fl_ask.H
+pixmap.o: pixmap.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Pixmap.H ../FL/Fl_Image.H pixmaps/porsche.xpm \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Multi_Label.H
+preferences.o: preferences.cxx preferences.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Group.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Round_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Box.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/filename.H ../FL/fl_ask.H
+radio.o: radio.cxx radio.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H \
+ ../FL/Fl_Group.H
+resizebox.o: resizebox.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H \
+ ../FL/Fl_Radio_Button.H ../FL/Fl_Button.H ../FL/fl_draw.H \
+ ../FL/fl_message.H ../FL/fl_ask.H
+resize.o: resize.cxx resize.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Box.H
+scroll.o: scroll.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Scroll.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Box.H ../FL/fl_draw.H \
+ ../FL/math.h
+shape.o: shape.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/math.h ../FL/gl.h ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
+subwindow.o: subwindow.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Box.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H
+sudoku.o: sudoku.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Enumerations.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Group.H ../FL/fl_ask.H \
+ ../FL/fl_draw.H ../FL/Fl_Help_Dialog.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Box.H \
+ ../FL/Fl_Help_View.H ../FL/Fl.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/fl_draw.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Image.H ../FL/Fl_Preferences.H ../FL/Fl_Sys_Menu_Bar.H \
+ ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/x.H \
+ ../FL/math.h pixmaps/sudoku.xbm ../config.h
+symbols.o: symbols.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Value_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
+tabs.o: tabs.cxx tabs.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Tabs.H ../FL/Fl_Group.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/fl_ask.H \
+ ../FL/Fl_Clock.H ../FL/Fl_Wizard.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H
+threads.o: threads.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Value_Output.H threads.h
+tile.o: tile.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Tile.H ../FL/Fl_Box.H
+tiled_image.o: tiled_image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Button.H ../FL/Fl_Pixmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_Tiled_Image.H pixmaps/tile.xpm ../FL/x.H ../FL/Fl_Window.H \
+ list_visuals.cxx ../config.h
+valuators.o: valuators.cxx valuators.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Value_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Value_Output.H ../FL/Fl_Scrollbar.H ../FL/Fl_Adjuster.H \
+ ../FL/Fl_Counter.H ../FL/Fl_Spinner.H ../FL/Enumerations.H \
+ ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H \
+ ../FL/Fl_Button.H ../FL/Fl_Dial.H ../FL/Fl_Roller.H
diff --git a/test/mandelbrot.cxx b/test/mandelbrot.cxx
index c341d0a..282cefb 100644
--- a/test/mandelbrot.cxx
+++ b/test/mandelbrot.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: mandelbrot.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: mandelbrot.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Mandelbrot set demo for the Fast Light Tool Kit (FLTK).
//
@@ -199,5 +199,5 @@ void Drawing_Area::resize(int XX,int YY,int WW,int HH) {
}
//
-// End of "$Id: mandelbrot.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: mandelbrot.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/mandelbrot.h b/test/mandelbrot.h
index 5b72262..0cd26fd 100644
--- a/test/mandelbrot.h
+++ b/test/mandelbrot.h
@@ -1,5 +1,5 @@
//
-// "$Id: mandelbrot.h 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: mandelbrot.h 5519 2006-10-11 03:12:15Z mike $"
//
// Mandelbrot set header file for the Fast Light Tool Kit (FLTK).
//
@@ -70,5 +70,5 @@ public:
};
//
-// End of "$Id: mandelbrot.h 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: mandelbrot.h 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/mandelbrot_ui.fl b/test/mandelbrot_ui.fl
index e4a9e7f..bb7afe8 100644
--- a/test/mandelbrot_ui.fl
+++ b/test/mandelbrot_ui.fl
@@ -1,8 +1,7 @@
# data file for the Fltk User Interface Designer (fluid)
-version 0.99
-gridx 10
-gridy 10
-snap 3
+version 1.0108
+header_name {.h}
+code_name {.cxx}
decl {\#include "mandelbrot.h"} {public
}
@@ -12,12 +11,12 @@ class Drawing_Window {open
} {
Function {make_window()} {open return_type void
} {
- Fl_Window window {open
- xywh {178 479 450 520} resizable
+ Fl_Window window {open selected
+ xywh {178 479 450 520} type Single resizable
code0 {o->size_range(220,220);} visible
} {
Fl_Box d {
- user_data this user_data_type {void*} selected
+ user_data this user_data_type {void*}
xywh {20 80 410 430} box DOWN_BOX color 0 selection_color 47 resizable
class Drawing_Area
}
diff --git a/test/menubar.cxx b/test/menubar.cxx
index 765c892..3e90b97 100644
--- a/test/menubar.cxx
+++ b/test/menubar.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: menubar.cxx 4763 2006-01-16 23:22:32Z matt $"
+// "$Id: menubar.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Menubar test program for the Fast Light Tool Kit (FLTK).
//
@@ -184,9 +184,11 @@ int main(int argc, char **argv) {
menubar.callback(test_cb);
menus[0] = &menubar;
Fl_Menu_Button mb1(100,100,120,25,"&menubutton"); mb1.menu(pulldown);
+ mb1.tooltip("this is a menu button");
mb1.callback(test_cb);
menus[1] = &mb1;
Fl_Choice ch(300,100,80,25,"&choice:"); ch.menu(pulldown);
+ ch.tooltip("this is a choice menu");
ch.callback(test_cb);
menus[2] = &ch;
Fl_Menu_Button mb(0,0,WIDTH,400,"&popup");
@@ -205,5 +207,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: menubar.cxx 4763 2006-01-16 23:22:32Z matt $".
+// End of "$Id: menubar.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/message.cxx b/test/message.cxx
index 8a7af54..bee5750 100644
--- a/test/message.cxx
+++ b/test/message.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: message.cxx 4626 2005-11-02 13:57:56Z matt $"
+// "$Id: message.cxx 5805 2007-05-09 12:42:39Z matt $"
//
// Message test program for the Fast Light Tool Kit (FLTK).
//
@@ -38,8 +38,15 @@ int main(int argc, char **argv) {
fl_message("Spelling check sucessful, %d errors found with %g%% confidence",
1002, 100*(15/77.0));
- fl_alert("Quantum fluctuations in the space-time continuum detected, "
- "you have %g seconds to comply.", 10.0);
+ fl_alert(
+ "Quantum fluctuations in the space-time continuum detected,\n"
+ "you have %g seconds to comply.\n\n"
+ "\"In physics, spacetime is any mathematical model that combines\n"
+ "space and time into a single construct called the space-time\n"
+ "continuum. Spacetime is usually interpreted with space being\n"
+ "three-dimensional and time playing the role of the\n"
+ "fourth dimension.\" - Wikipedia",
+ 10.0);
printf("fl_choice returned %d\n",
fl_choice("Do you really want to %s?", "No", "Yes", 0L, "continue"));
@@ -59,5 +66,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: message.cxx 4626 2005-11-02 13:57:56Z matt $".
+// End of "$Id: message.cxx 5805 2007-05-09 12:42:39Z matt $".
//
diff --git a/test/minimum.cxx b/test/minimum.cxx
index a07b939..dd1b9ab 100644
--- a/test/minimum.cxx
+++ b/test/minimum.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: minimum.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: minimum.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Minimal update test program for the Fast Light Tool Kit (FLTK).
//
@@ -76,5 +76,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: minimum.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: minimum.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/navigation.cxx b/test/navigation.cxx
index 48c8d0d..e46491d 100644
--- a/test/navigation.cxx
+++ b/test/navigation.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: navigation.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: navigation.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Navigation test program for the Fast Light Tool Kit (FLTK).
//
@@ -68,5 +68,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: navigation.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: navigation.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/output.cxx b/test/output.cxx
index 34264a8..9bbf858 100644
--- a/test/output.cxx
+++ b/test/output.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: output.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: output.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Output test program for the Fast Light Tool Kit (FLTK).
//
@@ -101,5 +101,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: output.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: output.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/overlay.cxx b/test/overlay.cxx
index f75352e..6414722 100644
--- a/test/overlay.cxx
+++ b/test/overlay.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: overlay.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: overlay.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Overlay window test program for the Fast Light Tool Kit (FLTK).
//
@@ -82,5 +82,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: overlay.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: overlay.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/pack.cxx b/test/pack.cxx
index 7e129bf..3bd15bd 100644
--- a/test/pack.cxx
+++ b/test/pack.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: pack.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: pack.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Fl_Pack test program for the Fast Light Tool Kit (FLTK).
//
@@ -116,5 +116,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: pack.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: pack.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/pixmap.cxx b/test/pixmap.cxx
index 963dbca..5dec973 100644
--- a/test/pixmap.cxx
+++ b/test/pixmap.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: pixmap.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: pixmap.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Pixmap label test program for the Fast Light Tool Kit (FLTK).
//
@@ -31,7 +31,7 @@
#include <FL/Fl_Pixmap.H>
#include <stdio.h>
-#include "porsche.xpm"
+#include "pixmaps/porsche.xpm"
#include <FL/Fl_Toggle_Button.H>
@@ -98,5 +98,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: pixmap.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: pixmap.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/pixmap_browser.cxx b/test/pixmap_browser.cxx
index f86949b..f805fbb 100644
--- a/test/pixmap_browser.cxx
+++ b/test/pixmap_browser.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: pixmap_browser.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: pixmap_browser.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// A shared image test program for the Fast Light Tool Kit (FLTK).
//
@@ -119,5 +119,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: pixmap_browser.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: pixmap_browser.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/black_1.xbm b/test/pixmaps/black_1.xbm
index a9d800f..a9d800f 100644
--- a/test/black_1.xbm
+++ b/test/pixmaps/black_1.xbm
diff --git a/test/black_2.xbm b/test/pixmaps/black_2.xbm
index b324fd1..b324fd1 100644
--- a/test/black_2.xbm
+++ b/test/pixmaps/black_2.xbm
diff --git a/test/black_3.xbm b/test/pixmaps/black_3.xbm
index ead6e08..ead6e08 100644
--- a/test/black_3.xbm
+++ b/test/pixmaps/black_3.xbm
diff --git a/test/black_4.xbm b/test/pixmaps/black_4.xbm
index 4132263..4132263 100644
--- a/test/black_4.xbm
+++ b/test/pixmaps/black_4.xbm
diff --git a/test/blackking_1.xbm b/test/pixmaps/blackking_1.xbm
index f764ead..f764ead 100644
--- a/test/blackking_1.xbm
+++ b/test/pixmaps/blackking_1.xbm
diff --git a/test/blackking_2.xbm b/test/pixmaps/blackking_2.xbm
index 9be617b..9be617b 100644
--- a/test/blackking_2.xbm
+++ b/test/pixmaps/blackking_2.xbm
diff --git a/test/blackking_3.xbm b/test/pixmaps/blackking_3.xbm
index b4a6883..b4a6883 100644
--- a/test/blackking_3.xbm
+++ b/test/pixmaps/blackking_3.xbm
diff --git a/test/blackking_4.xbm b/test/pixmaps/blackking_4.xbm
index a707862..a707862 100644
--- a/test/blackking_4.xbm
+++ b/test/pixmaps/blackking_4.xbm
diff --git a/test/pixmaps/blast.xpm b/test/pixmaps/blast.xpm
new file mode 100644
index 0000000..19d0bc7
--- /dev/null
+++ b/test/pixmaps/blast.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * blast_xpm[] = {
+"32 32 32 1",
+" c #905518",
+". c #9F580E",
+"+ c #A36526",
+"@ c #AF6519",
+"# c #BF7429",
+"$ c #C77622",
+"% c #B67B3C",
+"& c #D07518",
+"* c #D88836",
+"= c #E48628",
+"- c #F28514",
+"; c #FF951C",
+"> c #FA9835",
+", c #FF982A",
+"' c #F49F48",
+") c #FFA82D",
+"! c #FFA93F",
+"~ c #FFBA1C",
+"{ c #FFB936",
+"] c #FFBA4C",
+"^ c #FFCA42",
+"/ c #FFD329",
+"( c #FFCF5E",
+"_ c #FFD94C",
+": c #FFE946",
+"< c #FFFB3E",
+"[ c #FFFB55",
+"} c #FEFC69",
+"| c #FFFE82",
+"1 c #FFFFA3",
+"2 c #FEFFCB",
+"3 c #FEFFFC",
+" % . ....@@@#@@.+.+++% ",
+" %%++++.....@######@@@@.++ % ",
+" %%% %++@@.@@@#$$#######@++++%% ",
+" %%+%+####@@$&&=*=&&$$####@++%%+",
+"+%+%#####&&&&&==='===*$$###%%%%+",
+"%+%%%%**=*&&&&>,>,>-=>==*$*##%%%",
+" %#****'=>---,))!),>>>==***#%#+",
+" @%*'''>>>>;;,{{{))))>>>''**#%+",
+" ..@#*'!]]]{)){^__^^{]!!!'''###+",
+" ..@$=']]((^^~~:::/__^{((!>**##@",
+"....&&=>(_|[::/<}[<[::_((!>==###",
+"....&&--!_}|}[<[}[}}}||_]!>>**##",
+"@@$$&&--;{:|1|[<|}|}||}_^]>>=*##",
+"##$$=-,;)~~<121<2|121}}:^])>=*$#",
+"#*'''!]{^_<<<1313332|}}}^{!>>*##",
+"%*'']((|}}||||<333321|[[_^]>==*#",
+"*''''((||112333333321|}[_^]!>=*#",
+"%%*''!]^_[[[}<13332}<[<:_])>>*$#",
+"##*==,,)~_:<[|212311}[</{),,=*$#",
+"#@$$==,;)~/<|1<2|<1}|[:^{)-=&&$@",
+".@@$&&-;)~:|}<<1}[|}[[:^{,-=&$@@",
+"..@@&&-;)(}[/<[|[<<}<:_^{),=&$@.",
+"...@&&=,{_(~~:[[<</[[^~]!>>=&$@@",
+" .@@$&'!({;;{/}::/~/_^)),>=*$#@+",
+" ..@$=''>,-;)^__~^{)^]),,==*$#@@",
+". @##*'==&--){({));;,{>>==$$#@++",
+"%++#%**$&&--,!));;;-->>=&$$##@+%",
+" +%%##@@@@&=>>>>>>=-==='$$#@@+++",
+" %%+@@..&.$&='==-&&&&&$*$#@@.+% ",
+" %%+ ....@$$*==&$&&&@$$##@@+ % ",
+" % ....@#*#$$$#@@@@@##+@++ ",
+" ..@####@@@@@..+@++% "};
diff --git a/test/pixmaps/block.xcf.gz b/test/pixmaps/block.xcf.gz
new file mode 100644
index 0000000..d35488a
--- /dev/null
+++ b/test/pixmaps/block.xcf.gz
Binary files differ
diff --git a/test/pixmaps/blue.xpm b/test/pixmaps/blue.xpm
new file mode 100644
index 0000000..89c412e
--- /dev/null
+++ b/test/pixmaps/blue.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * blue_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #0000A5",
+"+ c #020681",
+"@ c #0A008F",
+"# c #0001B2",
+"$ c #0100BA",
+"% c #0000D0",
+"& c #0C00C4",
+"* c #0008C4",
+"= c #0B00DB",
+"- c #13252E",
+"; c #171F44",
+"> c #1718B3",
+", c #1616C2",
+"' c #2628CF",
+") c #2C2BC6",
+"! c #2D30BD",
+"~ c #3D40D1",
+"{ c #4342BC",
+"] c #4344CA",
+"^ c #5253E1",
+"/ c #5858D4",
+"( c #5F5ECF",
+"_ c #6A69E7",
+": c #6E6EDD",
+"< c #7273D2",
+"[ c #7E7FDD",
+"} c #7E7FEC",
+"| c #8D8DDF",
+"1 c #8F90EF",
+"2 c #9D9EED",
+"3 c #A6A6E8",
+" ;+.*$##$$**$*$#$*&&.+; ",
+" -@&)_133333333333333|:!$@- ",
+" ;%%}22122222222233333333['$; ",
+" -&'1111111|2|21111|2223|332'&- ",
+" @*}}}}1}}}1}1111111[|[||||||*. ",
+";&/}[}}}}}}}[[[}}}}}[}[[||||[:&;",
+"+'::::_____:::<::__}_}:<<<<<[<)+",
+">)/_/_____::(::::_____:(<<<<<<].",
+"*^//^/////(((((//_^_^_///(((((/$",
+"#]]]]^^{/{{{{/{//^^^^^^///{(((($",
+".]~~~~]{{{{{{{]{]~~~~~~~]{]{{{(.",
+"#))))!!!{{{]!~!!~~'~''~~~]{{{{{.",
+"#))))!!!@!>!!))))''''''~)!!!{{+.",
+"$,,>>>@!>>)>,'''''''''''))!>!!!.",
+"$,,#>>>>.>,,&*%*'*''*',,,,,>>>>#",
+"&%%$#...#&&%*%***%%&*$,***,>#>>#",
+"$&%&*###&&%%&&&&,*&*,##$*$$#$$#$",
+"$&%%$$$*&%&**$$$&&&&&$#$***#,#.#",
+"$$$&$*&%%=&&$##$$**&&$**&&&$$#..",
+".#$$&&%%%%%&,....##$#$$&%%&&$#.#",
+".#$$&%%===%%&#.....###$&%%%&&#.#",
+"$$&&%=====%%$##.@..#.##&&&%%&$$#",
+"$$&&%==%==%&$###.....##$%&%&&$$$",
+"$$$&&%%%%%&&$$###..###$$&%&%&&$$",
+".$$&&&&$$&$$*&&*$$#$$$$$$%%%%%&.",
+"+$$$$&####$&$&&&&&$$&$$$$&%=%%=+",
+";##$$$#....$$&&&$&&%&&$$*&%==%%;",
+" @$,#$#.@..##.#$&&%%%&$&&=%%%%. ",
+" -$*$&&$.......#&&&%&&$&%==%%&- ",
+" ;$&&$#...#...$&%%%&&$&%=%=%; ",
+" -@%&$#..#...#$%&&&&&&&=%.- ",
+" ;+.#$#....#&&%%&&&&#+; "};
diff --git a/test/pixmaps/blue_bomb.xpm b/test/pixmaps/blue_bomb.xpm
new file mode 100644
index 0000000..72c267e
--- /dev/null
+++ b/test/pixmaps/blue_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * blue_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #010047",
+"+ c #00033E",
+"@ c #010345",
+"# c #010577",
+"$ c #0000A4",
+"% c #0001B7",
+"& c #0000C3",
+"* c #0000D0",
+"= c #13252E",
+"- c #1A2147",
+"; c #1E1E57",
+"> c #2023BC",
+", c #2526CD",
+"' c #343364",
+") c #363699",
+"! c #3237C5",
+"~ c #373BB4",
+"{ c #474875",
+"] c #4E4FD4",
+"^ c #5252C6",
+"/ c #5B5A85",
+"( c #6D6D94",
+"_ c #6666CE",
+": c #6465DE",
+"< c #6E6CAC",
+"[ c #7B7CDA",
+"} c #7C7DEB",
+"| c #8D8DDF",
+"1 c #8F90EF",
+"2 c #9D9EED",
+"3 c #A6A6E8",
+" -#$&%%%%%&&&&%%%&&&$#- ",
+" =$*,:133333333333333|}>%$= ",
+" -&,}22122222322233333333[>%- ",
+" =&,}111111|2|21111|22322332,&= ",
+" $,[1}1}1}}1}1111111[1|||<|||&$ ",
+"-%]}}}}}}}}}[[[}}}}}}[[[||||1:&-",
+"#,:_}:::}::[<((((((<[}}[[[[<[[,#",
+"%!:::::::_<(((((((((/<_:___[__]$",
+"&]]]]]]]://///(////////_^::___]%",
+"%]]]]]]^{{{/{{/{/{</{/{/^^^^^_^%",
+"$!!!!!]'{{{={{{{{{'{{{{{']]~^^^$",
+"%,!,!>)''-{''''''''''''{')]~~~~$",
+"%,>,!>)-'-'-''''''';''''')!!~~~$",
+"&,,$>>--;;-;;;;;;;;;);;;;->>>#!$",
+"&&&,$$;+;+;+;@;;.;;;;;;;;;%>,>>%",
+"%&&&$$++@+..@...;..@.@;@.;%,$%$%",
+"&&*&&%+++..@@@@@@@@@+@++@+%%%%%%",
+"&&&&%%+@+.@@+++@++@@@++++@&%%%$%",
+"%&&&&&+....+++++@+@+@+@@@@&%%%$$",
+"$%%&%&#.@..@+++++++++++@@#&&%$$$",
+"$%%%&*$....@+++++++++++@.$*&&%%$",
+"%%&&***#...@+++-++++++++#***&%%%",
+"&%&&***&...@+++++++++++@$&**&%%%",
+"&%%&****$.@@+++++++++++$&&*&&&&&",
+"$%%&&&&%&$#+@@+++++++#$%&&****&$",
+"#%%%%&%%$%$$#@.@@@+#$%%%%&*****#",
+"-%%%%%%$$$$%%%&%%&&&&%%&&&*****-",
+" $%%%&$$$$$$%$$%&&**&&%&******$ ",
+" =%%&&&$$$$$$$$%&&***%%&*****&= ",
+" -&&&&%$$$$$$$%%***&&&&****&- ",
+" =$&%%%$%$$$$%&&&&&&&&***$= ",
+" -#$%%%%$$$%%&&&&&&&%#- "};
diff --git a/test/pixmaps/cyan.xpm b/test/pixmaps/cyan.xpm
new file mode 100644
index 0000000..37f74d6
--- /dev/null
+++ b/test/pixmaps/cyan.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * cyan_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #143144",
+"+ c #0A4350",
+"@ c #038080",
+"# c #029795",
+"$ c #00A3A5",
+"% c #00ABAC",
+"& c #02B3B5",
+"* c #00BBBB",
+"= c #00C0C0",
+"- c #19B9BB",
+"; c #33B5B5",
+"> c #00CCCB",
+", c #12C5C5",
+"' c #47B2B1",
+") c #1AC9C9",
+"! c #09D2D1",
+"~ c #37C9CA",
+"{ c #46C5C6",
+"] c #24D9D8",
+"^ c #5CC5C3",
+"/ c #4BD0D1",
+"( c #55D8DA",
+"_ c #72D4D3",
+": c #53E3E3",
+"< c #66E0E2",
+"[ c #7EE2E1",
+"} c #70ECED",
+"| c #94E0E1",
+"1 c #8DEFED",
+"2 c #A1ECEC",
+"3 c #ADE8E6",
+" +@$=*&&&***=*&&&*==$@+ ",
+" .#>![123333222233323|<~*#. ",
+" +,]}1211212222212232333||**+ ",
+" .,]1211111222221112|||||3||>>. ",
+" #)[11111}}11[11111111[|||||[!# ",
+"+*<}<<}}1}1}[[[1}1}}1[[___|_|<>+",
+"@)_[[<}}}}}<[__<<}}}}1[___|^|_)@",
+"%](((<<<<<__/___[}}}}:[__^_^^_^%",
+"-(((((((((_{{_{/_(}:}<<<(___^^/*",
+"&////(/{{{{^/{{^/]:::::(_(/{^{^&",
+"%{//!/{;';{;{{~{{/]:]:]/~~/{^{;%",
+"%==,~,*;;;;'*~~~~~/!]]()~{{{;''#",
+";>/**;;;&;-;;~,)))//!!]~=---;';$",
+"*>=*;%;%;--*,)!)!>)!~!))~=~--%;%",
+";),=;%%%--))))!))!)))~,)),{--&;%",
+"=)>**%$%*=)>!>)),,))--*=)=***;**",
+"*)!>**%&=)!,,,===,,,*;*;==**&*&&",
+"*,>,=***>!),**-*=,,>=***,=*&*&%&",
+"*&==**,>>!>=&%&&***=***=>,=*%%%%",
+"%****>>!!!!>*%%%%%&*&**,>>>==%$$",
+"%%*==>!]]!!>*%%$$%%%*%=,>>>>>*%%",
+"%==,!]]]]]!>*&$$##$%%%&*,>>>*=&;",
+"**=>!]]]]]!>**%$$#%%%%*=,>>>=**&",
+"***,)!!!!!,****=%%#%%%&*=>>>>==*",
+"$*&=,),**,=*======***==**,>>>>>%",
+"@=&-*=&%%&&*==>>======*&=,>]]!!@",
+"+&&=&*&%$%%*****==,>,=*==!!!]]!+",
+" #&&=*&$$#$%%%%*=,>>>=*=,!!!!!# ",
+" .&====%%$%%%$$%=>>>)=*,!]]!!,. ",
+" +*,==*%#$$%#%*=>!>,=-,!]]!!+ ",
+" .#,=*%%%%$#$&=,>,,,=,)!]$. ",
+" +@$&*%%%$$%,,,,,,,,%@+ "};
diff --git a/test/pixmaps/cyan_bomb.xpm b/test/pixmaps/cyan_bomb.xpm
new file mode 100644
index 0000000..4936f84
--- /dev/null
+++ b/test/pixmaps/cyan_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * cyan_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #003A3A",
+"+ c #133244",
+"@ c #004241",
+"# c #0A4551",
+"$ c #084948",
+"% c #1B5353",
+"& c #006C6D",
+"* c #286261",
+"= c #396767",
+"- c #0F8080",
+"; c #019795",
+"> c #507B7C",
+", c #00A7A9",
+"' c #5D8989",
+") c #00B7B7",
+"! c #00C1C1",
+"~ c #2FB2B3",
+"{ c #6D9A9A",
+"] c #00CAC9",
+"^ c #4AB4B3",
+"/ c #05D4D2",
+"( c #36C8C9",
+"_ c #53C4C3",
+": c #46D3D4",
+"< c #61D3D3",
+"[ c #75CECE",
+"} c #6FE2E1",
+"| c #82DFDE",
+"1 c #94E0E1",
+"2 c #89EFED",
+"3 c #A2ECEC",
+" #-,!))~))!)!!)~)!!!,-# ",
+" +;]:}2333333333333331<();+ ",
+" #!/}23333333333333333333[!!# ",
+" +!/322222221332223311111111:!+ ",
+" ;:2222222222|23222233111111|/; ",
+"#!:}|}222222|||}22222}|1[1[[1}]#",
+"-:<}}}}}}}}[^{{{{{{[[2}|[[[[[|!-",
+",:}:}:}}}<{'''''''{'{{[<<|[[[<_,",
+"!:<<:}::_'>'>>'>'''''''[<<<[_<:!",
+")(:::::^>>>>>>>>>>>''''>_::____~",
+",((:::(>===>=>=>>>=>>>>>'(:___^,",
+"~(((](;===#========&&=*=*^(_^^~;",
+")](()_&%%==%=%===*===*==*-~)^~~,",
+"!!!)~,=#.%%#%%%%*%******%=())~~,",
+")]()~,.%%%%%%%%%%%%%%%%%%%()))~)",
+"(!]!)^.....$%$$$$$$$$$$$$$)))))~",
+"!]:])~...%$$.@#@@@@@.@.$@@))))))",
+")]]]!(.$$.@@..@.@@@@@@..@$)))))~",
+"~!)!)!.$$%$.@....@#@.@@@#@()),,,",
+",)!~!(&@@@@$...........@$&]!)),,",
+")))!]]~$$$@$.........@@@$,:]!),,",
+"~)!!///&$$$@@...........&]]]!)))",
+"))!!://!%$$@...........@,]/]])))",
+"!))!///],@#$..........@;]]]]]!]!",
+",)!)!!!!!,&.@#@......*,)!]]]/]!,",
+"-)~!!!)),));&@@@$.@&;!)))!/////-",
+"#)~))),,;,,)))!)!!:]]!!!!]/////#",
+" ;))))),;,,)~~,)!!]/]!)!]/////; ",
+" +)!!!!),,,,,,,)!]]/!()!/////!+ ",
+" #)]!)),,,,,,,)!!/!]!)!////]# ",
+" +;]!),,,,,;,)!]]!!!!!]//,+ ",
+" #-,))));,,,!!]!]!!!)-# "};
diff --git a/test/pixmaps/gray.xpm b/test/pixmaps/gray.xpm
new file mode 100644
index 0000000..e5da3fc
--- /dev/null
+++ b/test/pixmaps/gray.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * gray_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #2C393F",
+"+ c #394649",
+"@ c #666967",
+"# c #737572",
+"$ c #7A7C79",
+"% c #828481",
+"& c #878986",
+"* c #8C8E8B",
+"= c #90928F",
+"- c #939592",
+"; c #979996",
+"> c #999B98",
+", c #9C9E9A",
+"' c #9FA19E",
+") c #A1A0A4",
+"! c #A3A5A2",
+"~ c #A6A8A5",
+"{ c #A9ABA8",
+"] c #A9ACAF",
+"^ c #ABADAA",
+"/ c #AFB1AE",
+"( c #B3B5B3",
+"_ c #B9BBB8",
+": c #BABDC0",
+"< c #C1C3BF",
+"[ c #C2C3C7",
+"} c #C7C9C6",
+"| c #CBCDCB",
+"1 c #D1D3D0",
+"2 c #D9DBD8",
+"3 c #DFE1DE",
+" +@%;-**=---;-=*=;>>%@+ ",
+" .$':[2332233333222231[]-#. ",
+" +)(|33333222333332222221[)-+ ",
+" .;(22233333121333322|12|1|2]'. ",
+" #]|221222221112233222[2||||1]$ ",
+"+)[|[[2[3[3[2[1[[2[222||[[[[|<)+",
+"@~[[||[111[[|[[|2221[2[|}<<[[|~@",
+"%:|<[|[[[|[[[:[[[[[21|[[[_:((_]&",
+"-(::[[[[[:((((]:[[|[||<<[_<:::];",
+"=((((_(({^]](]]](<[[|[[:(:((]((*",
+"&]]((()))!')^(^^]([[<<__(]({~)]%",
+"*~^]])'>-))'){)]^]((:_:]]{)))>)%",
+"=)~!''>)--);){{]^{{^(((])~~!)==%",
+")~)))=**);;)']]{]]]]]]]{~!,)=)-&",
+"-',-**&*=)>)!{]~~~~!)!))])'>-==*",
+")))))&&&=;!~])')))))>)>,'';))-)*",
+"-'!)=**)=)!)')-;>,''-=*-))**==)&",
+"),);))*))]);)*--)>)))-==-)=)*&**",
+"*))-==)'!{!;*&**==---)=)>))*)%&&",
+"%&==))!)]])))*&&**&)**))!'-))&%%",
+"**)=)){^{^~)=&&%$%&&**=)))]))**&",
+"**-)!{]]]]{)))&$%%%*&&*;'''>))**",
+")=),]((((]!)*&&%$%$&&*)-))]);*)*",
+"==*)'!!'!~)*)))&)&&&&&*)>'')))-)",
+"%)*))))-);)-==)))&)&)*=-))!!))'%",
+"@=*=--*&&*==));-)=)=)))*->!]^^]@",
+"+=*=--*%$%&)&-)-))));-=)-){{]]]+",
+" #)*)*)&%$%&*&&*=;)!))*)){]]{~# ",
+" .*)*)*&&%&%%%%));]'))*>]{{])). ",
+" .=))))&%%&%%$&;,!)>-))!]]{~+ ",
+" .#;=&*)$&%%%)))!');-)'{]$. ",
+" +@$$)&)%$$&-,))>),;&@+ "};
diff --git a/test/pixmaps/gray_bomb.xpm b/test/pixmaps/gray_bomb.xpm
new file mode 100644
index 0000000..808c501
--- /dev/null
+++ b/test/pixmaps/gray_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * gray_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #2C2E2B",
+"+ c #313330",
+"@ c #2E393E",
+"# c #363835",
+"$ c #3B3A3D",
+"% c #3B3D3B",
+"& c #3B464A",
+"* c #454644",
+"= c #48464A",
+"- c #50514F",
+"; c #585A57",
+"> c #616260",
+", c #686967",
+"' c #70716E",
+") c #787A78",
+"! c #818380",
+"~ c #868885",
+"{ c #8B8D8A",
+"] c #8F908D",
+"^ c #939491",
+"/ c #969895",
+"( c #9B9D9A",
+"_ c #A1A3A0",
+": c #A8AAA7",
+"< c #B0B3B0",
+"[ c #B9BBB8",
+"} c #C1C2C0",
+"| c #C9CBC8",
+"1 c #D2D3D1",
+"2 c #D9DBD8",
+"3 c #DFE1DE",
+" &,!/^]]]^////]]]/((!,& ",
+" @)_<12322232333322221}:^'@ ",
+" &(<133333313233332222221}_/& ",
+" @/}221233322113333221111111<_@ ",
+" )_1112223321212223212111}1}1<) ",
+"&^}1111111111}1111221111}}}}1}_&",
+",:}}}111111<:]~]^^^<}11}}}}}}}:,",
+"]<}}}}}}}}]~))~)~~]~]^}}}}}<<}<~",
+"/}<}}}}}_)))))))))~)~)~<}}}<<<<^",
+"]<<<<}<_,',,'''))))))))):<}<<<<]",
+"]<<<<<<,>>>,,,>>>,,),,,,)<<<_::~",
+"]_::<_~>->->->>>>>>>,,,,>^__:^/)",
+"^___((,====-=-->=>>=>=>>=)_(^(^!",
+"^:_(^^=-=-=-=-==-==>-----=__/^^]",
+"^_((^~$$*%=*==-=--======-=_(^(^]",
+"^__(]].+$$$%%*$$$$$*$@*%%=((^^^]",
+"/_:_^]@.+$$$+$++$$+$$$$$+$^^^^]]",
+"^___^^..$##++..$++$+....$$^]^]]]",
+"]^^(^($+$$$$.....++$.$.@$.(^]]~~",
+"~]^^//>+$++.$@.@.@......$>_(]]!~",
+"]]^(__~@$$$$......$.$@$+$)<_^]~~",
+"]^((_<<;##$.$..........$=__:(^]]",
+"^^((:<<^&#$$...........$~____^^]",
+"^^^((___!$+.$.@.....@.$)(___(((^",
+"~^^^__(^^~=$..$.@....=)^/_:::_:~",
+">^^^/^^]]]])=@.$..$=)^^^^(_<:<:,",
+"&]]^^]]))~~^^]]]^/__:(^^(__::::&",
+" )^]^^]]))~~]]]^^(_:_^(^_:<:::) ",
+" @^^(^^]~~])~)~]((___^/(:<_<_(@ ",
+" &^__(]])~]~)~^^_:__(^(_:<:_& ",
+" @)((]]]~~)~)^(__(((((_:<)@ ",
+" &,)]]]]])!]^(__(_((~>& "};
diff --git a/test/pixmaps/green.xpm b/test/pixmaps/green.xpm
new file mode 100644
index 0000000..6a58897
--- /dev/null
+++ b/test/pixmaps/green.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * green_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #022D01",
+"+ c #004300",
+"@ c #007F00",
+"# c #009400",
+"$ c #00A301",
+"% c #00AA00",
+"& c #00B600",
+"* c #04BC0A",
+"= c #00C100",
+"- c #02C805",
+"; c #00CC00",
+"> c #24B329",
+", c #00D400",
+"' c #18CA24",
+") c #3FB740",
+"! c #31C733",
+"~ c #3FC640",
+"{ c #31D633",
+"] c #4FC650",
+"^ c #5DD45D",
+"/ c #5BD957",
+"( c #51DF54",
+"_ c #6BD16D",
+": c #6AE26D",
+"< c #81DF81",
+"[ c #8DDB8C",
+"} c #7EE77F",
+"| c #79EE7A",
+"1 c #8FEF8F",
+"2 c #9DEC9D",
+"3 c #A6E7A5",
+" +@$=*&&&*====&&&===$@+ ",
+" .#;{:123333333333333[:!&#. ",
+" +-;|22222223222223333333<*=+ ",
+" .-,11111111221111122223[332!;. ",
+" #-}1}|}||1|111111}11<<[[[[[<;# ",
+"+*^}}}}|}||}}<<1||||}1<<[[[[[:;+",
+"@':^::|||||:___}}|||:|}_<_[_[_'@",
+"%{^:://///^_^^_^:/|(/::^______~%",
+"*(/////:^^^^_]]^^/((((:^^^]___]=",
+"%~~/~(/~]~]]~]]]/((((((//^]]]]^%",
+"%~!!!!~)))))~]~]~({({{{(~~~]))]$",
+"&!!!!~~))>))~!~!~!{({{(!~~~))))$",
+"&!!!*>>>>>>>>!!'{!{{{{{!!~>~)))$",
+"=-'*>&>%>&!*'--'{-''{-{'!!!%>#>%",
+"*='*>%$%&&'=-{;-'{-='=---=!&!%!%",
+"*--=&%%%&=;--;-=-=;=*&!**-=&&&&&",
+"=-;-=&%&==;;======--*&&&**&&&&&&",
+"*-;-=&**-,;==&&*==-==*&*=-*&&&%&",
+"&&=====;;,;=&&&&&*===&===-=*&&$%",
+"%&**==,,,,;-&%%%%%&&&**-;;;=&%%%",
+"%&&*-;,,,,,;=%%%$$%&%&*-;;;;=&%%",
+"&&=-,,,,,,,;=&$$$#%%%%&=-;;;-&&&",
+"**=-,,,,,,,=*&%$$$$%%%&=-;;;=*&&",
+"*&*=,,,,,,-=&=&&&%%%%&&*=-;;;===",
+"$*&*=-{=*===*=-==&&*&&*===;;;;;%",
+"@*&*==&%%&&*==--======*&*-;,,,;@",
+"+&&&&=&%$%%&=&*===-;;=&*=;,,,,,+",
+" #&&&&&%#$%%&%%&*-;;-=*=-,,,,,# ",
+" .&===&&$$$%$$%&==,;-=*=,,,,,-. ",
+" +&===&%$%%$$$&=;;;-==-,,,,-+ ",
+" .#-=&&%%%$$$&=-;=====;,,$. ",
+" +@$&&&%$$$%==----='&@+ "};
diff --git a/test/pixmaps/green_bomb.xpm b/test/pixmaps/green_bomb.xpm
new file mode 100644
index 0000000..7e1d5e7
--- /dev/null
+++ b/test/pixmaps/green_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * green_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #003700",
+"+ c #003E00",
+"@ c #004405",
+"# c #004600",
+"$ c #005E00",
+"% c #1B541B",
+"& c #006E00",
+"* c #2C602D",
+"= c #008B00",
+"- c #3E6D3F",
+"; c #358335",
+"> c #00A800",
+", c #4E7B4E",
+"' c #00B700",
+") c #00C100",
+"! c #5E895F",
+"~ c #00CD00",
+"{ c #32B12E",
+"] c #40AA3D",
+"^ c #00D800",
+"/ c #28C42B",
+"( c #6D9A6E",
+"_ c #41C442",
+": c #5CCB5D",
+"< c #58DA59",
+"[ c #7EC678",
+"} c #73D173",
+"| c #73E773",
+"1 c #83EB84",
+"2 c #93EB92",
+"3 c #A0E7A0",
+" @&>)'''''))))''')))>&# ",
+" .=~~|2333333333333332|/'=. ",
+" +~^1222233333323333333332''@ ",
+" .)~212122123222222333333333/). ",
+" =~12111111121211112222[3[322~= ",
+"@)<1|11|||||121111||1112}[[[}|~@",
+"=/|||||||||}[!((((([}|}1}}}[}})=",
+">/<:<|<|<|(!!!(!((((((::|}1}}}_>",
+")<<<<<<<:!!!!!!!!!!!!(!}<:<::}:)",
+"'</</<_:-,-!-!,!,,,,,,,,:<<::::'",
+">_//</_,---------,,,;,,,;:___]:>",
+"'/////]-, --------*--;*--]_{_]]>",
+"'/////;.---.--***********;_{{{]>",
+")~))>{**.-.*.%%%*%%*%****%//{{>>",
+"'))/>>..%.*%%%%%#%%%%%%%%%'/'/>'",
+")~))'{...+++@@##%###@@@@#@)'/'/>",
+")~~~)'.@@@@@@@@@@@#%#@@@@@''>'''",
+"))~))'++@@##+++@@#+#@+.+@+'''''>",
+">)))')@####+.++++++++++@@@)''>>>",
+"'>')))&###@#+.....+++@+@#&~)'>>>",
+">''))~>#####+........++@#>^~)'>>",
+"'')~~^^&####++......+.++&)~~~'''",
+"'))~~^^)$###@+.......+++>~~~))''",
+"'/')~^^)>#@+++++......#=~)~~~)))",
+">''))))')>$++@@@#++++$>'))~~~~)>",
+"='''))''>')=&#+#+@+&>)'')~~^^^^=",
+"+'''''>>>>''))')))~)))'''~~^^~~#",
+" ='''''>=>>>>>'')~~~~)))~~^~~^= ",
+" .>)))''>=>>>>>'')~~~'))~^^^~~. ",
+" @))))'>>>>>=>>)~~~))))^^^~~+ ",
+" .=~)'>>>>>>>')~~~))))~^^>. ",
+" #&>'''>>=>>)~))))))>=@ "};
diff --git a/test/pixmaps/magenta.xpm b/test/pixmaps/magenta.xpm
new file mode 100644
index 0000000..2405cee
--- /dev/null
+++ b/test/pixmaps/magenta.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * magenta_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #380F3F",
+"+ c #490754",
+"@ c #890089",
+"# c #9E02A1",
+"$ c #A800A6",
+"% c #AF00B1",
+"& c #B900B6",
+"* c #B902BE",
+"= c #C200C3",
+"- c #CC00C8",
+"; c #D100D2",
+"> c #DE00DB",
+", c #CC18CC",
+"' c #C324C3",
+") c #BC33BC",
+"! c #D629D5",
+"~ c #B93DB9",
+"{ c #D23BD2",
+"] c #D34BD2",
+"^ c #CF53D0",
+"/ c #CE5ECE",
+"( c #E551E4",
+"_ c #E366E3",
+": c #D473D4",
+"< c #DD6DDD",
+"[ c #EB7BEC",
+"} c #E683E5",
+"| c #DD8BDD",
+"1 c #F18FF2",
+"2 c #F09BF0",
+"3 c #E7A2E8",
+" +@#=*&%&*====&%&===$@+ ",
+" .@=!_233333333333333|/{*@. ",
+" +;>[22223333332233333333|'=+ ",
+" .=!12111112222122233333333|{-. ",
+" @,}}}}1[1[[1}21111}1|||||3||;# ",
+"+=_<[[[[[[[[}:}[[[[[}}}|||||:<=+",
+"@=<<<_<[__[<<:::[[_[_[<::::|::'@",
+"${_/______</:/:<______<//:::::]$",
+"*]]^]_]_^^^//^//__((___/^///://*",
+"%]]]]]]~^^~^~/~^^((((((]^^~/~//&",
+"$){{{]~~~~~~~])~^]((!((]]^~^~~~#",
+"%{{){')~~~~)))]{)'{{{!{{))~~~~~#",
+"%''')')~#)))''''{!!{{!{{{'~~~~~#",
+"=,='&#$%)&&&',!,,,',,!!''''%~#~$",
+"&,*'$$$$&'',,,-,,-,,'=,',''&)%%%",
+"==-=&$$%%&--,-,,',,==&&==,*&&&&%",
+"=;-;=&$&=;;;==*===,=**%'=&*%'&&%",
+"*=;=*&*&=;==**&*=====&&&*=&*&%%%",
+"%*==*-=;-;-=%%$&&*=&**==;==*%$$$",
+"$%&&*=;;;;;=&$%$$%%*&&*--;==*%%$",
+"%%*==;;>>;;;=%$$#$$%%%*=;;;-=%%%",
+"&&=,-;>>;>;-=%%###$$%%&==--;=&%%",
+"&&*;->>>>>;=&%%$#$$$$$%==;,--=&&",
+"=*&=;;;;;;-&**&&%$$$$%&&-=;;=&==",
+"$*%*===*&===&===***&****==;;;-;$",
+"@&&&*=%$%%*&=---==&===*&&=-;>;;@",
+"+*&&&&&$#$%&**&=&;=-==**=;;;>;;+",
+" @****%$##$%%$&&==;;-=&=-;>;;;@ ",
+" .%&==*%$#$$$#$%&=;;-=&=;;>;-;. ",
+" +====&$$$$$$$&----=*==;>;>;+ ",
+" .#==&%$$%##$%=;;-====;;;#. ",
+" +@#%*%$$##%*===-=-&$@+ "};
diff --git a/test/pixmaps/magenta_bomb.xpm b/test/pixmaps/magenta_bomb.xpm
new file mode 100644
index 0000000..4cd1816
--- /dev/null
+++ b/test/pixmaps/magenta_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * magenta_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #3A033B",
+"+ c #410142",
+"@ c #48004B",
+"# c #6C006C",
+"$ c #541954",
+"% c #840084",
+"& c #9B009D",
+"* c #612F61",
+"= c #AC00AC",
+"- c #792A7D",
+"; c #BA00B9",
+"> c #C200C2",
+", c #813285",
+"' c #D000D0",
+") c #734472",
+"! c #B91EBA",
+"~ c #8E488B",
+"{ c #B034B1",
+"] c #855A85",
+"^ c #CD31CD",
+"/ c #C643C7",
+"( c #967098",
+"_ c #AC6DAC",
+": c #C960CA",
+"< c #D859D8",
+"[ c #E770E7",
+"} c #E376E3",
+"| c #DD7CDD",
+"1 c #EF8BEF",
+"2 c #E894E8",
+"3 c #E7A2E8",
+" @%&>;;=;;>>>>;=;>>>=%@ ",
+" .&'^[1333333333333332:^;%. ",
+" @>'[22233333332333333333|^;@ ",
+" .'^121111112221112333333333^'. ",
+" &^1111111111222111122222_322'& ",
+"@><}}}1[1[[[}}1111[}}}|2|2|_2[>@",
+"%>}[}[[[[[[2_((((((2|[}|||||||>%",
+"=^<<<<<<[:_]((((((](]_:::::|:|/=",
+";<<<<<<<:]]]]]]]]]]]]]]::::::::>",
+";//<^<^:)))])])])])]]]]]<<:{::<=",
+"=/^^^</))))))))))))~))))~//<{:{&",
+";^/^^^%**) )***)*)*)*)*)){/{{{{=",
+";^^!/!-**************-***,{/{{{&",
+";>;!={*.*.*.*$*$$$$$*$*$**!!{{{=",
+";'>!=&..*.*.$$$$$$$$$$$$$$!;!!=!",
+">>>>!{.....$.@+@@@$+$+$+$$;!;!!=",
+";''>>=...++@+++++@@++...++;!;;;;",
+";>'';;.++@@+.+..+++++..+++>;;===",
+";;;>>>+++@++..++.+++++++++>;;===",
+"==;;;>%+@+@++.......++++@#>>;===",
+"=;;>>>=+@+@@+.........++@=''>===",
+";;>>'''#@@+++...........#>'>';==",
+";;>>'''^@@@++..........+=''>>>>;",
+";;;>''''=@++++......+.+&>>''>>;;",
+"=;;>>'>;>=#.++++.....#&;>>'''''=",
+"%!;;>;;===;%#++++++#&;;;;>'''''%",
+"@;;;;;;=&==>;;>;>>>'>>;;>''''''@",
+" &=!;;==&&======>>''>>;>>'''''& ",
+" .;;;>;==&===&=;;>''';;>'''''>. ",
+" @;>>>;=&&==&=;>'>'>>>''''''@ ",
+" .&>>==;==&=&=>'>>>>;>'''{. ",
+" @%======&&=;>'>'>>>!%@ "};
diff --git a/test/porsche.xpm b/test/pixmaps/porsche.xpm
index be33073..be33073 100644
--- a/test/porsche.xpm
+++ b/test/pixmaps/porsche.xpm
diff --git a/test/porsche1.xpm b/test/pixmaps/porsche1.xpm
index cb53d0e..3a54665 100644
--- a/test/porsche1.xpm
+++ b/test/pixmaps/porsche1.xpm
@@ -1,5 +1,5 @@
/* XPM */
-static char * porsche[] = {
+static const char * porsche[] = {
/* width height ncolors chars_per_pixel */
"64 64 -4 1 ",
/* colormap */
diff --git a/test/pixmaps/red.xpm b/test/pixmaps/red.xpm
new file mode 100644
index 0000000..4672618
--- /dev/null
+++ b/test/pixmaps/red.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * red_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #2D0001",
+"+ c #440000",
+"@ c #850000",
+"# c #A20000",
+"$ c #AC0001",
+"% c #B70000",
+"& c #C30000",
+"* c #D10000",
+"= c #AB1111",
+"- c #BF0C10",
+"; c #DD0000",
+"> c #CD191B",
+", c #BB2222",
+"' c #B53A39",
+") c #CF2F30",
+"! c #C33738",
+"~ c #C34746",
+"{ c #E14548",
+"] c #D44D4C",
+"^ c #CC5554",
+"/ c #E25858",
+"( c #DB6161",
+"_ c #D16867",
+": c #E96A6B",
+"< c #E27373",
+"[ c #DA7D7E",
+"} c #EE8283",
+"| c #DD8D8C",
+"1 c #EF9191",
+"2 c #F09D9B",
+"3 c #E9A3A2",
+" +@#&%%%%%&&&&%%%&&&#@+ ",
+" .#*):1333333333333332(!$#. ",
+" +&><22223333332333333333[,%+ ",
+" .&)11111111122111233333333|)*. ",
+" #>}}1}}}}1}}|111}}}||[||||||># ",
+"+%/<<<}}:}<}}[<[}}}}}}[[[|||[(&+",
+"@)_<<<:<::<<_<<<<:::<<<[[[[[[[)@",
+"#)(((/(:::(_____<:::::(____[__!#",
+"%{^](//^^(^^^_^^((///:/(^^_^__^&",
+"%~]]]]]~~~^~^~^^~///{/]^^^~^_^^%",
+"$!!!!!]'~'~~~~~~~{{{{{{{~]~~'^^#",
+"%!){)!''''''!!!!!!!){){!!'~''''#",
+"%,),,,!!,',!,)))))))))))!!!''''#",
+"&>-,,====,=,,>>>>>>)>>>)),,,@''#",
+"%>--=====-->>>>>>>>>>)->>-),,==%",
+"&&&-$==#--&**&&&&&&&---%-------$",
+"&**&&%$%&&*&&&&-&&>&%%-%&&%$$--%",
+"%&*&&%%&&**&&-%%%&*&&%%&%&&%%%$$",
+"%%&&&%&&***&%$%%%%&&%%%&&&&%%$$$",
+"$%%%&&**;**&%$$$$$%%%%&***&&%$##",
+"$%%&&**;****&$$###$%%$%&&***&%%$",
+"%%&&**;;;;**%%#####$$%%%**&*&%$%",
+"%&&&*;*;*;*&%%$####$#$%%&***&&%%",
+"&%%&******&&%%%%$###$%%&&&&*&&&&",
+"#&%&&&&&&&&&&&&&&%%%%&%&&&***&&$",
+"@%%$&&$$$$%%&&&&&&&&%%&%%****;*@",
+"+%%%%&$###$%&%&&&&&**%%&%&*;*;*+",
+" @%$&%%###$$$%$%%&**&&&%**;**&# ",
+" .&%%&&$#######%&&***%&&**;**&. ",
+" +&*&&%$##$##$%&&**&&%&*;*;*+ ",
+" .#&&%%%#$###%&&&&&&&&*;*#. ",
+" +@#$$%%###$&&*&&&&&#@+ "};
diff --git a/test/pixmaps/red_bomb.xpm b/test/pixmaps/red_bomb.xpm
new file mode 100644
index 0000000..312fbd3
--- /dev/null
+++ b/test/pixmaps/red_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * red_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #340001",
+"+ c #3C0100",
+"@ c #410003",
+"# c #440000",
+"$ c #760000",
+"% c #4E1414",
+"& c #A60000",
+"* c #B70000",
+"= c #5F2928",
+"- c #C30000",
+"; c #CE0000",
+"> c #D90000",
+", c #BE1315",
+"' c #653A3B",
+") c #733C3C",
+"! c #B92223",
+"~ c #D31A1D",
+"{ c #744A49",
+"] c #AE3232",
+"^ c #CD3B3B",
+"/ c #875B5B",
+"( c #C04848",
+"_ c #9A6E6E",
+": c #D35A5A",
+"< c #C57170",
+"[ c #DF6D6D",
+"} c #D97D7D",
+"| c #ED8181",
+"1 c #DD8D8C",
+"2 c #EF9191",
+"3 c #EAA2A1",
+" #$&-*****----***---&$# ",
+" .&;~[2333333333333331[^*&. ",
+" @*~|23233333333333333333}!*# ",
+" .-~222222222332223333333331^-. ",
+" &,|||||||22||222|2|11}111112~& ",
+"@-:|||||||[||}}|||||||}}1<11}:-#",
+"$~[[[[[[[[[}_______<}|[}}<<}<},$",
+"&^:[::[::[</_/______/<<[[[}<<|(&",
+"-(:::^:^[{/////////////<:::::[(-",
+",^^^:^:({{{{{{{{{{{//{/{(:::(::*",
+"&^^^^^:){''{{{{{{{)))))/)((((((&",
+"*^^^^^]'''''''''')'){)))'(]((](&",
+"*,^~!!==''.'===='=)=)='=')!]]]]&",
+"-~,,!!%%.==%=%==%=%=====%=^!]]]&",
+"*~,,&!.%%.%%%%%%%%%%%%%%%%,,,,!*",
+"---~&&...%+%@%@#%#%#%%%%%%,,&,,&",
+"-;;;**%++%+###@@@@#@@@@###***&**",
+"*-;--*.#####@+@#@#@#@@++#@*****&",
+"**-*--######@+.@@@@#++@##@-**&*&",
+"&**-*-$####++.++.+++@+###$--**&&",
+"***-;;&######+.+...++++##&;;-**&",
+"&*--;>>$####@+....+.+.++$;;;-*&*",
+"**--;>>;####@@+.+...@..#&;;----*",
+"***-;;;>*##+++@@.+++.@@&--;;;-*-",
+"&-*-;;-*;*$+#@##+@.@+$&*--;;;;-&",
+"$*******&*&&$###@@+$&****-;>>>>$",
+"#*****&&&&&&***------*-*-;;>>>;#",
+" &*****&&&&*&***---;;-*-;;>;;;& ",
+" .*-*-*&&&&&&&&&-;;;--*-;>>>;-. ",
+" #*;--*&&&&&&&*--;;---->;>>;# ",
+" .&--*&*&&&&&*-;------->>&. ",
+" #$&***&&&&&--;-----*$@ "};
diff --git a/test/srs.xbm b/test/pixmaps/srs.xbm
index b6a9c74..b6a9c74 100644
--- a/test/srs.xbm
+++ b/test/pixmaps/srs.xbm
diff --git a/test/sudoku.xbm b/test/pixmaps/sudoku.xbm
index 68b37d1..68b37d1 100644
--- a/test/sudoku.xbm
+++ b/test/pixmaps/sudoku.xbm
diff --git a/test/tile.xpm b/test/pixmaps/tile.xpm
index ddc656e..ddc656e 100644
--- a/test/tile.xpm
+++ b/test/pixmaps/tile.xpm
diff --git a/test/white_1.xbm b/test/pixmaps/white_1.xbm
index 0ade331..0ade331 100644
--- a/test/white_1.xbm
+++ b/test/pixmaps/white_1.xbm
diff --git a/test/white_2.xbm b/test/pixmaps/white_2.xbm
index b916d12..b916d12 100644
--- a/test/white_2.xbm
+++ b/test/pixmaps/white_2.xbm
diff --git a/test/white_3.xbm b/test/pixmaps/white_3.xbm
index 9b721d2..9b721d2 100644
--- a/test/white_3.xbm
+++ b/test/pixmaps/white_3.xbm
diff --git a/test/white_4.xbm b/test/pixmaps/white_4.xbm
index 189f497..189f497 100644
--- a/test/white_4.xbm
+++ b/test/pixmaps/white_4.xbm
diff --git a/test/whiteking_1.xbm b/test/pixmaps/whiteking_1.xbm
index 2a3fd08..2a3fd08 100644
--- a/test/whiteking_1.xbm
+++ b/test/pixmaps/whiteking_1.xbm
diff --git a/test/whiteking_2.xbm b/test/pixmaps/whiteking_2.xbm
index 9f2e24d..9f2e24d 100644
--- a/test/whiteking_2.xbm
+++ b/test/pixmaps/whiteking_2.xbm
diff --git a/test/whiteking_3.xbm b/test/pixmaps/whiteking_3.xbm
index 95b017d..95b017d 100644
--- a/test/whiteking_3.xbm
+++ b/test/pixmaps/whiteking_3.xbm
diff --git a/test/whiteking_4.xbm b/test/pixmaps/whiteking_4.xbm
index 6257a5d..6257a5d 100644
--- a/test/whiteking_4.xbm
+++ b/test/pixmaps/whiteking_4.xbm
diff --git a/test/pixmaps/yellow.xpm b/test/pixmaps/yellow.xpm
new file mode 100644
index 0000000..b493296
--- /dev/null
+++ b/test/pixmaps/yellow.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * yellow_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #2A4602",
+"+ c #435B00",
+"@ c #818600",
+"# c #969900",
+"$ c #A3A400",
+"% c #B0AF00",
+"& c #B4B425",
+"* c #BAB800",
+"= c #BABE02",
+"- c #B4B73F",
+"; c #C0C300",
+"> c #C7C905",
+", c #C6C821",
+"' c #CBCC00",
+") c #CAC835",
+"! c #C9C943",
+"~ c #D1D201",
+"{ c #C7C94E",
+"] c #CACB5D",
+"^ c #D8D700",
+"/ c #D9DB3C",
+"( c #D5D67B",
+"_ c #DADB6D",
+": c #DFDE57",
+"< c #DFDF64",
+"[ c #D9DB8A",
+"} c #EAEB76",
+"| c #E7E7A1",
+"1 c #EBEC82",
+"2 c #EEED91",
+"3 c #EEEF9C",
+" +@$;**%**==;=*%*=;;$@+ ",
+" .#'/<2||||||||||||||[_)*#. ",
+" +>^}32233||3|333||||||||(*=+ ",
+" .>'2222222233322223||||||||,'. ",
+" #,1111111112222212122[[[[[[[^# ",
+"+*:_111}}}}1_1(111}1111([[[[[_'+",
+"@,___}}}}}}_____1}}}}}_(((((((,@",
+"$/<<:<<<<<__](]]<}:}<}__](](](!$",
+"*:!<!::::{{]{]]{<:::::::<{]]]]{*",
+"*!!!:!!{{{]{{{{{!}///:::!<{]]]]*",
+"%!))/!!----{!!!!!::///::!!!{---$",
+"%))!))-&-&-&!&!!))/////)!!!!---$",
+"*,,)&*&&&&&&&),))))///,))&&----$",
+"=,,*&&$&&&&&)','''',,',,)))*&$&%",
+"=;,*&$$%%*>>'''/,/'),,'>>,)*&&&%",
+"*>';*&$&*;''',>;;>>'****,*****%%",
+"*'~'**%%;>~'>,;***''****;;******",
+"*>'>;***>'^****;'*>>;***;,**%*%%",
+"%*;*;*''^'~>*%%*****,*;*'>,*%%$%",
+"%****''^~^~;*%%%%%*****''''>=%%$",
+"%**>;'^^^^^'*%$$$$%%%**>''''*%%%",
+"%**>^^^^^^~^*%%$#$$%%%**>'~''=%%",
+"*;*>'^^^^^~;*%%$$$#$$%**'>~';==*",
+";***'^~'^~;;****%%%%%****>'';;*=",
+"%**;;>;**;;*;;;***%***;*;;'^~~>%",
+"@***,**%%****>''>;*;*;***>^~^~~@",
+"+*****%$#%%*****;>>'';***'^~^^~+",
+" #*****$$#%%%%****'''>*;'^~~~~# ",
+" .%;*,;%$$$$$$%**~^'>**>~^^^~>. ",
+" +*>'*%%$%%$$$**>'^';;*~^^~>+ ",
+" .#';*%$$%$$$*;';>>*>;~~^$. ",
+" +@#%**%$$$%>*>>>'*>$@+ "};
diff --git a/test/pixmaps/yellow_bomb.xpm b/test/pixmaps/yellow_bomb.xpm
new file mode 100644
index 0000000..f95ee9b
--- /dev/null
+++ b/test/pixmaps/yellow_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static const char * yellow_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #393900",
+"+ c #2A4602",
+"@ c #434101",
+"# c #474900",
+"$ c #435B00",
+"% c #515116",
+"& c #5B5C20",
+"* c #676800",
+"= c #666635",
+"- c #7C7B50",
+"; c #848323",
+"> c #838442",
+", c #8E9200",
+"' c #8A8A5F",
+") c #A6A600",
+"! c #9A9B6D",
+"~ c #B2B102",
+"{ c #AFB132",
+"] c #BAB900",
+"^ c #C1C300",
+"/ c #C6C42C",
+"( c #CFD000",
+"_ c #C7C84F",
+": c #CBCA40",
+"< c #CCCC67",
+"[ c #D7D984",
+"} c #E0E167",
+"| c #E0E07A",
+"1 c #E6E6A0",
+"2 c #EEEE88",
+"3 c #EDED97",
+" $,)]]]~]]]]^]]~]]^^),$ ",
+" +,(/}2111111111111113</~,+ ",
+" $((}33333113133311111111[]^$ ",
+" +^(233223233333233111111111/(+ ",
+" ,^2222222222332222233[[1[[1[() ",
+"$^}2|2}22}22|||22222}22[[[[[[}^$",
+",^}}}|}}}}}[!!'!!!![<|}|<[[[[[^,",
+"):_}}}}}}}!''''''!''!!<|<<<<<<_)",
+"^:}:}}:}<'''-''''''''!'<}_}<<<_]",
+"]_:}/:}{-=--------'>'>--_}_____]",
+"~::/:/_>=-=--=--=--=---->____<<)",
+"~:///:;=============>===={:{{{{)",
+"]^///:>%=.=.========&====>{:{{{,",
+"^^^]~{.=.==.=%%%&&&&&=&&&%/~{{{~",
+"]^^/))....=.%%=%%%%&%%%%%%/~~~~~",
+"^^^^/{.=...%@@@@%#%@%@%%%%]/~/~~",
+"^((^]~...%%@@@@.@@@@@@.@@@]]]~]]",
+"]^((]/..@@@%..@@@@@@@.@.@@]~~]~~",
+"~]]^]]@%@#@@...@@@@@@.@@@@^]~))~",
+")~]]^^;@##@#@........@@@#;^^]~))",
+"~~]]^()#@##@@......@..@@@)((^]~)",
+"~]^^(((*####@..........@*(((^~~]",
+"]]^^(((^##@@@..........@)^^(^]]]",
+"/]]((((()##@..........@)(((((^]]",
+")]~]((^^])*@@@@.....@*,]]^^((((~",
+",]]]]]]~~~~,*@@#@@@*,]]]^^((((^,",
+"$~~]/]~)))~]]]]]^^(((^]]^(((((($",
+" ,]~]~~),))~~~~]]^((^^]]((((((, ",
+" +]]^^^])))))))~^^(((]]^((((((+ ",
+" $^^^]~)))))))]^(((^^](((((($ ",
+" +,(^]~)~))))~]^^^^^/^((({+ ",
+" $,,~]~)),)~^^(^(^^^/,$ "};
diff --git a/test/preferences.fl b/test/preferences.fl
index 5a8cbfb..306b880 100644
--- a/test/preferences.fl
+++ b/test/preferences.fl
@@ -22,13 +22,13 @@ decl {void writePrefs();} {public
Function {closeWindowCB( Fl_Widget*, void* )} {open private return_type void
} {
- code {delete myWindow;} {}
+ code {Fl::delete_widget(myWindow);} {}
}
Function {saveAndCloseWindowCB( Fl_Widget*, void* )} {open private return_type void
} {
code {writePrefs();
- delete myWindow;} {}
+ Fl::delete_widget(myWindow);} {}
}
Function {} {open return_type int
@@ -69,7 +69,7 @@ Function {} {open return_type int
}
}
Fl_Choice wWear {
- label {Wear:} open
+ label {Wear:} open selected
xywh {25 100 105 20} down_box BORDER_BOX align 5
} {
MenuItem {} {
@@ -93,15 +93,15 @@ Function {} {open return_type int
xywh {35 120 98 60}
} {
Fl_Round_Button wLeft {
- label {left side} selected
+ label {left side}
xywh {35 120 95 25} type Radio down_box ROUND_DOWN_BOX
}
Fl_Round_Button wRight {
- label {right side} selected
+ label {right side}
xywh {35 140 95 25} type Radio down_box ROUND_DOWN_BOX
}
Fl_Box {} {
- label {of the bed} selected
+ label {of the bed}
xywh {38 160 95 20}
}
}
diff --git a/test/resizebox.cxx b/test/resizebox.cxx
index b15a24c..4be89f6 100644
--- a/test/resizebox.cxx
+++ b/test/resizebox.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: resizebox.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: resizebox.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Resize box test program for the Fast Light Tool Kit (FLTK).
//
@@ -98,5 +98,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: resizebox.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: resizebox.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/scroll.cxx b/test/scroll.cxx
index a5beb84..e8d76d7 100644
--- a/test/scroll.cxx
+++ b/test/scroll.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: scroll.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: scroll.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Fl_Scroll test program for the Fast Light Tool Kit (FLTK).
//
@@ -71,7 +71,7 @@ void box_cb(Fl_Widget* o, void*) {
}
void type_cb(Fl_Widget*, void* v) {
- thescroll->type(int(v));
+ thescroll->type((long)v);
thescroll->redraw();
}
@@ -87,7 +87,7 @@ Fl_Menu_Item choices[] = {
};
void align_cb(Fl_Widget*, void* v) {
- thescroll->scrollbar.align(int(v));
+ thescroll->scrollbar.align((long)v);
thescroll->redraw();
}
@@ -140,5 +140,5 @@ int main(int argc, char** argv) {
}
//
-// End of "$Id: scroll.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: scroll.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/shape.cxx b/test/shape.cxx
index 00aa16d..87eb195 100644
--- a/test/shape.cxx
+++ b/test/shape.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: shape.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: shape.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Tiny OpenGL demo program for the Fast Light Tool Kit (FLTK).
//
@@ -113,5 +113,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: shape.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: shape.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/subwindow.cxx b/test/subwindow.cxx
index cc7cc5e..54f45bd 100644
--- a/test/subwindow.cxx
+++ b/test/subwindow.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: subwindow.cxx 4634 2005-11-04 08:23:20Z matt $"
+// "$Id: subwindow.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Nested window test program for the Fast Light Tool Kit (FLTK).
//
@@ -194,5 +194,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: subwindow.cxx 4634 2005-11-04 08:23:20Z matt $".
+// End of "$Id: subwindow.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/sudoku.cxx b/test/sudoku.cxx
index f6f8aec..5ab17ae 100644
--- a/test/sudoku.cxx
+++ b/test/sudoku.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: sudoku.cxx 4744 2006-01-13 22:46:30Z mike $"
+// "$Id: sudoku.cxx 5675 2007-02-08 16:37:03Z mike $"
//
// Sudoku game using the Fast Light Tool Kit (FLTK).
//
-// Copyright 2005-2006 by Michael Sweet.
+// Copyright 2005-2007 by Michael Sweet.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -45,7 +45,7 @@
#ifdef WIN32
# include "sudokurc.h"
#elif !defined(__APPLE__)
-# include "sudoku.xbm"
+# include "pixmaps/sudoku.xbm"
#endif // WIN32
// Audio headers...
@@ -175,7 +175,9 @@ class Sudoku : public Fl_Window {
static void check_cb(Fl_Widget *widget, void *);
static void close_cb(Fl_Widget *widget, void *);
static void diff_cb(Fl_Widget *widget, void *d);
+ static void update_helpers_cb(Fl_Widget *, void *);
static void help_cb(Fl_Widget *, void *);
+ static void mute_cb(Fl_Widget *widget, void *);
static void new_cb(Fl_Widget *widget, void *);
static void reset_cb(Fl_Widget *widget, void *);
static void restart_cb(Fl_Widget *widget, void *);
@@ -196,6 +198,7 @@ class Sudoku : public Fl_Window {
void resize(int X, int Y, int W, int H);
void save_game();
void solve_game();
+ void update_helpers();
};
@@ -547,7 +550,7 @@ SudokuCell::handle(int event) {
break;
case FL_PUSH :
- if (Fl::event_inside(this)) {
+ if (!readonly() && Fl::event_inside(this)) {
if (Fl::event_clicks()) {
// 2+ clicks increments/sets value
if (value()) {
@@ -636,6 +639,8 @@ Sudoku::Sudoku()
{ "&Check Game", FL_COMMAND | 'c', check_cb, 0, 0 },
{ "&Restart Game", FL_COMMAND | 'r', restart_cb, 0, 0 },
{ "&Solve Game", FL_COMMAND | 's', solve_cb, 0, FL_MENU_DIVIDER },
+ { "&Update Helpers", 0, update_helpers_cb, 0, 0 },
+ { "&Mute Sound", FL_COMMAND | 'm', mute_cb, 0, FL_MENU_TOGGLE | FL_MENU_DIVIDER },
{ "&Quit", FL_COMMAND | 'q', close_cb, 0, 0 },
{ 0 },
{ "&Difficulty", 0, 0, 0, FL_SUBMENU },
@@ -652,7 +657,12 @@ Sudoku::Sudoku()
// Setup sound output...
- sound_ = new SudokuSound();
+ prefs_.get("mute_sound", i, 0);
+ if (i) {
+ // Mute sound?
+ sound_ = NULL;
+ items[6].flags |= FL_MENU_VALUE;
+ } else sound_ = new SudokuSound();
// Menubar...
prefs_.get("difficulty", difficulty_, 0);
@@ -714,7 +724,7 @@ Sudoku::Sudoku()
prefs_.get("width", W, 3 * GROUP_SIZE);
prefs_.get("height", H, 3 * GROUP_SIZE + MENU_OFFSET);
- resize(X, X, W, H);
+ resize(X, Y, W, H);
}
set_title();
@@ -723,7 +733,7 @@ Sudoku::Sudoku()
// Destroy the sudoku window...
Sudoku::~Sudoku() {
- delete sound_;
+ if (sound_) delete sound_;
}
@@ -810,7 +820,7 @@ Sudoku::check_game(bool highlight) {
cell->readonly(1);
}
- sound_->play('A' + grid_cells_[i][8]->value() - 1);
+ if (sound_) sound_->play('A' + grid_cells_[i][8]->value() - 1);
}
}
}
@@ -839,10 +849,84 @@ Sudoku::diff_cb(Fl_Widget *widget, void *d) {
s->new_game(s->seed_);
s->set_title();
+ if (diff > 1)
+ {
+ // Display a message about the higher difficulty levels for the
+ // Sudoku zealots of the world...
+ int val;
+
+ prefs_.get("difficulty_warning", val, 0);
+
+ if (!val)
+ {
+ prefs_.set("difficulty_warning", 1);
+ fl_alert("Note: 'Hard' and 'Impossible' puzzles may have more than "
+ "one possible solution.\n"
+ "This is not an error or bug.");
+ }
+ }
+
prefs_.set("difficulty", s->difficulty_);
}
}
+// Update the little marker numbers in all cells
+void
+Sudoku::update_helpers_cb(Fl_Widget *widget, void *) {
+ Sudoku *s = (Sudoku *)(widget->window() ? widget->window() : widget);
+ s->update_helpers();
+}
+
+void
+Sudoku::update_helpers() {
+ int i, j, k;
+ // first we delete any entries that the user may have made
+ for (i=0; i<9; i++) {
+ for (j=0; j<9; j++) {
+ SudokuCell *cell = grid_cells_[i][j];
+ for (k = 0; k < 8; k++) {
+ cell->test_value(0, k);
+ }
+ }
+ }
+ // now go through all cells and find out, what we can not be
+ for (i=0; i<81; i++) {
+ char taken[10] = { 0 };
+ // find our destination cell
+ int row = i/9;
+ int col = i%9;
+ SudokuCell *dst_cell = grid_cells_[row][col];
+ if (dst_cell->value()) continue;
+ // find all values already taken in this row
+ for (j=0; j<9; j++) {
+ SudokuCell *cell = grid_cells_[row][j];
+ int v = cell->value();
+ if (v) taken[v] = 1;
+ }
+ // find all values already taken in this column
+ for (j=0; j<9; j++) {
+ SudokuCell *cell = grid_cells_[j][col];
+ int v = cell->value();
+ if (v) taken[v] = 1;
+ }
+ // now find all values already taken in this sqare
+ int ro = (row/3) * 3;
+ int co = (col/3) * 3;
+ for (j=0; j<3; j++) {
+ for (k=0; k<3; k++) {
+ SudokuCell *cell = grid_cells_[ro+j][co+k];
+ int v = cell->value();
+ if (v) taken[v] = 1;
+ }
+ }
+ // transfer our findings to the markers
+ for (k = 1, j = 0; k <= 9; k++) {
+ if (!taken[k])
+ dst_cell->test_value(k, j++);
+ }
+ }
+}
+
// Show the on-line help...
void
@@ -866,7 +950,17 @@ Sudoku::help_cb(Fl_Widget *, void *) {
"only once in each column and row. In addition, each 3x3 subgrid\n"
"may only contain one of each number.</P>\n"
- "<P>This version of the puzzle is Copyright 2005 by Michael R Sweet</P>\n"
+ "<P>This version of the puzzle is copyright 2005-2006 by Michael R\n"
+ "Sweet.</P>\n"
+
+ "<P><B>Note:</B> The 'Hard' and 'Impossible' difficulty\n"
+ "levels generate Sudoku puzzles with multiple possible solutions.\n"
+ "While some purists insist that these cannot be called 'Sudoku'\n"
+ "puzzles, the author (me) has personally solved many such puzzles\n"
+ "in published/printed Sudoku books and finds them far more\n"
+ "interesting than the simple single solution variety. If you don't\n"
+ "like it, don't play with the difficulty set to 'High' or\n"
+ "'Impossible'.</P>\n"
"<H2>How to Play the Game</H2>\n"
@@ -944,6 +1038,22 @@ Sudoku::load_game() {
}
+// Mute/unmute sound...
+void
+Sudoku::mute_cb(Fl_Widget *widget, void *) {
+ Sudoku *s = (Sudoku *)(widget->window() ? widget->window() : widget);
+
+ if (s->sound_) {
+ delete s->sound_;
+ s->sound_ = NULL;
+ prefs_.set("mute_sound", 1);
+ } else {
+ s->sound_ = new SudokuSound();
+ prefs_.set("mute_sound", 0);
+ }
+}
+
+
// Create a new game...
void
Sudoku::new_cb(Fl_Widget *widget, void *) {
@@ -1020,7 +1130,7 @@ Sudoku::new_game(time_t seed) {
}
// Show N cells...
- count = 10 * (5 - difficulty_);
+ count = 11 * (5 - difficulty_);
int numbers[9];
@@ -1050,8 +1160,6 @@ Sudoku::new_game(time_t seed) {
break;
}
}
-
- sound_->play('A' + t - 1);
}
}
}
@@ -1131,7 +1239,7 @@ Sudoku::restart_cb(Fl_Widget *widget, void *) {
int v = cell->value();
cell->value(0);
cell->color(FL_LIGHT3);
- if (v) s->sound_->play('A' + v - 1);
+ if (v && s->sound_) s->sound_->play('A' + v - 1);
}
}
@@ -1200,7 +1308,7 @@ Sudoku::solve_game() {
cell->color(FL_GRAY);
}
- sound_->play('A' + grid_cells_[i][8]->value() - 1);
+ if (sound_) sound_->play('A' + grid_cells_[i][8]->value() - 1);
}
}
@@ -1222,5 +1330,5 @@ main(int argc, char *argv[]) {
//
-// End of "$Id: sudoku.cxx 4744 2006-01-13 22:46:30Z mike $".
+// End of "$Id: sudoku.cxx 5675 2007-02-08 16:37:03Z mike $".
//
diff --git a/test/sudokurc.h b/test/sudokurc.h
index 9a6bc90..0cea543 100644
--- a/test/sudokurc.h
+++ b/test/sudokurc.h
@@ -1,16 +1,16 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// Used by icons.rc
-//
-#define IDI_ICON 101
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 105
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1000
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by icons.rc
+//
+#define IDI_ICON 101
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 105
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/test/symbols.cxx b/test/symbols.cxx
index afeb227..e12bbf3 100644
--- a/test/symbols.cxx
+++ b/test/symbols.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: symbols.cxx 4392 2005-06-01 20:10:53Z matt $"
+// "$Id: symbols.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Symbol test program for the Fast Light Tool Kit (FLTK).
//
@@ -115,7 +115,7 @@ bt("@arrow");
bt("@returnarrow");
bt("@square");
bt("@circle");
-bt("@00010line");
+bt("@line");
bt("@menu");
bt("@UpArrow");
bt("@DnArrow");
@@ -155,5 +155,5 @@ bt("@redo");
}
//
-// End of "$Id: symbols.cxx 4392 2005-06-01 20:10:53Z matt $".
+// End of "$Id: symbols.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/tabs.fl b/test/tabs.fl
index 080a133..29b8b37 100644
--- a/test/tabs.fl
+++ b/test/tabs.fl
@@ -1,128 +1,288 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0107
+version 1.0108
header_name {.h}
code_name {.cxx}
Function {} {open
} {
- Fl_Window foo_window {open
- xywh {733 489 320 320} type Double resizable visible
+ Fl_Window foo_window {
+ label {Comparison of Fl_Tab (left) vs. Fl_Wizard (right)} open
+ xywh {423 205 642 337} type Double resizable visible
} {
- Fl_Tabs {} {open selected
- xywh {10 10 300 200} selection_color 4 labelcolor 7 resizable
+ Fl_Box {} {
+ label {class Fl_Tabs}
+ xywh {95 0 130 35} labeltype ENGRAVED_LABEL labelfont 1
+ }
+ Fl_Tabs {} {
+ tooltip {the various index cards test different aspects of the Fl_Tabs widget} xywh {10 35 300 205} selection_color 4 labelcolor 7 resizable
+ } {
+ Fl_Group {} {
+ label {Label&1} open selected
+ tooltip {this Tab tests correct keyboard navigation between text input fields} xywh {10 60 300 180} selection_color 1 resizable
+ } {
+ Fl_Input {} {
+ label {input:}
+ tooltip {This is the first input field} xywh {60 80 240 40}
+ }
+ Fl_Input {} {
+ label {input2:}
+ xywh {60 120 240 30}
+ code0 {o->tooltip("");}
+ }
+ Fl_Input {} {
+ label {input3:}
+ xywh {60 150 240 80}
+ }
+ }
+ Fl_Group {} {
+ label {tab&2} open
+ tooltip {tab2 tests among other things the cooperation of modal windows and tabs} xywh {10 60 300 180} selection_color 2 hide
+ } {
+ Fl_Button {} {
+ label button1
+ callback {fl_message("Test to see if this modal window prevents you from "
+ "changing the tabs. It should.");}
+ xywh {20 90 100 30}
+ code0 {\#include <FL/fl_ask.H>}
+ }
+ Fl_Input {} {
+ label {input in box2}
+ xywh {140 130 100 30}
+ }
+ Fl_Button {} {
+ label {This is stuff inside the Fl_Group "tab2"}
+ xywh {30 170 260 30}
+ }
+ Fl_Button {} {
+ label {Test event blocking by modal window}
+ callback {fl_message("Make sure you cannot change the tabs while this modal window is up");}
+ xywh {30 200 260 30}
+ code0 {\#include <FL/fl_ask.H>}
+ }
+ }
+ Fl_Group {} {
+ label {tab&3} open
+ tooltip {tab3 checks for correct keyboard navigation} xywh {10 60 300 180} selection_color 3 hide
+ } {
+ Fl_Button {} {
+ label button2
+ xywh {20 90 60 80}
+ }
+ Fl_Button {} {
+ label button
+ xywh {80 90 60 80}
+ }
+ Fl_Button {} {
+ label button
+ xywh {140 90 60 80}
+ }
+ }
+ Fl_Group {} {
+ label {&tab4} open
+ tooltip {this tab show the issue of indicating a selcted tab if the tab layouts are very similar} xywh {10 60 300 180} selection_color 5 labeltype ENGRAVED_LABEL labelfont 2 hide
+ } {
+ Fl_Button {} {
+ label button2
+ xywh {20 80 60 110}
+ }
+ Fl_Button {} {
+ label button
+ xywh {80 80 60 110}
+ }
+ Fl_Button {} {
+ label button
+ xywh {140 80 60 110}
+ }
+ }
+ Fl_Group {} {
+ label {@fileprint &print} open
+ tooltip {tab5 verifies if visibility requests are handled correctly} xywh {10 60 300 180} hide
+ } {
+ Fl_Button {} {
+ label button2
+ tooltip {button2 has a different tooltp than tab5} xywh {20 75 60 80}
+ }
+ Fl_Button {} {
+ label button
+ xywh {90 75 60 80}
+ }
+ Fl_Clock {} {
+ label {Make sure this clock does not use processor time when this tab is hidden or window is iconized}
+ xywh {160 75 100 100} box OSHADOW_BOX color 238 selection_color 0 labelfont 8 labelsize 10 align 130
+ }
+ Fl_Group {} {open
+ xywh {20 175 40 55} box THIN_DOWN_BOX color 173 align 16
+ class Fl_Window
+ } {}
+ Fl_Group {} {
+ label {subwindows:} open
+ xywh {65 175 40 55} box THIN_DOWN_BOX color 167
+ class Fl_Window
+ } {}
+ Fl_Group {} {open
+ xywh {110 175 40 55} box THIN_DOWN_BOX color 239 align 16
+ class Fl_Window
+ } {}
+ }
+ }
+ Fl_Box {} {
+ label {class Fl_Wizard}
+ xywh {410 0 130 35} labeltype ENGRAVED_LABEL labelfont 1
+ }
+ Fl_Wizard wWizard {
+ xywh {325 60 300 180}
} {
Fl_Group {} {
label Label1 open
- xywh {10 30 300 180} selection_color 1 hide resizable
+ tooltip {this Tab tests correct keyboard navigation between text input fields} xywh {325 60 300 180} selection_color 1 resizable
} {
Fl_Input {} {
label {input:}
- xywh {60 50 240 40}
+ tooltip {This is the first input field} xywh {375 80 240 40}
}
Fl_Input {} {
label {input2:}
- xywh {60 90 240 30}
+ xywh {375 120 240 30}
+ code0 {o->tooltip("");}
}
Fl_Input {} {
label {input3:}
- xywh {60 120 240 80}
+ xywh {375 150 240 80}
}
}
Fl_Group {} {
label tab2 open
- xywh {10 30 300 180} selection_color 2
+ tooltip {tab2 tests among other things the cooperation of modal windows and tabs} xywh {325 60 300 180} selection_color 2 hide
} {
Fl_Button {} {
label button1
callback {fl_message("Test to see if this modal window prevents you from "
"changing the tabs. It should.");}
- xywh {20 60 100 30}
+ xywh {335 90 100 30}
code0 {\#include <FL/fl_ask.H>}
}
Fl_Input {} {
label {input in box2}
- xywh {140 100 100 30}
+ xywh {455 130 100 30}
}
Fl_Button {} {
label {This is stuff inside the Fl_Group "tab2"}
- xywh {30 140 260 30}
+ xywh {345 170 260 30}
}
Fl_Button {} {
label {Test event blocking by modal window}
callback {fl_message("Make sure you cannot change the tabs while this modal window is up");}
- xywh {30 170 260 30}
+ xywh {345 200 260 30}
code0 {\#include <FL/fl_ask.H>}
}
}
Fl_Group {} {
label tab3 open
- xywh {10 30 300 180} selection_color 3 hide
+ tooltip {tab3 checks for correct keyboard navigation} xywh {325 60 300 180} selection_color 3 hide
} {
Fl_Button {} {
label button2
- xywh {20 60 60 80}
+ xywh {335 90 60 80}
}
Fl_Button {} {
label button
- xywh {80 60 60 80}
+ xywh {395 90 60 80}
}
Fl_Button {} {
label button
- xywh {140 60 60 80}
+ xywh {455 90 60 80}
}
}
Fl_Group {} {
label tab4 open
- xywh {10 30 300 180} selection_color 5 labelfont 2 hide
+ tooltip {this tab show the issue of indicating a selcted tab if the tab layouts are very similar} xywh {325 60 300 180} selection_color 5 labelfont 2 hide
} {
Fl_Button {} {
label button2
- xywh {20 50 60 110}
+ xywh {335 80 60 110}
}
Fl_Button {} {
label button
- xywh {80 50 60 110}
+ xywh {395 80 60 110}
}
Fl_Button {} {
label button
- xywh {140 50 60 110}
+ xywh {455 80 60 110}
}
}
Fl_Group {} {
label { tab5 } open
- xywh {10 30 300 180} labeltype ENGRAVED_LABEL hide
+ tooltip {tab5 verifies if visibility requests are handled correctly} xywh {325 60 300 180} labeltype ENGRAVED_LABEL hide
} {
Fl_Button {} {
label button2
- xywh {20 80 60 80}
+ tooltip {button2 has a different tooltp than tab5} xywh {335 75 60 80}
}
Fl_Button {} {
label button
- xywh {90 90 60 80}
+ xywh {405 75 60 80}
}
Fl_Clock {} {
label {Make sure this clock does not use processor time when this tab is hidden or window is iconized}
- xywh {160 50 100 100} box OSHADOW_BOX color 238 selection_color 0 labelfont 8 labelsize 10 align 130
+ xywh {475 75 100 100} box OSHADOW_BOX color 238 selection_color 0 labelfont 8 labelsize 10 align 130
}
+ Fl_Group {} {open
+ xywh {335 175 40 55} box THIN_DOWN_BOX color 173 align 16
+ class Fl_Window
+ } {}
+ Fl_Group {} {
+ label {subwindows:} open
+ xywh {380 175 40 55} box THIN_DOWN_BOX color 167
+ class Fl_Window
+ } {}
+ Fl_Group {} {open
+ xywh {425 175 40 55} box THIN_DOWN_BOX color 239 align 16
+ class Fl_Window
+ } {}
+ }
+ }
+ Fl_Group {} {
+ xywh {410 245 130 25}
+ } {
+ Fl_Button {} {
+ label {@|<}
+ callback {wWizard->value(wWizard->child(0));}
+ tooltip {go to first page [Home]} xywh {410 245 30 25} shortcut 0xff50
+ }
+ Fl_Button {} {
+ label {@<}
+ callback {wWizard->prev();}
+ tooltip {go to previous page [left arrow]} xywh {440 245 30 25} shortcut 0xff51
+ }
+ Fl_Button {} {
+ label {@>}
+ callback {wWizard->next();}
+ tooltip {go to next page in wizard [right arrow]} xywh {480 245 30 25} shortcut 0xff53
+ }
+ Fl_Button {} {
+ label {@>|}
+ callback {int last = wWizard->children()-1;
+wWizard->value(wWizard->child(last));}
+ tooltip {go to last page [End]} xywh {510 245 30 25} shortcut 0xff57
}
}
Fl_Input {} {
label {inputA:}
- xywh {60 220 130 30}
+ xywh {60 255 130 25}
}
Fl_Input {} {
label {inputB:}
- xywh {60 250 250 30}
+ xywh {60 285 250 25}
}
Fl_Button {} {
label cancel
callback {exit(1);}
- xywh {180 290 60 30}
+ xywh {475 295 70 30}
code0 {\#include <stdlib.h>}
}
Fl_Return_Button {} {
label OK
callback {exit(0);}
- xywh {250 290 60 30}
+ xywh {555 295 70 30}
code0 {\#include <stdlib.h>}
}
}
diff --git a/test/threads.cxx b/test/threads.cxx
index dcf9116..af9ff12 100644
--- a/test/threads.cxx
+++ b/test/threads.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: threads.cxx 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: threads.cxx 5749 2007-03-20 10:41:14Z matt $"
//
// Threading example program for the Fast Light Tool Kit (FLTK).
//
@@ -32,6 +32,7 @@
# include <FL/Fl_Window.H>
# include <FL/Fl_Browser.H>
# include <FL/Fl_Value_Output.H>
+# include <FL/fl_ask.H>
# include "threads.h"
# include <stdio.h>
# include <math.h>
@@ -42,12 +43,20 @@ Fl_Browser *browser1, *browser2;
Fl_Value_Output *value1, *value2;
int start2 = 3;
+void magic_number_cb(void *p)
+{
+ Fl_Value_Output *w = (Fl_Value_Output*)p;
+ w->labelcolor(FL_RED);
+ w->redraw_label();
+}
+
void* prime_func(void* p)
{
Fl_Browser* browser = (Fl_Browser*) p;
Fl_Value_Output *value;
int n;
int step;
+ char proud = 0;
if (browser == browser2) {
n = start2;
@@ -62,22 +71,36 @@ void* prime_func(void* p)
// very simple prime number calculator !
for (;;) {
- int p;
+ int pp;
int hn = (int)sqrt((double)n);
- for (p=3; p<=hn; p+=2) if ( n%p == 0 ) break;
- if (p >= hn) {
+ for (pp=3; pp<=hn; pp+=2) if ( n%pp == 0 ) break;
+ if (pp >= hn) {
char s[128];
sprintf(s, "%d", n);
+
+ // Obtain a lock before we access the browser widget...
Fl::lock();
+
browser->add(s);
browser->bottomline(browser->size());
if (n > value->value()) value->value(n);
n += step;
+
+ // Release the lock...
Fl::unlock();
- Fl::awake((void*) (browser == browser1? p:0)); // Cause the browser to redraw ...
+
+ // Send a message to the main thread, at which point it will
+ // process any pending redraws for our browser widget. The
+ // message we pass here isn't used for anything, so we could also
+ // just pass NULL.
+ Fl::awake(p);
+ if (n>10000 && !proud) {
+ proud = 1;
+ Fl::awake(magic_number_cb, value);
+ }
} else {
- // This should not be necessary since "n" and "step" a local variables,
+ // This should not be necessary since "n" and "step" are local variables,
// however it appears that at least MacOS X has some threading issues
// that cause semi-random corruption of the (stack) variables.
Fl::lock();
@@ -106,10 +129,17 @@ int main(int argc, char **argv)
browser1->add("Prime numbers:");
browser2->add("Prime numbers:");
- Fl::lock(); // you must do this before creating any threads!
+ // Enable multi-thread support by locking from the main
+ // thread. Fl::wait() and Fl::run() call Fl::unlock() and
+ // Fl::lock() as needed to release control to the child threads
+ // when it is safe to do so...
+ Fl::lock();
+
+ // Start threads...
// One thread displaying in one browser
fl_create_thread(prime_thread, prime_func, browser1);
+
// Several threads displaying in another browser
fl_create_thread(prime_thread, prime_func, browser2);
fl_create_thread(prime_thread, prime_func, browser2);
@@ -118,12 +148,7 @@ int main(int argc, char **argv)
fl_create_thread(prime_thread, prime_func, browser2);
fl_create_thread(prime_thread, prime_func, browser2);
- // Fl::run();
- while (w->visible()) {
- Fl::wait();
-// void* m = Fl::thread_message();
-// printf("Received message: %p\n", m);
- }
+ Fl::run();
return 0;
}
@@ -137,5 +162,5 @@ int main() {
//
-// End of "$Id: threads.cxx 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: threads.cxx 5749 2007-03-20 10:41:14Z matt $".
//
diff --git a/test/threads.h b/test/threads.h
index cc9fedf..ad316b5 100644
--- a/test/threads.h
+++ b/test/threads.h
@@ -1,5 +1,5 @@
//
-// "$Id: threads.h 4748 2006-01-15 02:26:54Z mike $"
+// "$Id: threads.h 5519 2006-10-11 03:12:15Z mike $"
//
// Simple threading API for the Fast Light Tool Kit (FLTK).
//
@@ -77,5 +77,5 @@ static int fl_create_thread(Fl_Thread& t, void *(*f) (void *), void* p) {
#endif // !Threads_h
//
-// End of "$Id: threads.h 4748 2006-01-15 02:26:54Z mike $".
+// End of "$Id: threads.h 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/tile.cxx b/test/tile.cxx
index 69374de..820390a 100755
--- a/test/tile.cxx
+++ b/test/tile.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: tile.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: tile.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Tile test program for the Fast Light Tool Kit (FLTK).
//
@@ -88,5 +88,5 @@ int main(int argc, char** argv) {
}
//
-// End of "$Id: tile.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: tile.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/tiled_image.cxx b/test/tiled_image.cxx
index 9c415db..145a2ab 100644
--- a/test/tiled_image.cxx
+++ b/test/tiled_image.cxx
@@ -1,9 +1,9 @@
//
-// "$Id: tiled_image.cxx 4288 2005-04-16 00:13:17Z mike $"
+// "$Id: tiled_image.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Fl_Tiled_Image test program for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2005 by Bill Spitzak and others.
+// Copyright 1998-2006 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -34,7 +34,7 @@
#include <stdlib.h>
#include <math.h>
-#include "tile.xpm"
+#include "pixmaps/tile.xpm"
Fl_Button *b;
Fl_Window *w;
@@ -90,7 +90,6 @@ int main(int argc, char **argv) {
Fl_Button b(340,365,50,25,"Close"); ::b = &b;
b.callback(button_cb);
- b.box(FL_PLASTIC_UP_BOX);
group.end();
@@ -102,5 +101,5 @@ int main(int argc, char **argv) {
}
//
-// End of "$Id: tiled_image.cxx 4288 2005-04-16 00:13:17Z mike $".
+// End of "$Id: tiled_image.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/unittests.cxx b/test/unittests.cxx
index a624926..5c69278 100644
--- a/test/unittests.cxx
+++ b/test/unittests.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: unittests.cxx 4624 2005-11-02 12:52:44Z mike $"
+// "$Id: unittests.cxx 5519 2006-10-11 03:12:15Z mike $"
//
// Unit tests for the Fast Light Tool Kit (FLTK).
//
@@ -295,5 +295,5 @@ int main(int argc, char **argv) {
//
-// End of "$Id: unittests.cxx 4624 2005-11-02 12:52:44Z mike $".
+// End of "$Id: unittests.cxx 5519 2006-10-11 03:12:15Z mike $".
//
diff --git a/test/valuators.fl b/test/valuators.fl
index 5254d05..668a462 100644
--- a/test/valuators.fl
+++ b/test/valuators.fl
@@ -1,5 +1,5 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0100
+version 1.0107
header_name {.h}
code_name {.cxx}
Function {callback(Fl_Widget* o, void*)} {open private return_type void
@@ -12,7 +12,7 @@ Function {} {open
} {
Fl_Window {} {
label {Valuator classes, showing values for type()} open
- xywh {635 288 565 505} color 43 selection_color 43
+ xywh {479 151 580 510} type Double color 43 selection_color 43
code0 {\#include <stdio.h>} visible
} {
Fl_Box {} {
@@ -34,9 +34,24 @@ Function {} {open
callback callback
xywh {105 45 20 145} type {Vert Knob} box FLAT_BOX color 10 selection_color 1 labelsize 8 align 1
}
+ Fl_Slider {} {
+ label FL_HORIZONTAL
+ callback callback
+ xywh {140 80 130 20} type Horizontal selection_color 1 labelsize 8
+ }
+ Fl_Slider {} {
+ label FL_HOR_FILL_SLIDER
+ callback callback
+ xywh {140 120 130 20} type {Horz Fill} selection_color 1 labelsize 8
+ }
+ Fl_Slider {} {
+ label FL_HOR_NICE_SLIDER
+ callback callback
+ xywh {140 160 130 20} type {Horz Knob} box FLAT_BOX color 10 selection_color 1 labelsize 8
+ }
Fl_Box {} {
label Fl_Value_Slider
- xywh {10 230 280 205} box ENGRAVED_BOX labelfont 1 align 17
+ xywh {10 230 280 210} box ENGRAVED_BOX labelfont 1 align 17
}
Fl_Value_Slider {} {
label 0
@@ -53,88 +68,117 @@ Function {} {open
callback callback
xywh {110 260 20 145} type {Vert Knob} box FLAT_BOX color 10 selection_color 1 labelsize 8 align 1
}
- Fl_Slider {} {
- label FL_HORIZONTAL
+ Fl_Value_Slider {} {
+ label FL_HOR_SLIDER
callback callback
- xywh {140 80 130 20} type Horizontal selection_color 1 labelsize 8
+ xywh {140 290 130 20} type Horizontal selection_color 1 labelsize 8
}
- Fl_Slider {} {
+ Fl_Value_Slider {} {
label FL_HOR_FILL_SLIDER
callback callback
- xywh {140 120 130 20} type {Horz Fill} selection_color 1 labelsize 8
+ xywh {140 330 130 20} type {Horz Fill} selection_color 1 labelsize 8
}
- Fl_Slider {} {
+ Fl_Value_Slider {} {
label FL_HOR_NICE_SLIDER
callback callback
- xywh {140 160 130 20} type {Horz Knob} box FLAT_BOX color 10 selection_color 1 labelsize 8
+ xywh {140 370 130 20} type {Horz Knob} box FLAT_BOX color 10 selection_color 1 labelsize 8
}
- Fl_Value_Slider {} {
- label FL_HOR_SLIDER
+ Fl_Box {} {
+ label Fl_Value_Input
+ xywh {10 450 135 50} box ENGRAVED_BOX labelfont 1 align 17
+ }
+ Fl_Value_Input {} {
+ label 0
callback callback
- xywh {140 290 130 20} type Horizontal selection_color 1 labelsize 8
+ tooltip {Value Input} xywh {30 470 105 25} labelsize 8 maximum 100 step 0.1
}
- Fl_Value_Slider {} {
- label FL_HOR_FILL_SLIDER
+ Fl_Box {} {
+ label Fl_Value_Output
+ xywh {155 450 135 50} box ENGRAVED_BOX labelfont 1 align 17
+ }
+ Fl_Value_Output {} {
+ label 0
callback callback
- xywh {140 330 130 20} type {Horz Fill} selection_color 1 labelsize 8
+ tooltip {Value Output} xywh {170 470 105 25} labelsize 8 maximum 100 step 0.1
}
Fl_Box {} {
- label Fl_Adjuster
- xywh {430 10 125 120} box ENGRAVED_BOX labelfont 1 align 17
+ label { Fl_Scrollbar}
+ xywh {300 10 130 120} box ENGRAVED_BOX labelfont 1 align 21
}
- Fl_Value_Slider {} {
- label FL_HOR_NICE_SLIDER
+ Fl_Scrollbar {} {
+ label FL_HORIZONTAL
callback callback
- xywh {140 370 130 20} type {Horz Knob} box FLAT_BOX color 10 selection_color 1 labelsize 8
+ tooltip {Horizontal Scrollbar} xywh {305 65 95 20} type Horizontal labelsize 8 maximum 100 value 20
+ }
+ Fl_Scrollbar {} {
+ label 0
+ callback callback
+ tooltip {Vertical Scrollbar} xywh {400 20 20 105} labelsize 8 align 1 maximum 100
+ }
+ Fl_Box {} {
+ label Fl_Adjuster
+ xywh {440 10 130 120} box ENGRAVED_BOX labelfont 1 align 17
}
Fl_Adjuster {} {
label {w()>h()}
callback callback
- tooltip {Horizontal Adjuster} xywh {440 60 75 25} labelsize 8
+ tooltip {Horizontal Adjuster} xywh {450 60 75 25} labelsize 8
}
Fl_Adjuster {} {
label {w()<h()}
callback callback
- tooltip {Vertical Adjuster} xywh {520 35 25 75} labelsize 8
+ tooltip {Vertical Adjuster} xywh {530 35 25 75} labelsize 8
}
Fl_Box {} {
label Fl_Counter
- xywh {345 135 210 115} box ENGRAVED_BOX labelfont 1 align 17
+ xywh {300 140 130 120} box ENGRAVED_BOX labelfont 1 align 17
}
Fl_Counter {} {
label 0
callback callback
- tooltip {Standard Counter} xywh {360 160 180 30} labelsize 8
+ tooltip {Standard Counter} xywh {310 175 110 25} labelsize 8
}
Fl_Counter {} {
label FL_SIMPLE_COUNTER
callback callback
- tooltip {Simple Counter} xywh {360 205 180 30} type Simple labelsize 8
+ tooltip {Simple Counter} xywh {310 215 110 25} type Simple labelsize 8
+ }
+ Fl_Box {} {
+ label Fl_Spinner
+ xywh {440 140 130 120} box ENGRAVED_BOX labelfont 1 align 17
+ }
+ Fl_Spinner {} {
+ label FL_INT_INPUT
+ xywh {465 176 80 24} labelsize 8 align 2 minimum -30 maximum 30 step 2 value 5
+ }
+ Fl_Spinner {} {
+ label FL_FLOAT_INPUT
+ xywh {465 216 80 24} type Float labelsize 8 align 2 minimum 0 maximum 1 step 0.01 value 0.05
}
Fl_Box {} {
label Fl_Dial
- xywh {300 260 255 105} box ENGRAVED_BOX labelfont 1 align 17
+ xywh {300 270 270 105} box ENGRAVED_BOX labelfont 1 align 17
}
Fl_Dial {} {
label 0
callback callback
- tooltip {Standard Dial} xywh {315 280 65 65} color 10 selection_color 1 labelsize 8 value 0.5
+ tooltip {Standard Dial} xywh {320 295 65 65} color 10 selection_color 1 labelsize 8 value 0.5
code0 {o->angles(0,315);}
}
Fl_Dial {} {
label FL_LINE_DIAL
callback callback
- tooltip {Line Dial} xywh {395 280 65 65} type Line color 10 selection_color 1 labelsize 8 value 0.5
+ tooltip {Line Dial} xywh {400 295 65 65} type Line color 10 selection_color 1 labelsize 8 value 0.5
}
Fl_Dial {} {
label FL_FILL_DIAL
callback callback
- tooltip {Fill Dial} xywh {475 280 65 65} type Fill color 10 selection_color 1 labelsize 8 value 1
+ tooltip {Fill Dial} xywh {480 295 65 65} type Fill color 10 selection_color 1 labelsize 8 value 1
code0 {o->angles(0,360);}
}
Fl_Box {} {
label Fl_Roller
- xywh {300 375 145 120} box ENGRAVED_BOX labelfont 1 align 17
+ xywh {300 385 150 115} box ENGRAVED_BOX labelfont 1 align 17
}
Fl_Roller {} {
label 0
@@ -144,43 +188,11 @@ Function {} {open
Fl_Roller {} {
label FL_HORIZONTAL
callback callback
- tooltip {Horizontal Roller} xywh {340 430 90 20} type Horizontal labelsize 8
- }
- Fl_Box {} {
- label Fl_Value_Input
- xywh {10 445 140 50} box ENGRAVED_BOX labelfont 1 align 17
+ tooltip {Horizontal Roller} xywh {345 430 90 20} type Horizontal labelsize 8
}
Fl_Box {} {
- label {Some widgets have color(FL_GREEN) and color2(FL_RED) to show the areas these effect.}
- xywh {455 375 100 120} box BORDER_FRAME color 0 selection_color 0 labelsize 10 align 128
- }
- Fl_Box {} {
- label Fl_Value_Output
- xywh {155 445 135 50} box ENGRAVED_BOX labelfont 1 align 17
- }
- Fl_Value_Input {} {
- label 0
- callback callback
- tooltip {Value Input} xywh {30 460 110 30} labelsize 8 maximum 100 step 0.1
- }
- Fl_Value_Output {} {
- label 0
- callback callback selected
- tooltip {Value Output} xywh {170 460 110 30} labelsize 8 maximum 100 step 0.1
- }
- Fl_Box {} {
- label { Fl_Scrollbar}
- xywh {295 10 130 120} box ENGRAVED_BOX labelfont 1 align 21
- }
- Fl_Scrollbar {} {
- label 0
- callback callback
- tooltip {Vertical Scrollbar} xywh {395 20 20 105} labelsize 8 align 1 maximum 100 slider_size 0.3
- }
- Fl_Scrollbar {} {
- label FL_HORIZONTAL
- callback callback
- tooltip {Horizontal Scrollbar} xywh {300 65 95 20} type Horizontal labelsize 8 maximum 100 slider_size 0.3
+ label {Some widgets have color(FL_GREEN) and color2(FL_RED) to show the areas these effect.} selected
+ xywh {460 385 110 115} box BORDER_FRAME color 0 selection_color 0 labelsize 11 align 128
}
}
}
diff --git a/vc2005/fltk.lib.vcproj b/vc2005/fltk.lib.vcproj
index 78be0d8..cb69d5c 100644
--- a/vc2005/fltk.lib.vcproj
+++ b/vc2005/fltk.lib.vcproj
@@ -4,6 +4,7 @@
Version="8.00"
Name="fltk"
ProjectGUID="{E070AAFC-9D03-41A3-BC7D-30887EA0D50F}"
+ RootNamespace="fltk"
>
<Platforms>
<Platform
@@ -1510,6 +1511,10 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_gtk.cxx"
+ >
+ </File>
+ <File
RelativePath="..\src\Fl_Help_View.cxx"
>
<FileConfiguration
@@ -1910,6 +1915,10 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_open_uri.cxx"
+ >
+ </File>
+ <File
RelativePath="..\src\fl_oval_box.cxx"
>
<FileConfiguration
diff --git a/vc2005/fltk.sln b/vc2005/fltk.sln
index bfa4e1c..78c7795 100644
--- a/vc2005/fltk.sln
+++ b/vc2005/fltk.sln
@@ -1,10 +1,10 @@
Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
+# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CubeView", "CubeView.vcproj", "{E30BB28D-DFA0-479C-B670-8CD872224B38}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
- {F7974A9C-C255-4385-96BC-E24EE0816F7C} = {F7974A9C-C255-4385-96BC-E24EE0816F7C}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {F7974A9C-C255-4385-96BC-E24EE0816F7C} = {F7974A9C-C255-4385-96BC-E24EE0816F7C}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adjuster", "adjuster.vcproj", "{51F6CDA8-3AF3-4DDC-B412-8E5E92F3393B}"
@@ -59,8 +59,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "clock", "clock.vcproj", "{1
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "colbrowser", "colbrowser.vcproj", "{D0BC7525-99E7-4247-B860-1B3CF2FF8165}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{C17BAB42-F00B-4F71-9DF6-A921511C89EE} = {C17BAB42-F00B-4F71-9DF6-A921511C89EE}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "color_chooser", "color_chooser.vcproj", "{BDACB9FC-6769-4A2D-A636-36CC25E3AC75}"
@@ -70,8 +70,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "color_chooser", "color_choo
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cube", "cube.vcproj", "{0973844B-3E5F-4C38-95FF-E8935243D287}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{F7974A9C-C255-4385-96BC-E24EE0816F7C} = {F7974A9C-C255-4385-96BC-E24EE0816F7C}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cursor", "cursor.vcproj", "{0D1DB0EE-E997-4550-85D4-BDE209B75AD6}"
@@ -86,72 +86,72 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curve", "curve.vcproj", "{2
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demo", "demo.vcproj", "{09427220-8C9C-498A-8D50-1638D3FB87E5}"
ProjectSection(ProjectDependencies) = postProject
- {2147B9FD-7D65-4854-9770-D7B8767DB9AE} = {2147B9FD-7D65-4854-9770-D7B8767DB9AE}
- {BDACB9FC-6769-4A2D-A636-36CC25E3AC75} = {BDACB9FC-6769-4A2D-A636-36CC25E3AC75}
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
- {0BDAEBF1-7A8D-434B-A543-4663464E972D} = {0BDAEBF1-7A8D-434B-A543-4663464E972D}
- {0D1DB0EE-E997-4550-85D4-BDE209B75AD6} = {0D1DB0EE-E997-4550-85D4-BDE209B75AD6}
- {122160ED-446E-4B15-8CB4-A2058DC7269A} = {122160ED-446E-4B15-8CB4-A2058DC7269A}
- {AA0ED6EA-2DA3-4486-AFBD-76CC9D206A1E} = {AA0ED6EA-2DA3-4486-AFBD-76CC9D206A1E}
- {F658ABE4-7FE1-4404-9B7C-55E0D660F1B3} = {F658ABE4-7FE1-4404-9B7C-55E0D660F1B3}
- {8B25CCE0-0988-4999-AE65-5A5EE31BB44D} = {8B25CCE0-0988-4999-AE65-5A5EE31BB44D}
- {1CD667DD-E7AE-4F36-A1F7-F41FB59786BE} = {1CD667DD-E7AE-4F36-A1F7-F41FB59786BE}
- {9F3F86DA-3CC5-481F-8201-166933B5C8FF} = {9F3F86DA-3CC5-481F-8201-166933B5C8FF}
- {D04E36D7-1C68-43E6-BE30-A7793CE3C799} = {D04E36D7-1C68-43E6-BE30-A7793CE3C799}
- {AD5ACED4-F6EE-4AC0-B502-23CFD10EF603} = {AD5ACED4-F6EE-4AC0-B502-23CFD10EF603}
- {7A2467D2-B03A-4964-A289-EF233EB39F69} = {7A2467D2-B03A-4964-A289-EF233EB39F69}
- {CEE12ACB-20E4-45E4-AD5E-D15D7CFF68C3} = {CEE12ACB-20E4-45E4-AD5E-D15D7CFF68C3}
- {2D29D6C9-B4A6-444C-A311-106A9C8A986F} = {2D29D6C9-B4A6-444C-A311-106A9C8A986F}
- {F0B8F4BD-955D-43CB-980C-805364D04A25} = {F0B8F4BD-955D-43CB-980C-805364D04A25}
- {E212D4B4-63D9-4D8D-84DB-45C8BC191462} = {E212D4B4-63D9-4D8D-84DB-45C8BC191462}
- {51F6CDA8-3AF3-4DDC-B412-8E5E92F3393B} = {51F6CDA8-3AF3-4DDC-B412-8E5E92F3393B}
- {27D45BA6-A403-4A71-B6D6-57DC0CEDCE15} = {27D45BA6-A403-4A71-B6D6-57DC0CEDCE15}
- {39ADA7A1-A2C1-4F0B-8B92-04E335570C27} = {39ADA7A1-A2C1-4F0B-8B92-04E335570C27}
- {1CA77C94-5785-4B38-B91A-1EAFBD885BC2} = {1CA77C94-5785-4B38-B91A-1EAFBD885BC2}
- {B5271094-DE51-4E60-B4FA-D8F0BDB969FE} = {B5271094-DE51-4E60-B4FA-D8F0BDB969FE}
- {3E822491-B134-43B0-A40E-9348FFAB527F} = {3E822491-B134-43B0-A40E-9348FFAB527F}
- {E30BB28D-DFA0-479C-B670-8CD872224B38} = {E30BB28D-DFA0-479C-B670-8CD872224B38}
- {CEB7B88B-3AA5-4DD6-818F-CF19E12BF1E1} = {CEB7B88B-3AA5-4DD6-818F-CF19E12BF1E1}
- {3322F289-B025-4DB1-A7D1-FBA3840F8A0B} = {3322F289-B025-4DB1-A7D1-FBA3840F8A0B}
- {92EEF887-8305-4D00-86B7-D3F98CC7AD87} = {92EEF887-8305-4D00-86B7-D3F98CC7AD87}
- {58A83386-65E6-4F22-8712-8B6B7E62913D} = {58A83386-65E6-4F22-8712-8B6B7E62913D}
- {4DFA9F84-0457-4FE4-8008-283270610487} = {4DFA9F84-0457-4FE4-8008-283270610487}
- {C3E7B77C-EED2-4046-9A30-9446C6F096A0} = {C3E7B77C-EED2-4046-9A30-9446C6F096A0}
- {BFE8CC78-6B58-4305-A096-796A3088BB26} = {BFE8CC78-6B58-4305-A096-796A3088BB26}
- {8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
- {AF932F77-1804-4DA4-A6DC-950795D6AFC1} = {AF932F77-1804-4DA4-A6DC-950795D6AFC1}
- {45236F71-7031-40BC-ADCD-0535A64C04B0} = {45236F71-7031-40BC-ADCD-0535A64C04B0}
- {EDDBF169-77C1-496E-9EFE-E500107E6E97} = {EDDBF169-77C1-496E-9EFE-E500107E6E97}
- {97541B63-87AA-4ACE-BBF5-175F8D1389EC} = {97541B63-87AA-4ACE-BBF5-175F8D1389EC}
- {289C605C-94CC-437F-836B-2FE41528EEEC} = {289C605C-94CC-437F-836B-2FE41528EEEC}
- {45797F58-624B-4FA0-A7A3-5956114D8215} = {45797F58-624B-4FA0-A7A3-5956114D8215}
- {B1749154-F87B-489D-B4B0-ABD5ED20A96F} = {B1749154-F87B-489D-B4B0-ABD5ED20A96F}
- {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
- {E1A8934E-CB8D-4F74-B78A-EC7952BC4CBE} = {E1A8934E-CB8D-4F74-B78A-EC7952BC4CBE}
- {0973844B-3E5F-4C38-95FF-E8935243D287} = {0973844B-3E5F-4C38-95FF-E8935243D287}
- {6927F349-29DF-4D60-BC8F-5A3F5E133735} = {6927F349-29DF-4D60-BC8F-5A3F5E133735}
- {3B0BF144-5D75-4D4A-BF75-7347186C808F} = {3B0BF144-5D75-4D4A-BF75-7347186C808F}
- {C17BAB42-F00B-4F71-9DF6-A921511C89EE} = {C17BAB42-F00B-4F71-9DF6-A921511C89EE}
- {23F17042-704E-4198-8017-A8584E884CF7} = {23F17042-704E-4198-8017-A8584E884CF7}
- {46771042-C840-4314-BA3C-C5BC2FBD7CBB} = {46771042-C840-4314-BA3C-C5BC2FBD7CBB}
- {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
- {65B5BB3F-EE54-4604-B49B-7676AED83AAB} = {65B5BB3F-EE54-4604-B49B-7676AED83AAB}
- {DF2A883A-7356-4603-9CB1-E8F1E6B1549D} = {DF2A883A-7356-4603-9CB1-E8F1E6B1549D}
- {0363AC35-F325-4C24-9DB9-E83337D55787} = {0363AC35-F325-4C24-9DB9-E83337D55787}
- {2E03AF33-56A1-4366-B016-184CD96F3B56} = {2E03AF33-56A1-4366-B016-184CD96F3B56}
- {37C32832-DCE4-4BAA-9306-826064B30CCB} = {37C32832-DCE4-4BAA-9306-826064B30CCB}
- {28D24031-1A17-497A-B926-59CF78076DED} = {28D24031-1A17-497A-B926-59CF78076DED}
- {2352F92C-8663-4637-B919-D76F0A9EC05E} = {2352F92C-8663-4637-B919-D76F0A9EC05E}
- {ADA2462A-3656-41D2-B8A8-8D942AA0F8E9} = {ADA2462A-3656-41D2-B8A8-8D942AA0F8E9}
- {D0BC7525-99E7-4247-B860-1B3CF2FF8165} = {D0BC7525-99E7-4247-B860-1B3CF2FF8165}
- {67CE1C24-B0C0-4CD6-8D0F-68513C2398B9} = {67CE1C24-B0C0-4CD6-8D0F-68513C2398B9}
- {D640A221-F95A-40FF-AC0E-0E8B615C7681} = {D640A221-F95A-40FF-AC0E-0E8B615C7681}
- {78079B1F-152B-4E83-87CB-364586AB3AAC} = {78079B1F-152B-4E83-87CB-364586AB3AAC}
- {DB6BAA16-C589-448F-9AB5-5969016549EB} = {DB6BAA16-C589-448F-9AB5-5969016549EB}
- {AE750416-51BA-485C-BD76-EF11B4536EE8} = {AE750416-51BA-485C-BD76-EF11B4536EE8}
- {7BBECC0F-9381-4BF2-87CA-3FD1DA93DEAF} = {7BBECC0F-9381-4BF2-87CA-3FD1DA93DEAF}
- {8D8D210D-F628-48BB-9127-D8003DF22018} = {8D8D210D-F628-48BB-9127-D8003DF22018}
{1C1B5A00-5F5D-4290-A07B-8A5A4A78570A} = {1C1B5A00-5F5D-4290-A07B-8A5A4A78570A}
+ {8D8D210D-F628-48BB-9127-D8003DF22018} = {8D8D210D-F628-48BB-9127-D8003DF22018}
+ {7BBECC0F-9381-4BF2-87CA-3FD1DA93DEAF} = {7BBECC0F-9381-4BF2-87CA-3FD1DA93DEAF}
+ {AE750416-51BA-485C-BD76-EF11B4536EE8} = {AE750416-51BA-485C-BD76-EF11B4536EE8}
+ {DB6BAA16-C589-448F-9AB5-5969016549EB} = {DB6BAA16-C589-448F-9AB5-5969016549EB}
+ {78079B1F-152B-4E83-87CB-364586AB3AAC} = {78079B1F-152B-4E83-87CB-364586AB3AAC}
+ {D640A221-F95A-40FF-AC0E-0E8B615C7681} = {D640A221-F95A-40FF-AC0E-0E8B615C7681}
+ {67CE1C24-B0C0-4CD6-8D0F-68513C2398B9} = {67CE1C24-B0C0-4CD6-8D0F-68513C2398B9}
+ {D0BC7525-99E7-4247-B860-1B3CF2FF8165} = {D0BC7525-99E7-4247-B860-1B3CF2FF8165}
+ {ADA2462A-3656-41D2-B8A8-8D942AA0F8E9} = {ADA2462A-3656-41D2-B8A8-8D942AA0F8E9}
+ {2352F92C-8663-4637-B919-D76F0A9EC05E} = {2352F92C-8663-4637-B919-D76F0A9EC05E}
+ {28D24031-1A17-497A-B926-59CF78076DED} = {28D24031-1A17-497A-B926-59CF78076DED}
+ {37C32832-DCE4-4BAA-9306-826064B30CCB} = {37C32832-DCE4-4BAA-9306-826064B30CCB}
+ {2E03AF33-56A1-4366-B016-184CD96F3B56} = {2E03AF33-56A1-4366-B016-184CD96F3B56}
+ {0363AC35-F325-4C24-9DB9-E83337D55787} = {0363AC35-F325-4C24-9DB9-E83337D55787}
+ {DF2A883A-7356-4603-9CB1-E8F1E6B1549D} = {DF2A883A-7356-4603-9CB1-E8F1E6B1549D}
+ {65B5BB3F-EE54-4604-B49B-7676AED83AAB} = {65B5BB3F-EE54-4604-B49B-7676AED83AAB}
+ {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
+ {46771042-C840-4314-BA3C-C5BC2FBD7CBB} = {46771042-C840-4314-BA3C-C5BC2FBD7CBB}
+ {23F17042-704E-4198-8017-A8584E884CF7} = {23F17042-704E-4198-8017-A8584E884CF7}
+ {C17BAB42-F00B-4F71-9DF6-A921511C89EE} = {C17BAB42-F00B-4F71-9DF6-A921511C89EE}
+ {3B0BF144-5D75-4D4A-BF75-7347186C808F} = {3B0BF144-5D75-4D4A-BF75-7347186C808F}
+ {6927F349-29DF-4D60-BC8F-5A3F5E133735} = {6927F349-29DF-4D60-BC8F-5A3F5E133735}
+ {0973844B-3E5F-4C38-95FF-E8935243D287} = {0973844B-3E5F-4C38-95FF-E8935243D287}
+ {E1A8934E-CB8D-4F74-B78A-EC7952BC4CBE} = {E1A8934E-CB8D-4F74-B78A-EC7952BC4CBE}
+ {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
+ {B1749154-F87B-489D-B4B0-ABD5ED20A96F} = {B1749154-F87B-489D-B4B0-ABD5ED20A96F}
+ {45797F58-624B-4FA0-A7A3-5956114D8215} = {45797F58-624B-4FA0-A7A3-5956114D8215}
+ {289C605C-94CC-437F-836B-2FE41528EEEC} = {289C605C-94CC-437F-836B-2FE41528EEEC}
+ {97541B63-87AA-4ACE-BBF5-175F8D1389EC} = {97541B63-87AA-4ACE-BBF5-175F8D1389EC}
+ {EDDBF169-77C1-496E-9EFE-E500107E6E97} = {EDDBF169-77C1-496E-9EFE-E500107E6E97}
+ {45236F71-7031-40BC-ADCD-0535A64C04B0} = {45236F71-7031-40BC-ADCD-0535A64C04B0}
+ {AF932F77-1804-4DA4-A6DC-950795D6AFC1} = {AF932F77-1804-4DA4-A6DC-950795D6AFC1}
+ {8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {BFE8CC78-6B58-4305-A096-796A3088BB26} = {BFE8CC78-6B58-4305-A096-796A3088BB26}
+ {C3E7B77C-EED2-4046-9A30-9446C6F096A0} = {C3E7B77C-EED2-4046-9A30-9446C6F096A0}
+ {4DFA9F84-0457-4FE4-8008-283270610487} = {4DFA9F84-0457-4FE4-8008-283270610487}
+ {58A83386-65E6-4F22-8712-8B6B7E62913D} = {58A83386-65E6-4F22-8712-8B6B7E62913D}
+ {92EEF887-8305-4D00-86B7-D3F98CC7AD87} = {92EEF887-8305-4D00-86B7-D3F98CC7AD87}
+ {3322F289-B025-4DB1-A7D1-FBA3840F8A0B} = {3322F289-B025-4DB1-A7D1-FBA3840F8A0B}
+ {CEB7B88B-3AA5-4DD6-818F-CF19E12BF1E1} = {CEB7B88B-3AA5-4DD6-818F-CF19E12BF1E1}
+ {E30BB28D-DFA0-479C-B670-8CD872224B38} = {E30BB28D-DFA0-479C-B670-8CD872224B38}
+ {3E822491-B134-43B0-A40E-9348FFAB527F} = {3E822491-B134-43B0-A40E-9348FFAB527F}
+ {B5271094-DE51-4E60-B4FA-D8F0BDB969FE} = {B5271094-DE51-4E60-B4FA-D8F0BDB969FE}
+ {1CA77C94-5785-4B38-B91A-1EAFBD885BC2} = {1CA77C94-5785-4B38-B91A-1EAFBD885BC2}
+ {39ADA7A1-A2C1-4F0B-8B92-04E335570C27} = {39ADA7A1-A2C1-4F0B-8B92-04E335570C27}
+ {27D45BA6-A403-4A71-B6D6-57DC0CEDCE15} = {27D45BA6-A403-4A71-B6D6-57DC0CEDCE15}
+ {51F6CDA8-3AF3-4DDC-B412-8E5E92F3393B} = {51F6CDA8-3AF3-4DDC-B412-8E5E92F3393B}
+ {E212D4B4-63D9-4D8D-84DB-45C8BC191462} = {E212D4B4-63D9-4D8D-84DB-45C8BC191462}
+ {F0B8F4BD-955D-43CB-980C-805364D04A25} = {F0B8F4BD-955D-43CB-980C-805364D04A25}
+ {2D29D6C9-B4A6-444C-A311-106A9C8A986F} = {2D29D6C9-B4A6-444C-A311-106A9C8A986F}
+ {CEE12ACB-20E4-45E4-AD5E-D15D7CFF68C3} = {CEE12ACB-20E4-45E4-AD5E-D15D7CFF68C3}
+ {7A2467D2-B03A-4964-A289-EF233EB39F69} = {7A2467D2-B03A-4964-A289-EF233EB39F69}
+ {AD5ACED4-F6EE-4AC0-B502-23CFD10EF603} = {AD5ACED4-F6EE-4AC0-B502-23CFD10EF603}
+ {D04E36D7-1C68-43E6-BE30-A7793CE3C799} = {D04E36D7-1C68-43E6-BE30-A7793CE3C799}
+ {9F3F86DA-3CC5-481F-8201-166933B5C8FF} = {9F3F86DA-3CC5-481F-8201-166933B5C8FF}
+ {1CD667DD-E7AE-4F36-A1F7-F41FB59786BE} = {1CD667DD-E7AE-4F36-A1F7-F41FB59786BE}
+ {8B25CCE0-0988-4999-AE65-5A5EE31BB44D} = {8B25CCE0-0988-4999-AE65-5A5EE31BB44D}
+ {F658ABE4-7FE1-4404-9B7C-55E0D660F1B3} = {F658ABE4-7FE1-4404-9B7C-55E0D660F1B3}
+ {AA0ED6EA-2DA3-4486-AFBD-76CC9D206A1E} = {AA0ED6EA-2DA3-4486-AFBD-76CC9D206A1E}
+ {122160ED-446E-4B15-8CB4-A2058DC7269A} = {122160ED-446E-4B15-8CB4-A2058DC7269A}
+ {0D1DB0EE-E997-4550-85D4-BDE209B75AD6} = {0D1DB0EE-E997-4550-85D4-BDE209B75AD6}
+ {0BDAEBF1-7A8D-434B-A543-4663464E972D} = {0BDAEBF1-7A8D-434B-A543-4663464E972D}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
+ {BDACB9FC-6769-4A2D-A636-36CC25E3AC75} = {BDACB9FC-6769-4A2D-A636-36CC25E3AC75}
+ {2147B9FD-7D65-4854-9770-D7B8767DB9AE} = {2147B9FD-7D65-4854-9770-D7B8767DB9AE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doublebuffer", "doublebuffer.vcproj", "{EDDBF169-77C1-496E-9EFE-E500107E6E97}"
@@ -166,27 +166,27 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "editor", "editor.vcproj", "
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fast_slow", "fast_slow.vcproj", "{2D29D6C9-B4A6-444C-A311-106A9C8A986F}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_chooser", "file_chooser.vcproj", "{6927F349-29DF-4D60-BC8F-5A3F5E133735}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
- {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
- {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
- {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
{D640A221-F95A-40FF-AC0E-0E8B615C7681} = {D640A221-F95A-40FF-AC0E-0E8B615C7681}
+ {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
+ {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
+ {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fltk", "fltk.lib.vcproj", "{E070AAFC-9D03-41A3-BC7D-30887EA0D50F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fltkdll", "fltkdll.vcproj", "{F0B8F4BD-955D-43CB-980C-805364D04A25}"
ProjectSection(ProjectDependencies) = postProject
- {289C605C-94CC-437F-836B-2FE41528EEEC} = {289C605C-94CC-437F-836B-2FE41528EEEC}
- {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
- {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
{D640A221-F95A-40FF-AC0E-0E8B615C7681} = {D640A221-F95A-40FF-AC0E-0E8B615C7681}
+ {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
+ {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
+ {289C605C-94CC-437F-836B-2FE41528EEEC} = {289C605C-94CC-437F-836B-2FE41528EEEC}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fltkforms", "fltkforms.vcproj", "{C17BAB42-F00B-4F71-9DF6-A921511C89EE}"
@@ -197,12 +197,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fltkimages", "fltkimages.vc
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fluid", "fluid.vcproj", "{8AED3078-8CD8-40C9-A8FF-46080024F1EB}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
- {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
- {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
- {C17BAB42-F00B-4F71-9DF6-A921511C89EE} = {C17BAB42-F00B-4F71-9DF6-A921511C89EE}
- {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
{D640A221-F95A-40FF-AC0E-0E8B615C7681} = {D640A221-F95A-40FF-AC0E-0E8B615C7681}
+ {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
+ {C17BAB42-F00B-4F71-9DF6-A921511C89EE} = {C17BAB42-F00B-4F71-9DF6-A921511C89EE}
+ {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
+ {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fonts", "fonts.vcproj", "{DF2A883A-7356-4603-9CB1-E8F1E6B1549D}"
@@ -212,32 +212,32 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fonts", "fonts.vcproj", "{D
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "forms", "forms.vcproj", "{B1749154-F87B-489D-B4B0-ABD5ED20A96F}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{C17BAB42-F00B-4F71-9DF6-A921511C89EE} = {C17BAB42-F00B-4F71-9DF6-A921511C89EE}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fractals", "fractals.vcproj", "{58A83386-65E6-4F22-8712-8B6B7E62913D}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{F7974A9C-C255-4385-96BC-E24EE0816F7C} = {F7974A9C-C255-4385-96BC-E24EE0816F7C}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fullscreen", "fullscreen.vcproj", "{2147B9FD-7D65-4854-9770-D7B8767DB9AE}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{F7974A9C-C255-4385-96BC-E24EE0816F7C} = {F7974A9C-C255-4385-96BC-E24EE0816F7C}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gl_overlay", "gl_overlay.vcproj", "{8D8D210D-F628-48BB-9127-D8003DF22018}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{F7974A9C-C255-4385-96BC-E24EE0816F7C} = {F7974A9C-C255-4385-96BC-E24EE0816F7C}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glpuzzle", "glpuzzle.vcproj", "{BFE8CC78-6B58-4305-A096-796A3088BB26}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{F7974A9C-C255-4385-96BC-E24EE0816F7C} = {F7974A9C-C255-4385-96BC-E24EE0816F7C}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hello", "hello.vcproj", "{ADA2462A-3656-41D2-B8A8-8D942AA0F8E9}"
@@ -247,11 +247,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hello", "hello.vcproj", "{A
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "help", "help.vcproj", "{9F3F86DA-3CC5-481F-8201-166933B5C8FF}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
- {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
- {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
- {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
{D640A221-F95A-40FF-AC0E-0E8B615C7681} = {D640A221-F95A-40FF-AC0E-0E8B615C7681}
+ {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
+ {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
+ {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iconize", "iconize.vcproj", "{37C32832-DCE4-4BAA-9306-826064B30CCB}"
@@ -266,8 +266,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "image", "image.vcproj", "{3
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "inactive", "inactive.vcproj", "{B5271094-DE51-4E60-B4FA-D8F0BDB969FE}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "input", "input.vcproj", "{1C1B5A00-5F5D-4290-A07B-8A5A4A78570A}"
@@ -277,22 +277,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "input", "input.vcproj", "{1
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "keyboard", "keyboard.vcproj", "{4DFA9F84-0457-4FE4-8008-283270610487}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "label", "label.vcproj", "{C3E7B77C-EED2-4046-9A30-9446C6F096A0}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{C17BAB42-F00B-4F71-9DF6-A921511C89EE} = {C17BAB42-F00B-4F71-9DF6-A921511C89EE}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "line_style", "line_style.vcproj", "{8B25CCE0-0988-4999-AE65-5A5EE31BB44D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mandelbrot", "mandelbrot.vcproj", "{7BBECC0F-9381-4BF2-87CA-3FD1DA93DEAF}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "menubar", "menubar.vcproj", "{78079B1F-152B-4E83-87CB-364586AB3AAC}"
@@ -317,8 +317,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "navigation", "navigation.vc
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "output", "output.vcproj", "{1CA77C94-5785-4B38-B91A-1EAFBD885BC2}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{C17BAB42-F00B-4F71-9DF6-A921511C89EE} = {C17BAB42-F00B-4F71-9DF6-A921511C89EE}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "overlay", "overlay.vcproj", "{3B0BF144-5D75-4D4A-BF75-7347186C808F}"
@@ -338,29 +338,29 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pixmap", "pixmap.vcproj", "
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pixmap_browser", "pixmap_browser.vcproj", "{289C605C-94CC-437F-836B-2FE41528EEEC}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
- {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
- {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
- {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
{D640A221-F95A-40FF-AC0E-0E8B615C7681} = {D640A221-F95A-40FF-AC0E-0E8B615C7681}
+ {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF} = {E1D9CE3F-400D-40E8-AD0D-61C29B1847FF}
+ {08B82852-90B3-4767-A5D2-F0A4FCCB2377} = {08B82852-90B3-4767-A5D2-F0A4FCCB2377}
+ {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "preferences", "preferences.vcproj", "{D04E36D7-1C68-43E6-BE30-A7793CE3C799}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radio", "radio.vcproj", "{AD5ACED4-F6EE-4AC0-B502-23CFD10EF603}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "resize", "resize.vcproj", "{46771042-C840-4314-BA3C-C5BC2FBD7CBB}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "resizebox", "resizebox.vcproj", "{2E03AF33-56A1-4366-B016-184CD96F3B56}"
@@ -375,8 +375,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scroll", "scroll.vcproj", "
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shape", "shape.vcproj", "{45797F58-624B-4FA0-A7A3-5956114D8215}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{F7974A9C-C255-4385-96BC-E24EE0816F7C} = {F7974A9C-C255-4385-96BC-E24EE0816F7C}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "subwindow", "subwindow.vcproj", "{7A2467D2-B03A-4964-A289-EF233EB39F69}"
@@ -400,8 +400,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "symbols", "symbols.vcproj",
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tabs", "tabs.vcproj", "{AF932F77-1804-4DA4-A6DC-950795D6AFC1}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "threads", "threads.vcproj", "{45236F71-7031-40BC-ADCD-0535A64C04B0}"
@@ -421,8 +421,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiled_image", "tiled_image.
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "valuators", "valuators.vcproj", "{CEE12ACB-20E4-45E4-AD5E-D15D7CFF68C3}"
ProjectSection(ProjectDependencies) = postProject
- {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
{8AED3078-8CD8-40C9-A8FF-46080024F1EB} = {8AED3078-8CD8-40C9-A8FF-46080024F1EB}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpeg", "jpeg.vcproj", "{08B82852-90B3-4767-A5D2-F0A4FCCB2377}"
diff --git a/vc2005/fltkdll.vcproj b/vc2005/fltkdll.vcproj
index e5939b4..1da832f 100644
--- a/vc2005/fltkdll.vcproj
+++ b/vc2005/fltkdll.vcproj
@@ -4,6 +4,7 @@
Version="8.00"
Name="fltkdll"
ProjectGUID="{F0B8F4BD-955D-43CB-980C-805364D04A25}"
+ RootNamespace="fltkdll"
>
<Platforms>
<Platform
@@ -1564,6 +1565,10 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_gtk.cxx"
+ >
+ </File>
+ <File
RelativePath="..\src\Fl_Help_Dialog.cxx"
>
<FileConfiguration
@@ -2001,6 +2006,10 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_open_uri.cxx"
+ >
+ </File>
+ <File
RelativePath="..\src\fl_oval_box.cxx"
>
<FileConfiguration
@@ -3408,6 +3417,22 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\freeglut_geometry.cxx"
+ >
+ </File>
+ <File
+ RelativePath="..\src\freeglut_stroke_mono_roman.cxx"
+ >
+ </File>
+ <File
+ RelativePath="..\src\freeglut_stroke_roman.cxx"
+ >
+ </File>
+ <File
+ RelativePath="..\src\freeglut_teapot.cxx"
+ >
+ </File>
+ <File
RelativePath="..\src\gl_draw.cxx"
>
<FileConfiguration
diff --git a/vc2005/fltkgl.vcproj b/vc2005/fltkgl.vcproj
index eefd371..7ff3e99 100644
--- a/vc2005/fltkgl.vcproj
+++ b/vc2005/fltkgl.vcproj
@@ -235,6 +235,22 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\freeglut_geometry.cxx"
+ >
+ </File>
+ <File
+ RelativePath="..\src\freeglut_stroke_mono_roman.cxx"
+ >
+ </File>
+ <File
+ RelativePath="..\src\freeglut_stroke_roman.cxx"
+ >
+ </File>
+ <File
+ RelativePath="..\src\freeglut_teapot.cxx"
+ >
+ </File>
+ <File
RelativePath="..\src\gl_draw.cxx"
>
<FileConfiguration
diff --git a/vcnet/blocks.vcproj b/vcnet/blocks.vcproj
new file mode 100644
index 0000000..6ec1261
--- /dev/null
+++ b/vcnet/blocks.vcproj
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="blocks"
+ ProjectGUID="{301A1EE3-8AF8-4EB8-9004-473B74E4083C}"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\blocks_"
+ IntermediateDirectory=".\blocks_"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\blocks_/blocks.pch"
+ AssemblerListingLocation=".\blocks_/"
+ ObjectFile=".\blocks_/"
+ ProgramDataBaseFileName=".\blocks_/"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="wsock32.lib comctl32.lib winmm.lib"
+ OutputFile="../test/blocksd.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\lib"
+ IgnoreDefaultLibraryNames="libcd"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\blocks_/blocksd.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\blocks_/blocks.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="4"
+ InlineFunctionExpansion="2"
+ FavorSizeOrSpeed="2"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/blocks.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="wsock32.lib comctl32.lib winmm.lib"
+ OutputFile="../test/blocks.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\lib"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile=".\Release/blocks.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/blocks.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\test\blocks.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vcnet/fltk.lib.vcproj b/vcnet/fltk.lib.vcproj
index 0be07e1..6f6d56e 100644
--- a/vcnet/fltk.lib.vcproj
+++ b/vcnet/fltk.lib.vcproj
@@ -1193,6 +1193,9 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_gtk.cxx">
+ </File>
+ <File
RelativePath="..\src\Fl_Help_View.cxx">
<FileConfiguration
Name="Debug|Win32">
@@ -1513,6 +1516,26 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_open_uri.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ FavorSizeOrSpeed="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\fl_oval_box.cxx">
<FileConfiguration
Name="Debug|Win32">
@@ -1673,6 +1696,26 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_gtk.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ FavorSizeOrSpeed="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\Fl_Positioner.cxx">
<FileConfiguration
Name="Debug|Win32">
@@ -2616,7 +2659,7 @@
</FileConfiguration>
</File>
<File
- RelativePath="..\src\vsnprintf.c">
+ RelativePath="..\src\screen_xywh.cxx">
<FileConfiguration
Name="Debug|Win32">
<Tool
@@ -2636,7 +2679,7 @@
</FileConfiguration>
</File>
<File
- RelativePath="..\src\screen_xywh.cxx">
+ RelativePath="..\src\vsnprintf.c">
<FileConfiguration
Name="Debug|Win32">
<Tool
diff --git a/vcnet/fltk.sln b/vcnet/fltk.sln
index a75f335..fcb5c62 100644
--- a/vcnet/fltk.sln
+++ b/vcnet/fltk.sln
@@ -143,6 +143,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demo", "demo.vcproj", "{094
{9F3F86DA-3CC5-481F-8201-166933B5C8FF} = {9F3F86DA-3CC5-481F-8201-166933B5C8FF}
{1CD667DD-E7AE-4F36-A1F7-F41FB59786BE} = {1CD667DD-E7AE-4F36-A1F7-F41FB59786BE}
{8B25CCE0-0988-4999-AE65-5A5EE31BB44D} = {8B25CCE0-0988-4999-AE65-5A5EE31BB44D}
+ {301A1EE3-8AF8-4EB8-9004-473B74E4083C} = {301A1EE3-8AF8-4EB8-9004-473B74E4083C}
{F658ABE4-7FE1-4404-9B7C-55E0D660F1B3} = {F658ABE4-7FE1-4404-9B7C-55E0D660F1B3}
{AA0ED6EA-2DA3-4486-AFBD-76CC9D206A1E} = {AA0ED6EA-2DA3-4486-AFBD-76CC9D206A1E}
{122160ED-446E-4B15-8CB4-A2058DC7269A} = {122160ED-446E-4B15-8CB4-A2058DC7269A}
@@ -451,6 +452,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "input_choice", "input_choic
{E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blocks", "blocks.vcproj", "{301A1EE3-8AF8-4EB8-9004-473B74E4083C}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6E8E1663-B88D-4454-ADF2-279666A93306} = {6E8E1663-B88D-4454-ADF2-279666A93306}
+ {E070AAFC-9D03-41A3-BC7D-30887EA0D50F} = {E070AAFC-9D03-41A3-BC7D-30887EA0D50F}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
@@ -737,6 +744,10 @@ Global
{50651D04-C8F7-4C2B-B412-0848573BDF88}.Debug.Build.0 = Debug|Win32
{50651D04-C8F7-4C2B-B412-0848573BDF88}.Release.ActiveCfg = Release|Win32
{50651D04-C8F7-4C2B-B412-0848573BDF88}.Release.Build.0 = Release|Win32
+ {301A1EE3-8AF8-4EB8-9004-473B74E4083C}.Debug.ActiveCfg = Debug|Win32
+ {301A1EE3-8AF8-4EB8-9004-473B74E4083C}.Debug.Build.0 = Debug|Win32
+ {301A1EE3-8AF8-4EB8-9004-473B74E4083C}.Release.ActiveCfg = Release|Win32
+ {301A1EE3-8AF8-4EB8-9004-473B74E4083C}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
diff --git a/vcnet/fltkdll.vcproj b/vcnet/fltkdll.vcproj
index 0d6ec07..380d697 100644
--- a/vcnet/fltkdll.vcproj
+++ b/vcnet/fltkdll.vcproj
@@ -1206,6 +1206,9 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_gtk.cxx">
+ </File>
+ <File
RelativePath="..\src\Fl_Help_Dialog.cxx">
<FileConfiguration
Name="Release|Win32">
@@ -1548,6 +1551,24 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_open_uri.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\fl_oval_box.cxx">
<FileConfiguration
Name="Release|Win32">
@@ -1692,6 +1713,24 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\fl_gtk.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\Fl_PNG_Image.cxx">
<FileConfiguration
Name="Release|Win32">
@@ -2649,6 +2688,78 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\freeglut_geometry.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\freeglut_stroke_mono_roman.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\freeglut_stroke_roman.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\freeglut_teapot.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="FL_DLL;FL_LIBRARY;WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\gl_draw.cxx">
<FileConfiguration
Name="Release|Win32">
@@ -2757,7 +2868,7 @@
</FileConfiguration>
</File>
<File
- RelativePath="..\src\vsnprintf.c">
+ RelativePath="..\src\screen_xywh.cxx">
<FileConfiguration
Name="Release|Win32">
<Tool
@@ -2775,7 +2886,7 @@
</FileConfiguration>
</File>
<File
- RelativePath="..\src\screen_xywh.cxx">
+ RelativePath="..\src\vsnprintf.c">
<FileConfiguration
Name="Release|Win32">
<Tool
diff --git a/vcnet/fltkgl.vcproj b/vcnet/fltkgl.vcproj
index d5c2afd..03eac24 100644
--- a/vcnet/fltkgl.vcproj
+++ b/vcnet/fltkgl.vcproj
@@ -172,6 +172,78 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\freeglut_geometry.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="" />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="" />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\freeglut_stroke_mono_roman.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="" />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="" />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\freeglut_stroke_roman.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="" />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="" />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\freeglut_teapot.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="" />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="" />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\gl_draw.cxx">
<FileConfiguration
Name="Release|Win32">
diff --git a/visualc/.cvsignore b/visualc/.cvsignore
deleted file mode 100644
index 3df5b20..0000000
--- a/visualc/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.bck
diff --git a/visualc/blocks.dsp b/visualc/blocks.dsp
new file mode 100644
index 0000000..58c0e55
--- /dev/null
+++ b/visualc/blocks.dsp
@@ -0,0 +1,97 @@
+# Microsoft Developer Studio Project File - Name="blocks" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=blocks - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "blocks.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "blocks.mak" CFG="blocks - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "blocks - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "blocks - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "blocks - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /GX /Os /Ob2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "WIN32_EXTRA_LEAN" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 winmm.lib fltk.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libcd" /out:"../test/blocks.exe" /libpath:"..\lib"
+# SUBTRACT LINK32 /pdb:none /incremental:yes
+
+!ELSEIF "$(CFG)" == "blocks - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "blocks_"
+# PROP BASE Intermediate_Dir "blocks_"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "blocks_"
+# PROP Intermediate_Dir "blocks_"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "WIN32_EXTRA_LEAN" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 winmm.lib fltkd.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd" /out:"../test/blocksd.exe" /pdbtype:sept /libpath:"..\lib"
+# SUBTRACT LINK32 /pdb:none /incremental:no
+
+!ENDIF
+
+# Begin Target
+
+# Name "blocks - Win32 Release"
+# Name "blocks - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\test\blocks.cxx
+# End Source File
+# End Target
+# End Project
diff --git a/visualc/fltk.dsw b/visualc/fltk.dsw
index 6f06708..980bb99 100644
--- a/visualc/fltk.dsw
+++ b/visualc/fltk.dsw
@@ -84,6 +84,21 @@ Package=<4>
###############################################################################
+Project: "blocks"=".\blocks.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name fltk
+ End Project Dependency
+}}}
+
+###############################################################################
+
Project: "boxtype"=".\boxtype.dsp" - Package Owner=<4>
Package=<5>
@@ -464,6 +479,9 @@ Package=<4>
Begin Project Dependency
Project_Dep_Name sudoku
End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name blocks
+ End Project Dependency
}}}
###############################################################################
diff --git a/visualc/fltk.lib.dsp b/visualc/fltk.lib.dsp
index fbae8d6..8b60e4c 100644
--- a/visualc/fltk.lib.dsp
+++ b/visualc/fltk.lib.dsp
@@ -251,6 +251,14 @@ SOURCE=..\src\fl_draw_pixmap.cxx
# End Source File
# Begin Source File
+SOURCE=..\src\fl_encoding_latin1.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\fl_encoding_mac_roman.cxx
+# End Source File
+# Begin Source File
+
SOURCE=..\src\fl_engraved_label.cxx
# End Source File
# Begin Source File
@@ -299,6 +307,10 @@ SOURCE=..\src\Fl_Group.cxx
# End Source File
# Begin Source File
+SOURCE=..\src\fl_gtk.cxx
+# End Source File
+# Begin Source File
+
SOURCE=..\src\Fl_Help_View.cxx
# End Source File
# Begin Source File
@@ -363,6 +375,10 @@ SOURCE=..\src\Fl_Multi_Label.cxx
# End Source File
# Begin Source File
+SOURCE=..\src\fl_open_uri.cxx
+# End Source File
+# Begin Source File
+
SOURCE=..\src\fl_oval_box.cxx
# End Source File
# Begin Source File
@@ -587,11 +603,11 @@ SOURCE=..\src\scandir.c
# End Source File
# Begin Source File
-SOURCE=..\src\vsnprintf.c
+SOURCE=..\src\screen_xywh.cxx
# End Source File
# Begin Source File
-SOURCE=..\src\screen_xywh.cxx
+SOURCE=..\src\vsnprintf.c
# End Source File
# End Target
# End Project
diff --git a/visualc/fltkdll.dsp b/visualc/fltkdll.dsp
index 9d0b3dd..6035b88 100644
--- a/visualc/fltkdll.dsp
+++ b/visualc/fltkdll.dsp
@@ -93,876 +93,922 @@ LINK32=link.exe
SOURCE=..\src\filename_absolute.cxx
DEP_CPP_FILEN=\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_FILEN=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\filename_expand.cxx
DEP_CPP_FILENA=\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_FILENA=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\filename_ext.cxx
DEP_CPP_FILENAM=\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
NODEP_CPP_FILENAM=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\filename_isdir.cxx
DEP_CPP_FILENAME=\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_FILENAME=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\filename_list.cxx
DEP_CPP_FILENAME_=\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_FILENAME_=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\filename_match.cxx
DEP_CPP_FILENAME_M=\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
NODEP_CPP_FILENAME_M=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\filename_setext.cxx
DEP_CPP_FILENAME_S=\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_FILENAME_S=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl.cxx
DEP_CPP_FL_CX=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_bar.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\FL\Fl_Sys_Menu_Bar.H"\
"..\fl\fl_tooltip.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
+ "..\src\fl_font.h"\
+ "..\src\Fl_mac.cxx"\
+ "..\src\fl_win32.cxx"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
+
+NODEP_CPP_FL_CX=\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_abort.cxx
DEP_CPP_FL_AB=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_add_idle.cxx
DEP_CPP_FL_AD=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Adjuster.cxx
DEP_CPP_FL_ADJ=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
"..\fl\fl_adjuster.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
"..\src\fastarrow.h"\
"..\src\mediumarrow.h"\
"..\src\slowarrow.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_arc.cxx
DEP_CPP_FL_AR=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\FL\math.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_FL_AR=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_arci.cxx
DEP_CPP_FL_ARC=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
"..\FL\math.h"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
NODEP_CPP_FL_ARC=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_arg.cxx
DEP_CPP_FL_ARG=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_tooltip.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
NODEP_CPP_FL_ARG=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_ask.cxx
DEP_CPP_FL_AS=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
"..\fl\fl_return_button.h"\
"..\fl\fl_secret_input.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Bitmap.cxx
DEP_CPP_FL_BI=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_BMP_Image.cxx
DEP_CPP_FL_BM=\
+ "..\fl\enumerations.h"\
"..\fl\fl_bmp_image.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Box.cxx
DEP_CPP_FL_BO=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_boxtype.cxx
DEP_CPP_FL_BOX=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_widget.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Browser.cxx
DEP_CPP_FL_BR=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Browser_.cxx
DEP_CPP_FL_BRO=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Browser_load.cxx
DEP_CPP_FL_BROW=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Button.cxx
DEP_CPP_FL_BU=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Chart.cxx
DEP_CPP_FL_CH=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_chart.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_widget.h"\
"..\FL\math.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_chart.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
NODEP_CPP_FL_CH=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Check_Browser.cxx
DEP_CPP_FL_CHE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_browser_.h"\
"..\fl\fl_check_browser.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Check_Button.cxx
DEP_CPP_FL_CHEC=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_check_button.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_check_button.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Choice.cxx
DEP_CPP_FL_CHO=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_choice.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Clock.cxx
DEP_CPP_FL_CL=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_clock.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_clock.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_color.cxx
DEP_CPP_FL_CO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\fl_cmap.h"\
"..\src\fl_color_mac.cxx"\
"..\src\fl_color_win32.cxx"\
"..\src\Fl_XColor.H"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Color_Chooser.cxx
DEP_CPP_FL_COL=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_choice.h"\
"..\fl\fl_color_chooser.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_item.h"\
"..\fl\fl_return_button.h"\
+ "..\fl\fl_valuator.h"\
"..\fl\fl_value_input.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\FL\math.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
NODEP_CPP_FL_COL=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_compose.cxx
DEP_CPP_FL_COM=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Counter.cxx
DEP_CPP_FL_COU=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_counter.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_counter.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_cursor.cxx
DEP_CPP_FL_CU=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_curve.cxx
DEP_CPP_FL_CUR=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Dial.cxx
DEP_CPP_FL_DI=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_dial.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
"..\FL\math.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_dial.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
NODEP_CPP_FL_DI=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_diamond_box.cxx
DEP_CPP_FL_DIA=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_display.cxx
DEP_CPP_FL_DIS=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_dnd.cxx
DEP_CPP_FL_DN=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\fl_dnd_mac.cxx"\
"..\src\fl_dnd_win32.cxx"\
"..\src\fl_dnd_x.cxx"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Double_Window.cxx
DEP_CPP_FL_DO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_draw.cxx
DEP_CPP_FL_DR=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_draw_image.cxx
DEP_CPP_FL_DRA=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\fl_draw_image_mac.cxx"\
"..\src\fl_draw_image_win32.cxx"\
"..\src\Fl_XColor.H"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_draw_pixmap.cxx
DEP_CPP_FL_DRAW=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
-SOURCE=..\src\fl_engraved_label.cxx
+SOURCE=..\src\fl_encoding_latin1.cxx
DEP_CPP_FL_EN=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\fl_encoding_mac_roman.cxx
+DEP_CPP_FL_ENC=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\fl_engraved_label.cxx
+DEP_CPP_FL_ENG=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_File_Browser.cxx
DEP_CPP_FL_FI=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\FL\Fl_File_Browser.H"\
+ "..\fl\fl_file_icon.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
NODEP_CPP_FL_FI=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_File_Chooser.cxx
DEP_CPP_FL_FIL=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_check_button.h"\
+ "..\fl\fl_choice.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\FL\Fl_File_Browser.H"\
+ "..\fl\fl_file_chooser.h"\
+ "..\fl\fl_file_icon.h"\
"..\fl\fl_file_input.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_button.h"\
+ "..\fl\fl_menu_item.h"\
"..\fl\fl_preferences.h"\
"..\fl\fl_return_button.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
"..\fl\fl_tile.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_check_button.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_chooser.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_button.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
NODEP_CPP_FL_FIL=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_File_Chooser2.cxx
DEP_CPP_FL_FILE=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_check_button.h"\
+ "..\fl\fl_choice.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_export.h"\
"..\FL\Fl_File_Browser.H"\
+ "..\fl\fl_file_chooser.h"\
+ "..\fl\fl_file_icon.h"\
"..\fl\fl_file_input.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_button.h"\
+ "..\fl\fl_menu_item.h"\
"..\fl\fl_preferences.h"\
"..\fl\fl_return_button.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_shared_image.h"\
+ "..\fl\fl_slider.h"\
"..\fl\fl_tile.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_check_button.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_chooser.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_button.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_shared_image.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
NODEP_CPP_FL_FILE=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_file_dir.cxx
DEP_CPP_FL_FILE_=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_check_button.h"\
+ "..\fl\fl_choice.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_export.h"\
"..\FL\Fl_File_Browser.H"\
+ "..\fl\fl_file_chooser.h"\
+ "..\fl\fl_file_icon.h"\
"..\fl\fl_file_input.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_button.h"\
+ "..\fl\fl_menu_item.h"\
"..\fl\fl_preferences.h"\
"..\fl\fl_return_button.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
"..\fl\fl_tile.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_check_button.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_chooser.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_button.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
NODEP_CPP_FL_FILE_=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_File_Icon.cxx
DEP_CPP_FL_FILE_I=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_file_icon.h"\
+ "..\fl\fl_widget.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
NODEP_CPP_FL_FILE_I=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_File_Icon2.cxx
DEP_CPP_FL_FILE_IC=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_file_icon.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_shared_image.h"\
+ "..\fl\fl_widget.h"\
"..\FL\math.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_shared_image.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
NODEP_CPP_FL_FILE_IC=\
- "..\..\..\usr\include\dirent.h"\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_File_Input.cxx
DEP_CPP_FL_FILE_IN=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\fl\fl_file_input.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_font.cxx
DEP_CPP_FL_FO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\fl_font.h"\
"..\src\fl_font_mac.cxx"\
@@ -971,618 +1017,639 @@ DEP_CPP_FL_FO=\
"..\src\fl_font_xft.cxx"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_get_key.cxx
DEP_CPP_FL_GE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\Fl_get_key_mac.cxx"\
"..\src\fl_get_key_win32.cxx"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_get_system_colors.cxx
DEP_CPP_FL_GET=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_pixmap.h"\
"..\fl\fl_tiled_image.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
"..\FL\math.h"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
"..\src\tile.xpm"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
NODEP_CPP_FL_GET=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_GIF_Image.cxx
DEP_CPP_FL_GI=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
"..\fl\fl_gif_image.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_pixmap.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Gl_Choice.cxx
DEP_CPP_FL_GL=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\FL\gl.h"\
"..\fl\gl_draw.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\Fl_Gl_Choice.H"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Gl_Overlay.cxx
DEP_CPP_FL_GL_=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\Fl_Gl_Window.H"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\FL\gl.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\Fl_Gl_Choice.H"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_gl_window.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Gl_Window.cxx
DEP_CPP_FL_GL_W=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\Fl_Gl_Window.H"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\FL\gl.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\Fl_Gl_Choice.H"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_gl_window.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_grab.cxx
DEP_CPP_FL_GR=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Group.cxx
DEP_CPP_FL_GRO=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\fl_gtk.cxx
+DEP_CPP_FL_GT=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Help_Dialog.cxx
DEP_CPP_FL_HE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\FL\Fl_Help_Dialog.H"\
"..\FL\Fl_Help_View.H"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_shared_image.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_shared_image.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Help_View.cxx
DEP_CPP_FL_HEL=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\FL\Fl_Help_View.H"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_pixmap.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_shared_image.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_shared_image.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Image.cxx
DEP_CPP_FL_IM=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_images_core.cxx
DEP_CPP_FL_IMA=\
+ "..\fl\enumerations.h"\
"..\fl\fl_bmp_image.h"\
+ "..\fl\fl_export.h"\
"..\fl\fl_gif_image.h"\
+ "..\fl\fl_image.h"\
"..\fl\fl_jpeg_image.h"\
+ "..\fl\fl_pixmap.h"\
"..\fl\fl_png_image.h"\
"..\fl\fl_pnm_image.h"\
+ "..\fl\fl_shared_image.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_shared_image.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Input.cxx
DEP_CPP_FL_IN=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Input_.cxx
DEP_CPP_FL_INP=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_JPEG_Image.cxx
DEP_CPP_FL_JP=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
"..\fl\fl_jpeg_image.h"\
+ "..\jpeg\jconfig.h"\
+ "..\jpeg\jerror.h"\
+ "..\jpeg\jmorecfg.h"\
+ "..\jpeg\jpegint.h"\
"..\jpeg\jpeglib.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"jpeg\jconfig.h"\
- {$(INCLUDE)}"jpeg\jerror.h"\
- {$(INCLUDE)}"jpeg\jmorecfg.h"\
- {$(INCLUDE)}"jpeg\jpegint.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_labeltype.cxx
DEP_CPP_FL_LA=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Light_Button.cxx
DEP_CPP_FL_LI=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_widget.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_line_style.cxx
DEP_CPP_FL_LIN=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_lock.cxx
DEP_CPP_FL_LO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Menu.cxx
DEP_CPP_FL_ME=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_item.h"\
"..\fl\fl_menu_window.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_single_window.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
+ "..\fl\fl_single_window.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Menu_.cxx
DEP_CPP_FL_MEN=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Menu_add.cxx
DEP_CPP_FL_MENU=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Menu_Bar.cxx
DEP_CPP_FL_MENU_=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_bar.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_bar.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Menu_Button.cxx
DEP_CPP_FL_MENU_B=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_button.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_button.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Menu_global.cxx
DEP_CPP_FL_MENU_G=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Menu_Window.cxx
DEP_CPP_FL_MENU_W=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_menu_window.h"\
+ "..\fl\fl_single_window.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_single_window.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Multi_Label.cxx
DEP_CPP_FL_MU=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_item.h"\
"..\fl\fl_multi_label.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_widget.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\fl_open_uri.cxx
+DEP_CPP_FL_OP=\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
+
+NODEP_CPP_FL_OP=\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_oval_box.cxx
DEP_CPP_FL_OV=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_overlay.cxx
DEP_CPP_FL_OVE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_overlay_visual.cxx
DEP_CPP_FL_OVER=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Overlay_Window.cxx
DEP_CPP_FL_OVERL=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_overlay_window.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_own_colormap.cxx
DEP_CPP_FL_OW=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Pack.cxx
DEP_CPP_FL_PA=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_pack.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Pixmap.cxx
DEP_CPP_FL_PI=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_pixmap.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_plastic.cxx
DEP_CPP_FL_PL=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_PNG_Image.cxx
DEP_CPP_FL_PN=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
"..\fl\fl_png_image.h"\
"..\png\png.h"\
+ "..\png\pngconf.h"\
+ "..\zlib\zconf.h"\
"..\zlib\zlib.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"png\pngconf.h"\
- {$(INCLUDE)}"zlib\zconf.h"\
NODEP_CPP_FL_PN=\
"..\png\pngusr.h"\
@@ -1592,212 +1659,244 @@ NODEP_CPP_FL_PN=\
SOURCE=..\src\Fl_PNM_Image.cxx
DEP_CPP_FL_PNM=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
"..\fl\fl_pnm_image.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Positioner.cxx
DEP_CPP_FL_PO=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_positioner.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_positioner.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Preferences.cxx
DEP_CPP_FL_PR=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
"..\fl\fl_preferences.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_FL_PR=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Progress.cxx
DEP_CPP_FL_PRO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\fl\fl_progress.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
-SOURCE=..\src\fl_rect.cxx
+SOURCE=..\src\fl_read_image.cxx
DEP_CPP_FL_RE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
+ "..\fl\x.h"\
+ "..\src\fl_read_image_mac.cxx"\
+ "..\src\fl_read_image_win32.cxx"\
+ "..\src\flstring.h"\
+ ".\config.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\fl_rect.cxx
+DEP_CPP_FL_REC=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Repeat_Button.cxx
DEP_CPP_FL_REP=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_export.h"\
"..\fl\fl_repeat_button.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Return_Button.cxx
DEP_CPP_FL_RET=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\fl\fl_return_button.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Roller.cxx
DEP_CPP_FL_RO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\fl\fl_roller.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_round_box.cxx
DEP_CPP_FL_ROU=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Round_Button.cxx
DEP_CPP_FL_ROUN=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_round_button.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_round_button.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_rounded_box.cxx
DEP_CPP_FL_ROUND=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Scroll.cxx
DEP_CPP_FL_SC=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
"..\fl\fl_scroll.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
"..\fl\fl_tiled_image.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_scroll_area.cxx
DEP_CPP_FL_SCR=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Scrollbar.cxx
DEP_CPP_FL_SCRO=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_set_font.cxx
DEP_CPP_FL_SE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\fl_font.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_set_fonts.cxx
DEP_CPP_FL_SET=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\fl_font.h"\
"..\src\fl_set_fonts_mac.cxx"\
@@ -1806,836 +1905,882 @@ DEP_CPP_FL_SET=\
"..\src\fl_set_fonts_xft.cxx"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_shadow_box.cxx
DEP_CPP_FL_SH=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Shared_Image.cxx
DEP_CPP_FL_SHA=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_pixmap.h"\
+ "..\fl\fl_shared_image.h"\
"..\fl\fl_xbm_image.h"\
"..\fl\fl_xpm_image.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_shared_image.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_shortcut.cxx
DEP_CPP_FL_SHO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_show_colormap.cxx
DEP_CPP_FL_SHOW=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_show_colormap.h"\
+ "..\fl\fl_single_window.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_show_colormap.h"\
- {$(INCLUDE)}"fl\fl_single_window.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Single_Window.cxx
DEP_CPP_FL_SI=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_single_window.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_single_window.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Slider.cxx
DEP_CPP_FL_SL=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_symbols.cxx
DEP_CPP_FL_SY=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\FL\math.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
+
+NODEP_CPP_FL_SY=\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Tabs.cxx
DEP_CPP_FL_TA=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_tabs.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_tooltip.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Text_Buffer.cxx
DEP_CPP_FL_TE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_text_buffer.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_text_buffer.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Text_Display.cxx
DEP_CPP_FL_TEX=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_text_buffer.h"\
+ "..\fl\fl_text_display.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_text_buffer.h"\
- {$(INCLUDE)}"fl\fl_text_display.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Text_Editor.cxx
DEP_CPP_FL_TEXT=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_text_buffer.h"\
+ "..\fl\fl_text_display.h"\
"..\fl\fl_text_editor.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_text_buffer.h"\
- {$(INCLUDE)}"fl\fl_text_display.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Tile.cxx
DEP_CPP_FL_TI=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_tile.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Tiled_Image.cxx
DEP_CPP_FL_TIL=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
"..\fl\fl_tiled_image.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Tooltip.cxx
DEP_CPP_FL_TO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_menu_window.h"\
+ "..\fl\fl_single_window.h"\
"..\fl\fl_tooltip.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_single_window.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Valuator.cxx
DEP_CPP_FL_VA=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_widget.h"\
"..\FL\math.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
NODEP_CPP_FL_VA=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Value_Input.cxx
DEP_CPP_FL_VAL=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_valuator.h"\
"..\fl\fl_value_input.h"\
+ "..\fl\fl_widget.h"\
"..\FL\math.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
NODEP_CPP_FL_VAL=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Value_Output.cxx
DEP_CPP_FL_VALU=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_valuator.h"\
"..\fl\fl_value_output.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Value_Slider.cxx
DEP_CPP_FL_VALUE=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_value_slider.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_slider.h"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_value_slider.h"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\fl_vertex.cxx
DEP_CPP_FL_VE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
"..\FL\math.h"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
NODEP_CPP_FL_VE=\
- "..\..\..\usr\include\math.h"\
+ "..\..\..\..\..\usr\include\math.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_visual.cxx
DEP_CPP_FL_VI=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Widget.cxx
DEP_CPP_FL_WI=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_tooltip.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\fl_widget.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Window.cxx
DEP_CPP_FL_WIN=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Window_fullscreen.cxx
DEP_CPP_FL_WIND=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Window_hotspot.cxx
DEP_CPP_FL_WINDO=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Window_iconize.cxx
DEP_CPP_FL_WINDOW=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_Wizard.cxx
DEP_CPP_FL_WIZ=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\fl\fl_wizard.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_x.cxx
DEP_CPP_FL_X_=\
- "..\FL\Fl_Sys_Menu_Bar.H"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
"..\fl\fl_tooltip.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
- "..\src\Fl_mac.cxx"\
- "..\src\fl_win32.cxx"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_bar.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
-
-NODEP_CPP_FL_X_=\
- "..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_XBM_Image.cxx
DEP_CPP_FL_XB=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
"..\fl\fl_xbm_image.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
# End Source File
# Begin Source File
SOURCE=..\src\Fl_XPM_Image.cxx
DEP_CPP_FL_XP=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_pixmap.h"\
"..\fl\fl_xpm_image.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
# End Source File
# Begin Source File
SOURCE=..\src\flstring.c
DEP_CPP_FLSTR=\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
# End Source File
# Begin Source File
SOURCE=..\src\forms_bitmap.cxx
DEP_CPP_FORMS=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_chart.h"\
+ "..\fl\fl_check_button.h"\
+ "..\fl\fl_choice.h"\
+ "..\fl\fl_clock.h"\
+ "..\fl\fl_counter.h"\
+ "..\fl\fl_dial.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\FL\Fl_File_Browser.H"\
+ "..\fl\fl_file_chooser.h"\
+ "..\fl\fl_file_icon.h"\
"..\fl\fl_file_input.h"\
+ "..\fl\Fl_FormsBitmap.H"\
+ "..\fl\Fl_FormsPixmap.H"\
+ "..\fl\Fl_Free.H"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_button.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_pixmap.h"\
+ "..\fl\fl_positioner.h"\
"..\fl\fl_preferences.h"\
"..\fl\fl_return_button.h"\
+ "..\fl\fl_round_button.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_show_colormap.h"\
+ "..\fl\fl_slider.h"\
"..\fl\fl_tile.h"\
+ "..\FL\Fl_Timer.H"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_value_slider.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\fl\forms.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_chart.h"\
- {$(INCLUDE)}"fl\fl_check_button.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_clock.h"\
- {$(INCLUDE)}"fl\fl_counter.h"\
- {$(INCLUDE)}"fl\fl_dial.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_chooser.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_formsbitmap.h"\
- {$(INCLUDE)}"fl\fl_formspixmap.h"\
- {$(INCLUDE)}"fl\fl_free.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_button.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_positioner.h"\
- {$(INCLUDE)}"fl\fl_round_button.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_show_colormap.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_timer.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_value_slider.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
NODEP_CPP_FORMS=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\forms_compatability.cxx
DEP_CPP_FORMS_=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_chart.h"\
+ "..\fl\fl_check_button.h"\
+ "..\fl\fl_choice.h"\
+ "..\fl\fl_clock.h"\
+ "..\fl\fl_counter.h"\
+ "..\fl\fl_dial.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\FL\Fl_File_Browser.H"\
+ "..\fl\fl_file_chooser.h"\
+ "..\fl\fl_file_icon.h"\
"..\fl\fl_file_input.h"\
+ "..\fl\Fl_FormsBitmap.H"\
+ "..\fl\Fl_FormsPixmap.H"\
+ "..\fl\Fl_Free.H"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_button.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_pixmap.h"\
+ "..\fl\fl_positioner.h"\
"..\fl\fl_preferences.h"\
"..\fl\fl_repeat_button.h"\
"..\fl\fl_return_button.h"\
+ "..\fl\fl_round_button.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_show_colormap.h"\
+ "..\fl\fl_slider.h"\
"..\fl\fl_tile.h"\
+ "..\FL\Fl_Timer.H"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_value_slider.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\fl\forms.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_chart.h"\
- {$(INCLUDE)}"fl\fl_check_button.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_clock.h"\
- {$(INCLUDE)}"fl\fl_counter.h"\
- {$(INCLUDE)}"fl\fl_dial.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_chooser.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_formsbitmap.h"\
- {$(INCLUDE)}"fl\fl_formspixmap.h"\
- {$(INCLUDE)}"fl\fl_free.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_button.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_positioner.h"\
- {$(INCLUDE)}"fl\fl_round_button.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_show_colormap.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_timer.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_value_slider.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
NODEP_CPP_FORMS_=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\forms_free.cxx
DEP_CPP_FORMS_F=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_free.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\Fl_Free.H"\
+ "..\fl\fl_widget.h"\
# End Source File
# Begin Source File
SOURCE=..\src\forms_fselect.cxx
DEP_CPP_FORMS_FS=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_chart.h"\
+ "..\fl\fl_check_button.h"\
+ "..\fl\fl_choice.h"\
+ "..\fl\fl_clock.h"\
+ "..\fl\fl_counter.h"\
+ "..\fl\fl_dial.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\FL\Fl_File_Browser.H"\
+ "..\fl\fl_file_chooser.h"\
+ "..\fl\fl_file_icon.h"\
"..\fl\fl_file_input.h"\
+ "..\fl\Fl_FormsBitmap.H"\
+ "..\fl\Fl_FormsPixmap.H"\
+ "..\fl\Fl_Free.H"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_button.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_pixmap.h"\
+ "..\fl\fl_positioner.h"\
"..\fl\fl_preferences.h"\
"..\fl\fl_return_button.h"\
+ "..\fl\fl_round_button.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_show_colormap.h"\
+ "..\fl\fl_slider.h"\
"..\fl\fl_tile.h"\
+ "..\FL\Fl_Timer.H"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_value_slider.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\fl\forms.h"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_chart.h"\
- {$(INCLUDE)}"fl\fl_check_button.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_clock.h"\
- {$(INCLUDE)}"fl\fl_counter.h"\
- {$(INCLUDE)}"fl\fl_dial.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_chooser.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_formsbitmap.h"\
- {$(INCLUDE)}"fl\fl_formspixmap.h"\
- {$(INCLUDE)}"fl\fl_free.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_button.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_positioner.h"\
- {$(INCLUDE)}"fl\fl_round_button.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_show_colormap.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_timer.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_value_slider.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
NODEP_CPP_FORMS_FS=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\forms_pixmap.cxx
DEP_CPP_FORMS_P=\
+ "..\fl\enumerations.h"\
+ "..\fl\filename.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_ask.h"\
+ "..\fl\fl_bitmap.h"\
+ "..\fl\fl_box.h"\
+ "..\fl\fl_browser.h"\
+ "..\fl\fl_browser_.h"\
+ "..\fl\fl_button.h"\
+ "..\fl\fl_chart.h"\
+ "..\fl\fl_check_button.h"\
+ "..\fl\fl_choice.h"\
+ "..\fl\fl_clock.h"\
+ "..\fl\fl_counter.h"\
+ "..\fl\fl_dial.h"\
+ "..\fl\fl_double_window.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
"..\FL\Fl_File_Browser.H"\
+ "..\fl\fl_file_chooser.h"\
+ "..\fl\fl_file_icon.h"\
"..\fl\fl_file_input.h"\
+ "..\fl\Fl_FormsBitmap.H"\
+ "..\fl\Fl_FormsPixmap.H"\
+ "..\fl\Fl_Free.H"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_input.h"\
+ "..\fl\fl_input_.h"\
+ "..\fl\fl_light_button.h"\
+ "..\fl\fl_menu_.h"\
+ "..\fl\fl_menu_button.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_pixmap.h"\
+ "..\fl\fl_positioner.h"\
"..\fl\fl_preferences.h"\
"..\fl\fl_return_button.h"\
+ "..\fl\fl_round_button.h"\
+ "..\fl\fl_scrollbar.h"\
+ "..\fl\fl_show_colormap.h"\
+ "..\fl\fl_slider.h"\
"..\fl\fl_tile.h"\
+ "..\FL\Fl_Timer.H"\
+ "..\fl\fl_valuator.h"\
+ "..\fl\fl_value_slider.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\fl\forms.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_ask.h"\
- {$(INCLUDE)}"fl\fl_bitmap.h"\
- {$(INCLUDE)}"fl\fl_box.h"\
- {$(INCLUDE)}"fl\fl_browser.h"\
- {$(INCLUDE)}"fl\fl_browser_.h"\
- {$(INCLUDE)}"fl\fl_button.h"\
- {$(INCLUDE)}"fl\fl_chart.h"\
- {$(INCLUDE)}"fl\fl_check_button.h"\
- {$(INCLUDE)}"fl\fl_choice.h"\
- {$(INCLUDE)}"fl\fl_clock.h"\
- {$(INCLUDE)}"fl\fl_counter.h"\
- {$(INCLUDE)}"fl\fl_dial.h"\
- {$(INCLUDE)}"fl\fl_double_window.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_file_chooser.h"\
- {$(INCLUDE)}"fl\fl_file_icon.h"\
- {$(INCLUDE)}"fl\fl_formsbitmap.h"\
- {$(INCLUDE)}"fl\fl_formspixmap.h"\
- {$(INCLUDE)}"fl\fl_free.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_input.h"\
- {$(INCLUDE)}"fl\fl_input_.h"\
- {$(INCLUDE)}"fl\fl_light_button.h"\
- {$(INCLUDE)}"fl\fl_menu_.h"\
- {$(INCLUDE)}"fl\fl_menu_button.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_pixmap.h"\
- {$(INCLUDE)}"fl\fl_positioner.h"\
- {$(INCLUDE)}"fl\fl_round_button.h"\
- {$(INCLUDE)}"fl\fl_scrollbar.h"\
- {$(INCLUDE)}"fl\fl_show_colormap.h"\
- {$(INCLUDE)}"fl\fl_slider.h"\
- {$(INCLUDE)}"fl\fl_timer.h"\
- {$(INCLUDE)}"fl\fl_valuator.h"\
- {$(INCLUDE)}"fl\fl_value_slider.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
NODEP_CPP_FORMS_P=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\forms_timer.cxx
DEP_CPP_FORMS_T=\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_timer.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\FL\Fl_Timer.H"\
+ "..\fl\fl_widget.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\freeglut_geometry.cxx
+DEP_CPP_GL_DR=\
+ "..\FL\gl.h"\
+ "..\FL\glut.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\freeglut_stroke_mono_roman.cxx
+DEP_CPP_GL_DR=\
+ "..\FL\gl.h"\
+ "..\FL\glut.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\freeglut_stroke_roman.cxx
+DEP_CPP_GL_DR=\
+ "..\FL\gl.h"\
+ "..\FL\glut.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\freeglut_teapot.cxx
+DEP_CPP_GL_DR=\
+ "..\FL\gl.h"\
+ "..\FL\glut.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
# End Source File
# Begin Source File
SOURCE=..\src\gl_draw.cxx
DEP_CPP_GL_DR=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\FL\gl.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\fl_font.h"\
"..\src\Fl_Gl_Choice.H"\
"..\src\flstring.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\gl_start.cxx
DEP_CPP_GL_ST=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_draw.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\FL\gl.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
"..\fl\x.h"\
"..\src\Fl_Gl_Choice.H"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_draw.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
- {$(INCLUDE)}"fl\mac.H"\
- {$(INCLUDE)}"fl\win32.h"\
# End Source File
# Begin Source File
SOURCE=..\src\glut_compatability.cxx
DEP_CPP_GLUT_=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\Fl_Gl_Window.H"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_image.h"\
+ "..\fl\fl_menu_item.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\fl\glut.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_gl_window.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_image.h"\
- {$(INCLUDE)}"fl\fl_menu_item.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\glut_font.cxx
DEP_CPP_GLUT_F=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\Fl_Gl_Window.H"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
"..\FL\gl.h"\
"..\fl\glut.h"\
".\config.h"\
- {$(INCLUDE)}"fl\enumerations.h"\
- {$(INCLUDE)}"fl\fl.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
- {$(INCLUDE)}"fl\fl_gl_window.h"\
- {$(INCLUDE)}"fl\fl_group.h"\
- {$(INCLUDE)}"fl\fl_widget.h"\
- {$(INCLUDE)}"fl\fl_window.h"\
# End Source File
# Begin Source File
SOURCE=..\src\numericsort.c
DEP_CPP_NUMER=\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
".\config.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_NUMER=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
SOURCE=..\src\scandir.c
DEP_CPP_SCAND=\
+ "..\fl\filename.h"\
+ "..\fl\fl_export.h"\
"..\src\flstring.h"\
"..\src\scandir_win32.c"\
".\config.h"\
- {$(INCLUDE)}"fl\filename.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
NODEP_CPP_SCAND=\
- "..\..\..\usr\include\dirent.h"\
+ "..\..\..\..\..\usr\include\dirent.h"\
# End Source File
# Begin Source File
-SOURCE=..\src\vsnprintf.c
-DEP_CPP_VSNPR=\
- "..\src\flstring.h"\
+SOURCE=..\src\screen_xywh.cxx
+DEP_CPP_SCREE=\
+ "..\fl\enumerations.h"\
+ "..\fl\fl.h"\
+ "..\fl\fl_export.h"\
+ "..\fl\fl_group.h"\
+ "..\fl\fl_widget.h"\
+ "..\fl\fl_window.h"\
+ "..\fl\mac.H"\
+ "..\fl\win32.h"\
+ "..\fl\x.h"\
".\config.h"\
- {$(INCLUDE)}"fl\fl_export.h"\
# End Source File
# Begin Source File
-SOURCE=..\src\screen_xywh.cxx
+SOURCE=..\src\vsnprintf.c
+DEP_CPP_VSNPR=\
+ "..\fl\fl_export.h"\
+ "..\src\flstring.h"\
+ ".\config.h"\
+
# End Source File
# End Target
# End Project
diff --git a/visualc/fltkgl.dsp b/visualc/fltkgl.dsp
index 0792182..d50ce16 100644
--- a/visualc/fltkgl.dsp
+++ b/visualc/fltkgl.dsp
@@ -95,6 +95,26 @@ SOURCE=..\src\Fl_Gl_Window.cxx
# End Source File
# Begin Source File
+SOURCE=..\src\freeglut_geometry.cxx
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\freeglut_stroke_mono_roman.cxx
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\freeglut_stroke_roman.cxx
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\freeglut_teapot.cxx
+
+# End Source File
+# Begin Source File
+
SOURCE=..\src\gl_draw.cxx
# End Source File
# Begin Source File
diff --git a/watcom.mif b/watcom.mif
index 2a316a8..368631c 100644
--- a/watcom.mif
+++ b/watcom.mif
@@ -198,13 +198,13 @@ EXEEXT=.exe
!ifeqi D d
WCADEBUG=-d1 # debug opts for wasm
-WCCDEBUG=-d2 -s -ors # debug opts for wcc. NOTE: -we is to make errors of all warnings
+WCCDEBUG=-d2 -s -ors -wcd=666 -wcd=836 # debug opts for wcc. NOTE: -we is to make errors of all warnings
WCLDEBUG=d all # debug opts for wlink
# WCCTIMING=-et # if added to CC command line will generate timing file after execution
!else
#
# WCADEBUG= # debug opts for wasm
-WCCDEBUG= -ors -s # release opts for wcc
+WCCDEBUG= -ors -s -wcd=666 -wcd=836 # release opts for wcc
# WCLDEBUG= # release opts for wlink
!endif
diff --git a/zlib/ChangeLog b/zlib/ChangeLog
index 553774c..e3f32ca 100644
--- a/zlib/ChangeLog
+++ b/zlib/ChangeLog
@@ -466,7 +466,7 @@ Changes in 1.0.6 (19 Jan 1998)
- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
- added makelcc.bat for lcc-win32 (Tom St Denis)
- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
-- Avoid expanded $Id: ChangeLog 3809 2004-09-08 16:04:43Z easysw $. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
+- Avoid expanded $Id: ChangeLog 5666 2007-02-06 22:02:28Z mike $. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
- check for unistd.h in configure (for off_t)
- remove useless check parameter in inflate_blocks_free
- avoid useless assignment of s->check to itself in inflate_blocks_new
diff --git a/zlib/Makefile b/zlib/Makefile
index 398504b..89ce6c0 100644
--- a/zlib/Makefile
+++ b/zlib/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 4052 2005-02-24 21:55:12Z mike $"
+# "$Id: Makefile 5667 2007-02-07 02:35:44Z mike $"
#
# GNU ZIP library makefile for the Fast Light Toolkit (FLTK).
#
-# Copyright 1997-2005 by Easy Software Products.
+# Copyright 1997-2007 by Easy Software Products.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@@ -58,13 +58,14 @@ clean:
install: $(LIBZ)
echo "Installing libfltk_z$(LIBEXT) in $(libdir)..."
- -$(MKDIR) $(libdir)
- $(RM) $(libdir)/libfltk_z$(LIBEXT)
- $(CP) $(LIBZ) $(libdir)
- $(RANLIB) $(libdir)/libfltk_z$(LIBEXT)
+ -$(INSTALL_DIR) $(DESTDIR)$(libdir)
+ $(INSTALL_LIB) $(LIBZ) $(DESTDIR)$(libdir)
+ $(RANLIB) $(DESTDIR)$(libdir)/libfltk_z$(LIBEXT)
echo "Installing zlib headers in $(includedir)/FL/images..."
- -$(MKDIR) $(includedir)/FL/images
- $(CP) zconf.h zlib.h zutil.h $(includedir)/FL/images
+ -$(INSTALL_DIR) $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) zconf.h $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) zlib.h $(DESTDIR)$(includedir)/FL/images
+ $(INSTALL_DATA) zutil.h $(DESTDIR)$(includedir)/FL/images
#
@@ -103,5 +104,5 @@ $(OBJS): ../makeinclude
#
-# End of "$Id: Makefile 4052 2005-02-24 21:55:12Z mike $".
+# End of "$Id: Makefile 5667 2007-02-07 02:35:44Z mike $".
#
diff --git a/zlib/adler32.c b/zlib/adler32.c
index 9b0660b..6a11ff5 100644
--- a/zlib/adler32.c
+++ b/zlib/adler32.c
@@ -1,9 +1,9 @@
/* adler32.c -- compute the Adler-32 checksum of a data stream
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2004 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: adler32.c 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: adler32.c 5666 2007-02-06 22:02:28Z mike $ */
#define ZLIB_INTERNAL
#include "zlib.h"
@@ -12,12 +12,13 @@
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
-#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
+#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;}
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
#define DO16(buf) DO8(buf,0); DO8(buf,8);
+/* use NO_DIVIDE if your processor does not do division in hardware */
#ifdef NO_DIVIDE
# define MOD(a) \
do { \
@@ -39,8 +40,17 @@
if (a >= (BASE << 1)) a -= (BASE << 1); \
if (a >= BASE) a -= BASE; \
} while (0)
+# define MOD4(a) \
+ do { \
+ if (a >= (BASE << 4)) a -= (BASE << 4); \
+ if (a >= (BASE << 3)) a -= (BASE << 3); \
+ if (a >= (BASE << 2)) a -= (BASE << 2); \
+ if (a >= (BASE << 1)) a -= (BASE << 1); \
+ if (a >= BASE) a -= BASE; \
+ } while (0)
#else
# define MOD(a) a %= BASE
+# define MOD4(a) a %= BASE
#endif
/* ========================================================================= */
@@ -49,26 +59,91 @@ uLong ZEXPORT adler32(adler, buf, len)
const Bytef *buf;
uInt len;
{
- unsigned long s1 = adler & 0xffff;
- unsigned long s2 = (adler >> 16) & 0xffff;
- int k;
+ unsigned long sum2;
+ unsigned n;
+
+ /* split Adler-32 into component sums */
+ sum2 = (adler >> 16) & 0xffff;
+ adler &= 0xffff;
+
+ /* in case user likes doing a byte at a time, keep it fast */
+ if (len == 1) {
+ adler += buf[0];
+ if (adler >= BASE)
+ adler -= BASE;
+ sum2 += adler;
+ if (sum2 >= BASE)
+ sum2 -= BASE;
+ return adler | (sum2 << 16);
+ }
- if (buf == Z_NULL) return 1L;
+ /* initial Adler-32 value (deferred check for len == 1 speed) */
+ if (buf == Z_NULL)
+ return 1L;
- while (len > 0) {
- k = len < NMAX ? (int)len : NMAX;
- len -= k;
- while (k >= 16) {
+ /* in case short lengths are provided, keep it somewhat fast */
+ if (len < 16) {
+ while (len--) {
+ adler += *buf++;
+ sum2 += adler;
+ }
+ if (adler >= BASE)
+ adler -= BASE;
+ MOD4(sum2); /* only added so many BASE's */
+ return adler | (sum2 << 16);
+ }
+
+ /* do length NMAX blocks -- requires just one modulo operation */
+ while (len >= NMAX) {
+ len -= NMAX;
+ n = NMAX / 16; /* NMAX is divisible by 16 */
+ do {
+ DO16(buf); /* 16 sums unrolled */
+ buf += 16;
+ } while (--n);
+ MOD(adler);
+ MOD(sum2);
+ }
+
+ /* do remaining bytes (less than NMAX, still just one modulo) */
+ if (len) { /* avoid modulos if none remaining */
+ while (len >= 16) {
+ len -= 16;
DO16(buf);
buf += 16;
- k -= 16;
}
- if (k != 0) do {
- s1 += *buf++;
- s2 += s1;
- } while (--k);
- MOD(s1);
- MOD(s2);
+ while (len--) {
+ adler += *buf++;
+ sum2 += adler;
+ }
+ MOD(adler);
+ MOD(sum2);
}
- return (s2 << 16) | s1;
+
+ /* return recombined sums */
+ return adler | (sum2 << 16);
+}
+
+/* ========================================================================= */
+uLong ZEXPORT adler32_combine(adler1, adler2, len2)
+ uLong adler1;
+ uLong adler2;
+ z_off_t len2;
+{
+ unsigned long sum1;
+ unsigned long sum2;
+ unsigned rem;
+
+ /* the derivation of this formula is left as an exercise for the reader */
+ rem = (unsigned)(len2 % BASE);
+ sum1 = adler1 & 0xffff;
+ sum2 = rem * sum1;
+ MOD(sum2);
+ sum1 += (adler2 & 0xffff) + BASE - 1;
+ sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
+ if (sum1 > BASE) sum1 -= BASE;
+ if (sum1 > BASE) sum1 -= BASE;
+ if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);
+ if (sum2 > BASE) sum2 -= BASE;
+ return sum1 | (sum2 << 16);
}
diff --git a/zlib/compress.c b/zlib/compress.c
index b6eed62..367aa51 100644
--- a/zlib/compress.c
+++ b/zlib/compress.c
@@ -1,9 +1,9 @@
/* compress.c -- compress a memory buffer
- * Copyright (C) 1995-2002 Jean-loup Gailly.
+ * Copyright (C) 1995-2003 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: compress.c 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: compress.c 5666 2007-02-06 22:02:28Z mike $ */
#define ZLIB_INTERNAL
#include "zlib.h"
diff --git a/zlib/crc32.c b/zlib/crc32.c
index ace11f1..70d3d34 100644
--- a/zlib/crc32.c
+++ b/zlib/crc32.c
@@ -1,15 +1,23 @@
/* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2005 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*
* Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
* CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
* tables for updating the shift register in one step with three exclusive-ors
- * instead of four steps with four exclusive-ors. This results about a factor
- * of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
+ * instead of four steps with four exclusive-ors. This results in about a
+ * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
*/
-/* @(#) $Id: crc32.c 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: crc32.c 5666 2007-02-06 22:02:28Z mike $ */
+
+/*
+ Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
+ protection on the static variables used to control the first-use generation
+ of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
+ first call get_crc_table() to initialize the tables before allowing more than
+ one thread to use crc32().
+ */
#ifdef MAKECRCH
# include <stdio.h>
@@ -56,15 +64,19 @@
# define TBLS 1
#endif /* BYFOUR */
+/* Local functions for crc concatenation */
+local unsigned long gf2_matrix_times OF((unsigned long *mat,
+ unsigned long vec));
+local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
+
#ifdef DYNAMIC_CRC_TABLE
-local int crc_table_empty = 1;
+local volatile int crc_table_empty = 1;
local unsigned long FAR crc_table[TBLS][256];
local void make_crc_table OF((void));
#ifdef MAKECRCH
local void write_table OF((FILE *, const unsigned long FAR *));
#endif /* MAKECRCH */
-
/*
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
@@ -95,38 +107,51 @@ local void make_crc_table()
{
unsigned long c;
int n, k;
- unsigned long poly; /* polynomial exclusive-or pattern */
+ unsigned long poly; /* polynomial exclusive-or pattern */
/* terms of polynomial defining this crc (except x^32): */
+ static volatile int first = 1; /* flag to limit concurrent making */
static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
- /* make exclusive-or pattern from polynomial (0xedb88320UL) */
- poly = 0UL;
- for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
- poly |= 1UL << (31 - p[n]);
-
- /* generate a crc for every 8-bit value */
- for (n = 0; n < 256; n++) {
- c = (unsigned long)n;
- for (k = 0; k < 8; k++)
- c = c & 1 ? poly ^ (c >> 1) : c >> 1;
- crc_table[0][n] = c;
- }
+ /* See if another task is already doing this (not thread-safe, but better
+ than nothing -- significantly reduces duration of vulnerability in
+ case the advice about DYNAMIC_CRC_TABLE is ignored) */
+ if (first) {
+ first = 0;
+
+ /* make exclusive-or pattern from polynomial (0xedb88320UL) */
+ poly = 0UL;
+ for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
+ poly |= 1UL << (31 - p[n]);
+
+ /* generate a crc for every 8-bit value */
+ for (n = 0; n < 256; n++) {
+ c = (unsigned long)n;
+ for (k = 0; k < 8; k++)
+ c = c & 1 ? poly ^ (c >> 1) : c >> 1;
+ crc_table[0][n] = c;
+ }
#ifdef BYFOUR
- /* generate crc for each value followed by one, two, and three zeros, and
- then the byte reversal of those as well as the first table */
- for (n = 0; n < 256; n++) {
- c = crc_table[0][n];
- crc_table[4][n] = REV(c);
- for (k = 1; k < 4; k++) {
- c = crc_table[0][c & 0xff] ^ (c >> 8);
- crc_table[k][n] = c;
- crc_table[k + 4][n] = REV(c);
+ /* generate crc for each value followed by one, two, and three zeros,
+ and then the byte reversal of those as well as the first table */
+ for (n = 0; n < 256; n++) {
+ c = crc_table[0][n];
+ crc_table[4][n] = REV(c);
+ for (k = 1; k < 4; k++) {
+ c = crc_table[0][c & 0xff] ^ (c >> 8);
+ crc_table[k][n] = c;
+ crc_table[k + 4][n] = REV(c);
+ }
}
- }
#endif /* BYFOUR */
- crc_table_empty = 0;
+ crc_table_empty = 0;
+ }
+ else { /* not first */
+ /* wait for the other guy to finish (not efficient, but rare) */
+ while (crc_table_empty)
+ ;
+ }
#ifdef MAKECRCH
/* write out CRC tables to crc32.h */
@@ -180,9 +205,10 @@ local void write_table(out, table)
const unsigned long FAR * ZEXPORT get_crc_table()
{
#ifdef DYNAMIC_CRC_TABLE
- if (crc_table_empty) make_crc_table();
+ if (crc_table_empty)
+ make_crc_table();
#endif /* DYNAMIC_CRC_TABLE */
- return (const unsigned long FAR *)crc_table;
+ return (const unsigned long FAR *)crc_table;
}
/* ========================================================================= */
@@ -248,7 +274,7 @@ local unsigned long crc32_little(crc, buf, len)
len--;
}
- buf4 = (const u4 FAR *)buf;
+ buf4 = (const u4 FAR *)(const void FAR *)buf;
while (len >= 32) {
DOLIT32;
len -= 32;
@@ -288,7 +314,7 @@ local unsigned long crc32_big(crc, buf, len)
len--;
}
- buf4 = (const u4 FAR *)buf;
+ buf4 = (const u4 FAR *)(const void FAR *)buf;
buf4--;
while (len >= 32) {
DOBIG32;
@@ -309,3 +335,89 @@ local unsigned long crc32_big(crc, buf, len)
}
#endif /* BYFOUR */
+
+#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */
+
+/* ========================================================================= */
+local unsigned long gf2_matrix_times(mat, vec)
+ unsigned long *mat;
+ unsigned long vec;
+{
+ unsigned long sum;
+
+ sum = 0;
+ while (vec) {
+ if (vec & 1)
+ sum ^= *mat;
+ vec >>= 1;
+ mat++;
+ }
+ return sum;
+}
+
+/* ========================================================================= */
+local void gf2_matrix_square(square, mat)
+ unsigned long *square;
+ unsigned long *mat;
+{
+ int n;
+
+ for (n = 0; n < GF2_DIM; n++)
+ square[n] = gf2_matrix_times(mat, mat[n]);
+}
+
+/* ========================================================================= */
+uLong ZEXPORT crc32_combine(crc1, crc2, len2)
+ uLong crc1;
+ uLong crc2;
+ z_off_t len2;
+{
+ int n;
+ unsigned long row;
+ unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */
+ unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */
+
+ /* degenerate case */
+ if (len2 == 0)
+ return crc1;
+
+ /* put operator for one zero bit in odd */
+ odd[0] = 0xedb88320L; /* CRC-32 polynomial */
+ row = 1;
+ for (n = 1; n < GF2_DIM; n++) {
+ odd[n] = row;
+ row <<= 1;
+ }
+
+ /* put operator for two zero bits in even */
+ gf2_matrix_square(even, odd);
+
+ /* put operator for four zero bits in odd */
+ gf2_matrix_square(odd, even);
+
+ /* apply len2 zeros to crc1 (first square will put the operator for one
+ zero byte, eight zero bits, in even) */
+ do {
+ /* apply zeros operator for this bit of len2 */
+ gf2_matrix_square(even, odd);
+ if (len2 & 1)
+ crc1 = gf2_matrix_times(even, crc1);
+ len2 >>= 1;
+
+ /* if no more bits set, then done */
+ if (len2 == 0)
+ break;
+
+ /* another iteration of the loop with odd and even swapped */
+ gf2_matrix_square(odd, even);
+ if (len2 & 1)
+ crc1 = gf2_matrix_times(odd, crc1);
+ len2 >>= 1;
+
+ /* if no more bits set, then done */
+ } while (len2 != 0);
+
+ /* return combined crc */
+ crc1 ^= crc2;
+ return crc1;
+}
diff --git a/zlib/deflate.c b/zlib/deflate.c
index 83de499..482c38c 100644
--- a/zlib/deflate.c
+++ b/zlib/deflate.c
@@ -1,5 +1,5 @@
/* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2003 Jean-loup Gailly.
+ * Copyright (C) 1995-2005 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -47,12 +47,12 @@
*
*/
-/* @(#) $Id: deflate.c 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: deflate.c 5666 2007-02-06 22:02:28Z mike $ */
#include "deflate.h"
const char deflate_copyright[] =
- " deflate 1.2.1 Copyright 1995-2003 Jean-loup Gailly ";
+ " deflate 1.2.3 Copyright 1995-2005 Jean-loup Gailly ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -264,7 +264,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
#endif
if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
- strategy < 0 || strategy > Z_RLE) {
+ strategy < 0 || strategy > Z_FIXED) {
return Z_STREAM_ERROR;
}
if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */
@@ -274,6 +274,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
s->strm = strm;
s->wrap = wrap;
+ s->gzhead = Z_NULL;
s->w_bits = windowBits;
s->w_size = 1 << s->w_bits;
s->w_mask = s->w_size - 1;
@@ -333,9 +334,7 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
if (length < MIN_MATCH) return Z_OK;
if (length > MAX_DIST(s)) {
length = MAX_DIST(s);
-#ifndef USE_DICT_HEAD
dictionary += dictLength - length; /* use the tail of the dictionary */
-#endif
}
zmemcpy(s->window, dictionary, length);
s->strstart = length;
@@ -391,6 +390,17 @@ int ZEXPORT deflateReset (strm)
}
/* ========================================================================= */
+int ZEXPORT deflateSetHeader (strm, head)
+ z_streamp strm;
+ gz_headerp head;
+{
+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (strm->state->wrap != 2) return Z_STREAM_ERROR;
+ strm->state->gzhead = head;
+ return Z_OK;
+}
+
+/* ========================================================================= */
int ZEXPORT deflatePrime (strm, bits, value)
z_streamp strm;
int bits;
@@ -420,7 +430,7 @@ int ZEXPORT deflateParams(strm, level, strategy)
#else
if (level == Z_DEFAULT_COMPRESSION) level = 6;
#endif
- if (level < 0 || level > 9 || strategy < 0 || strategy > Z_RLE) {
+ if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
return Z_STREAM_ERROR;
}
func = configuration_table[s->level].func;
@@ -440,6 +450,25 @@ int ZEXPORT deflateParams(strm, level, strategy)
return err;
}
+/* ========================================================================= */
+int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
+ z_streamp strm;
+ int good_length;
+ int max_lazy;
+ int nice_length;
+ int max_chain;
+{
+ deflate_state *s;
+
+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ s = strm->state;
+ s->good_match = good_length;
+ s->max_lazy_match = max_lazy;
+ s->nice_match = nice_length;
+ s->max_chain_length = max_chain;
+ return Z_OK;
+}
+
/* =========================================================================
* For the default windowBits of 15 and memLevel of 8, this function returns
* a close to exact, as well as small, upper bound on the compressed size.
@@ -548,20 +577,47 @@ int ZEXPORT deflate (strm, flush)
if (s->status == INIT_STATE) {
#ifdef GZIP
if (s->wrap == 2) {
+ strm->adler = crc32(0L, Z_NULL, 0);
put_byte(s, 31);
put_byte(s, 139);
put_byte(s, 8);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, s->level == 9 ? 2 :
- (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
- 4 : 0));
- put_byte(s, 255);
- s->status = BUSY_STATE;
- strm->adler = crc32(0L, Z_NULL, 0);
+ if (s->gzhead == NULL) {
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, s->level == 9 ? 2 :
+ (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
+ 4 : 0));
+ put_byte(s, OS_CODE);
+ s->status = BUSY_STATE;
+ }
+ else {
+ put_byte(s, (s->gzhead->text ? 1 : 0) +
+ (s->gzhead->hcrc ? 2 : 0) +
+ (s->gzhead->extra == Z_NULL ? 0 : 4) +
+ (s->gzhead->name == Z_NULL ? 0 : 8) +
+ (s->gzhead->comment == Z_NULL ? 0 : 16)
+ );
+ put_byte(s, (Byte)(s->gzhead->time & 0xff));
+ put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff));
+ put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff));
+ put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff));
+ put_byte(s, s->level == 9 ? 2 :
+ (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
+ 4 : 0));
+ put_byte(s, s->gzhead->os & 0xff);
+ if (s->gzhead->extra != NULL) {
+ put_byte(s, s->gzhead->extra_len & 0xff);
+ put_byte(s, (s->gzhead->extra_len >> 8) & 0xff);
+ }
+ if (s->gzhead->hcrc)
+ strm->adler = crc32(strm->adler, s->pending_buf,
+ s->pending);
+ s->gzindex = 0;
+ s->status = EXTRA_STATE;
+ }
}
else
#endif
@@ -592,6 +648,110 @@ int ZEXPORT deflate (strm, flush)
strm->adler = adler32(0L, Z_NULL, 0);
}
}
+#ifdef GZIP
+ if (s->status == EXTRA_STATE) {
+ if (s->gzhead->extra != NULL) {
+ uInt beg = s->pending; /* start of bytes to update crc */
+
+ while (s->gzindex < (s->gzhead->extra_len & 0xffff)) {
+ if (s->pending == s->pending_buf_size) {
+ if (s->gzhead->hcrc && s->pending > beg)
+ strm->adler = crc32(strm->adler, s->pending_buf + beg,
+ s->pending - beg);
+ flush_pending(strm);
+ beg = s->pending;
+ if (s->pending == s->pending_buf_size)
+ break;
+ }
+ put_byte(s, s->gzhead->extra[s->gzindex]);
+ s->gzindex++;
+ }
+ if (s->gzhead->hcrc && s->pending > beg)
+ strm->adler = crc32(strm->adler, s->pending_buf + beg,
+ s->pending - beg);
+ if (s->gzindex == s->gzhead->extra_len) {
+ s->gzindex = 0;
+ s->status = NAME_STATE;
+ }
+ }
+ else
+ s->status = NAME_STATE;
+ }
+ if (s->status == NAME_STATE) {
+ if (s->gzhead->name != NULL) {
+ uInt beg = s->pending; /* start of bytes to update crc */
+ int val;
+
+ do {
+ if (s->pending == s->pending_buf_size) {
+ if (s->gzhead->hcrc && s->pending > beg)
+ strm->adler = crc32(strm->adler, s->pending_buf + beg,
+ s->pending - beg);
+ flush_pending(strm);
+ beg = s->pending;
+ if (s->pending == s->pending_buf_size) {
+ val = 1;
+ break;
+ }
+ }
+ val = s->gzhead->name[s->gzindex++];
+ put_byte(s, val);
+ } while (val != 0);
+ if (s->gzhead->hcrc && s->pending > beg)
+ strm->adler = crc32(strm->adler, s->pending_buf + beg,
+ s->pending - beg);
+ if (val == 0) {
+ s->gzindex = 0;
+ s->status = COMMENT_STATE;
+ }
+ }
+ else
+ s->status = COMMENT_STATE;
+ }
+ if (s->status == COMMENT_STATE) {
+ if (s->gzhead->comment != NULL) {
+ uInt beg = s->pending; /* start of bytes to update crc */
+ int val;
+
+ do {
+ if (s->pending == s->pending_buf_size) {
+ if (s->gzhead->hcrc && s->pending > beg)
+ strm->adler = crc32(strm->adler, s->pending_buf + beg,
+ s->pending - beg);
+ flush_pending(strm);
+ beg = s->pending;
+ if (s->pending == s->pending_buf_size) {
+ val = 1;
+ break;
+ }
+ }
+ val = s->gzhead->comment[s->gzindex++];
+ put_byte(s, val);
+ } while (val != 0);
+ if (s->gzhead->hcrc && s->pending > beg)
+ strm->adler = crc32(strm->adler, s->pending_buf + beg,
+ s->pending - beg);
+ if (val == 0)
+ s->status = HCRC_STATE;
+ }
+ else
+ s->status = HCRC_STATE;
+ }
+ if (s->status == HCRC_STATE) {
+ if (s->gzhead->hcrc) {
+ if (s->pending + 2 > s->pending_buf_size)
+ flush_pending(strm);
+ if (s->pending + 2 <= s->pending_buf_size) {
+ put_byte(s, (Byte)(strm->adler & 0xff));
+ put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
+ strm->adler = crc32(0L, Z_NULL, 0);
+ s->status = BUSY_STATE;
+ }
+ }
+ else
+ s->status = BUSY_STATE;
+ }
+#endif
/* Flush as much pending output as possible */
if (s->pending != 0) {
@@ -704,7 +864,12 @@ int ZEXPORT deflateEnd (strm)
if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
status = strm->state->status;
- if (status != INIT_STATE && status != BUSY_STATE &&
+ if (status != INIT_STATE &&
+ status != EXTRA_STATE &&
+ status != NAME_STATE &&
+ status != COMMENT_STATE &&
+ status != HCRC_STATE &&
+ status != BUSY_STATE &&
status != FINISH_STATE) {
return Z_STREAM_ERROR;
}
@@ -744,12 +909,12 @@ int ZEXPORT deflateCopy (dest, source)
ss = source->state;
- *dest = *source;
+ zmemcpy(dest, source, sizeof(z_stream));
ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state));
if (ds == Z_NULL) return Z_MEM_ERROR;
dest->state = (struct internal_state FAR *) ds;
- *ds = *ss;
+ zmemcpy(ds, ss, sizeof(deflate_state));
ds->strm = dest;
ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
@@ -838,9 +1003,11 @@ local void lm_init (s)
s->match_length = s->prev_length = MIN_MATCH-1;
s->match_available = 0;
s->ins_h = 0;
+#ifndef FASTEST
#ifdef ASMV
match_init(); /* initialize the asm code */
#endif
+#endif
}
#ifndef FASTEST
@@ -909,7 +1076,12 @@ local uInt longest_match(s, cur_match)
match = s->window + cur_match;
/* Skip to next match if the match length cannot increase
- * or if the match length is less than 2:
+ * or if the match length is less than 2. Note that the checks below
+ * for insufficient lookahead only occur occasionally for performance
+ * reasons. Therefore uninitialized memory will be accessed, and
+ * conditional jumps will be made that depend on those values.
+ * However the length of the match is limited to the lookahead, so
+ * the output of deflate is not affected by the uninitialized values.
*/
#if (defined(UNALIGNED_OK) && MAX_MATCH == 258)
/* This code assumes sizeof(unsigned short) == 2. Do not use
@@ -1131,6 +1303,7 @@ local void fill_window(s)
later. (Using level 0 permanently is not an optimal usage of
zlib, so we don't care about this pathological case.)
*/
+ /* %%% avoid this when Z_RLE */
n = s->hash_size;
p = &s->head[n];
do {
@@ -1309,12 +1482,12 @@ local block_state deflate_fast(s, flush)
* of the string with itself at the start of the input file).
*/
#ifdef FASTEST
- if ((s->strategy < Z_HUFFMAN_ONLY) ||
+ if ((s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) ||
(s->strategy == Z_RLE && s->strstart - hash_head == 1)) {
s->match_length = longest_match_fast (s, hash_head);
}
#else
- if (s->strategy < Z_HUFFMAN_ONLY) {
+ if (s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) {
s->match_length = longest_match (s, hash_head);
} else if (s->strategy == Z_RLE && s->strstart - hash_head == 1) {
s->match_length = longest_match_fast (s, hash_head);
@@ -1418,7 +1591,7 @@ local block_state deflate_slow(s, flush)
* of window index 0 (in particular we have to avoid a match
* of the string with itself at the start of the input file).
*/
- if (s->strategy < Z_HUFFMAN_ONLY) {
+ if (s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) {
s->match_length = longest_match (s, hash_head);
} else if (s->strategy == Z_RLE && s->strstart - hash_head == 1) {
s->match_length = longest_match_fast (s, hash_head);
@@ -1500,3 +1673,64 @@ local block_state deflate_slow(s, flush)
return flush == Z_FINISH ? finish_done : block_done;
}
#endif /* FASTEST */
+
+#if 0
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one. Do not maintain a hash table. (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+local block_state deflate_rle(s, flush)
+ deflate_state *s;
+ int flush;
+{
+ int bflush; /* set if current block must be flushed */
+ uInt run; /* length of run */
+ uInt max; /* maximum length of run */
+ uInt prev; /* byte at distance one to match */
+ Bytef *scan; /* scan for end of run */
+
+ for (;;) {
+ /* Make sure that we always have enough lookahead, except
+ * at the end of the input file. We need MAX_MATCH bytes
+ * for the longest encodable run.
+ */
+ if (s->lookahead < MAX_MATCH) {
+ fill_window(s);
+ if (s->lookahead < MAX_MATCH && flush == Z_NO_FLUSH) {
+ return need_more;
+ }
+ if (s->lookahead == 0) break; /* flush the current block */
+ }
+
+ /* See how many times the previous byte repeats */
+ run = 0;
+ if (s->strstart > 0) { /* if there is a previous byte, that is */
+ max = s->lookahead < MAX_MATCH ? s->lookahead : MAX_MATCH;
+ scan = s->window + s->strstart - 1;
+ prev = *scan++;
+ do {
+ if (*scan++ != prev)
+ break;
+ } while (++run < max);
+ }
+
+ /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+ if (run >= MIN_MATCH) {
+ check_match(s, s->strstart, s->strstart - 1, run);
+ _tr_tally_dist(s, 1, run - MIN_MATCH, bflush);
+ s->lookahead -= run;
+ s->strstart += run;
+ } else {
+ /* No match, output a literal byte */
+ Tracevv((stderr,"%c", s->window[s->strstart]));
+ _tr_tally_lit (s, s->window[s->strstart], bflush);
+ s->lookahead--;
+ s->strstart++;
+ }
+ if (bflush) FLUSH_BLOCK(s, 0);
+ }
+ FLUSH_BLOCK(s, flush == Z_FINISH);
+ return flush == Z_FINISH ? finish_done : block_done;
+}
+#endif
diff --git a/zlib/deflate.h b/zlib/deflate.h
index 1c9e4a8..2d7b95f 100644
--- a/zlib/deflate.h
+++ b/zlib/deflate.h
@@ -1,5 +1,5 @@
/* deflate.h -- internal compression state
- * Copyright (C) 1995-2002 Jean-loup Gailly
+ * Copyright (C) 1995-2004 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -8,7 +8,7 @@
subject to change. Applications should only use zlib.h.
*/
-/* @(#) $Id: deflate.h 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: deflate.h 5666 2007-02-06 22:02:28Z mike $ */
#ifndef DEFLATE_H
#define DEFLATE_H
@@ -49,6 +49,10 @@
/* All codes must not exceed MAX_BITS bits */
#define INIT_STATE 42
+#define EXTRA_STATE 69
+#define NAME_STATE 73
+#define COMMENT_STATE 91
+#define HCRC_STATE 103
#define BUSY_STATE 113
#define FINISH_STATE 666
/* Stream status */
@@ -93,9 +97,10 @@ typedef struct internal_state {
Bytef *pending_buf; /* output still pending */
ulg pending_buf_size; /* size of pending_buf */
Bytef *pending_out; /* next pending byte to output to the stream */
- int pending; /* nb of bytes in the pending buffer */
+ uInt pending; /* nb of bytes in the pending buffer */
int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
- Byte data_type; /* UNKNOWN, BINARY or ASCII */
+ gz_headerp gzhead; /* gzip header information to write */
+ uInt gzindex; /* where in extra, name, or comment */
Byte method; /* STORED (for zip only) or DEFLATED */
int last_flush; /* value of flush param for previous deflate call */
diff --git a/zlib/gzio.c b/zlib/gzio.c
index 21024d2..5e08728 100644
--- a/zlib/gzio.c
+++ b/zlib/gzio.c
@@ -1,17 +1,17 @@
/* gzio.c -- IO on .gz files
- * Copyright (C) 1995-2003 Jean-loup Gailly.
+ * Copyright (C) 1995-2005 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*
* Compile this file with -DNO_GZCOMPRESS to avoid the compression code.
*/
-/* @(#) $Id: gzio.c 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: gzio.c 5666 2007-02-06 22:02:28Z mike $ */
#include <stdio.h>
#include "zutil.h"
-#ifdef NO_DEFLATE /* for compatiblity with old definition */
+#ifdef NO_DEFLATE /* for compatibility with old definition */
# define NO_GZCOMPRESS
#endif
@@ -220,7 +220,7 @@ gzFile ZEXPORT gzdopen (fd, mode)
int fd;
const char *mode;
{
- char name[20];
+ char name[46]; /* allow for up to 128-bit integers */
if (fd < 0) return (gzFile)Z_NULL;
sprintf(name, "<fd:%d>", fd); /* for debugging */
@@ -264,7 +264,7 @@ local int get_byte(s)
if (s->z_eof) return EOF;
if (s->stream.avail_in == 0) {
errno = 0;
- s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file);
+ s->stream.avail_in = (uInt)fread(s->inbuf, 1, Z_BUFSIZE, s->file);
if (s->stream.avail_in == 0) {
s->z_eof = 1;
if (ferror(s->file)) s->z_err = Z_ERRNO;
@@ -300,7 +300,7 @@ local void check_header(s)
if (len < 2) {
if (len) s->inbuf[0] = s->stream.next_in[0];
errno = 0;
- len = fread(s->inbuf + len, 1, Z_BUFSIZE >> len, s->file);
+ len = (uInt)fread(s->inbuf + len, 1, Z_BUFSIZE >> len, s->file);
if (len == 0 && ferror(s->file)) s->z_err = Z_ERRNO;
s->stream.avail_in += len;
s->stream.next_in = s->inbuf;
@@ -415,6 +415,7 @@ int ZEXPORT gzread (file, buf, len)
s->stream.avail_out--;
s->back = EOF;
s->out++;
+ start++;
if (s->last) {
s->z_err = Z_STREAM_END;
return 1;
@@ -436,8 +437,8 @@ int ZEXPORT gzread (file, buf, len)
s->stream.avail_in -= n;
}
if (s->stream.avail_out > 0) {
- s->stream.avail_out -= fread(next_out, 1, s->stream.avail_out,
- s->file);
+ s->stream.avail_out -=
+ (uInt)fread(next_out, 1, s->stream.avail_out, s->file);
}
len -= s->stream.avail_out;
s->in += len;
@@ -448,7 +449,7 @@ int ZEXPORT gzread (file, buf, len)
if (s->stream.avail_in == 0 && !s->z_eof) {
errno = 0;
- s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file);
+ s->stream.avail_in = (uInt)fread(s->inbuf, 1, Z_BUFSIZE, s->file);
if (s->stream.avail_in == 0) {
s->z_eof = 1;
if (ferror(s->file)) {
@@ -488,6 +489,9 @@ int ZEXPORT gzread (file, buf, len)
}
s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
+ if (len == s->stream.avail_out &&
+ (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO))
+ return -1;
return (int)(len - s->stream.avail_out);
}
@@ -899,6 +903,18 @@ int ZEXPORT gzeof (file)
}
/* ===========================================================================
+ Returns 1 if reading and doing so transparently, otherwise zero.
+*/
+int ZEXPORT gzdirect (file)
+ gzFile file;
+{
+ gz_stream *s = (gz_stream*)file;
+
+ if (s == NULL || s->mode != 'r') return 0;
+ return s->transparent;
+}
+
+/* ===========================================================================
Outputs a long in LSB order to the given file
*/
local void putLong (file, x)
@@ -937,7 +953,6 @@ local uLong getLong (s)
int ZEXPORT gzclose (file)
gzFile file;
{
- int err;
gz_stream *s = (gz_stream*)file;
if (s == NULL) return Z_STREAM_ERROR;
@@ -946,8 +961,8 @@ int ZEXPORT gzclose (file)
#ifdef NO_GZCOMPRESS
return Z_STREAM_ERROR;
#else
- err = do_flush (file, Z_FINISH);
- if (err != Z_OK) return destroy((gz_stream*)file);
+ if (do_flush (file, Z_FINISH) != Z_OK)
+ return destroy((gz_stream*)file);
putLong (s->file, s->crc);
putLong (s->file, (uLong)(s->in & 0xffffffff));
@@ -956,10 +971,16 @@ int ZEXPORT gzclose (file)
return destroy((gz_stream*)file);
}
+#ifdef STDC
+# define zstrerror(errnum) strerror(errnum)
+#else
+# define zstrerror(errnum) ""
+#endif
+
/* ===========================================================================
- Returns the error message for the last error which occured on the
+ Returns the error message for the last error which occurred on the
given compressed file. errnum is set to zlib error number. If an
- error occured in the file system and not in the compression library,
+ error occurred in the file system and not in the compression library,
errnum is set to Z_ERRNO and the application may consult errno
to get the exact error code.
*/
diff --git a/zlib/inffast.c b/zlib/inffast.c
index c716440..bbee92e 100644
--- a/zlib/inffast.c
+++ b/zlib/inffast.c
@@ -1,5 +1,5 @@
/* inffast.c -- fast decoding
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2004 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -19,7 +19,7 @@
- none
No measurable difference:
- Pentium III (Anderson)
- - 68060 (Nikl)
+ - M68060 (Nikl)
*/
#ifdef POSTINC
# define OFF 0
@@ -74,6 +74,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
unsigned char FAR *out; /* local strm->next_out */
unsigned char FAR *beg; /* inflate()'s initial strm->next_out */
unsigned char FAR *end; /* while out < end, enough space available */
+#ifdef INFLATE_STRICT
+ unsigned dmax; /* maximum distance from zlib header */
+#endif
unsigned wsize; /* window size or zero if not using window */
unsigned whave; /* valid bytes in the window */
unsigned write; /* window write index */
@@ -98,6 +101,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
out = strm->next_out - OFF;
beg = out - (start - strm->avail_out);
end = out + (strm->avail_out - 257);
+#ifdef INFLATE_STRICT
+ dmax = state->dmax;
+#endif
wsize = state->wsize;
whave = state->whave;
write = state->write;
@@ -167,6 +173,13 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
}
}
dist += (unsigned)hold & ((1U << op) - 1);
+#ifdef INFLATE_STRICT
+ if (dist > dmax) {
+ strm->msg = (char *)"invalid distance too far back";
+ state->mode = BAD;
+ break;
+ }
+#endif
hold >>= op;
bits -= op;
Tracevv((stderr, "inflate: distance %u\n", dist));
diff --git a/zlib/inflate.c b/zlib/inflate.c
index a53b5c7..792fdee 100644
--- a/zlib/inflate.c
+++ b/zlib/inflate.c
@@ -1,5 +1,5 @@
/* inflate.c -- zlib decompression
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2005 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -109,11 +109,15 @@ z_streamp strm;
state = (struct inflate_state FAR *)strm->state;
strm->total_in = strm->total_out = state->total = 0;
strm->msg = Z_NULL;
+ strm->adler = 1; /* to support ill-conceived Java test suite */
state->mode = HEAD;
state->last = 0;
state->havedict = 0;
+ state->dmax = 32768U;
+ state->head = Z_NULL;
state->wsize = 0;
state->whave = 0;
+ state->write = 0;
state->hold = 0;
state->bits = 0;
state->lencode = state->distcode = state->next = state->codes;
@@ -121,6 +125,22 @@ z_streamp strm;
return Z_OK;
}
+int ZEXPORT inflatePrime(strm, bits, value)
+z_streamp strm;
+int bits;
+int value;
+{
+ struct inflate_state FAR *state;
+
+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ state = (struct inflate_state FAR *)strm->state;
+ if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
+ value &= (1L << bits) - 1;
+ state->hold += value << state->bits;
+ state->bits += bits;
+ return Z_OK;
+}
+
int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
z_streamp strm;
int windowBits;
@@ -143,7 +163,7 @@ int stream_size;
ZALLOC(strm, 1, sizeof(struct inflate_state));
if (state == Z_NULL) return Z_MEM_ERROR;
Tracev((stderr, "inflate: allocated\n"));
- strm->state = (voidpf)state;
+ strm->state = (struct internal_state FAR *)state;
if (windowBits < 0) {
state->wrap = 0;
windowBits = -windowBits;
@@ -581,6 +601,8 @@ int flush;
break;
}
state->flags = 0; /* expect zlib header */
+ if (state->head != Z_NULL)
+ state->head->done = -1;
if (!(state->wrap & 1) || /* check if zlib header allowed */
#else
if (
@@ -596,11 +618,13 @@ int flush;
break;
}
DROPBITS(4);
- if (BITS(4) + 8 > state->wbits) {
+ len = BITS(4) + 8;
+ if (len > state->wbits) {
strm->msg = (char *)"invalid window size";
state->mode = BAD;
break;
}
+ state->dmax = 1U << len;
Tracev((stderr, "inflate: zlib header ok\n"));
strm->adler = state->check = adler32(0L, Z_NULL, 0);
state->mode = hold & 0x200 ? DICTID : TYPE;
@@ -620,16 +644,24 @@ int flush;
state->mode = BAD;
break;
}
+ if (state->head != Z_NULL)
+ state->head->text = (int)((hold >> 8) & 1);
if (state->flags & 0x0200) CRC2(state->check, hold);
INITBITS();
state->mode = TIME;
case TIME:
NEEDBITS(32);
+ if (state->head != Z_NULL)
+ state->head->time = hold;
if (state->flags & 0x0200) CRC4(state->check, hold);
INITBITS();
state->mode = OS;
case OS:
NEEDBITS(16);
+ if (state->head != Z_NULL) {
+ state->head->xflags = (int)(hold & 0xff);
+ state->head->os = (int)(hold >> 8);
+ }
if (state->flags & 0x0200) CRC2(state->check, hold);
INITBITS();
state->mode = EXLEN;
@@ -637,15 +669,26 @@ int flush;
if (state->flags & 0x0400) {
NEEDBITS(16);
state->length = (unsigned)(hold);
+ if (state->head != Z_NULL)
+ state->head->extra_len = (unsigned)hold;
if (state->flags & 0x0200) CRC2(state->check, hold);
INITBITS();
}
+ else if (state->head != Z_NULL)
+ state->head->extra = Z_NULL;
state->mode = EXTRA;
case EXTRA:
if (state->flags & 0x0400) {
copy = state->length;
if (copy > have) copy = have;
if (copy) {
+ if (state->head != Z_NULL &&
+ state->head->extra != Z_NULL) {
+ len = state->head->extra_len - state->length;
+ zmemcpy(state->head->extra + len, next,
+ len + copy > state->head->extra_max ?
+ state->head->extra_max - len : copy);
+ }
if (state->flags & 0x0200)
state->check = crc32(state->check, next, copy);
have -= copy;
@@ -654,6 +697,7 @@ int flush;
}
if (state->length) goto inf_leave;
}
+ state->length = 0;
state->mode = NAME;
case NAME:
if (state->flags & 0x0800) {
@@ -661,13 +705,20 @@ int flush;
copy = 0;
do {
len = (unsigned)(next[copy++]);
+ if (state->head != Z_NULL &&
+ state->head->name != Z_NULL &&
+ state->length < state->head->name_max)
+ state->head->name[state->length++] = len;
} while (len && copy < have);
- if (state->flags & 0x02000)
+ if (state->flags & 0x0200)
state->check = crc32(state->check, next, copy);
have -= copy;
next += copy;
if (len) goto inf_leave;
}
+ else if (state->head != Z_NULL)
+ state->head->name = Z_NULL;
+ state->length = 0;
state->mode = COMMENT;
case COMMENT:
if (state->flags & 0x1000) {
@@ -675,13 +726,19 @@ int flush;
copy = 0;
do {
len = (unsigned)(next[copy++]);
+ if (state->head != Z_NULL &&
+ state->head->comment != Z_NULL &&
+ state->length < state->head->comm_max)
+ state->head->comment[state->length++] = len;
} while (len && copy < have);
- if (state->flags & 0x02000)
+ if (state->flags & 0x0200)
state->check = crc32(state->check, next, copy);
have -= copy;
next += copy;
if (len) goto inf_leave;
}
+ else if (state->head != Z_NULL)
+ state->head->comment = Z_NULL;
state->mode = HCRC;
case HCRC:
if (state->flags & 0x0200) {
@@ -693,6 +750,10 @@ int flush;
}
INITBITS();
}
+ if (state->head != Z_NULL) {
+ state->head->hcrc = (int)((state->flags >> 9) & 1);
+ state->head->done = 1;
+ }
strm->adler = state->check = crc32(0L, Z_NULL, 0);
state->mode = TYPE;
break;
@@ -861,6 +922,9 @@ int flush;
}
}
+ /* handle error breaks in while */
+ if (state->mode == BAD) break;
+
/* build code tables */
state->next = state->codes;
state->lencode = (code const FAR *)(state->next);
@@ -965,6 +1029,13 @@ int flush;
state->offset += BITS(state->extra);
DROPBITS(state->extra);
}
+#ifdef INFLATE_STRICT
+ if (state->offset > state->dmax) {
+ strm->msg = (char *)"invalid distance too far back";
+ state->mode = BAD;
+ break;
+ }
+#endif
if (state->offset > state->whave + out - left) {
strm->msg = (char *)"invalid distance too far back";
state->mode = BAD;
@@ -1106,12 +1177,16 @@ uInt dictLength;
/* check state */
if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
- if (state->mode != DICT) return Z_STREAM_ERROR;
+ if (state->wrap != 0 && state->mode != DICT)
+ return Z_STREAM_ERROR;
/* check for correct dictionary id */
- id = adler32(0L, Z_NULL, 0);
- id = adler32(id, dictionary, dictLength);
- if (id != state->check) return Z_DATA_ERROR;
+ if (state->mode == DICT) {
+ id = adler32(0L, Z_NULL, 0);
+ id = adler32(id, dictionary, dictLength);
+ if (id != state->check)
+ return Z_DATA_ERROR;
+ }
/* copy dictionary to window */
if (updatewindow(strm, strm->avail_out)) {
@@ -1133,6 +1208,23 @@ uInt dictLength;
return Z_OK;
}
+int ZEXPORT inflateGetHeader(strm, head)
+z_streamp strm;
+gz_headerp head;
+{
+ struct inflate_state FAR *state;
+
+ /* check state */
+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ state = (struct inflate_state FAR *)strm->state;
+ if ((state->wrap & 2) == 0) return Z_STREAM_ERROR;
+
+ /* save header structure */
+ state->head = head;
+ head->done = 0;
+ return Z_OK;
+}
+
/*
Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found
or when out of input. When called, *have is the number of pattern bytes
@@ -1235,6 +1327,7 @@ z_streamp source;
struct inflate_state FAR *state;
struct inflate_state FAR *copy;
unsigned char FAR *window;
+ unsigned wsize;
/* check input */
if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL ||
@@ -1257,14 +1350,19 @@ z_streamp source;
}
/* copy state */
- *dest = *source;
- *copy = *state;
- copy->lencode = copy->codes + (state->lencode - state->codes);
- copy->distcode = copy->codes + (state->distcode - state->codes);
+ zmemcpy(dest, source, sizeof(z_stream));
+ zmemcpy(copy, state, sizeof(struct inflate_state));
+ if (state->lencode >= state->codes &&
+ state->lencode <= state->codes + ENOUGH - 1) {
+ copy->lencode = copy->codes + (state->lencode - state->codes);
+ copy->distcode = copy->codes + (state->distcode - state->codes);
+ }
copy->next = copy->codes + (state->next - state->codes);
- if (window != Z_NULL)
- zmemcpy(window, state->window, 1U << state->wbits);
+ if (window != Z_NULL) {
+ wsize = 1U << state->wbits;
+ zmemcpy(window, state->window, wsize);
+ }
copy->window = window;
- dest->state = (voidpf)copy;
+ dest->state = (struct internal_state FAR *)copy;
return Z_OK;
}
diff --git a/zlib/inflate.h b/zlib/inflate.h
index 9a12c8f..07bd3e7 100644
--- a/zlib/inflate.h
+++ b/zlib/inflate.h
@@ -1,5 +1,5 @@
/* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2004 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -19,7 +19,6 @@
/* Possible inflate modes between inflate() calls */
typedef enum {
HEAD, /* i: waiting for magic header */
-#ifdef GUNZIP
FLAGS, /* i: waiting for method and flags (gzip) */
TIME, /* i: waiting for modification time (gzip) */
OS, /* i: waiting for extra flags and operating system (gzip) */
@@ -28,7 +27,6 @@ typedef enum {
NAME, /* i: waiting for end of file name (gzip) */
COMMENT, /* i: waiting for end of comment (gzip) */
HCRC, /* i: waiting for header crc (gzip) */
-#endif
DICTID, /* i: waiting for dictionary check value */
DICT, /* waiting for inflateSetDictionary() call */
TYPE, /* i: waiting for type bits, including last-flag bit */
@@ -45,9 +43,7 @@ typedef enum {
MATCH, /* o: waiting for output space to copy string */
LIT, /* o: waiting for output space to write literal */
CHECK, /* i: waiting for 32-bit check value */
-#ifdef GUNZIP
LENGTH, /* i: waiting for 32-bit length (gzip) */
-#endif
DONE, /* finished check, done -- remain here until reset */
BAD, /* got a data error -- remain here until reset */
MEM, /* got an inflate() memory error -- remain here until reset */
@@ -84,8 +80,10 @@ struct inflate_state {
int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
int havedict; /* true if dictionary provided */
int flags; /* gzip header method and flags (0 if zlib) */
+ unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */
unsigned long check; /* protected copy of check value */
unsigned long total; /* protected copy of output count */
+ gz_headerp head; /* where to save gzip header information */
/* sliding window */
unsigned wbits; /* log base 2 of requested window size */
unsigned wsize; /* window size or zero if not using window */
diff --git a/zlib/inftrees.c b/zlib/inftrees.c
index 0b791af..8a9c13f 100644
--- a/zlib/inftrees.c
+++ b/zlib/inftrees.c
@@ -1,5 +1,5 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2005 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,7 +9,7 @@
#define MAXBITS 15
const char inflate_copyright[] =
- " inflate 1.2.1 Copyright 1995-2003 Mark Adler ";
+ " inflate 1.2.3 Copyright 1995-2005 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@ unsigned short FAR *work;
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 76, 66};
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 201, 196};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
@@ -114,7 +114,15 @@ unsigned short FAR *work;
for (max = MAXBITS; max >= 1; max--)
if (count[max] != 0) break;
if (root > max) root = max;
- if (max == 0) return -1; /* no codes! */
+ if (max == 0) { /* no symbols to code at all */
+ this.op = (unsigned char)64; /* invalid code marker */
+ this.bits = (unsigned char)1;
+ this.val = (unsigned short)0;
+ *(*table)++ = this; /* make a table to force an error */
+ *(*table)++ = this;
+ *bits = 1;
+ return 0; /* no symbols, but wait for decoding to report error */
+ }
for (min = 1; min <= MAXBITS; min++)
if (count[min] != 0) break;
if (root < min) root = min;
@@ -224,6 +232,7 @@ unsigned short FAR *work;
/* replicate for those indices with low len bits equal to huff */
incr = 1U << (len - drop);
fill = 1U << curr;
+ min = fill; /* save offset to next table */
do {
fill -= incr;
next[(huff >> drop) + fill] = this;
@@ -254,7 +263,7 @@ unsigned short FAR *work;
drop = root;
/* increment past last table */
- next += 1U << curr;
+ next += min; /* here min is 1 << curr */
/* determine length of next table */
curr = len - drop;
@@ -295,7 +304,6 @@ unsigned short FAR *work;
drop = 0;
len = root;
next = *table;
- curr = root;
this.bits = (unsigned char)len;
}
diff --git a/zlib/inftrees.h b/zlib/inftrees.h
index 82d365a..b1104c8 100644
--- a/zlib/inftrees.h
+++ b/zlib/inftrees.h
@@ -1,5 +1,5 @@
/* inftrees.h -- header to use inftrees.c
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2005 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -36,12 +36,12 @@ typedef struct {
*/
/* Maximum size of dynamic tree. The maximum found in a long but non-
- exhaustive search was 1004 code structures (850 for length/literals
- and 154 for distances, the latter actually the result of an
+ exhaustive search was 1444 code structures (852 for length/literals
+ and 592 for distances, the latter actually the result of an
exhaustive search). The true maximum is not known, but the value
below is more than safe. */
-#define ENOUGH 1440
-#define MAXD 154
+#define ENOUGH 2048
+#define MAXD 592
/* Type of code to build for inftable() */
typedef enum {
diff --git a/zlib/trees.c b/zlib/trees.c
index 3672bbc..8a188f0 100644
--- a/zlib/trees.c
+++ b/zlib/trees.c
@@ -1,5 +1,5 @@
/* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2003 Jean-loup Gailly
+ * Copyright (C) 1995-2005 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -29,7 +29,7 @@
* Addison-Wesley, 1983. ISBN 0-201-06672-6.
*/
-/* @(#) $Id: trees.c 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: trees.c 5666 2007-02-06 22:02:28Z mike $ */
/* #define GEN_TREES_H */
@@ -555,7 +555,7 @@ local void gen_bitlen(s, desc)
while (n != 0) {
m = s->heap[--h];
if (m > max_code) continue;
- if (tree[m].Len != (unsigned) bits) {
+ if ((unsigned) tree[m].Len != (unsigned) bits) {
Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
s->opt_len += ((long)bits - (long)tree[m].Len)
*(long)tree[m].Freq;
@@ -930,8 +930,9 @@ void _tr_flush_block(s, buf, stored_len, eof)
/* Build the Huffman trees unless a stored block is forced */
if (s->level > 0) {
- /* Check if the file is ascii or binary */
- if (s->data_type == Z_UNKNOWN) set_data_type(s);
+ /* Check if the file is binary or text */
+ if (stored_len > 0 && s->strm->data_type == Z_UNKNOWN)
+ set_data_type(s);
/* Construct the literal and distance trees */
build_tree(s, (tree_desc *)(&(s->l_desc)));
@@ -982,7 +983,7 @@ void _tr_flush_block(s, buf, stored_len, eof)
#ifdef FORCE_STATIC
} else if (static_lenb >= 0) { /* force static trees */
#else
- } else if (static_lenb == opt_lenb) {
+ } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
#endif
send_bits(s, (STATIC_TREES<<1)+eof, 3);
compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
@@ -1117,21 +1118,24 @@ local void compress_block(s, ltree, dtree)
}
/* ===========================================================================
- * Set the data type to ASCII or BINARY, using a crude approximation:
- * binary if more than 20% of the bytes are <= 6 or >= 128, ascii otherwise.
- * IN assertion: the fields freq of dyn_ltree are set and the total of all
- * frequencies does not exceed 64K (to fit in an int on 16 bit machines).
+ * Set the data type to BINARY or TEXT, using a crude approximation:
+ * set it to Z_TEXT if all symbols are either printable characters (33 to 255)
+ * or white spaces (9 to 13, or 32); or set it to Z_BINARY otherwise.
+ * IN assertion: the fields Freq of dyn_ltree are set.
*/
local void set_data_type(s)
deflate_state *s;
{
- int n = 0;
- unsigned ascii_freq = 0;
- unsigned bin_freq = 0;
- while (n < 7) bin_freq += s->dyn_ltree[n++].Freq;
- while (n < 128) ascii_freq += s->dyn_ltree[n++].Freq;
- while (n < LITERALS) bin_freq += s->dyn_ltree[n++].Freq;
- s->data_type = (Byte)(bin_freq > (ascii_freq >> 2) ? Z_BINARY : Z_ASCII);
+ int n;
+
+ for (n = 0; n < 9; n++)
+ if (s->dyn_ltree[n].Freq != 0)
+ break;
+ if (n == 9)
+ for (n = 14; n < 32; n++)
+ if (s->dyn_ltree[n].Freq != 0)
+ break;
+ s->strm->data_type = (n == 32) ? Z_TEXT : Z_BINARY;
}
/* ===========================================================================
diff --git a/zlib/zconf.h b/zlib/zconf.h
index 193a5ac..f2e33f9 100644
--- a/zlib/zconf.h
+++ b/zlib/zconf.h
@@ -1,9 +1,9 @@
/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2003 Jean-loup Gailly.
+ * Copyright (C) 1995-2005 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: zconf.h 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: zconf.h 5666 2007-02-06 22:02:28Z mike $ */
#ifndef ZCONF_H
#define ZCONF_H
@@ -13,43 +13,50 @@
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
*/
#ifdef Z_PREFIX
-# define deflateInit_ z_deflateInit_
-# define deflate z_deflate
-# define deflateEnd z_deflateEnd
-# define inflateInit_ z_inflateInit_
-# define inflate z_inflate
-# define inflateEnd z_inflateEnd
-# define deflateInit2_ z_deflateInit2_
-# define deflateSetDictionary z_deflateSetDictionary
-# define deflateCopy z_deflateCopy
-# define deflateReset z_deflateReset
-# define deflatePrime z_deflatePrime
-# define deflateParams z_deflateParams
-# define deflateBound z_deflateBound
-# define inflateInit2_ z_inflateInit2_
-# define inflateSetDictionary z_inflateSetDictionary
-# define inflateSync z_inflateSync
-# define inflateSyncPoint z_inflateSyncPoint
-# define inflateCopy z_inflateCopy
-# define inflateReset z_inflateReset
-# define compress z_compress
-# define compress2 z_compress2
-# define compressBound z_compressBound
-# define uncompress z_uncompress
-# define adler32 z_adler32
-# define crc32 z_crc32
-# define get_crc_table z_get_crc_table
+# define deflateInit_ z_deflateInit_
+# define deflate z_deflate
+# define deflateEnd z_deflateEnd
+# define inflateInit_ z_inflateInit_
+# define inflate z_inflate
+# define inflateEnd z_inflateEnd
+# define deflateInit2_ z_deflateInit2_
+# define deflateSetDictionary z_deflateSetDictionary
+# define deflateCopy z_deflateCopy
+# define deflateReset z_deflateReset
+# define deflateParams z_deflateParams
+# define deflateBound z_deflateBound
+# define deflatePrime z_deflatePrime
+# define inflateInit2_ z_inflateInit2_
+# define inflateSetDictionary z_inflateSetDictionary
+# define inflateSync z_inflateSync
+# define inflateSyncPoint z_inflateSyncPoint
+# define inflateCopy z_inflateCopy
+# define inflateReset z_inflateReset
+# define inflateBack z_inflateBack
+# define inflateBackEnd z_inflateBackEnd
+# define compress z_compress
+# define compress2 z_compress2
+# define compressBound z_compressBound
+# define uncompress z_uncompress
+# define adler32 z_adler32
+# define crc32 z_crc32
+# define get_crc_table z_get_crc_table
+# define zError z_zError
-# define Byte z_Byte
-# define uInt z_uInt
-# define uLong z_uLong
-# define Bytef z_Bytef
-# define charf z_charf
-# define intf z_intf
-# define uIntf z_uIntf
-# define uLongf z_uLongf
-# define voidpf z_voidpf
-# define voidp z_voidp
+# define alloc_func z_alloc_func
+# define free_func z_free_func
+# define in_func z_in_func
+# define out_func z_out_func
+# define Byte z_Byte
+# define uInt z_uInt
+# define uLong z_uLong
+# define Bytef z_Bytef
+# define charf z_charf
+# define intf z_intf
+# define uIntf z_uIntf
+# define uLongf z_uLongf
+# define voidpf z_voidpf
+# define voidp z_voidp
#endif
#if defined(__MSDOS__) && !defined(MSDOS)
@@ -61,8 +68,10 @@
#if defined(_WINDOWS) && !defined(WINDOWS)
# define WINDOWS
#endif
-#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
-# define WIN32
+#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
+# ifndef WIN32
+# define WIN32
+# endif
#endif
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
@@ -281,7 +290,7 @@ typedef uLong FAR uLongf;
# ifdef VMS
# include <unixio.h> /* for off_t */
# endif
-# define z_off_t off_t
+# define z_off_t off_t
#endif
#ifndef SEEK_SET
# define SEEK_SET 0 /* Seek from beginning of file. */
@@ -289,11 +298,11 @@ typedef uLong FAR uLongf;
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
#endif
#ifndef z_off_t
-# define z_off_t long
+# define z_off_t long
#endif
#if defined(__OS400__)
-#define NO_vsnprintf
+# define NO_vsnprintf
#endif
#if defined(__MVS__)
diff --git a/zlib/zlib.h b/zlib/zlib.h
index 92edf96..0228179 100644
--- a/zlib/zlib.h
+++ b/zlib/zlib.h
@@ -1,7 +1,7 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.1, November 17th, 2003
+ version 1.2.3, July 18th, 2005
- Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler
+ Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -37,8 +37,8 @@
extern "C" {
#endif
-#define ZLIB_VERSION "1.2.1"
-#define ZLIB_VERNUM 0x1210
+#define ZLIB_VERSION "1.2.3"
+#define ZLIB_VERNUM 0x1230
/*
The 'zlib' compression library provides in-memory compression and
@@ -53,24 +53,22 @@ extern "C" {
application must provide more input and/or consume the output
(providing more output space) before each call.
- The compressed data format used by the in-memory functions is the zlib
- format, which is a zlib wrapper documented in RFC 1950, wrapped around a
- deflate stream, which is itself documented in RFC 1951.
+ The compressed data format used by default by the in-memory functions is
+ the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
+ around a deflate stream, which is itself documented in RFC 1951.
The library also supports reading and writing files in gzip (.gz) format
with an interface similar to that of stdio using the functions that start
with "gz". The gzip format is different from the zlib format. gzip is a
gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
+ This library can optionally read and write gzip streams in memory as well.
+
The zlib format was designed to be compact and fast for use in memory
and on communications channels. The gzip format was designed for single-
file compression on file systems, has a larger header than zlib to maintain
directory information, and uses a different, slower check method than zlib.
- This library does not provide any functions to write gzip files in memory.
- However such functions could be easily written using zlib's deflate function,
- the documentation in the gzip RFC, and the examples in gzio.c.
-
The library does not install any signal handler. The decoder checks
the consistency of the compressed data, so the library should never
crash even in case of corrupted input.
@@ -97,7 +95,7 @@ typedef struct z_stream_s {
free_func zfree; /* used to free the internal state */
voidpf opaque; /* private data object passed to zalloc and zfree */
- int data_type; /* best guess about the data type: ascii or binary */
+ int data_type; /* best guess about the data type: binary or text */
uLong adler; /* adler32 value of the uncompressed data */
uLong reserved; /* reserved for future use */
} z_stream;
@@ -105,6 +103,29 @@ typedef struct z_stream_s {
typedef z_stream FAR *z_streamp;
/*
+ gzip header information passed to and from zlib routines. See RFC 1952
+ for more details on the meanings of these fields.
+*/
+typedef struct gz_header_s {
+ int text; /* true if compressed data believed to be text */
+ uLong time; /* modification time */
+ int xflags; /* extra flags (not used when writing a gzip file) */
+ int os; /* operating system */
+ Bytef *extra; /* pointer to extra field or Z_NULL if none */
+ uInt extra_len; /* extra field length (valid if extra != Z_NULL) */
+ uInt extra_max; /* space at extra (only when reading header) */
+ Bytef *name; /* pointer to zero-terminated file name or Z_NULL */
+ uInt name_max; /* space at name (only when reading header) */
+ Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */
+ uInt comm_max; /* space at comment (only when reading header) */
+ int hcrc; /* true if there was or will be a header crc */
+ int done; /* true when done reading gzip header (not used
+ when writing a gzip file) */
+} gz_header;
+
+typedef gz_header FAR *gz_headerp;
+
+/*
The application must update next_in and avail_in when avail_in has
dropped to zero. It must update next_out and avail_out when avail_out
has dropped to zero. The application must initialize zalloc, zfree and
@@ -168,11 +189,13 @@ typedef z_stream FAR *z_streamp;
#define Z_FILTERED 1
#define Z_HUFFMAN_ONLY 2
#define Z_RLE 3
+#define Z_FIXED 4
#define Z_DEFAULT_STRATEGY 0
/* compression strategy; see deflateInit2() below for details */
#define Z_BINARY 0
-#define Z_ASCII 1
+#define Z_TEXT 1
+#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */
#define Z_UNKNOWN 2
/* Possible values of the data_type field (though see inflate()) */
@@ -246,6 +269,10 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
and with zero avail_out, it must be called again after making room in the
output buffer because there might be more output pending.
+ Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
+ decide how much data to accumualte before producing output, in order to
+ maximize compression.
+
If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
flushed to the output buffer and the output is aligned on a byte boundary, so
that the decompressor can get all input data available so far. (In particular
@@ -257,7 +284,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
Z_SYNC_FLUSH, and the compression state is reset so that decompression can
restart from this point if previous compressed data has been damaged or if
random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
- the compression.
+ compression.
If deflate returns with avail_out == 0, this function must be called again
with the same value of the flush parameter and more output space (updated
@@ -282,8 +309,8 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
deflate() sets strm->adler to the adler32 checksum of all input read
so far (that is, total_in bytes).
- deflate() may update data_type if it can make a good guess about
- the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
+ deflate() may update strm->data_type if it can make a good guess about
+ the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
binary. This field is only for information purposes and does not affect
the compression algorithm in any manner.
@@ -365,11 +392,11 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
output as possible to the output buffer. Z_BLOCK requests that inflate() stop
- if and when it get to the next deflate block boundary. When decoding the zlib
- or gzip format, this will cause inflate() to return immediately after the
- header and before the first block. When doing a raw inflate, inflate() will
- go ahead and process the first block, and will return when it gets to the end
- of that block, or when it runs out of data.
+ if and when it gets to the next deflate block boundary. When decoding the
+ zlib or gzip format, this will cause inflate() to return immediately after
+ the header and before the first block. When doing a raw inflate, inflate()
+ will go ahead and process the first block, and will return when it gets to
+ the end of that block, or when it runs out of data.
The Z_BLOCK option assists in appending to or combining deflate streams.
Also to assist in this, on return inflate() will set strm->data_type to the
@@ -401,7 +428,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
because Z_BLOCK is used.
If a preset dictionary is needed after this call (see inflateSetDictionary
- below), inflate sets strm-adler to the adler32 checksum of the dictionary
+ below), inflate sets strm->adler to the adler32 checksum of the dictionary
chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
strm->adler to the adler32 checksum of all output produced so far (that is,
total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
@@ -478,7 +505,8 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
16 to windowBits to write a simple gzip header and trailer around the
compressed data instead of a zlib wrapper. The gzip header will have no
file name, no extra data, no comment, no modification time (set to zero),
- no header crc, and the operating system will be set to 255 (unknown).
+ no header crc, and the operating system will be set to 255 (unknown). If a
+ gzip stream is being written, strm->adler is a crc32 instead of an adler32.
The memLevel parameter specifies how much memory should be allocated
for the internal compression state. memLevel=1 uses minimum memory but
@@ -497,7 +525,9 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
parameter only affects the compression ratio but not the correctness of the
- compressed output even if it is not set appropriately.
+ compressed output even if it is not set appropriately. Z_FIXED prevents the
+ use of dynamic Huffman codes, allowing for a simpler decoder for special
+ applications.
deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
@@ -526,7 +556,9 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
deflateInit or deflateInit2, a part of the dictionary may in effect be
discarded, for example if the dictionary is larger than the window size in
deflate or deflate2. Thus the strings most likely to be useful should be
- put at the end of the dictionary, not at the front.
+ put at the end of the dictionary, not at the front. In addition, the
+ current implementation of deflate will use at most the window size minus
+ 262 bytes of the provided dictionary.
Upon return of this function, strm->adler is set to the adler32 value
of the dictionary; the decompressor may later use this value to determine
@@ -592,6 +624,23 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
if strm->avail_out was zero.
*/
+ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
+ int good_length,
+ int max_lazy,
+ int nice_length,
+ int max_chain));
+/*
+ Fine tune deflate's internal compression parameters. This should only be
+ used by someone who understands the algorithm used by zlib's deflate for
+ searching for the best matching string, and even then only by the most
+ fanatic optimizer trying to squeeze out the last compressed bit for their
+ specific input data. Read the deflate.c source code for the meaning of the
+ max_lazy, good_length, nice_length, and max_chain parameters.
+
+ deflateTune() can be called after deflateInit() or deflateInit2(), and
+ returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
+ */
+
ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
uLong sourceLen));
/*
@@ -617,6 +666,30 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
stream state was inconsistent.
*/
+ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
+ gz_headerp head));
+/*
+ deflateSetHeader() provides gzip header information for when a gzip
+ stream is requested by deflateInit2(). deflateSetHeader() may be called
+ after deflateInit2() or deflateReset() and before the first call of
+ deflate(). The text, time, os, extra field, name, and comment information
+ in the provided gz_header structure are written to the gzip header (xflag is
+ ignored -- the extra flags are set according to the compression level). The
+ caller must assure that, if not Z_NULL, name and comment are terminated with
+ a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
+ available there. If hcrc is true, a gzip header crc is included. Note that
+ the current versions of the command-line version of gzip (up through version
+ 1.3.x) do not support header crc's, and will report that it is a "multi-part
+ gzip file" and give up.
+
+ If deflateSetHeader is not used, the default gzip header has text false,
+ the time set to zero, and os set to 255, with no extra, name, or comment
+ fields. The gzip header is returned to the default state by deflateReset().
+
+ deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
+ stream state was inconsistent.
+*/
+
/*
ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
int windowBits));
@@ -649,14 +722,15 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
windowBits can also be greater than 15 for optional gzip decoding. Add
32 to windowBits to enable zlib and gzip decoding with automatic header
detection, or add 16 to decode only the gzip format (the zlib format will
- return a Z_DATA_ERROR).
+ return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is
+ a crc32 instead of an adler32.
inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
- memLevel). msg is set to null if there is no error message. inflateInit2
- does not perform any decompression apart from reading the zlib header if
- present: this will be done by inflate(). (So next_in and avail_in may be
- modified, but next_out and avail_out are unchanged.)
+ memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
+ is set to null if there is no error message. inflateInit2 does not perform
+ any decompression apart from reading the zlib header if present: this will
+ be done by inflate(). (So next_in and avail_in may be modified, but next_out
+ and avail_out are unchanged.)
*/
ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
@@ -664,11 +738,14 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
uInt dictLength));
/*
Initializes the decompression dictionary from the given uncompressed byte
- sequence. This function must be called immediately after a call of inflate
- if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
- can be determined from the adler32 value returned by this call of
- inflate. The compressor and decompressor must use exactly the same
- dictionary (see deflateSetDictionary).
+ sequence. This function must be called immediately after a call of inflate,
+ if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
+ can be determined from the adler32 value returned by that call of inflate.
+ The compressor and decompressor must use exactly the same dictionary (see
+ deflateSetDictionary). For raw inflate, this function can be called
+ immediately after inflateInit2() or inflateReset() and before any call of
+ inflate() to set the dictionary. The application must insure that the
+ dictionary that was used for compression is provided.
inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
parameter is invalid (such as NULL dictionary) or the stream state is
@@ -719,8 +796,64 @@ ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
stream state was inconsistent (such as zalloc or state being NULL).
*/
+ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
+ int bits,
+ int value));
+/*
+ This function inserts bits in the inflate input stream. The intent is
+ that this function is used to start inflating at a bit position in the
+ middle of a byte. The provided bits will be used before any bytes are used
+ from next_in. This function should only be used with raw inflate, and
+ should be used before the first inflate() call after inflateInit2() or
+ inflateReset(). bits must be less than or equal to 16, and that many of the
+ least significant bits of value will be inserted in the input.
+
+ inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
+ stream state was inconsistent.
+*/
+
+ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
+ gz_headerp head));
/*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_stream FAR *strm, int windowBits,
+ inflateGetHeader() requests that gzip header information be stored in the
+ provided gz_header structure. inflateGetHeader() may be called after
+ inflateInit2() or inflateReset(), and before the first call of inflate().
+ As inflate() processes the gzip stream, head->done is zero until the header
+ is completed, at which time head->done is set to one. If a zlib stream is
+ being decoded, then head->done is set to -1 to indicate that there will be
+ no gzip header information forthcoming. Note that Z_BLOCK can be used to
+ force inflate() to return immediately after header processing is complete
+ and before any actual data is decompressed.
+
+ The text, time, xflags, and os fields are filled in with the gzip header
+ contents. hcrc is set to true if there is a header CRC. (The header CRC
+ was valid if done is set to one.) If extra is not Z_NULL, then extra_max
+ contains the maximum number of bytes to write to extra. Once done is true,
+ extra_len contains the actual extra field length, and extra contains the
+ extra field, or that field truncated if extra_max is less than extra_len.
+ If name is not Z_NULL, then up to name_max characters are written there,
+ terminated with a zero unless the length is greater than name_max. If
+ comment is not Z_NULL, then up to comm_max characters are written there,
+ terminated with a zero unless the length is greater than comm_max. When
+ any of extra, name, or comment are not Z_NULL and the respective field is
+ not present in the header, then that field is set to Z_NULL to signal its
+ absence. This allows the use of deflateSetHeader() with the returned
+ structure to duplicate the header. However if those fields are set to
+ allocated memory, then the application will need to save those pointers
+ elsewhere so that they can be eventually freed.
+
+ If inflateGetHeader is not used, then the header information is simply
+ discarded. The header is always checked for validity, including the header
+ CRC if present. inflateReset() will reset the process to discard the header
+ information. The application would need to call inflateGetHeader() again to
+ retrieve the header from the next gzip stream.
+
+ inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
+ stream state was inconsistent.
+*/
+
+/*
+ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
unsigned char FAR *window));
Initialize the internal stream state for decompression using inflateBack()
@@ -744,7 +877,7 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_stream FAR *strm, int windowBits,
typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
-ZEXTERN int ZEXPORT inflateBack OF((z_stream FAR *strm,
+ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
in_func in, void FAR *in_desc,
out_func out, void FAR *out_desc));
/*
@@ -813,7 +946,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_stream FAR *strm,
that inflateBack() cannot return Z_OK.
*/
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_stream FAR *strm));
+ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
/*
All memory allocated by inflateBackInit() is freed.
@@ -1087,6 +1220,12 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
input stream, otherwise zero.
*/
+ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
+/*
+ Returns 1 if file is being read directly without decompression, otherwise
+ zero.
+*/
+
ZEXTERN int ZEXPORT gzclose OF((gzFile file));
/*
Flushes all pending output if necessary, closes the compressed file
@@ -1119,7 +1258,6 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
*/
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-
/*
Update a running Adler-32 checksum with the bytes buf[0..len-1] and
return the updated checksum. If buf is NULL, this function returns
@@ -1135,12 +1273,21 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
if (adler != original_adler) error();
*/
+ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
+ z_off_t len2));
+/*
+ Combine two Adler-32 checksums into one. For two sequences of bytes, seq1
+ and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
+ each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of
+ seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
+*/
+
ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
/*
- Update a running crc with the bytes buf[0..len-1] and return the updated
- crc. If buf is NULL, this function returns the required initial value
- for the crc. Pre- and post-conditioning (one's complement) is performed
- within this function so it shouldn't be done by the application.
+ Update a running CRC-32 with the bytes buf[0..len-1] and return the
+ updated CRC-32. If buf is NULL, this function returns the required initial
+ value for the for the crc. Pre- and post-conditioning (one's complement) is
+ performed within this function so it shouldn't be done by the application.
Usage example:
uLong crc = crc32(0L, Z_NULL, 0);
@@ -1151,6 +1298,16 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
if (crc != original_crc) error();
*/
+ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
+
+/*
+ Combine two CRC-32 check values into one. For two sequences of bytes,
+ seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
+ calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32
+ check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
+ len2.
+*/
+
/* various hacks, don't look :) */
@@ -1167,7 +1324,7 @@ ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
int stream_size));
ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_stream FAR *strm, int windowBits,
+ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
unsigned char FAR *window,
const char *version,
int stream_size));
@@ -1189,7 +1346,7 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_stream FAR *strm, int windowBits,
struct internal_state {int dummy;}; /* hack for buggy compilers */
#endif
-ZEXTERN const char * ZEXPORT zError OF((int err));
+ZEXTERN const char * ZEXPORT zError OF((int));
ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z));
ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
diff --git a/zlib/zutil.c b/zlib/zutil.c
index 1b49b40..d3556d6 100644
--- a/zlib/zutil.c
+++ b/zlib/zutil.c
@@ -1,9 +1,9 @@
/* zutil.c -- target dependent utility functions for the compression library
- * Copyright (C) 1995-2003 Jean-loup Gailly.
+ * Copyright (C) 1995-2005 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: zutil.c 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: zutil.c 5666 2007-02-06 22:02:28Z mike $ */
#include "zutil.h"
@@ -11,10 +11,6 @@
struct internal_state {int dummy;}; /* for buggy compilers */
#endif
-#ifndef STDC
-extern void exit OF((int));
-#endif
-
const char * const z_errmsg[10] = {
"need dictionary", /* Z_NEED_DICT 2 */
"stream end", /* Z_STREAM_END 1 */
@@ -78,38 +74,38 @@ uLong ZEXPORT zlibCompileFlags()
flags += 1 << 13;
#endif
#ifdef NO_GZCOMPRESS
- flags += 1 << 16;
+ flags += 1L << 16;
#endif
#ifdef NO_GZIP
- flags += 1 << 17;
+ flags += 1L << 17;
#endif
#ifdef PKZIP_BUG_WORKAROUND
- flags += 1 << 20;
+ flags += 1L << 20;
#endif
#ifdef FASTEST
- flags += 1 << 21;
+ flags += 1L << 21;
#endif
#ifdef STDC
# ifdef NO_vsnprintf
- flags += 1 << 25;
+ flags += 1L << 25;
# ifdef HAS_vsprintf_void
- flags += 1 << 26;
+ flags += 1L << 26;
# endif
# else
# ifdef HAS_vsnprintf_void
- flags += 1 << 26;
+ flags += 1L << 26;
# endif
# endif
#else
- flags += 1 << 24;
+ flags += 1L << 24;
# ifdef NO_snprintf
- flags += 1 << 25;
+ flags += 1L << 25;
# ifdef HAS_sprintf_void
- flags += 1 << 26;
+ flags += 1L << 26;
# endif
# else
# ifdef HAS_snprintf_void
- flags += 1 << 26;
+ flags += 1L << 26;
# endif
# endif
#endif
@@ -141,7 +137,10 @@ const char * ZEXPORT zError(err)
}
#if defined(_WIN32_WCE)
- /* does not exist on WCE */
+ /* The Microsoft C Run-Time Library for Windows CE doesn't have
+ * errno. We define it as a global variable to simplify porting.
+ * Its value is always 0 and should not be used.
+ */
int errno = 0;
#endif
diff --git a/zlib/zutil.h b/zlib/zutil.h
index 370b96a..bdbc8e3 100644
--- a/zlib/zutil.h
+++ b/zlib/zutil.h
@@ -1,5 +1,5 @@
/* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2003 Jean-loup Gailly.
+ * Copyright (C) 1995-2005 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -8,7 +8,7 @@
subject to change. Applications should only use zlib.h.
*/
-/* @(#) $Id: zutil.h 4052 2005-02-24 21:55:12Z mike $ */
+/* @(#) $Id: zutil.h 5666 2007-02-06 22:02:28Z mike $ */
#ifndef ZUTIL_H
#define ZUTIL_H
@@ -17,14 +17,26 @@
#include "zlib.h"
#ifdef STDC
-# include <stddef.h>
+# ifndef _WIN32_WCE
+# include <stddef.h>
+# endif
# include <string.h>
# include <stdlib.h>
#endif
#ifdef NO_ERRNO_H
+# ifdef _WIN32_WCE
+ /* The Microsoft C Run-Time Library for Windows CE doesn't have
+ * errno. We define it as a global variable to simplify porting.
+ * Its value is always 0 and should not be used. We rename it to
+ * avoid conflict with other libraries that use the same workaround.
+ */
+# define errno z_errno
+# endif
extern int errno;
#else
-# include <errno.h>
+# ifndef _WIN32_WCE
+# include <errno.h>
+# endif
#endif
#ifndef local
@@ -105,6 +117,9 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
#ifdef OS2
# define OS_CODE 0x06
+# ifdef M_I86
+ #include <malloc.h>
+# endif
#endif
#if defined(MACOS) || defined(TARGET_OS_MAC)
@@ -189,12 +204,8 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# define NO_vsnprintf
# endif
#endif
-
-#ifdef HAVE_STRERROR
- extern char *strerror OF((int));
-# define zstrerror(errnum) strerror(errnum)
-#else
-# define zstrerror(errnum) ""
+#ifdef VMS
+# define NO_vsnprintf
#endif
#if defined(pyr)