From 1b4b02f7a191f033de79760cec3699fbd5bf1a4a Mon Sep 17 00:00:00 2001 From: Fabien Costantini Date: Sat, 4 Jul 2009 00:57:46 +0000 Subject: UTF8: Fl_Text_Display and related: + Constrained many Fl_Text_Display (get and measurement) methods to const. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6823 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CHANGES | 2 +- FL/Fl_Text_Display.H | 56 ++++++++++++++++++++++++------------------------- src/Fl_Text_Display.cxx | 44 +++++++++++++++++++------------------- 3 files changed, 51 insertions(+), 51 deletions(-) diff --git a/CHANGES b/CHANGES index 1b4a71b8b..79a3d0118 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,6 @@ CHANGES IN FLTK 1.3.0 - - Corrected const methods of Fl_Text_Buffer, Fl_Text_Selection + - Corrected const methods of Fl_Text_{Buffer|Display|Selection} to be declared const, corrected an Fl_Text_Buffer attrib. typo - Fixed OpenGL shared context handling (STR #2135) - Fixed gray-scale images with alpha channel (STR #2105) diff --git a/FL/Fl_Text_Display.H b/FL/Fl_Text_Display.H index cfa2530ca..8f83bb7ad 100644 --- a/FL/Fl_Text_Display.H +++ b/FL/Fl_Text_Display.H @@ -98,23 +98,23 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { Gets the current text buffer associated with the text widget. Multiple text widgets can be associated with the same text buffer. */ - Fl_Text_Buffer* buffer() { return mBuffer; } + Fl_Text_Buffer* buffer() const { return mBuffer; } void redisplay_range(int start, int end); void scroll(int topLineNum, int horizOffset); void insert(const char* text); void overstrike(const char* text); void insert_position(int newPos); /** Gets the position of the text insertion cursor for text display */ - int insert_position() { return mCursorPos; } - int in_selection(int x, int y); + int insert_position() const { return mCursorPos; } + int in_selection(int x, int y) const; void show_insert_position(); int move_right(); int move_left(); int move_up(); int move_down(); - int count_lines(int start, int end, bool start_pos_is_line_start); - int line_start(int pos); - int line_end(int pos, bool start_pos_is_line_start); + int count_lines(int start, int end, bool start_pos_is_line_start) const; + int line_start(int pos) const; + int line_end(int pos, bool start_pos_is_line_start) const; int skip_lines(int startPos, int nLines, bool startPosIsLineStart); int rewind_lines(int startPos, int nLines); void next_word(void); @@ -128,17 +128,17 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { /** Sets or gets the text cursor color. */ void cursor_color(Fl_Color n) {mCursor_color = n;} /** Sets or gets the width/height of the scrollbars. */ - int scrollbar_width() { return scrollbar_width_; } + int scrollbar_width() const { return scrollbar_width_; } /** Sets or gets the width/height of the scrollbars. */ void scrollbar_width(int W) { scrollbar_width_ = W; } /** Gets the scrollbar alignment type */ - Fl_Align scrollbar_align() { return scrollbar_align_; } + Fl_Align scrollbar_align() const { return scrollbar_align_; } /** Sets the scrollbar alignment type */ void scrollbar_align(Fl_Align a) { scrollbar_align_ = a; } /** Moves the insert position to the beginning of the current word. */ - int word_start(int pos) { return buffer()->word_start(pos); } + int word_start(int pos) const { return buffer()->word_start(pos); } /** Moves the insert position to the end of the current word. */ - int word_end(int pos) { return buffer()->word_end(pos); } + int word_end(int pos) const { return buffer()->word_end(pos); } void highlight_data(Fl_Text_Buffer *styleBuffer, @@ -148,7 +148,7 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { void *cbArg); int position_style(int lineStartPos, int lineLen, int lineIndex, - int dispIndex); + int dispIndex) const; /** \todo FIXME : get set methods pointing on shortcut_ have no effects as shortcut_ is unused in this class and derived! */ int shortcut() const {return shortcut_;} @@ -169,8 +169,8 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { /** Sets the default color of text in the widget. */ void textcolor(unsigned n) {textcolor_ = n;} - int wrapped_column(int row, int column); - int wrapped_row(int row); + int wrapped_column(int row, int column) const; + int wrapped_row(int row) const; void wrap_mode(int wrap, int wrap_margin); virtual void resize(int X, int Y, int W, int H); @@ -206,8 +206,8 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { void calc_last_char(); - int position_to_line( int pos, int* lineNum ); - int string_width(const char* string, int length, int style); + int position_to_line( int pos, int* lineNum ) const; + int string_width(const char* string, int length, int style) const; static void scroll_timer_cb(void*); @@ -220,22 +220,22 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { static void v_scrollbar_cb( Fl_Scrollbar* w, Fl_Text_Display* d); void update_v_scrollbar(); void update_h_scrollbar(); - int measure_vline(int visLineNum); - int longest_vline(); - int empty_vlines(); - int vline_length(int visLineNum); - int xy_to_position(int x, int y, int PosType = CHARACTER_POS); + int measure_vline(int visLineNum) const; + int longest_vline() const; + int empty_vlines() const; + int vline_length(int visLineNum) const; + int xy_to_position(int x, int y, int PosType = CHARACTER_POS) const; void xy_to_rowcol(int x, int y, int* row, int* column, - int PosType = CHARACTER_POS); + int PosType = CHARACTER_POS) const; - int position_to_xy(int pos, int* x, int* y); + int position_to_xy(int pos, int* x, int* y) const; void maintain_absolute_top_line_number(int state); - int get_absolute_top_line_number(); + int get_absolute_top_line_number() const; void absolute_top_line_number(int oldFirstChar); - int maintaining_absolute_top_line_number(); + int maintaining_absolute_top_line_number() const; void reset_absolute_top_line_number(); - int position_to_linecol(int pos, int* lineNum, int* column); + int position_to_linecol(int pos, int* lineNum, int* column) const; void scroll_(int topLineNum, int horizOffset); void extend_range_for_styles(int* start, int* end); @@ -248,11 +248,11 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { int maxLines, bool startPosIsLineStart, int styleBufOffset, int *retPos, int *retLines, int *retLineStart, int *retLineEnd, - bool countLastLineMissingNewLine = true); + bool countLastLineMissingNewLine = true) const; void find_line_end(int pos, bool start_pos_is_line_start, int *lineEnd, int *nextLineStart); - int measure_proportional_character(char c, int colNum, int pos); - int wrap_uses_character(int lineEndPos); + int measure_proportional_character(char c, int colNum, int pos) const; + int wrap_uses_character(int lineEndPos) const; int range_touches_selection(const Fl_Text_Selection *sel, int rangeStart, int rangeEnd) const; #ifndef FL_DOXYGEN diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx index aa754bd74..521048685 100644 --- a/src/Fl_Text_Display.cxx +++ b/src/Fl_Text_Display.cxx @@ -350,7 +350,7 @@ int TextDMaxFontWidth(textDisp *textD, Boolean considerStyles) { } #endif -int Fl_Text_Display::longest_vline() { +int Fl_Text_Display::longest_vline() const { int longest = 0; for (int i = 0; i < mNVisibleLines; i++) longest = max(longest, measure_vline(i)); @@ -798,7 +798,7 @@ void Fl_Text_Display::overstrike(const char* text) { X coordinate where the position would be if it were visible. */ -int Fl_Text_Display::position_to_xy( int pos, int* X, int* Y ) { +int Fl_Text_Display::position_to_xy( int pos, int* X, int* Y ) const { int charIndex, lineStartPos, fontHeight, lineLen; int visLineNum, charLen, outIndex, xStep, charStyle; char expandedChar[ FL_TEXT_MAX_EXP_CHAR_LEN ]; @@ -876,7 +876,7 @@ int Fl_Text_Display::position_to_xy( int pos, int* X, int* Y ) { If continuous wrap mode is on, returns the absolute line number (as opposed to the wrapped line number which is used for scrolling). */ -int Fl_Text_Display::position_to_linecol( int pos, int* lineNum, int* column ) { +int Fl_Text_Display::position_to_linecol( int pos, int* lineNum, int* column ) const { int retVal; /* In continuous wrap mode, the absolute (non-wrapped) line count is @@ -904,7 +904,7 @@ int Fl_Text_Display::position_to_linecol( int pos, int* lineNum, int* column ) { /** Return 1 if position (X, Y) is inside of the primary Fl_Text_Selection */ -int Fl_Text_Display::in_selection( int X, int Y ) { +int Fl_Text_Display::in_selection( int X, int Y ) const { int row, column, pos = xy_to_position( X, Y, CHARACTER_POS ); Fl_Text_Buffer *buf = mBuffer; int ok = 0; @@ -933,7 +933,7 @@ int Fl_Text_Display::in_selection( int X, int Y ) { from the last newline. Obviously this is time consuming, because it invloves character re-counting. */ -int Fl_Text_Display::wrapped_column(int row, int column) { +int Fl_Text_Display::wrapped_column(int row, int column) const { int lineStart, dispLineStart; if (!mContinuousWrap || row < 0 || row > mNVisibleLines) @@ -953,7 +953,7 @@ int Fl_Text_Display::wrapped_column(int row, int column) { newlines, rather than display wrapping, and anywhere a rectangular selection needs a row, it needs it in terms of un-wrapped lines. */ -int Fl_Text_Display::wrapped_row(int row) { +int Fl_Text_Display::wrapped_row(int row) const{ if (!mContinuousWrap || row < 0 || row > mNVisibleLines) return row; return buffer()->count_lines(mFirstChar, mLineStarts[row]); @@ -1131,7 +1131,7 @@ int Fl_Text_Display::move_down() { by avoiding the additional step of scanning back to the last newline. */ int Fl_Text_Display::count_lines(int startPos, int endPos, - bool startPosIsLineStart) { + bool startPosIsLineStart) const { int retLines, retPos, retLineStart, retLineEnd; #ifdef DEBUG @@ -1196,7 +1196,7 @@ int Fl_Text_Display::skip_lines(int startPos, int nLines, the start of the next line. This is also consistent with the model used by visLineLength. */ -int Fl_Text_Display::line_end(int pos, bool startPosIsLineStart) { +int Fl_Text_Display::line_end(int pos, bool startPosIsLineStart) const { int retLines, retPos, retLineStart, retLineEnd; /* If we're not wrapping use more efficien BufEndOfLine */ @@ -1215,7 +1215,7 @@ int Fl_Text_Display::line_end(int pos, bool startPosIsLineStart) { Same as BufStartOfLine, but returns the character after last wrap point rather than the last newline. */ -int Fl_Text_Display::line_start(int pos) { +int Fl_Text_Display::line_start(int pos) const { int retLines, retPos, retLineStart, retLineEnd; /* If we're not wrapping, use the more efficient BufStartOfLine */ @@ -1448,7 +1448,7 @@ void Fl_Text_Display::maintain_absolute_top_line_number(int state) { Returns the absolute (non-wrapped) line number of the first line displayed. Returns 0 if the absolute top line number is not being maintained. */ -int Fl_Text_Display::get_absolute_top_line_number() { +int Fl_Text_Display::get_absolute_top_line_number() const { if (!mContinuousWrap) return mTopLineNum; if (maintaining_absolute_top_line_number()) @@ -1472,7 +1472,7 @@ void Fl_Text_Display::absolute_top_line_number(int oldFirstChar) { Return true if a separate absolute top line number is being maintained (for displaying line numbers or showing in the statistics line). */ -int Fl_Text_Display::maintaining_absolute_top_line_number() { +int Fl_Text_Display::maintaining_absolute_top_line_number() const { return mContinuousWrap && (mLineNumWidth != 0 || mNeedAbsTopLineNum); } @@ -1491,7 +1491,7 @@ void Fl_Text_Display::reset_absolute_top_line_number() { Find the line number of position "pos" relative to the first line of displayed text. Returns 0 if the line is not displayed. */ -int Fl_Text_Display::position_to_line( int pos, int *lineNum ) { +int Fl_Text_Display::position_to_line( int pos, int *lineNum ) const { int i; *lineNum = 0; @@ -1957,7 +1957,7 @@ void Fl_Text_Display::draw_cursor( int X, int Y ) { be more appropriate. */ int Fl_Text_Display::position_style( int lineStartPos, - int lineLen, int lineIndex, int dispIndex ) { + int lineLen, int lineIndex, int dispIndex ) const { Fl_Text_Buffer * buf = mBuffer; Fl_Text_Buffer *styleBuf = mStyleBuffer; int pos, style = 0; @@ -1989,7 +1989,7 @@ int Fl_Text_Display::position_style( int lineStartPos, /** Find the width of a string in the font of a particular style */ -int Fl_Text_Display::string_width( const char *string, int length, int style ) { +int Fl_Text_Display::string_width( const char *string, int length, int style ) const { Fl_Font font; int fsize; @@ -2016,7 +2016,7 @@ int Fl_Text_Display::string_width( const char *string, int length, int style ) { position, and CHARACTER_POS means return the position of the character closest to (X, Y). */ -int Fl_Text_Display::xy_to_position( int X, int Y, int posType ) { +int Fl_Text_Display::xy_to_position( int X, int Y, int posType ) const { int charIndex, lineStart, lineLen, fontHeight; int charWidth, charLen, charStyle, visLineNum, xStep, outIndex; char expandedChar[ FL_TEXT_MAX_EXP_CHAR_LEN ]; @@ -2082,7 +2082,7 @@ int Fl_Text_Display::xy_to_position( int X, int Y, int posType ) { means translate the position to the nearest character cell. */ void Fl_Text_Display::xy_to_rowcol( int X, int Y, int *row, - int *column, int posType ) { + int *column, int posType ) const { int fontHeight = mMaxsize; int fontWidth = TMPFONTWIDTH; //mFontStruct->max_bounds.width; @@ -2479,7 +2479,7 @@ static int countlines( const char *string ) { /** Return the width in pixels of the displayed line pointed to by "visLineNum" */ -int Fl_Text_Display::measure_vline( int visLineNum ) { +int Fl_Text_Display::measure_vline( int visLineNum ) const { int i, width = 0, len, style, lineLen = vline_length( visLineNum ); int charCount = 0, lineStartPos = mLineStarts[ visLineNum ]; char expandedChar[ FL_TEXT_MAX_EXP_CHAR_LEN ]; @@ -2519,7 +2519,7 @@ int Fl_Text_Display::measure_vline( int visLineNum ) { /** Return true if there are lines visible with no corresponding buffer text */ -int Fl_Text_Display::empty_vlines() { +int Fl_Text_Display::empty_vlines() const { return mNVisibleLines > 0 && mLineStarts[ mNVisibleLines - 1 ] == -1; } @@ -2528,7 +2528,7 @@ int Fl_Text_Display::empty_vlines() { Return the length of a line (number of displayable characters) by examining entries in the line starts array rather than by scanning for newlines */ -int Fl_Text_Display::vline_length( int visLineNum ) { +int Fl_Text_Display::vline_length( int visLineNum ) const { int nextLineStart, lineStartPos; if (visLineNum < 0 || visLineNum >= mNVisibleLines) @@ -2794,7 +2794,7 @@ void Fl_Text_Display::measure_deleted_lines(int pos, int nDeleted) { void Fl_Text_Display::wrapped_line_counter(Fl_Text_Buffer *buf, int startPos, int maxPos, int maxLines, bool startPosIsLineStart, int styleBufOffset, int *retPos, int *retLines, int *retLineStart, int *retLineEnd, - bool countLastLineMissingNewLine) { + bool countLastLineMissingNewLine) const { int lineStart, newLineStart = 0, b, p, colNum, wrapMargin; int maxWidth, i, foundBreak, width; bool countPixels; @@ -2932,7 +2932,7 @@ void Fl_Text_Display::wrapped_line_counter(Fl_Text_Buffer *buf, int startPos, insertion/deletion, though static display and wrapping and resizing should now be solid because they are now used for online help display. */ -int Fl_Text_Display::measure_proportional_character(char c, int colNum, int pos) { +int Fl_Text_Display::measure_proportional_character(char c, int colNum, int pos) const { int charLen, style; char expChar[ FL_TEXT_MAX_EXP_CHAR_LEN ]; Fl_Text_Buffer *styleBuf = mStyleBuffer; @@ -2996,7 +2996,7 @@ void Fl_Text_Display::find_line_end(int startPos, bool startPosIsLineStart, used as a wrap point, and just guesses that it wasn't. So if an exact accounting is necessary, don't use this function. */ -int Fl_Text_Display::wrap_uses_character(int lineEndPos) { +int Fl_Text_Display::wrap_uses_character(int lineEndPos) const { char c; if (!mContinuousWrap || lineEndPos == buffer()->length()) -- cgit v1.2.3