24 #ifndef FL_TEXT_DISPLAY_H
25 #define FL_TEXT_DISPLAY_H
30 #include "Fl_Scrollbar.H"
31 #include "Fl_Text_Buffer.H"
133 typedef void (*Unfinished_Style_Cb)(int,
void *);
149 virtual int handle(
int e);
167 void redisplay_range(
int start,
int end);
168 void scroll(
int topLineNum,
int horizOffset);
169 void insert(
const char* text);
170 void overstrike(
const char* text);
171 void insert_position(
int newPos);
178 int position_to_xy(
int pos,
int* x,
int* y)
const;
180 int in_selection(
int x,
int y)
const;
181 void show_insert_position();
187 int count_lines(
int start,
int end,
bool start_pos_is_line_start)
const;
188 int line_start(
int pos)
const;
189 int line_end(
int startPos,
bool startPosIsLineStart)
const;
190 int skip_lines(
int startPos,
int nLines,
bool startPosIsLineStart);
191 int rewind_lines(
int startPos,
int nLines);
192 void next_word(
void);
193 void previous_word(
void);
195 void show_cursor(
int b = 1);
202 void cursor_style(
int style);
245 int word_start(
int pos)
const {
return buffer()->word_start(pos); }
252 int word_end(
int pos)
const {
return buffer()->word_end(pos); }
256 const Style_Table_Entry *styleTable,
257 int nStyles,
char unfinishedStyle,
258 Unfinished_Style_Cb unfinishedHighlightCB,
261 int position_style(
int lineStartPos,
int lineLen,
int lineIndex)
const;
313 int wrapped_column(
int row,
int column)
const;
314 int wrapped_row(
int row)
const;
315 void wrap_mode(
int wrap,
int wrap_margin);
317 virtual void resize(
int X,
int Y,
int W,
int H);
324 double x_to_col(
double x)
const;
332 double col_to_x(
double col)
const;
334 void linenumber_width(
int width);
335 int linenumber_width()
const;
336 void linenumber_font(
Fl_Font val);
337 Fl_Font linenumber_font()
const;
340 void linenumber_fgcolor(
Fl_Color val);
341 Fl_Color linenumber_fgcolor()
const;
342 void linenumber_bgcolor(
Fl_Color val);
343 Fl_Color linenumber_bgcolor()
const;
344 void linenumber_align(
Fl_Align val);
346 void linenumber_format(
const char* val);
347 const char* linenumber_format()
const;
356 void draw_text(
int X,
int Y,
int W,
int H);
357 void draw_range(
int start,
int end);
358 void draw_cursor(
int,
int);
360 void draw_string(
int style,
int x,
int y,
int toX,
const char *
string,
363 void draw_vline(
int visLineNum,
int leftClip,
int rightClip,
364 int leftCharIndex,
int rightCharIndex);
366 int find_x(
const char *s,
int len,
int style,
int x)
const;
371 FIND_INDEX_FROM_ZERO,
375 int handle_vline(
int mode,
376 int lineStart,
int lineLen,
int leftChar,
int rightChar,
377 int topClip,
int bottomClip,
378 int leftClip,
int rightClip)
const;
380 void draw_line_numbers(
bool clearAll);
382 void clear_rect(
int style,
int x,
int y,
int width,
int height)
const;
383 void display_insert();
385 void offset_line_starts(
int newTopLineNum);
387 void calc_line_starts(
int startLine,
int endLine);
389 void update_line_starts(
int pos,
int charsInserted,
int charsDeleted,
390 int linesInserted,
int linesDeleted,
int *scrolled);
392 void calc_last_char();
394 int position_to_line(
int pos,
int* lineNum )
const;
395 double string_width(
const char*
string,
int length,
int style)
const;
397 static void scroll_timer_cb(
void*);
399 static void buffer_predelete_cb(
int pos,
int nDeleted,
void* cbArg);
400 static void buffer_modified_cb(
int pos,
int nInserted,
int nDeleted,
401 int nRestyled,
const char* deletedText,
406 void update_v_scrollbar();
407 void update_h_scrollbar();
408 int measure_vline(
int visLineNum)
const;
409 int longest_vline()
const;
410 int empty_vlines()
const;
411 int vline_length(
int visLineNum)
const;
412 int xy_to_position(
int x,
int y,
int PosType = CHARACTER_POS)
const;
414 void xy_to_rowcol(
int x,
int y,
int* row,
int* column,
415 int PosType = CHARACTER_POS)
const;
416 void maintain_absolute_top_line_number(
int state);
417 int get_absolute_top_line_number()
const;
418 void absolute_top_line_number(
int oldFirstChar);
419 int maintaining_absolute_top_line_number()
const;
420 void reset_absolute_top_line_number();
421 int position_to_linecol(
int pos,
int* lineNum,
int* column)
const;
422 int scroll_(
int topLineNum,
int horizOffset);
424 void extend_range_for_styles(
int* start,
int* end);
426 void find_wrap_range(
const char *deletedText,
int pos,
int nInserted,
427 int nDeleted,
int *modRangeStart,
int *modRangeEnd,
428 int *linesInserted,
int *linesDeleted);
429 void measure_deleted_lines(
int pos,
int nDeleted);
430 void wrapped_line_counter(
Fl_Text_Buffer *buf,
int startPos,
int maxPos,
431 int maxLines,
bool startPosIsLineStart,
432 int styleBufOffset,
int *retPos,
int *retLines,
433 int *retLineStart,
int *retLineEnd,
434 bool countLastLineMissingNewLine =
true)
const;
435 void find_line_end(
int pos,
bool start_pos_is_line_start,
int *lineEnd,
436 int *nextLineStart)
const;
437 double measure_proportional_character(
const char *s,
int colNum,
int pos)
const;
438 int wrap_uses_character(
int lineEndPos)
const;
440 int damage_range1_start, damage_range1_end;
441 int damage_range2_start, damage_range2_end;
449 int mCursorPreferredXPos;
455 int mFirstChar, mLastChar;
469 int mNeedAbsTopLineNum;
475 int mHorizOffsetHint;
477 const Style_Table_Entry *mStyleTable;
479 char mUnfinishedStyle;
481 Unfinished_Style_Cb mUnfinishedHighlightCB;
483 void* mHighlightCBArg;
492 int mModifyingTabDistance;
495 mutable double mColumnScale;
504 int scrollbar_width_;
506 int dragPos, dragType, dragging;
507 int display_insert_position_hint;
508 struct {
int x,
y,
w,
h; } text_area;
517 int mLineNumLeft, mLineNumWidth;
520 #if FLTK_ABI_VERSION >= 10303
526 const char* linenumber_format_;
void hide_cursor()
Hides the text cursor.
Definition: Fl_Text_Display.H:200
Fl_Font textfont() const
Gets the default font used when drawing text in the widget.
Definition: Fl_Text_Display.H:281
thick I-beam
Definition: Fl_Text_Display.H:94
int scrollbar_width() const
Gets the width/height of the scrollbars.
Definition: Fl_Text_Display.H:220
wrap text at a pixel position
Definition: Fl_Text_Display.H:127
Fl_Align scrollbar_align() const
Gets the scrollbar alignment type.
Definition: Fl_Text_Display.H:232
This structure associates the color, font, andsize of a string to draw with an attribute mask matchin...
Definition: Fl_Text_Display.H:139
int insert_position() const
Gets the position of the text insertion cursor for text display.
Definition: Fl_Text_Display.H:177
void scrollbar_align(Fl_Align a)
Sets the scrollbar alignment type.
Definition: Fl_Text_Display.H:238
int word_end(int pos) const
Moves the insert position to the end of the current word.
Definition: Fl_Text_Display.H:252
This class manages unicode displayed in one or more Fl_Text_Display widgets.
Definition: Fl_Text_Buffer.H:157
Fl_Color cursor_color() const
Gets the text cursor color.
Definition: Fl_Text_Display.H:208
I-beam.
Definition: Fl_Text_Display.H:90
void draw()
Draws the widget.
Definition: Fl_Group.cxx:738
void textfont(Fl_Font s)
Sets the default font used when drawing text in the widget.
Definition: Fl_Text_Display.H:287
void insert(Fl_Widget &, int i)
The widget is removed from its current group (if any) and then inserted into this group...
Definition: Fl_Group.cxx:458
The Fl_Group class is the FLTK container widget.
Definition: Fl_Group.H:41
int handle(int)
Handles the specified event.
Definition: Fl_Group.cxx:147
caret under the text
Definition: Fl_Text_Display.H:91
don't wrap text at all
Definition: Fl_Text_Display.H:125
void textsize(Fl_Fontsize s)
Sets the default size of text in the widget.
Definition: Fl_Text_Display.H:299
void buffer(Fl_Text_Buffer &buf)
Sets the current text buffer associated with the text widget.
Definition: Fl_Text_Display.H:158
int Fl_Fontsize
Size of a font in pixels.
Definition: Enumerations.H:768
void resize(int, int, int, int)
Resizes the Fl_Group widget and all of its children.
Definition: Fl_Group.cxx:634
int shortcut() const
Definition: Fl_Text_Display.H:268
Fl_Fontsize textsize() const
Gets the default size of text in the widget.
Definition: Fl_Text_Display.H:293
unfille box under the current character
Definition: Fl_Text_Display.H:93
void textcolor(Fl_Color n)
Sets the default color of text in the widget.
Definition: Fl_Text_Display.H:311
utility header to pull drawing functions together
unsigned int Fl_Color
An FLTK color value; see also Colors.
Definition: Enumerations.H:796
int Fl_Font
A font number is an index into the internal font table.
Definition: Enumerations.H:739
void cursor_color(Fl_Color n)
Sets the text cursor color.
Definition: Fl_Text_Display.H:214
unsigned Fl_Align
FLTK type for alignment control.
Definition: Enumerations.H:690
wrap text at the given text column
Definition: Fl_Text_Display.H:126
int word_start(int pos) const
Moves the insert position to the beginning of the current word.
Definition: Fl_Text_Display.H:245
Fl_Text_Buffer * buffer() const
Gets the current text buffer associated with the text widget.
Definition: Fl_Text_Display.H:165
Fl_Color textcolor() const
Gets the default color of text in the widget.
Definition: Fl_Text_Display.H:305
Rich text display widget.
Definition: Fl_Text_Display.H:82
void shortcut(int s)
Definition: Fl_Text_Display.H:275
dim I-beam
Definition: Fl_Text_Display.H:92
void scrollbar_width(int W)
Sets the width/height of the scrollbars.
Definition: Fl_Text_Display.H:226