fl_curve uses a much better algorithim to figure out how many pieces

to cut the curve into.

Right-ctrl does not delete selected text in Fl_Input, until you type a
composed character.

Added simple fltk.3 and fluid.1 manual pages and "make install" in the
documentation directory installs them.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@1361 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Bill Spitzak
2001-01-28 06:57:33 +00:00
parent ffe92796d8
commit 4fb627c3d8
7 changed files with 137 additions and 155 deletions
+28 -14
View File
@@ -1,5 +1,5 @@
# #
# "$Id: Makefile,v 1.9.2.8 2001/01/22 15:13:38 easysw Exp $" # "$Id: Makefile,v 1.9.2.9 2001/01/28 06:57:32 spitzak Exp $"
# #
# Documentation makefile for the Fast Light Tool Kit (FLTK). # Documentation makefile for the Fast Light Tool Kit (FLTK).
# #
@@ -118,26 +118,40 @@ HTMLFILES = \
osissues.html \ osissues.html \
license.html license.html
all: fltk.ps fltk.pdf fltk.d/index.html all: fltk.ps fltk.pdf
clean: clean:
rm -rf fltk.d
rm -f fltk.ps rm -f fltk.ps
rm -f fltk.pdf rm -f fltk.pdf
depend: depend:
install: # According to FHS this should be:
-mkdir -p $(prefix)/share/doc/fltk # htmldir = $(prefix)/share/doc/html/en/fltk
cp $(HTMLFILES) index.html $(prefix)/share/doc/fltk # Possibly the "en/" can be removed, it is not clear.
cp *.gif *.jpg $(prefix)/share/doc/fltk # KDE uses "HTML" instead of "html", which is correct?
chmod 644 $(prefix)/share/doc/fltk/* htmldir = $(prefix)/share/doc/fltk
fltk.d/index.html: $(HTMLFILES) # According to FHS this should be:
echo "Generating HTML documentation..." # mandir = $(prefix)/share/man/en/man
-mkdir fltk.d # they say the "en/" is optional
-rm -f fltk.d/* mandir = $(prefix)/man/man
$(HTMLDOC) -d fltk.d -t html --verbose --toclevels 2 --bodycolor white --titleimage FL.gif $(HTMLFILES)
install:
-mkdir -p $(htmldir)
cp $(HTMLFILES) *.gif *.jpg index.html $(htmldir)
chmod 644 $(htmldir)/*
-mkdir -p $(mandir)1
cp *.1 $(mandir)1
-mkdir -p $(mandir)3
cp *.3 $(mandir)3
# Base html files are now the readable ones, this is not done:
#fltk.d/index.html: $(HTMLFILES)
# echo "Generating HTML documentation..."
# -mkdir fltk.d
# -rm -f fltk.d/*
# $(HTMLDOC) -d fltk.d -t html --verbose --toclevels 2 --bodycolor white --titleimage FL.gif $(HTMLFILES)
fltk.ps: $(HTMLFILES) fltk.ps: $(HTMLFILES)
echo "Generating PostScript documentation..." echo "Generating PostScript documentation..."
@@ -149,5 +163,5 @@ fltk.pdf: $(HTMLFILES)
$(HTMLDOC) -f fltk.pdf --jpeg --compression=9 --duplex --verbose --toclevels 2 --titleimage FL.gif $(HTMLFILES) $(HTMLDOC) -f fltk.pdf --jpeg --compression=9 --duplex --verbose --toclevels 2 --titleimage FL.gif $(HTMLFILES)
# #
# End of "$Id: Makefile,v 1.9.2.8 2001/01/22 15:13:38 easysw Exp $". # End of "$Id: Makefile,v 1.9.2.9 2001/01/28 06:57:32 spitzak Exp $".
# #
+22
View File
@@ -0,0 +1,22 @@
.TH fltk 1 "Fast Light Tool Kit" "27 January 2001"
.SH NAME
fltk \- the fast light Tool Kit
.sp
.SH SYNOPSIS
The Fast Light Tool Kit ("FLTK", pronounced "fulltick") is a LGPL'd
C++ graphical user interface toolkit for X (UNIX(R)), OpenGL(R), and
Microsoft(R) Windows(R) NT 4.0, 95, or 98. It was originally developed
by Mr. Bill Spitzak and is currently maintained by a small group of
developers across the world with a central repository in the US.
.SH SEE ALSO
.nf
FLTK Programming Manual
file:/usr/local/share/doc/fltk/index.html
.PP
http://www.fltk.org
.PP
.BR fluid (1)
.SH AUTHOR
Bill Spitzak and others.
+27 -66
View File
@@ -1,66 +1,27 @@
.TH fluid 1 "Fast Light Tool Kit" "27 January 2001"
.SH NAME
fluid \- the fast light user-interface designer
fluid(1) fluid(1) .sp
.SH SYNOPSIS
.nf
NNAAMMEE fluid \fI[-c [-o code-filename -h header-filename]] [filename.fl]\fR
fluid - the fast light user-interface designer .fi
.SH DESCRIPTION
\fIfluid\fR is an interactive GUI designer for FLTK. When run with no arguments
SSYYNNOOPPSSIISS or with a filename, \fIfluid\fR will display the GUI hierarchy and any windows
fluid _[_-_c _[_-_o _c_o_d_e_-_f_i_l_e_n_a_m_e _-_h _h_e_a_d_e_r_-_f_i_l_e_n_a_m_e_]_] _[_f_i_l_e_n_a_m_e_._f_l_] defined in the file. Functions, classes, windows, and GUI components can be
manipulated as needed.
DDEESSCCRRIIPPTTIIOONN .LP
_f_l_u_i_d is an interactive GUI designer for FLTK. When run When used with the \fI-c\fR option, \fIfluid\fR will create the necessary C++
with no arguments or with a filename, _f_l_u_i_d will display header and code files in the current directory. You can override the default
the GUI hierarchy and any windows defined in the file. extensions, filenames, and directories using the \fI-o\fR and \fI-h\fR options.
Functions, classes, windows, and GUI components can be .SH SEE ALSO
manipulated as needed. .nf
FLTK Programming Manual, chapter 8.
When used with the _-_c option, _f_l_u_i_d will create the neces- file:/usr/local/share/doc/fltk/fluid.html
sary C++ header and code files in the current directory. .PP
You can override the default extensions, filenames, and http://www.fltk.org
directories using the _-_o and _-_h options. .PP
.BR fltk (3)
SSEEEE AALLSSOO .SH AUTHOR
FLTK 1.0 Programming Manual, chapter 8. Bill Spitzak and others.
AAUUTTHHOORR
Bill Spitzak and others.
4 March 1998 Fast Light Tool Kit 1
-21
View File
@@ -1,21 +0,0 @@
.TH fluid 1 "Fast Light Tool Kit" "4 March 1998"
.SH NAME
fluid \- the fast light user-interface designer
.sp
.SH SYNOPSIS
.nf
fluid \fI[-c [-o code-filename -h header-filename]] [filename.fl]\fR
.fi
.SH DESCRIPTION
\fIfluid\fR is an interactive GUI designer for FLTK. When run with no arguments
or with a filename, \fIfluid\fR will display the GUI hierarchy and any windows
defined in the file. Functions, classes, windows, and GUI components can be
manipulated as needed.
.LP
When used with the \fI-c\fR option, \fIfluid\fR will create the necessary C++
header and code files in the current directory. You can override the default
extensions, filenames, and directories using the \fI-o\fR and \fI-h\fR options.
.SH SEE ALSO
FLTK 1.0 Programming Manual, chapter 8.
.SH AUTHOR
Bill Spitzak and others.
+3 -3
View File
@@ -1,5 +1,5 @@
// //
// "$Id: fluid.cxx,v 1.15.2.10 2001/01/22 15:13:39 easysw Exp $" // "$Id: fluid.cxx,v 1.15.2.11 2001/01/28 06:57:33 spitzak Exp $"
// //
// FLUID main entry for the Fast Light Tool Kit (FLTK). // FLUID main entry for the Fast Light Tool Kit (FLTK).
// //
@@ -24,7 +24,7 @@
// //
const char *copyright = const char *copyright =
"The FLTK user interface designer version 1.0\n" "The FLTK user interface designer version 1.0.11\n"
"Copyright 1998-2001 by Bill Spitzak and others.\n" "Copyright 1998-2001 by Bill Spitzak and others.\n"
"\n" "\n"
"This library is free software; you can redistribute it and/or " "This library is free software; you can redistribute it and/or "
@@ -465,5 +465,5 @@ int main(int argc,char **argv) {
} }
// //
// End of "$Id: fluid.cxx,v 1.15.2.10 2001/01/22 15:13:39 easysw Exp $". // End of "$Id: fluid.cxx,v 1.15.2.11 2001/01/28 06:57:33 spitzak Exp $".
// //
+5 -4
View File
@@ -1,5 +1,5 @@
// //
// "$Id: Fl_Input.cxx,v 1.10.2.14 2001/01/22 15:13:39 easysw Exp $" // "$Id: Fl_Input.cxx,v 1.10.2.15 2001/01/28 06:57:33 spitzak Exp $"
// //
// Input widget for the Fast Light Tool Kit (FLTK). // Input widget for the Fast Light Tool Kit (FLTK).
// //
@@ -81,8 +81,9 @@ int Fl_Input::handle_key() {
return 1; return 1;
} }
replace(position(), del ? position()-del : mark(), if (del || Fl::event_length())
Fl::event_text(), Fl::event_length()); replace(position(), del ? position()-del : mark(),
Fl::event_text(), Fl::event_length());
return 1; return 1;
} }
@@ -276,5 +277,5 @@ Fl_Input::Fl_Input(int x, int y, int w, int h, const char *l)
} }
// //
// End of "$Id: Fl_Input.cxx,v 1.10.2.14 2001/01/22 15:13:39 easysw Exp $". // End of "$Id: Fl_Input.cxx,v 1.10.2.15 2001/01/28 06:57:33 spitzak Exp $".
// //
+52 -47
View File
@@ -1,9 +1,9 @@
// //
// "$Id: fl_curve.cxx,v 1.4.2.3 2001/01/22 15:13:40 easysw Exp $" // "$Id: fl_curve.cxx,v 1.4.2.4 2001/01/28 06:57:33 spitzak Exp $"
// //
// Bezier curve functions for the Fast Light Tool Kit (FLTK). // Bezier curve functions for the Fast Light Tool Kit (FLTK).
// //
// Copyright 1998-2001 by Bill Spitzak and others. // Copyright 1998-1999 by Bill Spitzak and others.
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public // modify it under the terms of the GNU Library General Public
@@ -20,7 +20,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA. // USA.
// //
// Please report all bugs and problems to "fltk-bugs@fltk.org". // Please report all bugs and problems to "fltk-bugs@easysw.com".
// //
// Utility for drawing Bezier curves, adding the points to // Utility for drawing Bezier curves, adding the points to
@@ -36,8 +36,13 @@ void fl_curve(double X0, double Y0,
double X1, double Y1, double X1, double Y1,
double X2, double Y2, double X2, double Y2,
double X3, double Y3) { double X3, double Y3) {
double x = fl_transform_x(X0,Y0); double x = fl_transform_x(X0,Y0);
double y = fl_transform_y(X0,Y0); double y = fl_transform_y(X0,Y0);
// draw point 0:
fl_transformed_vertex(x,y);
double x1 = fl_transform_x(X1,Y1); double x1 = fl_transform_x(X1,Y1);
double y1 = fl_transform_y(X1,Y1); double y1 = fl_transform_y(X1,Y1);
double x2 = fl_transform_x(X2,Y2); double x2 = fl_transform_x(X2,Y2);
@@ -45,55 +50,55 @@ void fl_curve(double X0, double Y0,
double x3 = fl_transform_x(X3,Y3); double x3 = fl_transform_x(X3,Y3);
double y3 = fl_transform_y(X3,Y3); double y3 = fl_transform_y(X3,Y3);
int n; { // find smaller size of bounding box // find the area:
double lx = x; if (x1<lx) lx=x1; if (x2<lx) lx=x2; if (x3<lx) lx=x3; double a = fabs((x-x2)*(y3-y1)-(y-y2)*(x3-x1));
double rx = x; if (x1>rx) rx=x1; if (x2>rx) rx=x2; if (x3>rx) rx=x3; double b = fabs((x-x3)*(y2-y1)-(y-y3)*(x2-x1));
double ly = y; if (y1<ly) ly=y1; if (y2<ly) ly=y2; if (y3<ly) ly=y3; if (b > a) a = b;
double ry = y; if (y1>ry) ry=y1; if (y2>ry) ry=y2; if (y3>ry) ry=y3;
// calculate number of pieces to cut curve into: // use that to guess at the number of segments:
n = int((rx-lx+ry-ly)/8); if (n < 3) n = 3; int n = int(sqrt(a)/4);
if (n > 1) {
if (n > 100) n = 100; // make huge curves not hang forever
double e = 1.0/n;
// calculate the coefficients of 3rd order equation:
double xa = (x3-3*x2+3*x1-x);
double xb = 3*(x2-2*x1+x);
double xc = 3*(x1-x);
// calculate the forward differences:
double dx1 = ((xa*e+xb)*e+xc)*e;
double dx3 = 6*xa*e*e*e;
double dx2 = dx3 + 2*xb*e*e;
// calculate the coefficients of 3rd order equation:
double ya = (y3-3*y2+3*y1-y);
double yb = 3*(y2-2*y1+y);
double yc = 3*(y1-y);
// calculate the forward differences:
double dy1 = ((ya*e+yb)*e+yc)*e;
double dy3 = 6*ya*e*e*e;
double dy2 = dy3 + 2*yb*e*e;
// draw points 1 .. n-2:
for (int m=2; m<n; m++) {
x += dx1;
dx1 += dx2;
dx2 += dx3;
y += dy1;
dy1 += dy2;
dy2 += dy3;
fl_transformed_vertex(x,y);
}
// draw point n-1:
fl_transformed_vertex(x+dx1, y+dy1);
} }
double e = 1.0/n;
// calculate the coefficients of 3rd order equation:
double xa = (x3-3*x2+3*x1-x);
double xb = 3*(x2-2*x1+x);
double xc = 3*(x1-x);
// calculate the forward differences:
double dx1 = ((xa*e+xb)*e+xc)*e;
double dx3 = 6*xa*e*e*e;
double dx2 = dx3 + 2*xb*e*e;
// calculate the coefficients of 3rd order equation:
double ya = (y3-3*y2+3*y1-y);
double yb = 3*(y2-2*y1+y);
double yc = 3*(y1-y);
// calculate the forward differences:
double dy1 = ((ya*e+yb)*e+yc)*e;
double dy3 = 6*ya*e*e*e;
double dy2 = dy3 + 2*yb*e*e;
// draw point 0:
fl_transformed_vertex(x,y);
// draw points 1 .. n-2:
for (int m=2; m<n; m++) {
x += dx1;
dx1 += dx2;
dx2 += dx3;
y += dy1;
dy1 += dy2;
dy2 += dy3;
fl_transformed_vertex(x,y);
}
// draw point n-1:
fl_transformed_vertex(x+dx1, y+dy1);
// draw point n: // draw point n:
fl_transformed_vertex(x3,y3); fl_transformed_vertex(x3,y3);
} }
// //
// End of "$Id: fl_curve.cxx,v 1.4.2.3 2001/01/22 15:13:40 easysw Exp $". // End of "$Id: fl_curve.cxx,v 1.4.2.4 2001/01/28 06:57:33 spitzak Exp $".
// //