diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 1999-01-13 19:28:54 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 1999-01-13 19:28:54 +0000 |
| commit | d7b88a3bcc7e76f38ee5799be7722fd5a10781ef (patch) | |
| tree | d8984d45424c9b2cdb199c1918f38bfea4a8211d /documentation/common.html | |
| parent | 30fa233681467b82b165e7d42cd0bea778b93768 (diff) | |
Updated all links so they work between files.
Revision 1.
git-svn-id: file:///fltk/svn/fltk/trunk@219 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'documentation/common.html')
| -rw-r--r-- | documentation/common.html | 643 |
1 files changed, 296 insertions, 347 deletions
diff --git a/documentation/common.html b/documentation/common.html index 18911c86b..4a85c4fe2 100644 --- a/documentation/common.html +++ b/documentation/common.html @@ -1,389 +1,338 @@ -<HTML> -<BODY> - -<H1 ALIGN=RIGHT><A NAME="common">3 - Common Widgets and Attributes</A></H1> - -This chapter describes many of the widgets that are provided with FLTK and covers how -to query and set the standard attributes. - +<HTML><BODY> +<H1 ALIGN=RIGHT><A NAME=common>3 - Common Widgets and Attributes</A></H1> + This chapter describes many of the widgets that are provided with FLTK +and covers how to query and set the standard attributes. <H2>Buttons</H2> - -FLTK provides many types of buttons: - -<ul> - <li><tt>Fl_Button</tt> - A standard push button. - <li><tt>Fl_Check_Button</tt> - A button with a check box. - <li><tt>Fl_Light_Button</tt> - A push button with a light. - <li><tt>Fl_Repeat_Button</tt> - A push button that repeats when held. - <li><tt>Fl_Return_Button</tt> - A push button that is activated by the Enter key. - <li><tt>Fl_Round_Button</tt> - A button with a check circle. -</ul> - -For all of these buttons you just need to include the corresponding -<tt><FL/Fl_xyz_Button.H></tt> header file. The constructor takes the -bounding box of the button and optionally a label string: - -<ul><pre> -Fl_Button *button = new Fl_Button(x, y, width, height, "label"); + FLTK provides many types of buttons: +<UL> +<LI><TT>Fl_Button</TT> - A standard push button. </LI> +<LI><TT>Fl_Check_Button</TT> - A button with a check box. </LI> +<LI><TT>Fl_Light_Button</TT> - A push button with a light. </LI> +<LI><TT>Fl_Repeat_Button</TT> - A push button that repeats when held. </LI> +<LI><TT>Fl_Return_Button</TT> - A push button that is activated by the +Enter key. </LI> +<LI><TT>Fl_Round_Button</TT> - A button with a check circle. </LI> +</UL> + For all of these buttons you just need to include the corresponding <TT> +<FL/Fl_xyz_Button.H></TT> header file. The constructor takes the +bounding box of the button and optionally a label string: +<UL> +<PRE> +Fl_Button *button = new Fl_Button(x, y, width, height, "label"); Fl_Light_Button *lbutton = new Fl_Light_Button(x, y, width, height); -Fl_Round_Button *rbutton = new Fl_Round_Button(x, y, width, height, "label"); -</pre></ul> - -Each button has an associated <a href="#Fl_Button.type"><tt>type()</tt></a> -which allows it to behave as a push button, toggle button, or radio button: - -<ul><pre> -button->type(0); -lbutton->type(FL_TOGGLE_BUTTON); -rbutton->type(FL_RADIO_BUTTON); -</pre></ul> - -For toggle and radio buttons, the <a href="#Fl_Button.value"><tt>value()</tt></a> -method returns the current button state (0 = off, 1 = on). The -<a href="#Fl_Widget.set"><tt>set()</tt></a> and -<a href="#Fl_Widget.clear"><tt>clear()</tt></a> methods can be used on toggle -buttons to turn a toggle button on or off, respectively. Radio buttons can -be turned on with the <a href="#Fl_Widget.setonly"><tt>setonly()</tt></a> -method; this will also turn off other radio buttons in the current group. - +Fl_Round_Button *rbutton = new Fl_Round_Button(x, y, width, height, "label"); +</PRE> +</UL> + Each button has an associated <A href=Fl_Button.html#Fl_Button.type><TT> +type()</TT></A> which allows it to behave as a push button, toggle +button, or radio button: +<UL> +<PRE> +button->type(0); +lbutton->type(FL_TOGGLE_BUTTON); +rbutton->type(FL_RADIO_BUTTON); +</PRE> +</UL> + For toggle and radio buttons, the <A href=Fl_Button.html#Fl_Button.value> +<TT>value()</TT></A> method returns the current button state (0 = off, +1 = on). The <A href=#Fl_Widget.set><TT>set()</TT></A> and <A href=#Fl_Widget.clear> +<TT>clear()</TT></A> methods can be used on toggle buttons to turn a +toggle button on or off, respectively. Radio buttons can be turned on +with the <A href=#Fl_Widget.setonly><TT>setonly()</TT></A> method; this +will also turn off other radio buttons in the current group. <H2>Text</H2> - -FLTK provides several text widgets for displaying and receiving text: - -<ul> - <li><tt>Fl_Input</tt> - A standard one-line text input field. - <li><tt>Fl_Output</tt> - A standard one-line text output field. - <li><tt>Fl_Multiline_Input</tt> - A standard multi-line text input field. - <li><tt>Fl_Multiline_Output</tt> - A standard multi-line text output field. -</ul> - -The <tt>Fl_Output</tt> and <tt>Fl_Multiline_Output</tt> widgets allow the -user to copy text from the output field but not change it. - -<p>The <a href="#Fl_Input.value"><tt>value()</tt></a> method is used to get or -set the string that is displayed: - -<ul><pre> -Fl_Input *input = new Fl_Input(x, y, width, height, "label"); -input->value("Now is the time for all good men..."); -</pre></ul> - + FLTK provides several text widgets for displaying and receiving text: +<UL> +<LI><TT>Fl_Input</TT> - A standard one-line text input field. </LI> +<LI><TT>Fl_Output</TT> - A standard one-line text output field. </LI> +<LI><TT>Fl_Multiline_Input</TT> - A standard multi-line text input +field. </LI> +<LI><TT>Fl_Multiline_Output</TT> - A standard multi-line text output +field. </LI> +</UL> + The <TT>Fl_Output</TT> and <TT>Fl_Multiline_Output</TT> widgets allow +the user to copy text from the output field but not change it. +<P>The <A href=Fl_Input.html#Fl_Input.value><TT>value()</TT></A> method +is used to get or set the string that is displayed: </P> +<UL> +<PRE> +Fl_Input *input = new Fl_Input(x, y, width, height, "label"); +input->value("Now is the time for all good men..."); +</PRE> +</UL> <H2>Valuators</H2> - -Unlike text widgets, valuators keep track of numbers instead of strings. -FLTK provides the following valuators: - -<ul> - <li><tt>Fl_Counter</tt> - A widget with arrow buttons that shows the - current value. - <li><tt>Fl_Dial</tt> - A round knob. - <li><tt>Fl_Roller</tt> - An SGI-like dolly widget. - <li><tt>Fl_Scrollbar</tt> - A standard scrollbar widget. - <li><tt>Fl_Slider</tt> - A scrollbar with a knob. - <li><tt>Fl_Value_Slider</tt> - A slider that shows the current value. -</ul> - -The <a href="#Fl_Valuator.value"><tt>value()</tt></a> method gets and sets the -current value of the widget. The <a href="#Fl_Valuator.minimum"> -<tt>minimum()</tt></a> and <a href="#Fl_Valuator.maximum"><tt>maximum</tt></a> -methods set the range of values that are reported by the widget. - + Unlike text widgets, valuators keep track of numbers instead of +strings. FLTK provides the following valuators: +<UL> +<LI><TT>Fl_Counter</TT> - A widget with arrow buttons that shows the + current value. </LI> +<LI><TT>Fl_Dial</TT> - A round knob. </LI> +<LI><TT>Fl_Roller</TT> - An SGI-like dolly widget. </LI> +<LI><TT>Fl_Scrollbar</TT> - A standard scrollbar widget. </LI> +<LI><TT>Fl_Slider</TT> - A scrollbar with a knob. </LI> +<LI><TT>Fl_Value_Slider</TT> - A slider that shows the current value. </LI> +</UL> + The <A href=Fl_Valuator.html#Fl_Valuator.value><TT>value()</TT></A> + method gets and sets the current value of the widget. The <A href=Fl_Valuator.html#Fl_Valuator.minimum> +<TT>minimum()</TT></A> and <A href=Fl_Valuator.html#Fl_Valuator.maximum><TT> +maximum</TT></A> methods set the range of values that are reported by +the widget. <H2>Groups</H2> - -The <tt>Fl_Group</tt> widget class is used as a general purpose "container" -widget. Besides grouping radio buttons, the groups are used to encapsulate -windows, tabs, and scrolled windows. The following group classes are available -with FLTK: - -<ul> - <li><tt>Fl_Double_Window</tt> - A double-buffered window on the screen. - <li><tt>Fl_Gl_Window</tt> - An OpenGL window on the screen. - <li><tt>Fl_Group</tt> - The base container class; can be used to group any widgets together. - <li><tt>Fl_Scroll</tt> - A scrolled window area. - <li><tt>Fl_Tabs</tt> - Displays child widgets as tabs. - <li><tt>Fl_Window</tt> - A window on the screen. -</ul> - + The <TT>Fl_Group</TT> widget class is used as a general purpose +"container" widget. Besides grouping radio buttons, the groups are +used to encapsulate windows, tabs, and scrolled windows. The following +group classes are available with FLTK: +<UL> +<LI><TT>Fl_Double_Window</TT> - A double-buffered window on the screen. </LI> +<LI><TT>Fl_Gl_Window</TT> - An OpenGL window on the screen. </LI> +<LI><TT>Fl_Group</TT> - The base container class; can be used to group +any widgets together. </LI> +<LI><TT>Fl_Scroll</TT> - A scrolled window area. </LI> +<LI><TT>Fl_Tabs</TT> - Displays child widgets as tabs. </LI> +<LI><TT>Fl_Window</TT> - A window on the screen. </LI> +</UL> <H2>Setting the Size and Position of Widgets</H2> - -The size and position of widgets is usually set when you create them. You -can change this at any time using the <tt>position</tt>, <tt>resize()</tt>, -and <tt>size</tt> methods: - -<ul><pre> -button->position(x, y); -group->resize(x, y, width, height); -window->size(width, height); -</pre></ul> - -Changing the size or position of a widget will cause a redraw of that widget -and its children. - -<H2><A NAME="colors">Colors</A></H2> - -FLTK manages a virtual color palette of "standard" colors. The -standard colors are: - -<ul> - <li><tt>FL_BLACK</tt> - <li><tt>FL_RED</tt> - <li><tt>FL_GREEN</tt> - <li><tt>FL_YELLOW</tt> - <li><tt>FL_BLUE</tt> - <li><tt>FL_MAGENTA</tt> - <li><tt>FL_CYAN</tt> - <li><tt>FL_WHITE</tt> - <li><tt>FL_GRAY</tt> -</ul> - -The widget color can be set using the <tt>color()</tt> method: - -<ul><pre> -button->color(FL_RED); -</pre></ul> - -Similarly, the label color can be set using the <tt>labelcolor()</tt> method: - -<ul><pre> -button->labelcolor(FL_WHITE); -</pre></ul> - -<H2><A NAME="boxtypes">Box Types</A></H2> - -<p>The type <tt>Fl_Boxtype</tt> stored and returned in <a href="#Fl_Widget.box"> -<tt>Fl_Widget::box()</tt></a> is an enumeration defined in -<a href="#enumerations"><tt><FL/Enumerations.H></tt></a>: - -<center><img src=boxtypes.gif width=80%></center> - -<tt>FL_NO_BOX</tt> means nothing is drawn at all, so whatever is -already on the screen remains. The <tt>FL_..._FRAME</tt> types only -draw their edges, leaving the center unchanged. In the above diagram -the blue color is the area that is not drawn by the box. - + The size and position of widgets is usually set when you create them. + You can change this at any time using the <TT>position</TT>, <TT> +resize()</TT>, and <TT>size</TT> methods: +<UL> +<PRE> +button->position(x, y); +group->resize(x, y, width, height); +window->size(width, height); +</PRE> +</UL> + Changing the size or position of a widget will cause a redraw of that +widget and its children. +<H2><A NAME=colors>Colors</A></H2> + FLTK manages a virtual color palette of "standard" colors. The +standard colors are: +<UL> +<LI><TT>FL_BLACK</TT></LI> +<LI><TT>FL_RED</TT></LI> +<LI><TT>FL_GREEN</TT></LI> +<LI><TT>FL_YELLOW</TT></LI> +<LI><TT>FL_BLUE</TT></LI> +<LI><TT>FL_MAGENTA</TT></LI> +<LI><TT>FL_CYAN</TT></LI> +<LI><TT>FL_WHITE</TT></LI> +<LI><TT>FL_GRAY</TT></LI> +</UL> + The widget color can be set using the <TT>color()</TT> method: +<UL> +<PRE> +button->color(FL_RED); +</PRE> +</UL> + Similarly, the label color can be set using the <TT>labelcolor()</TT> + method: +<UL> +<PRE> +button->labelcolor(FL_WHITE); +</PRE> +</UL> +<H2><A NAME=boxtypes>Box Types</A></H2> +<P>The type <TT>Fl_Boxtype</TT> stored and returned in <A href=Fl_Widget.html#Fl_Widget.box> +<TT>Fl_Widget::box()</TT></A> is an enumeration defined in <A href=enumerations.html#enumerations> +<TT>s.H></TT></A>: +<CENTER><IMG src=./boxtypes.gif width=80%></CENTER> +<TT>FL_NO_BOX</TT> means nothing is drawn at all, so whatever is +already on the screen remains. The <TT>FL_..._FRAME</TT> types only +draw their edges, leaving the center unchanged. In the above diagram +the blue color is the area that is not drawn by the box. </P> <H3>Making your own Boxtypes</H3> - -You can define your own boxtypes by making a small function that -draws the box and adding a pointer to it to a table of boxtypes. - + You can define your own boxtypes by making a small function that draws +the box and adding a pointer to it to a table of boxtypes. <H4>The Drawing Function</H4> - -The drawing function is passed the bounding box and background -color for the widget: - -<ul><pre> + The drawing function is passed the bounding box and background color +for the widget: +<UL> +<PRE> void xyz_draw(int x, int y, int w, int h, Fl_Color c) { ... } -</pre></ul> - -A simple drawing function might fill a rectangle with the given -color and then draw a black outline: - -<ul><pre> +</PRE> +</UL> + A simple drawing function might fill a rectangle with the given color +and then draw a black outline: +<UL> +<PRE> void xyz_draw(int x, int y, int w, int h, Fl_Color c) { fl_color(c); fl_rectf(x, y, w, h); fl_color(FL_BLACK); fl_rect(x, y, w, h); } -</pre></ul> - +</PRE> +</UL> <H4>Adding Your Box Type</H4> - -The <tt>Fl::set_boxtype()</tt> method adds or replaces the -specified box type: - -<ul><pre> + The <TT>Fl::set_boxtype()</TT> method adds or replaces the specified +box type: +<UL> +<PRE> #define XYZ_BOX FL_FREE_BOXTYPE Fl::set_boxtype(XYZ_BOX, xyz_draw, 1, 1, 2, 2); -</pre></ul> - -The last 4 arguments to <tt>Fl::set_boxtype()</tt> are the offsets -for the bounding box that should be subtracted when drawing the label -inside the box. - -<H2><A NAME="labels">Labels and Label Types</A></H2> - -The <tt>label()</tt>, <tt>align</tt>, <tt>labelfont()</tt>, <tt>labelsize()</tt>, -and <tt>labeltype()</tt> methods control the labeling of widgets. - +</PRE> +</UL> + The last 4 arguments to <TT>Fl::set_boxtype()</TT> are the offsets for +the bounding box that should be subtracted when drawing the label +inside the box. +<H2><A NAME=labels>Labels and Label Types</A></H2> + The <TT>label()</TT>, <TT>align</TT>, <TT>labelfont()</TT>, <TT> +labelsize()</TT>, and <TT>labeltype()</TT> methods control the labeling +of widgets. <H3>label()</H3> - -The <tt>label()</tt> method sets the string that is displayed for the label. -For the <tt>FL_SYMBOL_LABEL</tt> and image label types the string contains -the actual symbol or image data. - + The <TT>label()</TT> method sets the string that is displayed for the +label. For the <TT>FL_SYMBOL_LABEL</TT> and image label types the +string contains the actual symbol or image data. <H3>align()</H3> - -The <tt>align()</tt> method positions the label. The following constants are -defined: - -<ul> - <li><tt>FL_ALIGN_CENTER</tt> - center the label in the widget. - <li><tt>FL_ALIGN_TOP</tt> - align the label at the top of the widget. - <li><tt>FL_ALIGN_BOTTOM</tt> - align the label at the bottom of the widget. - <li><tt>FL_ALIGN_LEFT</tt> - align the label to the left of the widget. - <li><tt>FL_ALIGN_RIGHT</tt> - align the label to the right of the widget. - <li><tt>FL_ALIGN_INSIDE</tt> - align the label inside the widget. - <li><tt>FL_ALIGN_CLIP</tt> - clip the label to the widget's bounding box. - <li><tt>FL_ALIGN_WRAP</tt> - wrap the label text as needed. -</ul> - + The <TT>align()</TT> method positions the label. The following +constants are defined: +<UL> +<LI><TT>FL_ALIGN_CENTER</TT> - center the label in the widget. </LI> +<LI><TT>FL_ALIGN_TOP</TT> - align the label at the top of the widget. </LI> +<LI><TT>FL_ALIGN_BOTTOM</TT> - align the label at the bottom of the +widget. </LI> +<LI><TT>FL_ALIGN_LEFT</TT> - align the label to the left of the widget. </LI> +<LI><TT>FL_ALIGN_RIGHT</TT> - align the label to the right of the +widget. </LI> +<LI><TT>FL_ALIGN_INSIDE</TT> - align the label inside the widget. </LI> +<LI><TT>FL_ALIGN_CLIP</TT> - clip the label to the widget's bounding +box. </LI> +<LI><TT>FL_ALIGN_WRAP</TT> - wrap the label text as needed. </LI> +</UL> <H3>labeltype()</H3> - -The <tt>labeltype()</tt> method sets the type of the label. The following -standard label types are included: - -<ul> - <li><tt>FL_NORMAL_LABEL</tt> - draws the text. - <li><tt>FL_NO_LABEL</tt> - does nothing - <li><tt>FL_SYMBOL_LABEL</tt> - draws "@xyz" labels, see "<a href=#symbols>Symbol Labels</a>" - <li><tt>FL_SHADOW_LABEL</tt> - draws a drop shadow under the text - <li><tt>FL_ENGRAVED_LABEL</tt> - draws edges as though the text is engraved - <li><tt>FL_EMBOSSED_LABEL</tt> - draws edges as thought the text is raised -</ul> - -To make bitmaps or pixmaps you use a method on the -<a href="#Fl_Bitmap"><tt>Fl_Bitmap</tt></a> or -<a href="#Fl_Pixmap"><tt>Fl_Pixmap</tt></a> objects. - + The <TT>labeltype()</TT> method sets the type of the label. The +following standard label types are included: +<UL> +<LI><TT>FL_NORMAL_LABEL</TT> - draws the text. </LI> +<LI><TT>FL_NO_LABEL</TT> - does nothing </LI> +<LI><TT>FL_SYMBOL_LABEL</TT> - draws "@xyz" labels, see "<A href=#symbols> +Symbol Labels</A>" </LI> +<LI><TT>FL_SHADOW_LABEL</TT> - draws a drop shadow under the text </LI> +<LI><TT>FL_ENGRAVED_LABEL</TT> - draws edges as though the text is +engraved </LI> +<LI><TT>FL_EMBOSSED_LABEL</TT> - draws edges as thought the text is +raised </LI> +</UL> + To make bitmaps or pixmaps you use a method on the <A href=drawing.html#Fl_Bitmap> +<TT>Fl_Bitmap</TT></A> or <A href=drawing.html#Fl_Pixmap><TT>Fl_Pixmap</TT> +</A> objects. <H4>Making Your Own Label Types</H4> - -Label types are actually indexes into a table of functions to draw -them. The primary purpose of this is to let you reuse the -<tt>label()</tt> pointer as a pointer to arbitrary data such as a -bitmap or pixmap. You can also use this to draw the labels in ways -inaccessible through the <tt>fl_font</tt> mechanisim (e.g. -<tt>FL_ENGRAVED_LABEL</tt>) or with program-generated letters or -symbology. - + Label types are actually indexes into a table of functions to draw +them. The primary purpose of this is to let you reuse the <TT>label()</TT> + pointer as a pointer to arbitrary data such as a bitmap or pixmap. You +can also use this to draw the labels in ways inaccessible through the <TT> +fl_font</TT> mechanisim (e.g. <TT>FL_ENGRAVED_LABEL</TT>) or with +program-generated letters or symbology. <H5>Label Type Functions</H5> - -To setup your own label type you will need to write two functions -to draw and measure the label. The draw function is called with a -pointer to a <a href="#Fl_Label"><tt>Fl_Label</tt></a> structure -containing the label information, the bounding box for the label, -and the label alignment: - -<ul><pre> + To setup your own label type you will need to write two functions to +draw and measure the label. The draw function is called with a pointer +to a <A href=#Fl_Label><TT>Fl_Label</TT></A> structure containing the +label information, the bounding box for the label, and the label +alignment: +<UL> +<PRE> void xyz_draw(Fl_Label *label, int x, int y, int w, int h, Fl_Align align) { ... } -</pre></ul> - -The label should be drawn <i>inside</i> this bounding box, even if -<tt>FL_ALIGN_INSIDE</tt> is not enabled. The function is not called if -the label value is <tt>NULL</tt>. - -<p>The measure function is called with a pointer to a <a href="#Fl_Label"><tt>Fl_Label</tt></a> structure -and references to the width and height: - -<ul><pre> -void xyz_measure(Fl_Label *label, int &w, int &h) { +</PRE> +</UL> + The label should be drawn <I>inside</I> this bounding box, even if <TT> +FL_ALIGN_INSIDE</TT> is not enabled. The function is not called if the +label value is <TT>NULL</TT>. +<P>The measure function is called with a pointer to a <A href=#Fl_Label><TT> +Fl_Label</TT></A> structure and references to the width and height: </P> +<UL> +<PRE> +void xyz_measure(Fl_Label *label, int w int h { ... } -</pre></ul> - -It should measure the size of the label and set <tt>w</tt> and <tt>h</tt> to -the size it will occupy. - +</PRE> +</UL> + It should measure the size of the label and set <TT>w</TT> and <TT>h</TT> + to the size it will occupy. <H5>Adding Your Label Type</H5> - -The <tt>Fl::set_labeltype</tt> method creates a label type using your -draw and measure functions: - -<ul><pre> + The <TT>Fl::set_labeltype</TT> method creates a label type using your +draw and measure functions: +<UL> +<PRE> #define XYZ_LABEL FL_FREE_LABELTYPE Fl::set_labeltype(XYZ_LABEL, xyz_draw, xyz_measure); -</pre></ul> - -The label type number <tt>n</tt> can be any integer value starting at -the constant <tt>FL_FREE_LABELTYPE</tt>. Once you have added the label -type you can use the <tt>labeltype()</tt> method to select your label -type. - -<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>. - -<H4><a name="symbols">Symbol Labels</H4> - -<p>The <tt>FL_SYMBOL_LABEL</tt> label type uses the <tt>label()</tt> -string to look up a small drawing procedure in a hash table. For -historical reasons the string always starts with '@', if it starts with -something else (or the symbol is not found) the label is drawn -normally: - -<center><img src=symbols.gif></center> - -The @ sign may be followed by the following optional "formatting" -characters, in this order: - -<ul> - <li>'#' forces square scaling, rather than distortion to the - widget's shape. - - <li>+[1-9] or -[1-9] tweaks the scaling a little bigger or - smaller. - - <li>[1-9] - rotates by a multiple of 45 degrees. '6' does - nothing, the others point in the direction of that key on a - numeric keypad. -</ul> - +</PRE> +</UL> + The label type number <TT>n</TT> can be any integer value starting at +the constant <TT>FL_FREE_LABELTYPE</TT>. Once you have added the label +type you can use the <TT>labeltype()</TT> method to select your label +type. +<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=symbols>Symbol Labels</A></H4> +<P>The <TT>FL_SYMBOL_LABEL</TT> label type uses the <TT>label()</TT> + string to look up a small drawing procedure in a hash table. For +historical reasons the string always starts with '@', if it starts with +something else (or the symbol is not found) the label is drawn +normally: +<CENTER><IMG src=./symbols.gif></CENTER> + The @ sign may be followed by the following optional "formatting" +characters, in this order: </P> +<UL> +<LI>'#' forces square scaling, rather than distortion to the widget's +shape. </LI> +<LI>+[1-9] or -[1-9] tweaks the scaling a little bigger or smaller. </LI> +<LI>[1-9] - rotates by a multiple of 45 degrees. '6' does nothing, +the others point in the direction of that key on a numeric keypad. </LI> +</UL> <H2>Callbacks</H2> - -Callbacks are functions that are called when the value of a widget changes. -A callback function is sent a <tt>Fl_Widget</tt> pointer of the widget that -changed and optionally a pointer to data of some sort: - -<ul><pre> + Callbacks are functions that are called when the value of a widget +changes. A callback function is sent a <TT>Fl_Widget</TT> pointer of +the widget that changed and optionally a pointer to data of some sort: +<UL> +<PRE> void xyz_callback(Fl_Widget *w, void *data) { ... } -</pre></ul> - -The <tt>callback()</tt> method sets the callback function for a widget. You -can optionally pass a pointer to some data needed for the callback: - -<ul><pre> +</PRE> +</UL> + The <TT>callback()</TT> method sets the callback function for a +widget. You can optionally pass a pointer to some data needed for the +callback: +<UL> +<PRE> int xyz_data; -button->callback(xyz_callback, &xyz_data); -</pre></ul> - -Normally callbacks are performed only when the value of the widget -changes. You can change this using the -<a href="#Fl_Widget.when"><tt>when()</tt></a> method: - -<ul><pre> -button->when(FL_WHEN_NEVER); -button->when(FL_WHEN_CHANGED); -button->when(FL_WHEN_RELEASE); -button->when(FL_WHEN_RELEASE_ALWAYS); -button->when(FL_WHEN_ENTER_KEY); -button->when(FL_WHEN_ENTER_KEY_ALWAYS); -button->when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED); -</pre></ul> - +button->callback(xyz_callback, data); +</PRE> +</UL> + Normally callbacks are performed only when the value of the widget +changes. You can change this using the <A href=Fl_Widget.html#Fl_Widget.when> +<TT>when()</TT></A> method: +<UL> +<PRE> +button->when(FL_WHEN_NEVER); +button->when(FL_WHEN_CHANGED); +button->when(FL_WHEN_RELEASE); +button->when(FL_WHEN_RELEASE_ALWAYS); +button->when(FL_WHEN_ENTER_KEY); +button->when(FL_WHEN_ENTER_KEY_ALWAYS); +button->when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED); +</PRE> +</UL> <H2>Shortcuts</H2> - -Shortcuts are key sequences that activate widgets (usually buttons or menu -items). The <tt>shortcut()</tt> method registers a shortcut for a widget: - -<ul><pre> -button->shortcut(FL_Enter); -button->shortcut(FL_SHIFT + 'b'); -button->shortcut(FL_CTRL + 'b'); -button->shortcut(FL_ALT + 'b'); -button->shortcut(FL_CTRL + FL_ALT + 'b'); -</pre></ul> - -The shortcut value is the key event value (the ASCII value or one of -the special keys like <tt>FL_Enter</tt>) combined with any modifiers -(like shift, alt, and control). - -</BODY> -</HTML> + Shortcuts are key sequences that activate widgets (usually buttons or +menu items). The <TT>shortcut()</TT> method registers a shortcut for a +widget: +<UL> +<PRE> +button->shortcut(FL_Enter); +button->shortcut(FL_SHIFT + 'b'); +button->shortcut(FL_CTRL + 'b'); +button->shortcut(FL_ALT + 'b'); +button->shortcut(FL_CTRL + FL_ALT + 'b'); +</PRE> +</UL> + The shortcut value is the key event value (the ASCII value or one of +the special keys like <TT>FL_Enter</TT>) combined with any modifiers +(like shift, alt, and control). </BODY></HTML>
\ No newline at end of file |
