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
This commit is contained in:
parent
691ab84503
commit
1b4b02f7a1
2
CHANGES
2
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)
|
||||
|
@ -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
|
||||
|
@ -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())
|
||||
|
Loading…
Reference in New Issue
Block a user