Added optimization for SGI builds (mike: please run autoconf before making

a distribution).
Documentation fixes.


git-svn-id: file:///fltk/svn/fltk/trunk@259 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Bill Spitzak 1999-01-31 07:43:16 +00:00
parent 4b8754ace4
commit 4c53a5d8f4
20 changed files with 164 additions and 176 deletions

View File

@ -1,7 +1,7 @@
dnl# -*- sh -*-
dnl# the "configure" script is made from this by running GNU "autoconf"
dnl#
dnl# "$Id: configure.in,v 1.18 1999/01/27 17:52:23 mike Exp $"
dnl# "$Id: configure.in,v 1.19 1999/01/31 07:43:08 bill Exp $"
dnl#
dnl# Configuration script for the Fast Light Tool Kit (FLTK).
dnl#
@ -39,7 +39,7 @@ fi
DEBUGFLAG=""
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],if eval "test x$enable_debug = xyes"; then
DEBUGFLAG="-g"
DEBUGFLAG="-g "
fi)
AC_ARG_ENABLE(shared, [ --enable-shared turn on shared libraries [default=no]],[
if eval "test x$enable_shared = xyes"; then
@ -70,9 +70,6 @@ if eval "test x$enable_shared = xyes"; then
esac
fi])
CFLAGS="$DEBUGFLAG $CFLAGS"
CXXFLAGS="$DEBUGFLAG $CXXFLAGS"
AC_PROG_CC
AC_PROG_CXX
dnl# AC_PROG_INSTALL
@ -148,17 +145,19 @@ dnl# Uncomment these if you don't have IDO 7.2 or higher
dnl# CXX="CC -n32"
dnl# CC="cc -n32"
dnl# LD="ld -n32"
MAKEDEPEND="CC -M"
dnl# MAKEDEPEND="CC -M"
# -woff 3322 is necessary due to errors in Xlib headers on IRIX
CFLAGS="-fullwarn $CFLAGS"
CXXFLAGS="-fullwarn -woff 1685 -woff 3322 $CXXFLAGS"
MAKEDEPEND="CC -M"
CFLAGS="-O2 -fullwarn $CFLAGS"
CXXFLAGS="-O2 -fullwarn -woff 1685 -woff 3322 $CXXFLAGS"
else
CXXFLAGS="+w +pp $CXXFLAGS"
fi
fi
fi
CFLAGS="$DEBUGFLAG$CFLAGS"
CXXFLAGS="$DEBUGFLAG$CXXFLAGS"
AC_SUBST(LIBNAME)
AC_SUBST(LIBCOMMAND)
AC_SUBST(MAKEDEPEND)
@ -166,5 +165,5 @@ AC_CONFIG_HEADER(config.h:configh.in)
AC_OUTPUT(makeinclude)
dnl#
dnl# End of "$Id: configure.in,v 1.18 1999/01/27 17:52:23 mike Exp $".
dnl# End of "$Id: configure.in,v 1.19 1999/01/31 07:43:08 bill Exp $".
dnl#

View File

@ -93,6 +93,7 @@ other slow operation. </P>
</UL>
</TD></TR>
</TABLE>
<i>Sorry, documentation is incomplete at this time</i>
</CENTER>
<H4><A name=Fl_Browser_.Fl_Browser_>Fl_Browser::Fl_Browser(int, int,
int, int, const char * = 0)</A></H4>
@ -131,4 +132,5 @@ browser.
The first form gets the default text size for the lines in the
browser.
<P>The second form sets the default text size to <TT>size</TT></P>
</BODY></HTML>

View File

@ -18,8 +18,8 @@
</UL>
<H3>Description</H3>
The <TT>Fl_Float_Input</TT> class is a subclass of <TT>Fl_Input</TT>
that displays its input in red when the value string is not a legal
floating point value.
that only allows the user to type floating point numbers (sign,
digits, decimal point, more digits, 'E' or 'e', sign, digits).
<H3>Methods</H3>
<UL>
<LI><A href=#Fl_Float_Input.Fl_Float_Input>Fl_Float_Input</A></LI>

View File

@ -73,27 +73,31 @@ variables, but you must declare the <TT>Fl_Group</TT> <I>first</I>, so
that it is destroyed last.
<H4><A name=Fl_Group.add>void Fl_Group::add(Fl_Widget &amp;w)
<BR> void Fl_Group::add(Fl_Widget *w)</A></H4>
Adds a widget to the group at the end of the child array. If the
widget is already in a group it is removed from that group before
adding to this one.
<H4><A name=Fl_Group.insert>void Fl_Group::insert(Fl_Widget &amp;w, int n)
<BR> void Fl_Group::insert(Fl_Widget &amp;w, Fl_Widget
*beforethis)</A></H4>
The widget is removed from it's current group (if any) and then added
to the end of this group.
<H4><A name=Fl_Group.insert>void Fl_Group::insert(Fl_Widget &amp;w, int n)</A></H4>
The widget is removed from it's current group (if any) and then
inserted into this group. It is put at index <TT>n</TT> (or at the end
if <tt>n &gt;= children()</tt>. The second version does a <TT>
find(beforethis)</TT> and inserts using that index (at the end if
<tt>beforethis</tt> is not in this group).
if <tt>n &gt;= children()</tt>. This can also be used to rearrange
the windgets inside a group.
<H4>void Fl_Group::insert(Fl_Widget &amp;w, Fl_Widget* beforethis)</H4>
This does <tt>insert(w, find(beforethis))</tt>. This will append the
widget if <tt>beforethis</tt> is not in the group.
<H4><A name=Fl_Group.remove>void Fl_Group::remove(Fl_Widget &amp;w)</A></H4>
Removes a widget from the group. This does nothing if the widget is
not currently a child of this group.
<H4><A name=Fl_Group.array>const Fl_Widget **Fl_Group::array() const</A></H4>
Returns a pointer to the array of children. <I>This pointer can change
when children are added or removed!</I>
<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.
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
tree by just constructing the widgets. <TT>begin()</TT> is
@ -103,13 +107,11 @@ Fl_Window as well). <TT>begin()</TT> <i>is exactly the same as</i> <TT>current(t
<H4><A name=Fl_Group.end>void Fl_Group::end()</A></H4>
<TT>end()</TT> <i>is exactly the same as</i> <TT>current(this-&gt;parent())</TT>. Any new widgets
added to the widget tree will be added to the parent of the group.
<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.
To prevent new widgets from being added to a group, call <TT>Fl_Group::current(0)</TT>.
<H4><A name=Fl_Group.array>const Fl_Widget **Fl_Group::array() const</A></H4>
Returns a pointer to the array of children. <I>This pointer is only
valid until the next time a child is added or removed.</I>
<H4><A name=Fl_Group.child>Fl_Widget *Fl_Group::child(int n) const</A></H4>
Returns child <TT>n</TT>, where <TT>0 &lt;= n &lt; children()</TT>.
Returns <tt>array()[n]</tt>. <i>No range checking is done!</i>
<H4><A name=Fl_Group.children>int Fl_Group::children() const</A></H4>
Returns how many child widgets the group has.
<H4><A name=Fl_Group.find>int Fl_Group::find(const Fl_Widget *w) const

View File

@ -18,8 +18,8 @@
</UL>
<H3>Description</H3>
The <TT>Fl_Int_Input</TT> class is a subclass of <TT>Fl_Input</TT>
that displays its input in red when the value string is not a legal
integer value.
that only allows the user to type decimal digits (or hex numbers of
the form <tt>0xaef</tt>).
<H3>Methods</H3>
<UL>
<LI><A href=#Fl_Int_Input.Fl_Int_Input>Fl_Int_Input</A></LI>

View File

@ -36,7 +36,7 @@ maximum()</TT> to reverse the slider direction.
<H4><A name=Fl_Slider.Fl_Slider>Fl_Slider::Fl_Slider(int x, int y, int
w, int h, const char *label = 0)</A></H4>
Creates a new <TT>Fl_Slider</TT> widget using the given position,
size, and label string. The default boxtype is <TT>FL_NO_BOX</TT>.
size, and label string. The default boxtype is <TT>FL_DOWN_BOX</TT>.
<H4><A name=Fl_Slider.~Fl_Slider>virtual Fl_Slider::~Fl_Slider()</A></H4>
Destroys the valuator.
<H4><A name=Fl_Slider.scrollvalue>int Fl_Slider::scrollvalue(int

View File

@ -24,7 +24,7 @@
and provides a consistent interface to set the value, range, and step,
and insures that callbacks are done the same for every object.
<P>There are probably more of these classes in FLTK than any others: </P>
<P ALIGN=CENTER><IMG src=valuators.gif WIDTH=480></P>
<P ALIGN=CENTER><IMG src=valuators.gif></P>
<P>In the above diagram each box surrounds an actual subclass. These
are further differentiated by setting the <A href=#Fl_Widget.type><TT>
type()</TT></A> of the widget to the symbolic value labeling the

View File

@ -42,7 +42,7 @@ cursor. </P>
Fl_Value_Input::Fl_Value_Input(int x, int y, int w, int h, const char
*label = 0)</A></H4>
Creates a new <TT>Fl_Value_Input</TT> widget using the given position,
size, and label string. The default boxtype is <TT>FL_NO_BOX</TT>.
size, and label string. The default boxtype is <TT>FL_DOWN_BOX</TT>.
<H4><A name=Fl_Value_Input.~Fl_Value_Input>virtual
Fl_Value_Input::~Fl_Value_Input()</A></H4>
Destroys the valuator.
@ -55,7 +55,7 @@ Fl_Value_Input::cursor_color() const
If &quot;soft&quot; is turned on, the user is allowed to drag the value outside
the range. If they drag the value to one of the ends, let go, then
grab again and continue to drag, they can get to any value. Default is
one.
true.
<H4><A name=Fl_Value_Input.textcolor>Fl_Color
Fl_Value_Input::textcolor() const
<BR> void Fl_Value_Input::textcolor(Fl_Color)</A></H4>

View File

@ -45,6 +45,7 @@ exit(0)</TT> if this is the last top-level window. </P>
<LI><A href=#Fl_Window.border>border</A></LI>
<LI><A href=#Fl_Window.clear_border>clear_border</A></LI>
<LI><A href=#Fl_Window.current>current</A></LI>
<LI><A href=#Fl_Window.cursor>cursor</A></LI>
</UL>
</TD><TD align=left valign=top>
<UL>
@ -265,4 +266,17 @@ debug and maintain!</B>
<P>This method only works for the <TT>Fl_Window</TT> and <TT>
Fl_Gl_Window</TT> classes. </P>
<H4><A name=Fl_Window.current>static Fl_Window* Fl_Window::current()</A></H4>
Returns the last window that was made current. </BODY></HTML>
Returns the last window that was made current.
<H4><A name=Fl_Window.cursor>void Fl_Window::cursor(Fl_Cursor, Fl_Color = FL_WHITE, Fl_Color = FL_BLACK)</H4>
Change the cursor for this window. This always calls the system, if
you are changing the cursor a lot you may want to keep track of how
you set it in a static varaible and call this only if the new cursor
is different.
<P>The type <TT>Fl_Cursor</TT> is an enumeration defined in <A
href=enumerations.html#cursor> <TT>&lt;Enumerations.H&gt;</TT></A>.
(Under X you can get any XC_cursor value by passing <TT>
Fl_Cursor((XC_foo/2)+1)</TT>). The colors only work on X, they are
not implemented on WIN32.
</BODY></HTML>

View File

@ -20,13 +20,12 @@ FLTK.
</UL>
<B>Microsoft Windows developers please note:</B> case *is* significant
under other operating systems, and the C standard uses the forward
slash (/) to separate directories. The following <TT>#include</TT>
directives are *not* recommended for portability reasons:
slash (/) to separate directories. <i>Do not do any of the following:</i>
<UL>
<PRE>
#include &lt;fl\fl_xyz.h&gt;
#include &lt;fl/fl_xyz.h&gt;
#include &lt;FL\Fl_xyz.H&gt;
#include &lt;fl/fl_xyz.h&gt;
#include &lt;Fl/fl_xyz.h&gt;
</PRE>
</UL>
<H2>Compiling Programs with Standard Compilers</H2>
@ -75,7 +74,8 @@ display the window.
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(300,180);
Fl_Box *box = new Fl_Box(FL_UP_BOX,20,40,260,100,&quot;Hello, World!&quot;);
Fl_Box *box = new Fl_Box(20,40,260,100,&quot;Hello, World!&quot;);
box-&gt;box(FL_UP_BOX);
box-&gt;labelsize(36);
box-&gt;labelfont(FL_BOLD+FL_ITALIC);
box-&gt;labeltype(FL_SHADOW_LABEL);
@ -95,12 +95,13 @@ Fl_Window *window = new <A href=Fl_Window.html#Fl_Window>Fl_Window</A>(300,180);
and a box with the &quot;Hello, World!&quot; string in it:
<UL>
<PRE>
Fl_Box *box = new <A href=Fl_Box.html#Fl_Box>Fl_Box</A>(FL_UP_BOX,20,40,260,100,&quot;Hello, World!&quot;);
Fl_Box *box = new <A href=Fl_Box.html#Fl_Box>Fl_Box</A>(20,40,260,100,&quot;Hello, World!&quot;);
</PRE>
</UL>
Next, we set the size, font, and style of the label:
Next, we set the type of box and the size, font, and style of the label:
<UL>
<PRE>
box-&gt;box(FL_UP_BOX);
box-&gt;<A href=Fl_Widget.html#Fl_Widget.labelsize>labelsize</A>(36);
box-&gt;<A href=Fl_Widget.html#Fl_Widget.labelfont>labelfont</A>(FL_BOLD+FL_ITALIC);
box-&gt;<A href=Fl_Widget.html#Fl_Widget.labeltype>labeltype</A>(FL_SHADOW_LABEL);
@ -118,21 +119,13 @@ The resulting program will display the window below. You can quit the
program by closing the window or pressing the ESCape key.
<P ALIGN=CENTER><IMG src=./hello.C.gif></P>
<H3>Creating the Widgets</H3>
The widgets are created using the C++ <TT>new</TT> operator; the
arguments to the constructors are usually one of the following:
The widgets are created using the C++ <TT>new</TT> operator. For
most widgets the arguments to the constructor are:
<UL>
<PRE>
Fl_Widget(boxtype, x, y, width, height, label)
Fl_Widget(x, y, width, height)
Fl_Widget(width, height)
</PRE>
</UL>
The <TT>boxtype</TT> value is the style of the box that is drawn
around the widget. Usually this is <TT>FL_NO_BOX</TT>, which means
that no box is drawn. In our &quot;Hello, World!&quot; example we use <TT>
FL_UP_BOX</TT>, which means that a raised button border will be drawn
around the widget. You can learn more about boxtypes in <A href=#boytypes>
Chapter 3</A>.
<P>The <TT>x</TT> and <TT>y</TT> parameters determine where the widget
or window is placed on the screen. In FLTK the top left corner of the
window or screen is the origin (i.e. x = 0, y = 0) and the units are in
@ -145,6 +138,23 @@ widget with or <tt>NULL</tt>. If not specified the label defaults to
<tt>NULL</tt>. The label string must be in static storage (such as a
string constant) because FLTK does not make a copy of it (it just uses
the pointer).
<H3>Get/Set Methods</H3>
<tt>box-&gt;box(FL_UP_BOX)</tt> sets the type of box the
Fl_Box draws, changing it from the default of <tt>FL_NO_BOX</tt>, which means
that no box is drawn. In our &quot;Hello, World!&quot; example we use <TT>
FL_UP_BOX</TT>, which means that a raised button border will be drawn
around the widget. You can learn more about boxtypes in <A href=#boytypes>
Chapter 3</A>.
<p>You could examine the boxtype in by doing
<tt>box->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>Almost all of these set/get pairs are very fast and short inline
functions and thus very efficient. However, <i>the "set" methods do
not call redraw()</i>, you have to call it yourself. This greatly
reduces code size and execution time. The only common exception is
<tt>value()</tt>, this does redraw() if necessary.
<H3>Labels</H3>
All widgets support labels. In the case of window widgets, the label
is used for the label in the title bar. Our example program calls the <A href=Fl_Widget.html#Fl_Widget.labelfont>

View File

@ -149,7 +149,8 @@ already on the screen remains. The <TT>FL_..._FRAME</TT> types only
draw their edges, leaving the interior 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
<i>Warning: this interface may change in future versions of fltk!</i>
<p>You can define your own boxtypes by making a small function that draws
the box and adding it to the table of boxtypes.
<H4>The Drawing Function</H4>
The drawing function is passed the bounding box and background color
@ -228,7 +229,8 @@ raised </LI>
<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 that draw
<i>Warning: this interface may change in future versions of fltk!</i>
<p>Label types are actually indexes into a table of functions that 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>

View File

@ -18,9 +18,7 @@ identified by an 8-bit index that is stored in the widget's <TT>box()</TT>
<LI>You can call <A href=Fl_Window.html#Fl_Window.make_current><TT>
Fl_Window::make_current()</TT></A> to do incremental update of a
widget. Use <A href=Fl_Widget.html#Fl_Widget.window><TT>
Fl_Widget::window()</TT></A> to find the window. <I>Under X this only
works for the base <TT>Fl_Window</TT> class, not for double buffered,
overlay, or OpenGL windows!</I></LI>
Fl_Widget::window()</TT></A> to find the window.</LI>
</UL>
<H2>FLTK Drawing Functions</H2>
To use the drawing functions you must first include the <TT>
@ -33,7 +31,6 @@ drawing functions:
<LI><A href=#complex>Complex Shapes</A></LI>
<LI><A href=#text>Text</A></LI>
<LI><A href=#images>Images</A></LI>
<LI><A href=#cursor>Cursor</A></LI>
<LI><A href=#overlay>Overlay</A></LI>
</UL>
<H3><A name=clipping>Clipping</A></H3>
@ -72,7 +69,7 @@ is completely outside the region.
is <I>not</I> the X or WIN32 pixel, it is an index into an internal
table! The table provides several general colors, a 24-entry gray
ramp, and a 5x8x5 color cube. All of these are named with
symbols in <A href=enumerations.html#enumerations>
symbols in <A href=enumerations.html#colors>
<TT>&lt;FL/Enumerations.H&gt;</TT></A>.
<P>For colormapped displays, a color cell will be allocated out of <TT>
fl_colormap</TT> the first time you use a color. If the colormap fills
@ -144,9 +141,9 @@ w - 1</TT> and <TT>h - 1</TT>. </P>
transformations. The functionality matches that found in Adobe&reg;
PostScript<SUP>TM</SUP>. The exact pixels that are filled is less defined
than for the previous calls so that FLTK can take advantage of drawing
hardware. The transformed vertices are rounded to integers before
drawing the line segments. This severely limits the accuracy of these
functions for complex graphics. Use OpenGL when greater accuracy
hardware. On both X and WIN32 the transformed vertices are rounded to integers before
drawing the line segments: this 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>
@ -249,9 +246,8 @@ value points at a static buffer that is overwritten with each call.
above. You may call this outside a draw context if necessary to call <TT>
fl_width()</TT>, but on X this will open the display.
<P>The font is identified by a <TT>face</TT> and a <TT>size</TT>. The
size of the font is measured in <TT>pixels</TT> (i.e. it is not
&quot;resolution [in]dependent&quot;). Lines should be spaced <TT>size</TT>
pixels apart (or more). </P>
size of the font is measured in <TT>pixels</TT> (not "points"). Lines
should be spaced <TT>size</TT> pixels apart (or more). </P>
<P>The <TT>face</TT> is an index into an internal table. Initially
only the first 16 faces are filled in. There are symbolic names for
them: <TT>FL_HELVETICA</TT>, <TT>FL_TIMES</TT>, <TT>FL_COURIER</TT>,
@ -263,33 +259,6 @@ since it stores the index as a byte. </P>
<BR> int fl_size()</H4>
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=cursor>Cursor</A></H3>
<H4>void fl_cursor(Fl_Cursor, Fl_Color = FL_WHITE, Fl_Color = FL_BLACK)</H4>
Change the cursor. Depending on the system this may affect the cursor
everywhere, or only when it is pointing at the window that is current
when you call this. For portability you should change the cursor back
to the default in response to <TT>FL_LEAVE</TT> events.
<P>The type <TT>Fl_Cursor</TT> is an enumeration defined in <A href=enumerations.html#enumerations>
<TT>&lt;Enumerations.H&gt;</TT></A>. The double-headed arrows are bitmaps
provided by FLTK on X, the others are provided by system-defined
cursors. Under X you can get any XC_cursor value by passing <TT>
Fl_Cursor((XC_foo/2)+1)</TT>. </P>
<P>The following standard cursors are available: </P>
<UL>
<LI><TT>FL_CURSOR_DEFAULT</TT> - the default cursor, usually an arrow </LI>
<LI><TT>FL_CURSOR_ARROW</TT> - an arrow pointer </LI>
<LI><TT>FL_CURSOR_CROSS</TT> - crosshair </LI>
<LI><TT>FL_CURSOR_WAIT</TT> - watch or hourglass </LI>
<LI><TT>FL_CURSOR_INSERT</TT> - I-beam </LI>
<LI><TT>FL_CURSOR_HAND</TT> - hand (uparrow on MSWindows) </LI>
<LI><TT>FL_CURSOR_HELP</TT> - question mark </LI>
<LI><TT>FL_CURSOR_MOVE</TT> - 4-pointed arrow </LI>
<LI><TT>FL_CURSOR_NS</TT> - up/down arrow </LI>
<LI><TT>FL_CURSOR_WE</TT> - left/right arrow </LI>
<LI><TT>FL_CURSOR_NWSE</TT> - diagonal arrow </LI>
<LI><TT>FL_CURSOR_NESW</TT> - diagonal arrow </LI>
<LI><TT>FL_CURSOR_NONE</TT> - invisible </LI>
</UL>
<H3><A name=overlay>Overlays</A></H3>
<H4>void fl_overlay_rect(int x, int y, int w, int h)
<BR> void fl_overlay_clear()</H4>

View File

@ -1,5 +1,5 @@
<HTML><BODY>
<H1 ALIGN=RIGHT><A NAME=enumerations>C - FLTK Enumerations</A></H1>
<H1 ALIGN=RIGHT><A NAME=Enumerations>C - FLTK Enumerations</A></H1>
This appendix lists the enumerations provided in the <TT>
&lt;FL/Enumerations.H&gt;</TT> header file, organized by section.
Constants whose value is zero are marked with "(0)", this is often
@ -14,7 +14,7 @@ constants:
<LI><TT>FL_VERSION</TT> - A combined floating-point version number for
the major and minor release numbers, currently 1.0. </LI>
</UL>
<H2>Events</H2>
<H2><a name=events>Events</H2>
Events are identified by an <TT>Fl_Event</TT> enumeration value. The
following events are currently defined:
<UL>
@ -42,7 +42,7 @@ understand) occurred (0).</LI>
<LI><TT>FL_SELECTIONCLEAR</TT> - The widget should clear any selections
made for the clipboard. </LI>
</UL>
<H2>Callback &quot;When&quot; Conditions</H2>
<H2><a name=when>Callback &quot;When&quot; Conditions</H2>
The following constants determine when a callback is performed:
<UL>
<LI><TT>FL_WHEN_NEVER</TT> - Never call the callback (0). </LI>
@ -114,7 +114,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>
</UL>
<H2>Alignment Values</H2>
<H2><a name=align>Alignment Values</H2>
The following constants define bits that can be used with <A href=Fl_Widget.html#Fl_Widget.align>
<TT>Fl_Widget::align()</TT></A> to control the positioning of the
label:
@ -138,7 +138,7 @@ label:
label inside the widget. </LI>
</UL>
<H2>Fonts</H2>
<H2><a name=fonts>Fonts</H2>
The following constants define the standard FLTK fonts:
<ul>
<LI><TT>FL_HELVETICA</TT> - Helvetica (or Arial) normal (0). </LI>
@ -160,7 +160,7 @@ bold-oblique. </LI>
<LI><TT>FL_ZAPF_DINGBATS</TT> - Zapf-dingbats font.
</ul>
<H2>Colors</H2>
<H2><a name=colors>Colors</H2>
The following color constants can be used to access the colors in the
FLTK standard color palette:
<UL>
@ -196,9 +196,12 @@ To get the closest color to a 8-bit set of R,G,B values use
<tt>fl_color_cube(R*FL_NUM_RED/256, G*FL_NUM_GREEN/256,
B*FL_NUM_BLUE/256);</tt>
<H2>Cursors</H2>
The following constants define the mouse cursors that are available in
FLTK:
<H2><a name=cursor>Cursors</H2>
The following constants define the mouse cursors that are available in
FLTK. The double-headed arrows are bitmaps
provided by FLTK on X, the others are provided by system-defined
cursors.</P>
<UL>
<LI><TT>FL_CURSOR_DEFAULT</TT> - the default cursor, usually an arrow (0)</LI>
<LI><TT>FL_CURSOR_ARROW</TT> - an arrow pointer </LI>
@ -223,7 +226,7 @@ FLTK:
<LI><TT>FL_EXCEPT</TT> - Call the callback if an exception occurs on
the file. </LI>
</UL>
<H2>Damage Masks</H2>
<H2><a name=damage>Damage Masks</H2>
The following damage mask bits are used by the standard FLTK widgets:
<UL>
<LI><TT>FL_DAMAGE_CHILD</TT> - A child needs to be redrawn. </LI>

View File

@ -189,6 +189,7 @@ calls <TT>XK_Multi_key</TT>.
<th>Keys</th><th>Char</th>
<th>Keys</th><th>Char</th>
<th>Keys</th><th>Char</th>
<th>Keys</th><th>Char</th>
</tr>
<tr>
<td><TT>sp</TT></td><td>nbsp</td>

View File

@ -174,36 +174,36 @@ FLTK provides some useful OpenGL drawing functions. They can be
freely mixed with any OpenGL calls, and are defined by including <TT>
&lt;FL/gl.H&gt;</TT> (which you should include instead of the OpenGL header <TT>
&lt;GL/gl.h&gt;</TT>).
<H3>void gl_color(Fl_Color)</H3>
<H4>void gl_color(Fl_Color)</H4>
Set the current color to a FLTK color. <I>For color-index modes
it will use <TT>fl_xpixel(c)</TT>, which is only right if this window
uses the default colormap!</I>
<H3>void gl_rect(int x, int y, int w, int h)
<BR> void gl_rectf(int x, int y, int w, int h)</H3>
<H4>void gl_rect(int x, int y, int w, int h)
<BR> void gl_rectf(int x, int y, int w, int h)</H4>
Outline or fill a rectangle with the current color. If
<A HREF="Fl_Gl_Window.html#Fl_Gl_Window.ortho"><TT>Fl_Gl_Window::ortho()</TT></A>
has been called, then the rectangle will exactly fill the pixel
rectangle passed.
<H3>void gl_font(Fl_Font fontid, int size)</H3>
<H4>void gl_font(Fl_Font fontid, int size)</H4>
Set the current OpenGL font to the same font you get by calling <A href=drawing.html#fl_font>
<TT>fl_font()</TT></A>.
<H3>int gl_height()
<H4>int gl_height()
<BR> int gl_descent()
<BR> float gl_width(const char *)
<BR> float gl_width(const char *, int n)
<BR> float gl_width(uchar)</H3>
<BR> float gl_width(uchar)</H4>
Return information about the current OpenGL font.
<H3>void gl_draw(const char *)
<BR> void gl_draw(const char *, int n)</H3>
<H4>void gl_draw(const char *)
<BR> void gl_draw(const char *, int n)</H4>
Draw a nul-terminated string or an array of <TT>n</TT> characters in
the current OpenGL font at the current raster position.
<H3>void gl_draw(const char *, int x, int y)
<H4>void gl_draw(const char *, int x, int y)
<BR> void gl_draw(const char *, int n, int x, int y)
<BR> void gl_draw(const char *, float x, float y)
<BR> void gl_draw(const char *, int n, float x, float y)</H3>
<BR> void gl_draw(const char *, int n, float x, float y)</H4>
Draw a nul-terminated string or an array of <TT>n</TT> characters in
the current OpenGL font at the given position.
<H3>void gl_draw(const char *, int x, int y, int w, int h, Fl_Align)</H3>
<H4>void gl_draw(const char *, int x, int y, int w, int h, Fl_Align)</H4>
Draw a string formatted into a box, with newlines and tabs expanded,
other control characters changed to ^X, and aligned with the edges or
center. Exactly the same output as <A href=#fl_draw><TT>fl_draw()</TT></A>
@ -214,7 +214,7 @@ scene graph toolkit for OpenGL available from Silicon Graphics for IRIX
and Microsoft Windows. Versions are in the works for Solaris and
HP-UX. It allows you to view large scenes without writing a lot of
OpenGL code.
<H3>OptimizerWindow Class Definition</H3>
<H4>OptimizerWindow Class Definition</H4>
To use OpenGL Optimizer with FLTK you'll need to create a subclass of <TT>
Fl_Gl_Widget</TT> that includes several state variables:
<UL>
@ -252,11 +252,11 @@ public:
<PRE>
</PRE>
<H3>The camera() Method</H3>
<H4>The camera() Method</H4>
The <TT>camera()</TT> method sets the camera (projection and
viewpoint) to use when drawing the scene. The scene is redrawn after
this call.
<H3>The draw() Method</H3>
<H4>The draw() Method</H4>
The <TT>draw()</TT> method performs the needed initialization and does
the actual drawing:
<UL>
@ -301,7 +301,7 @@ void OptimizerWindow::draw() {
}
</PRE>
</UL>
<H3>The scene() Method</H3>
<H4>The scene() Method</H4>
The <TT>scene()</TT> method sets the scene to be drawn. The scene is
a collection of 3D objects in a <TT>csGroup</TT>. The scene is redrawn
after this call. </BODY></HTML>

View File

@ -71,9 +71,9 @@ flags(ACTIVE|VISIBLE);
<LI><A href=#test_shortcut><TT>Fl_Widget::test_shortcut</TT></A></LI>
<LI><A href=#type><TT>Fl_Widget::type</TT></A></LI>
</UL>
<H3><A name=damage>void Fl_Widget::damage(uchar mask)
<H4><A name=damage>void Fl_Widget::damage(uchar mask)
<BR> void Fl_Widget::damage(uchar mask, int x, int y, int w, int h)
<BR> uchar Fl_Widget::damage()</A></H3>
<BR> uchar Fl_Widget::damage()</A></H4>
The first form indicates that a partial update of the object is
needed. The bits in mask are OR'd into <TT>damage()</TT>. Your <TT>
draw()</TT> routine can examine these bits to limit what it is
@ -109,15 +109,15 @@ MyClass::draw() {
if (damage() & (FL_DAMAGE_ALL | 4)) draw_part3();
}
</PRE></UL>
<H3><A name=draw_box>void Fl_Widget::draw_box() const
<BR></A>void Fl_Widget::draw_box(Fl_Boxtype b, ulong c) const</H3>
<H4><A name=draw_box>void Fl_Widget::draw_box() const
<BR></A>void Fl_Widget::draw_box(Fl_Boxtype b, ulong c) const</H4>
The first form draws this widget's <TT>box()</TT>, using the
dimensions of the widget. The second form uses <TT>b</TT> as the box
type and <TT>c</TT> as the color for the box.
<H3><A name=draw_label>void Fl_Widget::draw_label() const
<H4><A name=draw_label>void Fl_Widget::draw_label() const
<BR> void Fl_Widget::draw_label(int x, int y, int w, int h) const
<BR> void Fl_Widget::draw_label(int x, int y, int w, int h, Fl_Align
align) const</A></H3>
align) const</A></H4>
This is the usual function for a <TT>draw()</TT> method to call to
draw the widget's label. It does not draw the label if it is supposed
to be outside the box (on the assumption that the enclosing group will
@ -129,16 +129,16 @@ feature, like a moving slider. </P>
FL_ALIGN_INSIDE</TT> has been forced on so the label will appear inside
the passed bounding box. This is designed for parent groups to draw
labels with. </P>
<H3><A name=set_flag>void Fl_Widget::set_flag(SHORTCUT_LABEL)</A></H3>
<H4><A name=set_flag>void Fl_Widget::set_flag(SHORTCUT_LABEL)</A></H4>
Modifies <TT>draw_label()</TT> so that '&amp;' characters cause an underscore
to be printed under the next letter.
<H3><A name=set_visible>void Fl_Widget::set_visible()</A>
<BR><A name=clear_visible>void Fl_Widget::clear_visible()</A></H3>
<H4><A name=set_visible>void Fl_Widget::set_visible()</A>
<BR><A name=clear_visible>void Fl_Widget::clear_visible()</A></H4>
Fast inline versions of <TT>Fl_Widget::hide()</TT> and <TT>
Fl_Widget::show()</TT>. These do not send the <TT>FL_HIDE</TT> and <TT>
FL_SHOW</TT> events to the widget.
<H3><A name=test_shortcut>int Fl_Widget::test_shortcut() const
<BR> static int Fl_Widget::test_shortcut(const char *s)</A></H3>
<H4><A name=test_shortcut>int Fl_Widget::test_shortcut() const
<BR> static int Fl_Widget::test_shortcut(const char *s)</A></H4>
The first version tests <TT>Fl_Widget::label()</TT> against the
current event (which should be a <TT>FL_SHORTCUT</TT> event). If the
label contains a '&amp;' character and the character after it matches the key
@ -147,8 +147,8 @@ flag is off, if the label is <TT>NULL</TT> or does not have a
'&amp;' character in it, or if the keypress does not match the character.
<P>The second version lets you do this test against an arbitrary
string. </P>
<H3><A name=type>uchar Fl_Widget::type() const
<BR> void Fl_Widget::type(uchar t)</A></H3>
<H4><A name=type>uchar Fl_Widget::type() const
<BR> void Fl_Widget::type(uchar t)</A></H4>
The property <TT>Fl_Widget::type()</TT> can return an arbitrary 8-bit
identifier, and can be set with the protected method <TT>type(uchar t)</TT>
. This value had to be provided for Forms compatibility, but you can
@ -240,7 +240,7 @@ must be redrawn (e.g. for an expose event). </P>
<P>Expose events (and the above <TT>damage(b,x,y,w,h)</TT>) will cause <TT>
draw()</TT> to be called with FLTK's <A href=drawing.html#clipping>
clipping</A> turned on. You can greatly speed up redrawing in some
cases by testing <TT>fl_clipped</TT> and <TT>fl_current_clip</TT> and
cases by testing <TT>fl_not_clipped(x,y,w,h)</TT> or <TT>fl_clip_box(...)</TT> and
skipping invisible parts. </P>
<P>Besides the protected methods described above, FLTK provides a large
number of basic drawing functions, which are described <A href=drawing.html#drawing>
@ -343,19 +343,19 @@ easier:
<LI><A href=#draw_outside_label>draw_outside_label</A></LI>
<LI><A href=#update_child>update_child</A></LI>
</UL>
<H3><A name=draw_child>void Fl_Group::draw_child(Fl_Widget&amp;)</A></H3>
<H4><A name=draw_child>void Fl_Group::draw_child(Fl_Widget&amp;)</A></H4>
This will force the child's <TT>damage()</TT> bits all to one and call <TT>
draw()</TT> on it, then clear the <TT>damage()</TT>. You should call
this on all children if a total redraw of your widget is requested, or
if you draw something (like a background box) that damages the child.
Nothing is done if the child is not <TT>visible()</TT> or if it is
clipped.
<H3><A name=draw_outside_label>void
Fl_Group::draw_outside_label(Fl_Widget&amp;) const</A></H3>
<H4><A name=draw_outside_label>void
Fl_Group::draw_outside_label(Fl_Widget&amp;) const</A></H4>
Draw the labels that are <I>not</I> drawn by <A href=#draw_label><TT>
draw_label()</TT></A>. If you want more control over the label
positions you might want to call <TT>child-&gt;draw_label(x,y,w,h,a)</TT>.
<H3><A name=update_child>void Fl_Group::update_child(Fl_Widget&amp;)</A></H3>
<H4><A name=update_child>void Fl_Group::update_child(Fl_Widget&amp;)</A></H4>
Draws the child only if its <TT>damage()</TT> is non-zero. You
should call this on all the children if your own damage is equal to
FL_DAMAGE_CHILD. Nothing is done if the child is not <TT>visible()</TT>
@ -377,7 +377,7 @@ can be useful if your widget wants to occupy an entire window, and can
also be used to take advantage of system-provided clipping, or to work
with a library that expects a system window ID to indicate where to
draw.
<P>Subclassing <TT>Fl_Window</TT> is almost exactly like subclassing <TT>
<P>Subclassing <TT>Fl_Window </TT>is almost exactly like subclassing <TT>
Fl_Widget</TT>, and in fact you can easily switch a subclass back and
forth. Watch out for the following differences: </P>
<OL>

View File

@ -76,6 +76,7 @@ see <A href=functions.html#functions>Appendix B</A>.
<UL>
<LI><A HREF=Fl_End.html#Fl_End>Fl_End</A>
<LI><A HREF=Fl_Menu_Item.html#Fl_Menu_Item>Fl_Menu_Item</A>
<LI><A HREF=Fl_Widget.html#Fl_Widget>Fl_Widget</A>
<UL>
<LI><A HREF=Fl_Box.html#Fl_Box>Fl_Box</A>
@ -98,10 +99,10 @@ see <A href=functions.html#functions>Appendix B</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_Color_Chooser.html#Fl_Color_Chooser>Fl_Color_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_Color_Chooser.html#Fl_Color_Chooser>Fl_Color_Chooser</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_Tabs.html#Fl_Tabs>Fl_Tabs</A>
@ -135,7 +136,6 @@ see <A href=functions.html#functions>Appendix B</A>.
<LI><A HREF=Fl_Menu_Bar.html#Fl_Menu_Bar>Fl_Menu_Bar</A>
<LI><A HREF=Fl_Menu_Button.html#Fl_Menu_Button>Fl_Menu_Button</A>
</UL>
<LI><A HREF=Fl_Menu_Item.html#Fl_Menu_Item>Fl_Menu_Item</A>
<LI><A HREF=Fl_Positioner.html#Fl_Positioner>Fl_Positioner</A>
<LI><A HREF=Fl_Timer.html#Fl_Timer>Fl_Timer</A>
<LI><A HREF=Fl_Valuator.html#Fl_Valuator>Fl_Valuator</A>

View File

@ -1,5 +1,5 @@
#
# "$Id: Makefile,v 1.7 1999/01/07 18:49:36 mike Exp $"
# "$Id: Makefile,v 1.8 1999/01/31 07:43:14 bill Exp $"
#
# Fluid makefile for the Fast Light Tool Kit (FLTK).
#
@ -52,18 +52,14 @@ include ../makeinclude
.SUFFIXES : .cxx .c .o
.cxx.o :
@echo $<:
@$(CXX) -I.. $(CXXFLAGS) -c $<
$(CXX) -I.. $(CXXFLAGS) -c $<
.c.o :
@echo $<:
@$(CC) -I.. $(CFLAGS) -c $<
$(CC) -I.. $(CFLAGS) -c $<
.cxx :
@echo $@:
@$(CXX) -I.. $(CXXFLAGS) -o $@ $< -L../lib -lfltk $(LDLIBS)
$(CXX) -I.. $(CXXFLAGS) -o $@ $< -L../lib -lfltk $(LDLIBS)
$(PROGRAM) : $(OBJECTS) ../lib/$(LIBNAME)
@echo linking $@:
@$(CXX) $(CXXFLAGS) -o $(PROGRAM) $(OBJECTS) -L../lib -lfltk $(LDLIBS)
$(CXX) $(LDFLAGS) -o $(PROGRAM) $(OBJECTS) -L../lib -lfltk $(LDLIBS)
clean :
-@ rm -f *.o $(PROGRAM) $(CLEAN) core *~ makedepend
@ -94,5 +90,5 @@ rebuild:
./fluid -c widget_panel.fl
#
# End of "$Id: Makefile,v 1.7 1999/01/07 18:49:36 mike Exp $".
# End of "$Id: Makefile,v 1.8 1999/01/31 07:43:14 bill Exp $".
#

View File

@ -1,5 +1,5 @@
#
# "$Id: Makefile,v 1.9 1999/01/27 14:44:32 mike Exp $"
# "$Id: Makefile,v 1.10 1999/01/31 07:43:15 bill Exp $"
#
# Library makefile for the Fast Light Tool Kit (FLTK).
#
@ -150,26 +150,23 @@ LIBRARY = ../lib/$(LIBNAME)
OBJECTS = $(CPPFILES:.cxx=.o) $(CFILES:.c=.o)
$(LIBRARY) : $(OBJECTS)
@echo Building $(LIBRARY)
@echo $(LIBCOMMAND) $(LIBRARY) ...
@$(LIBCOMMAND) $(LIBRARY) $(OBJECTS)
@$(RANLIB) $(LIBRARY)
.SUFFIXES: .cxx .h .o
.cxx.o :
@echo $<:
@$(CXX) -I.. $(CXXFLAGS) -c $<
$(CXX) -I.. $(CXXFLAGS) -c $<
.c.o :
@echo $<:
@$(CC) -I.. $(CFLAGS) -c -o $@ $<
$(CC) -I.. $(CFLAGS) -c -o $@ $<
clean :
-@ rm -f *.o *.do $(LIBRARY) $(CLEAN) core *~ ../include/*~ makedepend cmap
@touch makedepend
depend:
@echo Making makedepend
@$(MAKEDEPEND) -I.. $(CXXFLAGS) $(CPPFILES) $(CFILES) > makedepend
$(MAKEDEPEND) -I.. $(CXXFLAGS) $(CPPFILES) $(CFILES) > makedepend
include makedepend
################################################################
@ -185,5 +182,5 @@ install: ../lib/$(LIBNAME)
-ln -s FL $(includedir)/Fl
#
# End of "$Id: Makefile,v 1.9 1999/01/27 14:44:32 mike Exp $".
# End of "$Id: Makefile,v 1.10 1999/01/31 07:43:15 bill Exp $".
#

View File

@ -1,5 +1,5 @@
#
# "$Id: Makefile,v 1.15 1999/01/07 19:17:48 mike Exp $"
# "$Id: Makefile,v 1.16 1999/01/31 07:43:16 bill Exp $"
#
# Test/example program makefile for the Fast Light Tool Kit (FLTK).
#
@ -52,34 +52,27 @@ $(ALL): ../lib/$(LIBNAME)
.SUFFIXES: .cxx .c .o .fl .H
.cxx:
@echo $@:
@$(CXX) -I.. $(CXXFLAGS) $< -L../lib -lfltk $(LDLIBS) -o $@
$(CXX) -I.. $(CXXFLAGS) $< -L../lib -lfltk $(LDLIBS) -o $@
.fl.cxx:
@echo $@:
@../fluid/fluid -c $<
../fluid/fluid -c $<
.fl:
@echo $@:
@../fluid/fluid -c $<
@$(CXX) -I.. $(CXXFLAGS) $@.cxx -L../lib -lfltk $(LDLIBS) -o $@
../fluid/fluid -c $<
$(CXX) -I.. $(CXXFLAGS) $@.cxx -L../lib -lfltk $(LDLIBS) -o $@
# Other programs needing special "help"...
shiny: shiny.cxx shiny_panel.cxx
@echo $@:
@$(CXX) -I.. $(CXXFLAGS) shiny.cxx -L../lib -lfltk $(LDLIBS) -o $@
$(CXX) -I.. $(CXXFLAGS) shiny.cxx -L../lib -lfltk $(LDLIBS) -o $@
keyboard: keyboard.cxx keyboard_ui.cxx
@echo $@:
@$(CXX) -I.. $(CXXFLAGS) keyboard.cxx -L../lib -lfltk $(LDLIBS) -o $@
$(CXX) -I.. $(CXXFLAGS) keyboard.cxx -L../lib -lfltk $(LDLIBS) -o $@
mandelbrot: mandelbrot.cxx mandelbrot_ui.cxx
@echo $@:
@$(CXX) -I.. $(CXXFLAGS) mandelbrot.cxx -L../lib -lfltk $(LDLIBS) -o $@
$(CXX) -I.. $(CXXFLAGS) mandelbrot.cxx -L../lib -lfltk $(LDLIBS) -o $@
# If you have libjpeg installed, you might want to try this test program:
jpeg_image: jpeg_image.cxx
@echo $@:
@$(CXX) -I.. $(CXXFLAGS) -I../../../local/jpeg-6b -L../../../local/jpeg-6b jpeg_image.cxx -L../lib -lfltk $(LDLIBS) -ljpeg -lXext -o $@
$(CXX) -I.. $(CXXFLAGS) -I../../../local/jpeg-6b -L../../../local/jpeg-6b jpeg_image.cxx -L../lib -lfltk $(LDLIBS) -ljpeg -lXext -o $@
depend:
$(MAKEDEPEND) -I.. $(CXXFLAGS) $(CPPFILES) > makedepend
@ -91,5 +84,5 @@ install:
@echo Nothing to install in test directory.
#
# End of "$Id: Makefile,v 1.15 1999/01/07 19:17:48 mike Exp $".
# End of "$Id: Makefile,v 1.16 1999/01/31 07:43:16 bill Exp $".
#