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 *);
158 virtual int handle(
int e);
176 void redisplay_range(
int start,
int end);
177 void scroll(
int topLineNum,
int horizOffset);
178 void insert(
const char* text);
179 void overstrike(
const char* text);
180 void insert_position(
int newPos);
187 int position_to_xy(
int pos,
int* x,
int* y)
const;
189 int in_selection(
int x,
int y)
const;
190 void show_insert_position();
196 int count_lines(
int start,
int end,
bool start_pos_is_line_start)
const;
197 int line_start(
int pos)
const;
198 int line_end(
int startPos,
bool startPosIsLineStart)
const;
199 int skip_lines(
int startPos,
int nLines,
bool startPosIsLineStart);
200 int rewind_lines(
int startPos,
int nLines);
201 void next_word(
void);
202 void previous_word(
void);
204 void show_cursor(
int b = 1);
211 void cursor_style(
int style);
254 int word_start(
int pos)
const {
return buffer()->word_start(pos); }
261 int word_end(
int pos)
const {
return buffer()->word_end(pos); }
265 const Style_Table_Entry *styleTable,
266 int nStyles,
char unfinishedStyle,
267 Unfinished_Style_Cb unfinishedHighlightCB,
270 int position_style(
int lineStartPos,
int lineLen,
int lineIndex)
const;
322 int wrapped_column(
int row,
int column)
const;
323 int wrapped_row(
int row)
const;
324 void wrap_mode(
int wrap,
int wrap_margin);
326 virtual void resize(
int X,
int Y,
int W,
int H);
333 double x_to_col(
double x)
const;
341 double col_to_x(
double col)
const;
343 void linenumber_width(
int width);
344 int linenumber_width()
const;
345 void linenumber_font(
Fl_Font val);
346 Fl_Font linenumber_font()
const;
349 void linenumber_fgcolor(
Fl_Color val);
350 Fl_Color linenumber_fgcolor()
const;
351 void linenumber_bgcolor(
Fl_Color val);
352 Fl_Color linenumber_bgcolor()
const;
353 void linenumber_align(
Fl_Align val);
355 void linenumber_format(
const char* val);
356 const char* linenumber_format()
const;
365 void draw_text(
int X,
int Y,
int W,
int H);
366 void draw_range(
int start,
int end);
367 void draw_cursor(
int,
int);
369 void draw_string(
int style,
int x,
int y,
int toX,
const char *
string,
372 void draw_vline(
int visLineNum,
int leftClip,
int rightClip,
373 int leftCharIndex,
int rightCharIndex);
375 int find_x(
const char *s,
int len,
int style,
int x)
const;
380 FIND_INDEX_FROM_ZERO,
384 int handle_vline(
int mode,
385 int lineStart,
int lineLen,
int leftChar,
int rightChar,
386 int topClip,
int bottomClip,
387 int leftClip,
int rightClip)
const;
389 void draw_line_numbers(
bool clearAll);
391 void clear_rect(
int style,
int x,
int y,
int width,
int height)
const;
392 void display_insert();
394 void offset_line_starts(
int newTopLineNum);
396 void calc_line_starts(
int startLine,
int endLine);
398 void update_line_starts(
int pos,
int charsInserted,
int charsDeleted,
399 int linesInserted,
int linesDeleted,
int *scrolled);
401 void calc_last_char();
403 int position_to_line(
int pos,
int* lineNum )
const;
404 double string_width(
const char*
string,
int length,
int style)
const;
406 static void scroll_timer_cb(
void*);
408 static void buffer_predelete_cb(
int pos,
int nDeleted,
void* cbArg);
409 static void buffer_modified_cb(
int pos,
int nInserted,
int nDeleted,
410 int nRestyled,
const char* deletedText,
415 void update_v_scrollbar();
416 void update_h_scrollbar();
417 int measure_vline(
int visLineNum)
const;
418 int longest_vline()
const;
419 int empty_vlines()
const;
420 int vline_length(
int visLineNum)
const;
421 int xy_to_position(
int x,
int y,
int PosType = CHARACTER_POS)
const;
423 void xy_to_rowcol(
int x,
int y,
int* row,
int* column,
424 int PosType = CHARACTER_POS)
const;
425 void maintain_absolute_top_line_number(
int state);
426 int get_absolute_top_line_number()
const;
427 void absolute_top_line_number(
int oldFirstChar);
428 int maintaining_absolute_top_line_number()
const;
429 void reset_absolute_top_line_number();
430 int position_to_linecol(
int pos,
int* lineNum,
int* column)
const;
431 int scroll_(
int topLineNum,
int horizOffset);
433 void extend_range_for_styles(
int* start,
int* end);
435 void find_wrap_range(
const char *deletedText,
int pos,
int nInserted,
436 int nDeleted,
int *modRangeStart,
int *modRangeEnd,
437 int *linesInserted,
int *linesDeleted);
438 void measure_deleted_lines(
int pos,
int nDeleted);
439 void wrapped_line_counter(
Fl_Text_Buffer *buf,
int startPos,
int maxPos,
440 int maxLines,
bool startPosIsLineStart,
441 int styleBufOffset,
int *retPos,
int *retLines,
442 int *retLineStart,
int *retLineEnd,
443 bool countLastLineMissingNewLine =
true)
const;
444 void find_line_end(
int pos,
bool start_pos_is_line_start,
int *lineEnd,
445 int *nextLineStart)
const;
446 double measure_proportional_character(
const char *s,
int colNum,
int pos)
const;
447 int wrap_uses_character(
int lineEndPos)
const;
449 int damage_range1_start, damage_range1_end;
450 int damage_range2_start, damage_range2_end;
458 int mCursorPreferredXPos;
464 int mFirstChar, mLastChar;
478 int mNeedAbsTopLineNum;
484 int mHorizOffsetHint;
486 const Style_Table_Entry *mStyleTable;
488 char mUnfinishedStyle;
490 Unfinished_Style_Cb mUnfinishedHighlightCB;
492 void* mHighlightCBArg;
501 int mModifyingTabDistance;
504 mutable double mColumnScale;
513 int scrollbar_width_;
515 int dragPos, dragType, dragging;
516 int display_insert_position_hint;
517 struct {
int x,
y,
w,
h; } text_area;
526 int mLineNumLeft, mLineNumWidth;
529 #if FLTK_ABI_VERSION >= 10303
535 const char* linenumber_format_;