PDF FLTK 1.3.5 Programming Manual

FLTK 1.3.8 Programming Manual

Revision 9.8 by F. Costantini, D. Gibson, M. Melcher, A. Schlosser, B. Spitzak, and M. Sweet.

Copyright 1998-2021 by Bill Spitzak and others.

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.

Generated by Doxygen 1.9.1

November 20, 2021

i

1 FLTK Programming Manual

1

2 Preface

3

2.1 Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.3 Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.4 Copyrights and Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Introduction to FLTK

5

3.1 History of FLTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.3 Licensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.4 What Does "FLTK" Mean? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.5 Building and Installing FLTK Under UNIX and Apple OS X . . . . . . . . . . . . . . . . . . . . . . . 7

3.6 Building FLTK Under Microsoft Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.6.1 GNU toolsets (Cygwin or MinGW) hosted on Windows . . . . . . . . . . . . . . . . . . . . . 9

3.6.2 Using the Visual C++ DLL Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.7 Internet Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.8 Reporting Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4 FLTK Basics

11

4.1 Writing Your First FLTK Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4.1.1 Creating the Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.1.2 Creating Widget hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.1.3 Get/Set Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.1.4 Redrawing After Changing Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.1.5 Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.1.6 Showing the Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.1.7 The Main Event Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.2 Compiling Programs with Standard Compilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.3 Compiling Programs with Makefiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.4 Compiling Programs with Microsoft Visual C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.5 Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.6 Header Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5 Common Widgets and Attributes

17

5.1 Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.3 Valuators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.4 Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.5 Setting the Size and Position of Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.6 Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.7 Box Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.7.1 Making Your Own Boxtypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Generated by Doxygen

ii

5.8 Labels and Label Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.9 Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.10 Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

6 Designing a Simple Text Editor

27

6.1 Determining the Goals of the Text Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

6.2 Designing the Main Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

6.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

6.4 Menubars and Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

6.5 Editing the Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

6.6 The Replace Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6.7 Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6.7.1 changed_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6.7.2 copy_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6.7.3 cut_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6.7.4 delete_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6.7.5 find_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6.7.6 find2_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6.7.7 new_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6.7.8 open_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.7.9 paste_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.7.10 quit_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.7.11 replace_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.7.12 replace2_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.7.13 replall_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.7.14 replcan_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.7.15 save_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.7.16 saveas_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.8 Other Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.8.1 check_save() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.8.2 load_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.8.3 save_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.8.4 set_title() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.9 The main() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.10 Compiling the Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.11 The Final Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.12 Advanced Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.12.1 Syntax Highlighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

7 Drawing Things in FLTK

39

7.1 When Can You Draw Things in FLTK? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

7.1.1 What Drawing Unit do FLTK drawing functions use? . . . . . . . . . . . . . . . . . . . . . . 39

7.2 Drawing Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Generated by Doxygen

iii

7.2.1 Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7.2.2 Clipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.3 Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.3.1 Line Dashes and Thickness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.3.2 Drawing Fast Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.3.3 Drawing Complex Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.3.4 Drawing Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.3.5 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.3.6 Character Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.3.7 Drawing Overlays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.4 Drawing Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.4.1 Direct Image Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.4.2 Direct Image Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.4.3 Image Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.4.4 Offscreen Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

8 Handling Events

59

8.1 The FLTK Event Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

8.2 Mouse Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

8.2.1 FL_PUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

8.2.2 FL_DRAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

8.2.3 FL_RELEASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8.2.4 FL_MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8.2.5 FL_MOUSEWHEEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8.3 Focus Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8.3.1 FL_ENTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8.3.2 FL_LEAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8.3.3 FL_FOCUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8.3.4 FL_UNFOCUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8.4 Keyboard Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

8.4.1 FL_KEYBOARD, FL_KEYDOWN, FL_KEYUP . . . . . . . . . . . . . . . . . . . . . . . . . 61

8.4.2 FL_SHORTCUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

8.5 Widget Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

8.5.1 FL_DEACTIVATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

8.5.2 FL_ACTIVATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

8.5.3 FL_HIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

8.5.4 FL_SHOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

8.6 Clipboard Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

8.6.1 FL_PASTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

8.6.2 FL_SELECTIONCLEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

8.7 Drag and Drop Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

8.7.1 FL_DND_ENTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Generated by Doxygen

iv

8.7.2 FL_DND_DRAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.7.3 FL_DND_LEAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.7.4 FL_DND_RELEASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.8 Other events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.8.1 FL_SCREEN_CONFIGURATION_CHANGED . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.8.2 FL_FULLSCREEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.9 Fl::event_() methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 8.10 Event Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 8.11 FLTK Compose-Character Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

9 Adding and Extending Widgets

67

9.1 Subclassing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

9.2 Making a Subclass of Fl_Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

9.3 The Constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

9.4 Protected Methods of Fl_Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

9.5 Handling Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

9.6 Drawing the Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

9.7 Resizing the Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

9.8 Making a Composite Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

9.9 Cut and Paste Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

9.10 Drag And Drop Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

9.11 Making a subclass of Fl_Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

10 Using OpenGL

75

10.1 Using OpenGL in FLTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

10.2 Making a Subclass of Fl_Gl_Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

10.2.1 Defining the Subclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

10.2.2 The draw() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

10.2.3 The handle() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

10.3 Using OpenGL in Normal FLTK Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

10.4 OpenGL Drawing Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

10.5 Speeding up OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

10.6 Using OpenGL Optimizer with FLTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

10.7 Using OpenGL 3.0 (or higher versions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

11 Programming with FLUID

83

11.1 What is FLUID? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

11.2 Running FLUID Under UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

11.3 Running FLUID Under Microsoft Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

11.4 Compiling .fl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

11.5 A Short Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

11.5.1 The CubeView Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

11.5.2 The CubeViewUI Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Generated by Doxygen

v

11.5.3 Adding Constructor Initialization Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 11.5.4 Generating the Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 11.6 FLUID Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 11.6.1 The Widget Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 11.6.2 Menu Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 11.6.3 The Widget Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 11.7 GUI Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 11.7.1 Style Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 11.7.2 C++ Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 11.8 Selecting and Moving Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 11.9 Image Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 11.10 Internationalization with FLUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 11.10.1 I18N Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 11.10.2 Using GNU gettext for I18N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 11.10.3 Using POSIX catgets for I18N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 11.11 Known limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

12 Advanced FLTK

115

12.1 Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

12.2 FLTK multithread locking - Fl::lock() and Fl::unlock() . . . . . . . . . . . . . . . . . . . . . . . . . . 115

12.3 Simple multithreaded examples using Fl::lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

12.4 FLTK multithreaded "lockless programming" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

12.5 FLTK multithreaded Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

13 Unicode and UTF-8 Support

121

13.1 About Unicode, ISO 10646 and UTF-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

13.2 Unicode in FLTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

13.3 Illegal Unicode and UTF-8 Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

13.4 FLTK Unicode and UTF-8 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

13.5 FLTK Unicode Versions of System Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

14 FLTK Enumerations

129

14.1 Version Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

14.2 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

14.3 Callback "When" Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

14.4 Fl::event_button() Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

14.5 Fl::event_key() Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

14.6 Fl::event_state() Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

14.7 Alignment Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

14.8 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

14.9 Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

14.9.1 Color Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

14.10 Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

Generated by Doxygen

vi

14.11 FD "When" Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 14.12 Damage Masks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

15 GLUT Compatibility

137

15.1 Using the GLUT Compatibility Header File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

15.2 Known Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

15.3 Mixing GLUT and FLTK Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

15.4 class Fl_Glut_Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

15.4.1 Class Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

15.4.2 Include Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

15.4.3 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

15.4.4 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

15.4.5 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

16 Forms Compatibility

141

16.1 Importing Forms Layout Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

16.2 Using the Compatibility Header File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

16.3 Problems You Will Encounter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

16.4 Additional Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

17 Operating System Issues

147

17.1 Accessing the OS Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

17.2 The UNIX (X11) Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

17.2.1 Handling Other X Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

17.2.2 Drawing using Xlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

17.2.3 Changing the Display, Screen, or X Visual . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

17.2.4 Using a Subclass of Fl_Window for Special X Stuff . . . . . . . . . . . . . . . . . . . . . . 151

17.2.5 Setting the Icon of a Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

17.2.6 X Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

17.3 The Windows (WIN32) Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

17.3.1 Using filenames with non-ASCII characters . . . . . . . . . . . . . . . . . . . . . . . . . . 154

17.3.2 Responding to WM_QUIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

17.3.3 Handling Other WIN32 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

17.3.4 Drawing Things Using the WIN32 GDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

17.3.5 Setting the Icon of a Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

17.3.6 How to Not Get a MSDOS Console Window . . . . . . . . . . . . . . . . . . . . . . . . . . 155

17.3.7 Known WIN32 Bugs and Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

17.4 The Apple OS X Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

17.4.1 Setting the icon of an application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

17.4.2 Drawing Things Using Quartz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

17.4.3 Internationalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

17.4.4 OpenGL and 'retina' displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

17.4.5 Fl_Double_Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

Generated by Doxygen

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download