DO NOT REPLY TO THIS MESSAGE. INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.
[STR New]
Link: http://www.fltk.org/str.php?L2634
Version: 1.3-current
Attached file "Fl_Help_View.H"...
Link: http://www.fltk.org/str.php?L2634
Version: 1.3-current
//
// "$Id: Fl_Help_View.H 5991 2007-12-15 16:08:23Z mike $"
//
// Help Viewer widget definitions.
//
// Copyright 1997-2005 by Easy Software Products.
// Image support donated by Matthias Melcher, Copyright 2000.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems on the following page:
//
// http://www.fltk.org/str.php
//
// Inline:
//
// Fl_Help_View::directory() - Get the directory string.
// Fl_Help_View::filename() - Get the filename string.
// Fl_Help_View::link() - Set the link callback.
// Fl_Help_View::size() - Get the total document length.
// Fl_Help_View::size() - Set the document width and height.
// Fl_Help_View::textcolor() - Set the default text color.
// Fl_Help_View::textcolor() - Get the default text color.
// Fl_Help_View::textsize() - Set the default font size.
// Fl_Help_View::textsize() - Get the default font size.
// Fl_Help_View::title() - Get the title string.
// Fl_Help_View::topline() - Get the top line in document.
// Fl_Help_View::leftline() - Get the left line position.
// Fl_Help_View::value() - Get the HTML text value.
// Fl_Help_View::monofont() - Set the default mono font.
// Fl_Help_View::monofont() - Get the default mono font.
// Fl_Help_View::reformat() - Format the help text.
// Fl_Help_View::sansfont() - Set the default sans font.
// Fl_Help_View::sansfont() - Get the default sans font.
// Fl_Help_View::serifont() - Set the default serif font.
// Fl_Help_View::serifont() - Get the default serif font.
//
#ifndef Fl_Help_View_H
# define Fl_Help_View_H
//
// Include necessary header files...
//
# include <stdio.h>
# include "Fl.H"
# include "Fl_Group.H"
# include "Fl_Scrollbar.H"
# include "fl_draw.H"
# include "Fl_Shared_Image.H"
//
// Fl_Help_Func type - link callback function for files...
//
typedef const char *(Fl_Help_Func)(Fl_Widget *, const char *);
//
// Fl_Help_Block structure
//
// note: we can change private structs accessed by pointers
struct Fl_Help_Block
{
const char *start, // Start of text
*end; // End of text
unsigned char border; // Draw border?
Fl_Color bgcolor; // Background color
int x, // Indentation/starting X coordinate
y, // Starting Y coordinate
w, // Width
h; // Height
// new fields, removed int line[32];
unsigned char fsize; // current font size
int font, // current font
maxh, // max image height
imgy, // image y position
pre, // pre text flag
type, // blockquote/ol/ul/li type parameter
tag, // tag/element fourcc int
line, // Left starting position for each line
cbi; // current block index
};
//
// Fl_Help_Link structure
//
struct Fl_Help_Link
{
char filename[192], // Link reference filename
name[32]; // Link target name, blank if none
int x, // X offset of link text
y, // Y offset of link text
w, // Width of link text
h; // Height of link text
};
//
// Fl_Help_Target structure
//
// note: hijacking this lets us add new data members via the d-pointer
struct Fl_Help_Target
{
// new fields, removed char name[32]; int y;
Fl_Help_Link *targets, // Targets
*linkp; // Currently clicked link
unsigned char ispush, // link is pushed
islink, // link clicked
resized, // window resized
ispath, // is path used
nstyle, // navigation style flag
isnew, // is new page
pad7, //
pad8; //
int top, // current topline
ltop, // last topline
isnav, // is nav link
rwidth, // resize width
cssurllen, // css url length
csswordlen, // css word length
*cssword; // css word value
long rtime, // resize time
rsec, // resize seconds
rmil, // resize millisecs
csstextlen; // css text length
char *csstext, // css text value
*cssurl, // css url value
path[1024], // current file path
lpath[1024]; // last file path
int nfonts, // number of fonts in stack
fonts[100][2]; // font stack
};
//
// Fl_Help_View class...
//
class FL_EXPORT Fl_Help_View : public Fl_Group // Help viewer widget
{
private:
enum { RIGHT = -1, CENTER, LEFT }; // Alignments
char title_[1024]; // Title string
Fl_Color defcolor_, // Default text color
bgcolor_, // Background color
textcolor_, // Text color
linkcolor_; // Link color
unsigned char textfont_, // Default font - replaced
textsize_; // Default font size - replaced
const char *value_; // HTML text value
int nblocks_, // Number of blocks/lines
ablocks_; // Allocated blocks
Fl_Help_Block *blocks_; // Blocks
int nfonts_; // Number of fonts in stack - replaced
unsigned char fonts_[100][2]; // Font stack - replaced
Fl_Help_Func *link_; // Link transform function
int nlinks_, // Number of links
alinks_; // Allocated links
Fl_Help_Link *links_; // Links
int ntargets_, // Number of targets
atargets_; // Allocated targets
Fl_Help_Target *d; // d-pointer struct - was *targets_
// note: we can rename existing data members
char directory_[1024], // Directory for current file
filename_[1024]; // Current filename
int topline_, // Top line in document
leftline_, // Left line position
size_, // Total document length
hsize_; // Maximum document width
Fl_Scrollbar scrollbar_, // Vertical scrollbar for document
hscrollbar_; // Horizontal scrollbar
static int selection_first; // Text selection
static int selection_last;
static int selection_push_first;
static int selection_push_last;
static int selection_drag_first;
static int selection_drag_last;
static int selected;
static int draw_mode;
static int mouse_x;
static int mouse_y;
static int current_pos;
static Fl_Help_View *current_view;
static Fl_Color hv_selection_color;
static Fl_Color hv_selection_text_color;
// new private static class variables
static int serifont_; // default serif font
static int sansfont_; // default sans font
static int monofont_; // default monospace font
static unsigned char fontsize_; // default font size
static short face_[250][4]; // font face table [m,b,i,p]
static unsigned char flet_[30]; // first face for letter table
static unsigned char fref_[1000]; // face reference table
Fl_Help_Block *add_block(const char *sp, int xx, int yy, int ww, int hh,
unsigned char bc = 0);
void add_link(const char *np, int xx, int yy, int ww, int hh);
void add_target(const char *np, int yy);
static int compare_targets(const Fl_Help_Target *t0, const Fl_Help_Target
*t1);
int do_align(Fl_Help_Block *b, int li, int xx, int ca, int &sl);
void draw();
void format();
void format_table(int *tw, int *maxcols, const char *tp);
void free_data();
int get_align(const char *ap, int da);
const char *get_attr(const char *ap, const char *np, char *buf, int sb);
Fl_Color get_color(const char *np, Fl_Color dc);
Fl_Shared_Image *get_image(const char *np, int iw, int ih);
int get_length(const char *lp);
//int handle(int event); // moved to public
// note: you can remove private non-virtual functions if not called by inline
functions
void initfont(unsigned char &fi, unsigned char &fs) { // Reset stack -
replaced, for when nfonts > 255
nfonts_ = 0;
fl_font(fi = fonts_[0][0] = serifont_, fs = fonts_[0][1] = fontsize_);
}
void pushfont(unsigned char fi, unsigned char fs) { // Push font - replaced
if (nfonts_ < 99) nfonts_ ++;
fl_font(fonts_[nfonts_][0] = fi, fonts_[nfonts_][1] = fs);
}
void popfont(unsigned char &fi, unsigned char &fs) { // Pop font - replaced
if (nfonts_ > 0) nfonts_ --;
fl_font(fi = fonts_[nfonts_][0], fs = fonts_[nfonts_][1]);
}
void hv_draw(const char *tp, int xx, int yy);
char begin_selection();
char extend_selection();
void end_selection(int cb = 0);
void clear_global_selection();
Fl_Help_Link *find_link(int xx, int yy);
void follow_link(Fl_Help_Link *lp);
// new private functions
// note: for BC we can't modify existing function declarations
Fl_Help_Block *add_block(const Fl_Help_Block &b, const char *sp, int ww);
unsigned char build_faces();
static int cmp_targets(const Fl_Help_Link *t0, const Fl_Help_Link *t1);
const char *format_table(int &tw, int *maxcols, const char *tp, int xx, int
rc);
int get_css_value(const char *sp, const char *pp, char *vp);
int get_font_size(const char *hp);
int get_length(const char *lp, int hw);
void initfont(int &fi, unsigned char &fs);
int load_css(const char *fp);
void parse_css(Fl_Help_Block &b, const char *sp, char *buf);
void popfont(int &fi, unsigned char &fs);
void pushfont(int fi, unsigned char fs);
public:
Fl_Help_View(int xx, int yy, int ww, int hh, const char *lp = 0);
~Fl_Help_View();
const char *directory() const { // Get the directory string
if (directory_[0]) return directory_;
else return (const char *)0;
}
const char *filename() const { // Get the filename string
if (filename_[0]) return filename_;
else return (const char *)0;
}
int find(const char *sp, int pos = 0);
void link(Fl_Help_Func *fn) { // Set the link callback
link_ = fn;
}
int load(const char *fp);
void resize(int xx, int yy, int ww, int hh);
int size() const { // Get the total document length
return size_;
}
void size(int ww, int hh) { // Set the document width and height
Fl_Widget::size(ww, hh);
}
void textcolor(Fl_Color tc) { // Set the default text color
if (textcolor_ == defcolor_) textcolor_ = tc;
defcolor_ = tc;
}
Fl_Color textcolor() const { // Get the default text color
return defcolor_;
}
void textfont(unsigned char fi) { // Set the text font, obsolete
textfont_ = fi;
//format(); // removed
// note: we can remove the contents of inline functions
}
unsigned char textfont() const { // Get the text font, obsolete
return textfont_;
}
void textsize(unsigned char fs) { // Set the default font size
fontsize_ = fs;
//format(); // removed
}
unsigned char textsize() const { // Get the default font size
return fontsize_;
}
const char *title() { // Get the title string
return title_;
}
void topline(const char *np);
void topline(int yy);
int topline() const { // Get the top line in document
return topline_;
}
void leftline(int xx);
int leftline() const { // Get the left line position
return leftline_;
}
void value(const char *tp);
const char *value() const { // Get the HTML text value
return value_;
}
void clear_selection();
void select_all();
// new public functions
int fileislink();
void filepath(const char *fp);
char *filepath();
int font_face(const char *sp);
int font_style(int fi, unsigned char fs);
int gettopline();
int handle(int event); // moved from private
void monofont(int fi) { // set the default mono font
monofont_ = fi;
}
int monofont() const { // get the default mono font
return monofont_;
}
void reformat() { // format the help text - wrapper function
format();
}
void sansfont(int fi) { // set the default sans font
sansfont_ = fi;
}
int sansfont() const { // get the default sans font
return sansfont_;
}
void serifont(int fi) { // set the default serif font
serifont_ = fi;
}
int serifont() const { // get the default serif font
return serifont_;
}
void setstyle(int flag);
};
#endif // !Fl_Help_View_H
//
// End of "$Id: Fl_Help_View.H 5991 2007-12-15 16:08:23Z mike $".
//
_______________________________________________
fltk-bugs mailing list
fltk-bugs@easysw.com
http://lists.easysw.com/mailman/listinfo/fltk-bugs