diff --git a/CHANGES b/CHANGES index c33347be7..e3519443f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,11 @@ CHANGES IN FLTK 1.1.0b11 + - Fixed a table rendering bug in the Fl_Help_View + widget. + - The fltk-config script now recognizes all common C++ + extensions. + - The menu code was using overlay visuals when the + scheme was set to "plastic". - Fixed some drawing problems with Fl_Light_Button and its subclasses. - Fixed a minor event propagation bug in Fl_Group that diff --git a/FL/Fl_Help_View.H b/FL/Fl_Help_View.H index a79da6c34..e015c1172 100644 --- a/FL/Fl_Help_View.H +++ b/FL/Fl_Help_View.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Help_View.H,v 1.1.2.7 2002/01/01 15:11:27 easysw Exp $" +// "$Id: Fl_Help_View.H,v 1.1.2.8 2002/02/20 13:02:25 easysw Exp $" // // Help Viewer widget definitions. // @@ -131,7 +131,6 @@ class Fl_Help_View : public Fl_Group //// Help viewer widget hscrollbar_; // Horizontal scrollbar Fl_Help_Block *add_block(const char *s, int xx, int yy, int ww, int hh, uchar border = 0); - static int compare_blocks(const void *a, const void *b); void add_link(const char *n, int xx, int yy, int ww, int hh); void add_target(const char *n, int yy); static int compare_targets(const Fl_Help_Target *t0, const Fl_Help_Target *t1); @@ -187,5 +186,5 @@ class Fl_Help_View : public Fl_Group //// Help viewer widget #endif // !Fl_Help_View_H // -// End of "$Id: Fl_Help_View.H,v 1.1.2.7 2002/01/01 15:11:27 easysw Exp $". +// End of "$Id: Fl_Help_View.H,v 1.1.2.8 2002/02/20 13:02:25 easysw Exp $". // diff --git a/documentation/FL.gif b/documentation/FL.gif index f4fe8fb51..823e0bdd4 100644 Binary files a/documentation/FL.gif and b/documentation/FL.gif differ diff --git a/documentation/index.html b/documentation/index.html index 639180c55..7f4c1ab86 100644 --- a/documentation/index.html +++ b/documentation/index.html @@ -5,11 +5,11 @@ - +
- -
+ FL +

FLTK 1.1.0 Programming Manual

Revision 1 by Michael Sweet, Craig P. Earls, and Bill Spitzak
Copyright 1998-2002 by Bill Spitzak and others.

@@ -17,16 +17,16 @@
- +
-
This software is provided under the terms of the GNU Library General + This software is provided under the terms of the GNU Library General Public License.
- +
- -
Preface + Preface

1 - Introduction to FLTK @@ -57,7 +57,7 @@ 7 - Adding and Extending Widgets
+ 8 - Using OpenGL

diff --git a/fltk-config.in b/fltk-config.in index ff05a0397..077cce3c8 100755 --- a/fltk-config.in +++ b/fltk-config.in @@ -1,6 +1,6 @@ #! /bin/sh # -# "$Id: fltk-config.in,v 1.12.2.7 2002/01/01 15:11:27 easysw Exp $" +# "$Id: fltk-config.in,v 1.12.2.8 2002/02/20 13:02:25 easysw Exp $" # # FLTK configuration utility. # @@ -200,7 +200,25 @@ if test -n "$echo_help"; then usage 1 fi if test -n "$compile"; then - prog=`basename $compile .cxx` + case $compile in + *.cxx) + prog=`basename $compile .cxx` + ;; + *.cpp) + prog=`basename $compile .cpp` + ;; + *.cc) + prog=`basename $compile .cc` + ;; + *.C) + prog=`basename $compile .C` + ;; + *) + echo "ERROR: Unknown/bad C++ source file extension on \"$compile\"!" + exit 1 + ;; + esac + post=$prog echo $CXX $CXXFLAGS -o $prog $compile $LDSTATIC diff --git a/fluid/about_panel.cxx b/fluid/about_panel.cxx index 0dd0bfcbf..b828ffd84 100644 --- a/fluid/about_panel.cxx +++ b/fluid/about_panel.cxx @@ -94,7 +94,7 @@ Fl_Window* make_about_panel() { o->labelsize(18); o->labelcolor(7); } - { Fl_Button* o = new Fl_Button(181, 176, 115, 30, "\251""1998-2001 by\nBill Spitzak and others"); + { Fl_Button* o = new Fl_Button(181, 176, 115, 30, "\251""1998-2002 by\nBill Spitzak and others"); o->box(FL_THIN_UP_BOX); o->labelsize(10); o->labelcolor(136); diff --git a/fluid/about_panel.fl b/fluid/about_panel.fl index db0bb76f3..7a6770307 100644 --- a/fluid/about_panel.fl +++ b/fluid/about_panel.fl @@ -56,7 +56,7 @@ Version 1.1.0} xywh {140 27 160 123} box OVAL_BOX color 12 selection_color 47 labeltype SHADOW_LABEL labelfont 1 labelsize 18 labelcolor 7 } Fl_Button {} { - label {©1998-2001 by + label {©1998-2002 by Bill Spitzak and others} callback {show_help("license.html");} xywh {181 176 115 30} box THIN_UP_BOX labelsize 10 labelcolor 136 diff --git a/src/Fl_Help_View.cxx b/src/Fl_Help_View.cxx index 6f7549c9c..41b7e1355 100644 --- a/src/Fl_Help_View.cxx +++ b/src/Fl_Help_View.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Help_View.cxx,v 1.1.2.25 2002/01/01 15:11:30 easysw Exp $" +// "$Id: Fl_Help_View.cxx,v 1.1.2.26 2002/02/20 13:02:27 easysw Exp $" // // Fl_Help_View widget routines. // @@ -45,7 +45,6 @@ // Fl_Help_View::topline() - Set the top line to the named target. // Fl_Help_View::topline() - Set the top line by number. // Fl_Help_View::value() - Set the help text directly. -// Fl_Help_View::compare_blocks() - Compare two blocks. // scrollbar_callback() - A callback for the scrollbar. // @@ -330,7 +329,7 @@ Fl_Help_View::draw() needspace; // Do we need whitespace? Fl_Boxtype b = box() ? box() : FL_DOWN_BOX; // Box to draw... - Fl_Color tc, c; // Table/cell background color + Fl_Color tc, rc, c; // Table/row/cell background color // Draw the scrollbar(s) and box first... @@ -362,11 +361,11 @@ Fl_Help_View::draw() fl_push_clip(x() + 4, y() + 4, ww - 8, hh - 8); fl_color(textcolor_); - tc = c = bgcolor_; + tc = rc = c = bgcolor_; // Draw all visible blocks... - for (i = 0, block = blocks_; i < nblocks_ && (block->y - topline_) < h(); i ++, block ++) - if ((block->y + block->h) >= topline_) + for (i = 0, block = blocks_; i < nblocks_; i ++, block ++) + if ((block->y + block->h) >= topline_ && block->y < (topline_ + h())) { line = 0; xx = block->line[line]; @@ -541,15 +540,6 @@ Fl_Help_View::draw() } pushfont(font, size); - - if (c != bgcolor_) - { - fl_color(c); - fl_rectf(block->x + x() - 4 - leftline_, - block->y - topline_ + y() - size - 3, - block->w - block->x + 7, block->h + size - 5); - fl_color(textcolor_); - } } else if (strcasecmp(buf, "A") == 0 && get_attr(attrs, "HREF", attr, sizeof(attr)) != NULL) @@ -560,30 +550,52 @@ Fl_Help_View::draw() strcasecmp(buf, "STRONG") == 0) pushfont(font |= FL_BOLD, size); else if (strcasecmp(buf, "TABLE") == 0) - tc = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)), bgcolor_); + tc = rc = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)), bgcolor_); + else if (strcasecmp(buf, "TR") == 0) + rc = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)), tc); else if (strcasecmp(buf, "TD") == 0 || strcasecmp(buf, "TH") == 0) { + int tx, ty, tw, th; + if (tolower(buf[1]) == 'h') pushfont(font |= FL_BOLD, size); else pushfont(font = textfont_, size); - c = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)), tc); + c = get_color(get_attr(attrs, "BGCOLOR", attr, sizeof(attr)), rc); + + tx = block->x - 4 - leftline_; + ty = block->y - topline_ - size - 3; + tw = block->w - block->x + 7; + th = block->h + size - 5; + + if (tx < 0) + { + tw += tx; + tx = 0; + } + + if (ty < 0) + { + th += ty; + ty = 0; + } + + tx += x(); + ty += y(); + +// printf("%s: %d,%d - %dx%d\n", buf, tx, ty, tw, th); if (c != bgcolor_) { fl_color(c); - fl_rectf(block->x + x() - 4 - leftline_, - block->y - topline_ + y() - size - 3, - block->w - block->x + 7, block->h + size - 5); + fl_rectf(tx, ty, tw, th); fl_color(textcolor_); } if (block->border) - fl_rect(block->x + x() - 4 - leftline_, - block->y - topline_ + y() - size - 3, - block->w - block->x + 7, block->h + size - 5); + fl_rect(tx, ty, tw, th); } else if (strcasecmp(buf, "I") == 0 || strcasecmp(buf, "EM") == 0) @@ -611,10 +623,10 @@ Fl_Help_View::draw() strcasecmp(buf, "/VAR") == 0) popfont(font, size); else if (strcasecmp(buf, "/TABLE") == 0) - tc = c = bgcolor_; + tc = rc = c = bgcolor_; else if (strcasecmp(buf, "/TD") == 0 || strcasecmp(buf, "/TH") == 0) - c = tc; + c = rc; else if (strcasecmp(buf, "/PRE") == 0) { popfont(font, size); @@ -766,7 +778,9 @@ Fl_Help_View::format() int done; // Are we done yet? Fl_Help_Block *block, // Current block *cell; // Current table cell - int row; // Current table row (block number) + int cells[MAX_COLUMNS], + // Cells in the current row... + row; // Current table row (block number) const char *ptr, // Pointer into block *start, // Pointer to start of element *attrs; // Pointer to start of element attributes @@ -1154,12 +1168,20 @@ Fl_Help_View::format() if ((cell->y + cell->h) > yy) yy = cell->y + cell->h; + block = blocks_ + row; + block->h = yy - block->y + 2; - for (cell = blocks_ + row + 1; cell < block; cell ++) - cell->h = block->h; + for (i = 0; i < column; i ++) + if (cells[i]) + { + cell = blocks_ + cells[i]; + cell->h = block->h; + } } + memset(cells, 0, sizeof(cells)); + yy = block->y + block->h - 4; hh = 0; block = add_block(start, xx, yy, hsize_, 0); @@ -1182,10 +1204,16 @@ Fl_Help_View::format() if ((cell->y + cell->h) > yy) yy = cell->y + cell->h; + block = blocks_ + row; + block->h = yy - block->y + 2; - for (cell = blocks_ + row + 1; cell < block; cell ++) - cell->h = block->h; + for (i = 0; i < column; i ++) + if (cells[i]) + { + cell = blocks_ + cells[i]; + cell->h = block->h; + } yy = block->y + block->h - 4; block = add_block(start, xx, yy, hsize_, 0); @@ -1237,11 +1265,15 @@ Fl_Help_View::format() line = 0; newalign = get_align(attrs, tolower(buf[1]) == 'h' ? CENTER : LEFT); - column ++; + cells[column] = block - blocks_; + + column += colspan; } else if ((strcasecmp(buf, "/TD") == 0 || strcasecmp(buf, "/TH") == 0) && row) + { popfont(font, size); + } else if (strcasecmp(buf, "B") == 0 || strcasecmp(buf, "STRONG") == 0) pushfont(font |= FL_BOLD, size); @@ -1406,10 +1438,6 @@ Fl_Help_View::format() qsort(targets_, ntargets_, sizeof(Fl_Help_Target), (compare_func_t)compare_targets); - if (nblocks_ > 1) - qsort(blocks_, nblocks_, sizeof(Fl_Help_Block), - (compare_func_t)compare_blocks); - if (hsize_ > (w() - 24)) { hscrollbar_.show(); @@ -1944,7 +1972,7 @@ Fl_Help_View::get_color(const char *n, // I - Color name int rgb, r, g, b; // RGB values - if (!n) + if (!n || !n[0]) return (c); if (n[0] == '#') @@ -1956,19 +1984,14 @@ Fl_Help_View::get_color(const char *n, // I - Color name g = (rgb >> 8) & 255; b = rgb & 255; - if (r == g && g == b) - return (fl_gray_ramp(FL_NUM_GRAY * r / 256)); - else - return (fl_color_cube((FL_NUM_RED - 1) * r / 255, - (FL_NUM_GREEN - 1) * g / 255, - (FL_NUM_BLUE - 1) * b / 255)); + return (fl_rgb_color(r, g, b)); } else if (strcasecmp(n, "black") == 0) return (FL_BLACK); else if (strcasecmp(n, "red") == 0) return (FL_RED); else if (strcasecmp(n, "green") == 0) - return (fl_color_cube(0, 4, 0)); + return (fl_rgb_color(0, 0x80, 0)); else if (strcasecmp(n, "yellow") == 0) return (FL_YELLOW); else if (strcasecmp(n, "blue") == 0) @@ -1980,21 +2003,21 @@ Fl_Help_View::get_color(const char *n, // I - Color name else if (strcasecmp(n, "white") == 0) return (FL_WHITE); else if (strcasecmp(n, "gray") == 0 || strcasecmp(n, "grey") == 0) - return (FL_GRAY); + return (fl_rgb_color(0x80, 0x80, 0x80)); else if (strcasecmp(n, "lime") == 0) return (FL_GREEN); else if (strcasecmp(n, "maroon") == 0) - return (fl_color_cube(2, 0, 0)); + return (fl_rgb_color(0x80, 0, 0)); else if (strcasecmp(n, "navy") == 0) - return (fl_color_cube(0, 0, 2)); + return (fl_rgb_color(0, 0, 0x80)); else if (strcasecmp(n, "olive") == 0) - return (fl_color_cube(2, 4, 0)); + return (fl_rgb_color(0x80, 0x80, 0)); else if (strcasecmp(n, "purple") == 0) - return (fl_color_cube(2, 0, 2)); + return (fl_rgb_color(0x80, 0, 0x80)); else if (strcasecmp(n, "silver") == 0) - return (FL_LIGHT2); + return (fl_rgb_color(0xc0, 0xc0, 0xc0)); else if (strcasecmp(n, "teal") == 0) - return (fl_color_cube(0, 4, 2)); + return (fl_rgb_color(0, 0x80, 0x80)); else return (c); } @@ -2455,18 +2478,6 @@ Fl_Help_View::value(const char *v) // I - Text to view } -// -// 'Fl_Help_View::compare_blocks()' - Compare two blocks. -// - -int // O - Result of comparison -Fl_Help_View::compare_blocks(const void *a, // I - First block - const void *b) // I - Second block -{ - return (((Fl_Help_Block *)a)->y - ((Fl_Help_Block *)b)->y); -} - - // // 'quote_char()' - Return the character code associated with a quoted char. // @@ -2616,5 +2627,5 @@ hscrollbar_callback(Fl_Widget *s, void *) // -// End of "$Id: Fl_Help_View.cxx,v 1.1.2.25 2002/01/01 15:11:30 easysw Exp $". +// End of "$Id: Fl_Help_View.cxx,v 1.1.2.26 2002/02/20 13:02:27 easysw Exp $". // diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx index 2e16434f1..04989f8f4 100644 --- a/src/Fl_Menu.cxx +++ b/src/Fl_Menu.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu.cxx,v 1.18.2.12.2.6 2002/01/01 15:11:30 easysw Exp $" +// "$Id: Fl_Menu.cxx,v 1.18.2.12.2.7 2002/02/20 13:02:27 easysw Exp $" // // Menu code for the Fast Light Tool Kit (FLTK). // @@ -202,7 +202,7 @@ menutitle::menutitle(int X, int Y, int W, int H, const Fl_Menu_Item* L) : set_modal(); clear_border(); menu = L; - if (L->labelcolor_) clear_overlay(); + if (L->labelcolor_ || Fl::scheme()) clear_overlay(); } menuwindow::menuwindow(const Fl_Menu_Item* m, int X, int Y, int Wp, int Hp, @@ -255,7 +255,7 @@ menuwindow::menuwindow(const Fl_Menu_Item* m, int X, int Y, int Wp, int Hp, w1 = int(fl_width(fl_shortcut_label(m->shortcut_))) + 8; if (w1 > hotKeysw) hotKeysw = w1; } - if (m->labelcolor_) clear_overlay(); + if (m->labelcolor_ || Fl::scheme()) clear_overlay(); } if (selected >= 0 && !Wp) X -= W/2; int BW = Fl::box_dx(box()); @@ -756,5 +756,5 @@ const Fl_Menu_Item* Fl_Menu_Item::test_shortcut() const { } // -// End of "$Id: Fl_Menu.cxx,v 1.18.2.12.2.6 2002/01/01 15:11:30 easysw Exp $". +// End of "$Id: Fl_Menu.cxx,v 1.18.2.12.2.7 2002/02/20 13:02:27 easysw Exp $". //